diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index bf5d43c0742..68321de7e8a 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -17,6 +17,8 @@ var/applies_material_colour = TRUE var/unbreakable var/force_divisor = 0.5 + var/max_force = 40 //any damage above this is added to armor penetration value + var/max_pen = 100 //any penetration above this value is ignored var/thrown_force_divisor = 0.5 var/default_material = DEFAULT_WALL_MATERIAL var/material/material @@ -44,11 +46,19 @@ return material /obj/item/material/proc/update_force() + var/new_force if(edge || sharp) - force = material.get_edge_damage() + new_force = material.get_edge_damage() else - force = material.get_blunt_damage() - force = round(force*force_divisor) + new_force = material.get_blunt_damage() + new_force = round(new_force*force_divisor) + force = min(new_force, max_force) + + if(new_force > max_force) + armor_penetration = initial(armor_penetration) + new_force - max_force + armor_penetration += 2*max(0, material.protectiveness - 2) + armor_penetration = min(max_pen, armor_penetration) + throwforce = round(material.get_blunt_damage()*thrown_force_divisor) /obj/item/material/proc/set_material(var/new_material) diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 3132ffcfebf..c0b7191c917 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -70,6 +70,48 @@ icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") +/obj/item/material/hatchet/machete + name = "machete" + desc = "A long, sturdy blade with a rugged handle. Leading the way to cursed treasures since before space travel." + icon = 'icons/obj/item/melee/machete.dmi' + item_icons = list( + slot_l_hand_str = 'icons/obj/item/melee/machete.dmi', + slot_r_hand_str = 'icons/obj/item/melee/machete.dmi', + ) + hitsound = 'sound/weapons/bladeslice.ogg' + contained_sprite = TRUE + icon_state = "machete" + item_state = "machete" + worn_overlay = "handle" + w_class = ITEMSIZE_NORMAL + slot_flags = SLOT_BELT|SLOT_HOLSTER + default_material = MATERIAL_TITANIUM + max_force = 20 + force_divisor = 0.2 + build_from_parts = TRUE + +/obj/item/material/hatchet/machete/Initialize() + . = ..() + if(build_from_parts) + var/image/I = image(icon, icon_state = "machete_handle") + I.color = pick(COLOR_BLUE, COLOR_RED, COLOR_CYAN, COLOR_BLACK, COLOR_AMBER, COLOR_GREEN, COLOR_OLIVE, COLOR_GUNMETAL, COLOR_DARK_BLUE_GRAY) + add_overlay(I) + +/obj/item/material/hatchet/machete/unbreakable + unbreakable = TRUE + +/obj/item/material/hatchet/machete/steel + name = "fabricated machete" + desc = "A long, machine-stamped blade with a somewhat ungainly handle. Found in military surplus stores, malls, and horror movies since before interstellar travel." + default_material = MATERIAL_STEEL + matter = list(MATERIAL_STEEL = 15000, MATERIAL_PLASTIC = 2500) + +/obj/item/material/hatchet/machete/deluxe + name = "deluxe machete" + desc = "A fine example of a machete, with a polished blade, wooden handle, and a leather cord loop." + icon_state = "machetedx" + build_from_parts = FALSE + /obj/item/material/hook name = "meat hook" desc = "A sharp, metal hook that sticks into things." @@ -79,7 +121,7 @@ item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_kitchen.dmi', slot_r_hand_str = 'icons/mob/items/righthand_kitchen.dmi', - ) + ) sharp = 1 edge = TRUE force_divisor = 0.25 @@ -91,7 +133,7 @@ item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_hydro.dmi', slot_r_hand_str = 'icons/mob/items/righthand_hydro.dmi', - ) + ) icon_state = "hoe" item_state = "hoe" force_divisor = 0.25 // 5 with weight 20 (steel) @@ -106,7 +148,7 @@ item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_hydro.dmi', slot_r_hand_str = 'icons/mob/items/righthand_hydro.dmi', - ) + ) force_divisor = 0.275 // 16 with hardness 60 (steel) thrown_force_divisor = 0.25 // 5 with weight 20 (steel) sharp = 1 diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 1529414781b..8eef9d95f10 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -231,4 +231,17 @@ desc = "A brown utility holster which can't hold actual firearms. This particular one is designed for custodial personnel." icon_state = "custodial_brown_hip" item_state = "custodial_brown_hip" + +/obj/item/clothing/accessory/holster/utility/machete + name = "machete sheath" + desc = "A handsome synthetic leather sheath with matching belt." + icon_state = "holster_machete" + item_state = "thigh_brown" + icon = 'icons/obj/item/clothing/accessory/holster.dmi' + allowed_items = list( + /obj/item/material/hatchet/machete, + /obj/item/material/hatchet/machete/deluxe, + /obj/item/material/hatchet/machete/unbreakable, + /obj/item/material/hatchet/machete/steel + ) /********** Utility Holsters End **********/ diff --git a/code/modules/research/xenoarchaeology/misc.dm b/code/modules/research/xenoarchaeology/misc.dm index 985a76e72a2..f58f51dac95 100644 --- a/code/modules/research/xenoarchaeology/misc.dm +++ b/code/modules/research/xenoarchaeology/misc.dm @@ -91,6 +91,8 @@ new /obj/item/device/beacon_locator(src) new /obj/item/device/radio/beacon(src) new /obj/item/pickaxe(src) + new /obj/item/material/hatchet/machete/steel(src) + new /obj/item/clothing/accessory/holster/utility/machete(src) new /obj/item/device/measuring_tape(src) new /obj/item/pickaxe/hand(src) new /obj/item/storage/bag/fossils(src) diff --git a/html/changelogs/mattatlas-sovl.yml b/html/changelogs/mattatlas-sovl.yml new file mode 100644 index 00000000000..27ba83f44a1 --- /dev/null +++ b/html/changelogs/mattatlas-sovl.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added machetes and machete holsters to the excavation closets in Research EVA and to the expedition weaponry locker in the Intrepid." + - rscadd: "Material weapons now have armour penetration (increasing further if their damage exceeds a maximum force of 40), with the effectiveness depending on the material." diff --git a/icons/obj/item/clothing/accessory/holster.dmi b/icons/obj/item/clothing/accessory/holster.dmi index ce12d1d4dcd..c8732014245 100644 Binary files a/icons/obj/item/clothing/accessory/holster.dmi and b/icons/obj/item/clothing/accessory/holster.dmi differ diff --git a/icons/obj/item/melee/machete.dmi b/icons/obj/item/melee/machete.dmi new file mode 100644 index 00000000000..3e4f92627f9 Binary files /dev/null and b/icons/obj/item/melee/machete.dmi differ diff --git a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm index 4fc1f0c09ee..0bafc57d5c3 100644 --- a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm +++ b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm @@ -28324,6 +28324,10 @@ /obj/effect/floor_decal/corner/blue{ dir = 6 }, +/obj/item/material/hatchet/machete/steel, +/obj/item/material/hatchet/machete/steel, +/obj/item/clothing/accessory/holster/utility/machete, +/obj/item/clothing/accessory/holster/utility/machete, /turf/simulated/floor/tiled/dark, /area/shuttle/intrepid/cockpit) "wjU" = (