diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 66f550b9055e84..397ccad210060f 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -351,7 +351,9 @@ name = "Telescopic Riot Shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." id = "tele_shield" - build_type = PROTOLATHE | AWAY_LATHE + // DOPPLER EDIT CHANGE START - removes this design from any player accessible lathe in favor of a modularly added shield gauntlet + build_type = null // was: build_type = PROTOLATHE | AWAY_LATHE + // DOPPLER EDIT CHANGE END materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver =SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 2) build_path = /obj/item/shield/riot/tele category = list( diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm index 50cb0126059e09..dcd767782aa8aa 100644 --- a/code/modules/research/techweb/nodes/security_nodes.dm +++ b/code/modules/research/techweb/nodes/security_nodes.dm @@ -57,6 +57,7 @@ "ballistic_shield", "handcuffs_s", "bola_energy", + "platillo", // DOPPLER EDIT ADDITION - makes shield gauntlets recipe accessible ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) announce_channels = list(RADIO_CHANNEL_SECURITY) diff --git a/modular_doppler/modular_cosmetics/code/hands/special.dm b/modular_doppler/modular_cosmetics/code/hands/special.dm index c75f88042e20bc..e99dd57b5cf1c5 100644 --- a/modular_doppler/modular_cosmetics/code/hands/special.dm +++ b/modular_doppler/modular_cosmetics/code/hands/special.dm @@ -5,3 +5,101 @@ icon_state = "janitor_doppler" worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi' inhand_icon_state = null + + +/* +* a gauntlet shield meant to replace the telescopic riot shield +*/ + +/obj/item/clothing/gloves/platillo //instead of being a backpack riot shield, it's a glove with much more modest block + name = "\improper PA-4N Platillo shield gauntlets" //"little plate" + desc = "An armored gauntlet augmented with a thick buckler of plastitanium, from which it takes its officially designated name 'platillo'. \ + Meant primarily for melee combatants to wield two handed weapons without encumbrance, the light coverage fares poorly under fire." + icon = 'modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi' + icon_state = "platillo" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi' + worn_icon_state = "platillo" + armor_type = /datum/armor/platillo + block_chance = 35 + block_sound = 'sound/items/weapons/block_shield.ogg' + body_parts_covered = HANDS | ARMS + max_integrity = 75 + integrity_failure = 0.6 // higher than usual to ensure it can be repaired sooner + repairable_by = /obj/item/stack/sheet/mineral/titanium + var/break_sound = 'sound/effects/bang.ogg' + +///nullifies block_chance if a shield is held +/obj/item/clothing/gloves/platillo/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type, damage_type) + var/effective_block_chance = final_block_chance + for(var/obj/item/shield/held_shield in owner.held_items) //since only a shield would block these gauntlets in theory + if(held_shield.block_chance > 0) + effective_block_chance -= src.block_chance + return + //reproduces some code from shields. the bonuses are lower than a real shield because of the other advantages these have as gloves. + if(attack_type == THROWN_PROJECTILE_ATTACK) + effective_block_chance += 25 + if(attack_type == LEAP_ATTACK) + effective_block_chance += 25 + if(attack_type == OVERWHELMING_ATTACK) + effective_block_chance -= 25 + final_block_chance = clamp(effective_block_chance, 0, 100) + . = ..() + if(.) + on_shield_block(owner, hitby, attack_text, damage, attack_type, damage_type) + +//more reproduced shield code, this handles taking damage on block as shields do. +/obj/item/clothing/gloves/platillo/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE) + if(damage_type != BRUTE && damage_type != BURN) + return + var/penetration = 0 + var/armor_flag = MELEE + if(isprojectile(hitby)) + var/obj/projectile/bang_bang = hitby + armor_flag = bang_bang.armor_flag + penetration = bang_bang.armour_penetration + else if(isitem(hitby)) + var/obj/item/weapon = hitby + penetration = weapon.armour_penetration + else if(isanimal(hitby)) + var/mob/living/simple_animal/critter = hitby + penetration = critter.armour_penetration + else if(isbasicmob(hitby)) + var/mob/living/basic/critter = hitby + penetration = critter.armour_penetration + take_damage(damage, damage_type, armor_flag, armour_penetration = penetration) + +//makes a shieldy sound and gives us a popup when we break +/obj/item/clothing/gloves/platillo/atom_destruction(damage_flag) + . = ..() + playsound(src, break_sound, 50) + if(isliving(loc)) + loc.balloon_alert(loc, "shield broken!") + return + +//we can see about how damaged we are on examine +/obj/item/clothing/gloves/platillo/examine(mob/user) + . = ..() + var/healthpercent = round((atom_integrity/max_integrity) * 100, 1) + switch(healthpercent) + if(50 to 99) + . += span_info("It looks slightly damaged.") + if(25 to 50) + . += span_info("It appears heavily damaged.") + if(0 to 25) + . += span_warning("It's falling apart!") + +//we know that wearing this with a shield won't help us +/obj/item/clothing/gloves/platillo/examine_more(mob/user) + . = ..() + . += span_notice("It doesn't seem like it would do much good to wear this while holding another shield.") + +/datum/armor/platillo + melee = ARMOR_LEVEL_MID + bullet = ARMOR_LEVEL_WEAK + laser = ARMOR_LEVEL_WEAK + energy = ARMOR_LEVEL_WEAK + bomb = ARMOR_LEVEL_WEAK + bio = ARMOR_LEVEL_TINY + fire = ARMOR_LEVEL_WEAK + acid = ARMOR_LEVEL_TINY + wound = WOUND_ARMOR_STANDARD diff --git a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi index a4254730c91326..d7beda9f8e88fb 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi index ff7e7f84747c0f..9afa77b9530714 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi differ diff --git a/modular_doppler/modular_crafting/code/lathe_recipes.dm b/modular_doppler/modular_crafting/code/lathe_recipes.dm new file mode 100644 index 00000000000000..043f7a8b5539f3 --- /dev/null +++ b/modular_doppler/modular_crafting/code/lathe_recipes.dm @@ -0,0 +1,21 @@ +/* +* for lathe recipes that aren't part of the colony kit stuff +*/ + +/datum/design/platillo_gauntlets + name = "\improper PA-4N Platillo shield gauntlets" + desc = "An armored gauntlet augmented with a thick buckler of plastitanium, from which it takes its officially designated name 'platillo'. \ + Meant primarily for melee combatants to wield two handed weapons without encumbrance, the light coverage fares poorly under fire." + id = "platillo" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/clothing/gloves/platillo + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + autolathe_exportable = FALSE diff --git a/tgstation.dme b/tgstation.dme index 95865969adc03c..dc0c18214e20ec 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7197,6 +7197,7 @@ #include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_weapons.dm" #include "modular_doppler\modular_crafting\code\crafting_extended.dm" #include "modular_doppler\modular_crafting\code\crafting_melee.dm" +#include "modular_doppler\modular_crafting\code\lathe_recipes.dm" #include "modular_doppler\modular_crafting\code\sheet_types.dm" #include "modular_doppler\modular_crusher_ahabs_spear\code\trophies_misc.dm" #include "modular_doppler\modular_customization\accessories\code\hair.dm"