diff --git a/code/game/objects/items/weapons/melee/melee.dm b/code/game/objects/items/weapons/melee/melee.dm index 8634d161cc5..9d2267f8ec1 100644 --- a/code/game/objects/items/weapons/melee/melee.dm +++ b/code/game/objects/items/weapons/melee/melee.dm @@ -70,6 +70,23 @@ "[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS + +// MARK: BONE SWORD +/obj/item/melee/bone_sword + name = "bone sword" + desc = "A curved blade made of sharpened bone and bound with sinew." + icon_state = "bone_sword" + force = 18 + throwforce = 14 + w_class = WEIGHT_CLASS_BULKY + sharp = TRUE + attack_verb = list("slashed", "sliced", "chopped") + hitsound = 'sound/weapons/bladeslice.ogg' + +/obj/item/melee/bone_sword/Initialize(mapload) + . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 4, _stamina_coefficient = 0.6, _parryable_attack_types = NON_PROJECTILE_ATTACKS) + #define SECSWORD_OFF 0 #define SECSWORD_STUN 1 #define SECSWORD_BURN 2 diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 37508130d80..865e757f1cb 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -65,6 +65,17 @@ /obj/item/shield/riot/buckler/add_parry_component() AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (10 / 3) SECONDS) // 2.3333 seconds of cooldown for 30% uptime +/obj/item/shield/riot/bone + name = "bone shield" + desc = "A primitive yet durable shield made from bone." + icon_state = "bone_shield" + materials = list() + origin_tech = "materials=1;combat=3;biotech=4" + resistance_flags = FLAMMABLE + +/obj/item/shield/riot/bone/add_parry_component() + AddComponent(/datum/component/parry, _stamina_constant = 3, _stamina_coefficient = 0.6, _parryable_attack_types = ALL_ATTACK_TYPES) + /obj/item/shield/energy name = "energy combat shield" desc = "A shield that reflects almost all energy projectiles, but is useless against physical attacks. It can be retracted, expanded, and stored anywhere." diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index ce759c3c16a..8d3de597eca 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -785,12 +785,14 @@ if(!..()) return playsound(src, 'sound/weapons/blade_sheath.ogg', 20) + update_appearance(UPDATE_ICON_STATE) /obj/item/storage/belt/sheath/remove_from_storage(obj/item/W, atom/new_location) if(!..()) return if(!length(contents)) // telekinesis grab spawns inside of the sheath and leaves it immediately... playsound(src, 'sound/weapons/blade_unsheath.ogg', 20) + update_appearance(UPDATE_ICON_STATE) /obj/item/storage/belt/sheath/update_icon_state() if(length(contents)) @@ -808,6 +810,19 @@ new /obj/item/melee/saber(src) update_appearance(UPDATE_ICON_STATE) +/obj/item/storage/belt/sheath/bone_sword + name = "bone sword sheath" + desc = "Can hold bone swords." + base_icon_state = "bonesword_sheath" + can_hold = list(/obj/item/melee/bone_sword) + +/obj/item/storage/belt/sheath/bone_sword/Initialize(mapload) + . = ..() + update_appearance(UPDATE_ICON_STATE) + +/obj/item/storage/belt/sheath/bone_sword/prefilled/populate_contents() + new /obj/item/melee/bone_sword(src) + /obj/item/storage/belt/sheath/secsword name = "securiblade scabbard" desc = "Can hold securiblades." diff --git a/code/modules/clothing/suits/armor_suits.dm b/code/modules/clothing/suits/armor_suits.dm index 8376c4b362b..a8c50b63d4d 100644 --- a/code/modules/clothing/suits/armor_suits.dm +++ b/code/modules/clothing/suits/armor_suits.dm @@ -832,6 +832,39 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT icon_monitor = 'icons/mob/clothing/species/machine/monitor/hood.dmi' +/obj/item/clothing/suit/hooded/bone_light + name = "light bone armor" + desc = "A lightweight set of bone armor, crafted crudely from animal products." + icon_state = "light_bone_armor" + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) + armor = list(MELEE = 15, BULLET = 10, LASER = 10, ENERGY = 5, BOMB = 10, RAD = 0, FIRE = 50, ACID = 50) + hoodtype = /obj/item/clothing/head/hooded/bone_light + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + sprite_sheets = list( + "Drask" = 'icons/mob/clothing/species/drask/suit.dmi', + "Grey" = 'icons/mob/clothing/species/grey/suit.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/suit.dmi', + "Vox" = 'icons/mob/clothing/species/vox/suit.dmi' + ) + +/obj/item/clothing/head/hooded/bone_light + name = "light bone helmet" + desc = "A crude helmet crafted from the bones of animals." + icon_state = "light_bone_helmet" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + armor = list(MELEE = 15, BULLET = 10, LASER = 10, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = 50, ACID = 50) + flags = BLOCKHAIR + flags_cover = HEADCOVERSEYES + heat_protection = HEAD + sprite_sheets = list( + "Drask" = 'icons/mob/clothing/species/drask/head.dmi', + "Grey" = 'icons/mob/clothing/species/grey/head.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/head.dmi', + "Vox" = 'icons/mob/clothing/species/vox/head.dmi' + ) + /obj/item/clothing/suit/armor/bone name = "bone armor" desc = "A tribal armor plate, crafted from animal bone." diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 2d32de54b1a..77db8417edb 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -733,6 +733,14 @@ reqs = list(/obj/item/stack/sheet/bone = 6) category = CAT_PRIMAL +/datum/crafting_recipe/light_bone_armor + name = "Light Bone Armor" + result = list(/obj/item/clothing/suit/hooded/bone_light) + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + /datum/crafting_recipe/bonetalisman name = "Bone Talisman" result = list(/obj/item/clothing/accessory/talisman) @@ -826,6 +834,22 @@ /obj/item/stack/sheet/sinew = 2) category = CAT_PRIMAL +/datum/crafting_recipe/bonesword + name = "Bone Sword" + result = list(/obj/item/melee/bone_sword) + time = 45 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonesword_sheath + name = "Bone Sword Sheath" + result = list(/obj/item/storage/belt/sheath/bone_sword) + time = 45 + reqs = list(/obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + /datum/crafting_recipe/boneaxe name = "Bone Axe" result = list(/obj/item/fireaxe/boneaxe) diff --git a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm index a8d8877df95..08cc73c360a 100644 --- a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm +++ b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm @@ -85,7 +85,7 @@ /datum/outfit/ashwalker name = "Ashwalker" - head = /obj/item/clothing/head/helmet/gladiator uniform = /obj/item/clothing/under/costume/gladiator/ash_walker + suit = /obj/item/clothing/suit/hooded/bone_light #undef ASH_WALKER_SPAWN_THRESHOLD diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index bd8972b155e..4504e4775f1 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 70f68aefbee..a56b12519df 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/species/drask/head.dmi b/icons/mob/clothing/species/drask/head.dmi index a0a6d07911a..4c1882e45ed 100644 Binary files a/icons/mob/clothing/species/drask/head.dmi and b/icons/mob/clothing/species/drask/head.dmi differ diff --git a/icons/mob/clothing/species/drask/suit.dmi b/icons/mob/clothing/species/drask/suit.dmi index 5dcef7095cb..e46d9d24daf 100644 Binary files a/icons/mob/clothing/species/drask/suit.dmi and b/icons/mob/clothing/species/drask/suit.dmi differ diff --git a/icons/mob/clothing/species/grey/head.dmi b/icons/mob/clothing/species/grey/head.dmi index 716dee9312e..b24cc171a0b 100644 Binary files a/icons/mob/clothing/species/grey/head.dmi and b/icons/mob/clothing/species/grey/head.dmi differ diff --git a/icons/mob/clothing/species/grey/suit.dmi b/icons/mob/clothing/species/grey/suit.dmi index bac5940385a..2c4bf30898c 100644 Binary files a/icons/mob/clothing/species/grey/suit.dmi and b/icons/mob/clothing/species/grey/suit.dmi differ diff --git a/icons/mob/clothing/species/kidan/head.dmi b/icons/mob/clothing/species/kidan/head.dmi index ba6d6c50dd1..18a30be21e0 100644 Binary files a/icons/mob/clothing/species/kidan/head.dmi and b/icons/mob/clothing/species/kidan/head.dmi differ diff --git a/icons/mob/clothing/species/kidan/suit.dmi b/icons/mob/clothing/species/kidan/suit.dmi index 1e8153ff0c5..7a9f37b4cbb 100644 Binary files a/icons/mob/clothing/species/kidan/suit.dmi and b/icons/mob/clothing/species/kidan/suit.dmi differ diff --git a/icons/mob/clothing/species/vox/head.dmi b/icons/mob/clothing/species/vox/head.dmi index 0ba65b3788d..337cad1c5e7 100644 Binary files a/icons/mob/clothing/species/vox/head.dmi and b/icons/mob/clothing/species/vox/head.dmi differ diff --git a/icons/mob/clothing/species/vox/suit.dmi b/icons/mob/clothing/species/vox/suit.dmi index 200456e5a88..505a25ae562 100644 Binary files a/icons/mob/clothing/species/vox/suit.dmi and b/icons/mob/clothing/species/vox/suit.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/head.dmi b/icons/mob/clothing/species/vulpkanin/head.dmi index 7df78b4d2b0..b5596740e27 100644 Binary files a/icons/mob/clothing/species/vulpkanin/head.dmi and b/icons/mob/clothing/species/vulpkanin/head.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 3aaa56dbb34..67a28e5d424 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/inhands/weapons_lefthand.dmi b/icons/mob/inhands/weapons_lefthand.dmi index a521b5f84e3..13d742e454c 100644 Binary files a/icons/mob/inhands/weapons_lefthand.dmi and b/icons/mob/inhands/weapons_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons_righthand.dmi b/icons/mob/inhands/weapons_righthand.dmi index b8ab9a93524..63519bf308c 100644 Binary files a/icons/mob/inhands/weapons_righthand.dmi and b/icons/mob/inhands/weapons_righthand.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 7678f1a83fe..7ccbc5106ad 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index c5c7190cb24..ff2189c87c7 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index fb9f74dc036..875b48b9675 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/weapons/melee.dmi b/icons/obj/weapons/melee.dmi index 5e7075b9f7b..1ea2ed6fc7b 100644 Binary files a/icons/obj/weapons/melee.dmi and b/icons/obj/weapons/melee.dmi differ diff --git a/icons/obj/weapons/shield.dmi b/icons/obj/weapons/shield.dmi index 5f4ce670137..4381ff3c323 100644 Binary files a/icons/obj/weapons/shield.dmi and b/icons/obj/weapons/shield.dmi differ