diff --git a/_maps/templates/smalldungeons.dm b/_maps/templates/smalldungeons.dm index e07ab7c5a2f..11ef70b3ead 100644 --- a/_maps/templates/smalldungeons.dm +++ b/_maps/templates/smalldungeons.dm @@ -143,7 +143,7 @@ /obj/item/clothing/suit/roguetown/armor/plate/bikini = 1, /obj/item/clothing/suit/roguetown/armor/plate = 1, /obj/item/clothing/suit/roguetown/armor/longcoat = 2, - /obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass = 1, + /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate = 1, //food @@ -322,8 +322,7 @@ /obj/item/clothing/suit/roguetown/armor/plate/bikini = 1, /obj/item/clothing/suit/roguetown/armor/plate = 1, /obj/item/clothing/suit/roguetown/armor/longcoat = 2, - /obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass = 1, - + /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate = 1, ) lootcount = 1 diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 490d03f663a..f7867fe1236 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -182,6 +182,10 @@ 'sound/ambience/noises/birds (6).ogg',\ 'sound/ambience/noises/birds (7).ogg') +#define SFX_CHAIN_STEP "chain_step" +#define SFX_PLATE_STEP "plate_step" +#define SFX_PLATE_COAT_STEP "plate_coat_step" +#define SFX_JINGLE_BELLS "jingle_bells" #define INTERACTION_SOUND_RANGE_MODIFIER 0 #define EQUIP_SOUND_VOLUME 100 diff --git a/code/game/objects/items/rogueitems/bells.dm b/code/game/objects/items/rogueitems/bells.dm index af9cb520783..32800fbe5dc 100644 --- a/code/game/objects/items/rogueitems/bells.dm +++ b/code/game/objects/items/rogueitems/bells.dm @@ -93,3 +93,16 @@ else return ..() + +/obj/item/jingle_bells + name = "jingling bells" + desc = "A set of little bells that make a satifying ring when jostled." + icon = 'icons/roguetown/items/misc.dmi' + icon_state = "bells" + throwforce = 5 + dropshrink = 0.5 + drop_sound = SFX_JINGLE_BELLS + +/obj/item/jingle_bells/Initialize() + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_JINGLE_BELLS) diff --git a/code/game/sound.dm b/code/game/sound.dm index 7d905bd5978..97d7dc2974a 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -380,9 +380,29 @@ soundin = pick('sound/combat/wooshes/blunt/wooshlarge (1).ogg','sound/combat/wooshes/blunt/wooshlarge (2).ogg','sound/combat/wooshes/blunt/wooshlarge (3).ogg') if("punchwoosh") soundin = pick('sound/combat/wooshes/punch/punchwoosh (1).ogg','sound/combat/wooshes/punch/punchwoosh (2).ogg','sound/combat/wooshes/punch/punchwoosh (3).ogg') - - - - - + if(SFX_CHAIN_STEP) + soundin = pick( + 'sound/foley/footsteps/armor/chain (1).ogg', + 'sound/foley/footsteps/armor/chain (2).ogg', + 'sound/foley/footsteps/armor/chain (3).ogg', + ) + if(SFX_PLATE_STEP) + soundin = pick( + 'sound/foley/footsteps/armor/plate (1).ogg', + 'sound/foley/footsteps/armor/plate (2).ogg', + 'sound/foley/footsteps/armor/plate (3).ogg', + ) + if(SFX_PLATE_COAT_STEP) + soundin = pick( + 'sound/foley/footsteps/armor/coatplates (1).ogg', + 'sound/foley/footsteps/armor/coatplates (2).ogg', + 'sound/foley/footsteps/armor/coatplates (3).ogg', + ) + if(SFX_JINGLE_BELLS) + soundin = pick( + 'sound/items/jinglebell1.ogg', + 'sound/items/jinglebell2.ogg', + 'sound/items/jinglebell3.ogg', + 'sound/items/jinglebell4.ogg', + ) return soundin diff --git a/code/modules/antagonists/roguetown/villain/lich.dm b/code/modules/antagonists/roguetown/villain/lich.dm index 45611035c16..fb12ea3acdd 100644 --- a/code/modules/antagonists/roguetown/villain/lich.dm +++ b/code/modules/antagonists/roguetown/villain/lich.dm @@ -189,7 +189,7 @@ /obj/item/clothing/shoes/roguetown/boots, /obj/item/clothing/neck/roguetown/chaincoif, /obj/item/clothing/cloak/raincloak/mortus, - /obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass, + /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate, /obj/item/clothing/suit/roguetown/shirt/tunic/ucolored, /obj/item/clothing/wrists/roguetown/bracers, /obj/item/clothing/gloves/roguetown/chain, diff --git a/code/modules/antagonists/roguetown/villain/vampirelord.dm b/code/modules/antagonists/roguetown/villain/vampirelord.dm index f5c9ce14e74..57222d8d5e2 100644 --- a/code/modules/antagonists/roguetown/villain/vampirelord.dm +++ b/code/modules/antagonists/roguetown/villain/vampirelord.dm @@ -186,7 +186,6 @@ GLOBAL_LIST_EMPTY(vampire_objects) armor = list("blunt" = 100, "slash" = 100, "stab" = 90, "piercing" = 0, "fire" = 0, "acid" = 0) prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) blocksound = PLATEHIT - do_sound = FALSE drop_sound = 'sound/foley/dropsound/armor_drop.ogg' anvilrepair = /datum/skill/craft/armorsmithing resistance_flags = FIRE_PROOF | ACID_PROOF @@ -231,7 +230,6 @@ GLOBAL_LIST_EMPTY(vampire_objects) nodismemsleeves = TRUE max_integrity = 500 allowed_sex = list(MALE, FEMALE) - do_sound_plate = TRUE anvilrepair = /datum/skill/craft/armorsmithing smeltresult = /obj/item/ingot/steel equip_delay_self = 40 diff --git a/code/modules/cargo/packsrogue/Brigand.dm b/code/modules/cargo/packsrogue/Brigand.dm index c598f13c1a6..d5dabc3a543 100644 --- a/code/modules/cargo/packsrogue/Brigand.dm +++ b/code/modules/cargo/packsrogue/Brigand.dm @@ -62,7 +62,7 @@ /datum/supply_pack/rogue/Brigand/blksteelcuirass name = "Blacksteel Cuirass" cost = 50 - contains = list(/obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass) + contains = list(/obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate) /datum/supply_pack/rogue/Brigand/Bevor diff --git a/code/modules/cargo/packsrogue/Knight.dm b/code/modules/cargo/packsrogue/Knight.dm index 5b6d7090356..092d9c075aa 100644 --- a/code/modules/cargo/packsrogue/Knight.dm +++ b/code/modules/cargo/packsrogue/Knight.dm @@ -44,7 +44,7 @@ /datum/supply_pack/rogue/Knight/blacksteelfullplate name = "Blacksteel Full plate" cost = 150 - contains = list(/obj/item/clothing/suit/roguetown/armor/blacksteel/platechest) + contains = list(/obj/item/clothing/suit/roguetown/armor/plate/blacksteel_full_plate) /datum/supply_pack/rogue/Knight/hauberk name = "Hauberk" @@ -95,7 +95,7 @@ /datum/supply_pack/rogue/Knight/blkplatechausses name = "Blacksteel Plate Chausses" cost = 100 - contains = list(/obj/item/clothing/under/roguetown/blacksteel/platelegs) + contains = list(/obj/item/clothing/under/roguetown/platelegs/blacksteel) /datum/supply_pack/rogue/Knight/plateboots name = "Plated boots" diff --git a/code/modules/cargo/packsrogue/Sellsword.dm b/code/modules/cargo/packsrogue/Sellsword.dm index 845b485ee63..9a53ad1089b 100644 --- a/code/modules/cargo/packsrogue/Sellsword.dm +++ b/code/modules/cargo/packsrogue/Sellsword.dm @@ -88,7 +88,7 @@ /datum/supply_pack/rogue/Sellsword/steelcuirass name = "Blacksteel Cuirass" cost = 50 - contains = list(/obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass) + contains = list(/obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate) /datum/supply_pack/rogue/Sellsword/Bevor diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index cb39b281f01..e8f15f152da 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -537,3 +537,6 @@ BLIND // can't see anything else return FALSE return TRUE + +/obj/item/clothing/proc/step_action() //this was made to rewrite clown shoes squeaking + SEND_SIGNAL(src, COMSIG_CLOTHING_STEP_ACTION) diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index 019bc2c2dcd..ac9ff0a6bf0 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -1,22 +1,5 @@ -/obj/item/clothing/proc/step_action() //this was made to rewrite clown shoes squeaking - SEND_SIGNAL(src, COMSIG_CLOTHING_STEP_ACTION) - -/obj/item/clothing/suit - var/do_sound_chain = FALSE - var/do_sound_plate = FALSE - -/obj/item/clothing/suit/Initialize() - . = ..() - if(do_sound_chain) - AddComponent(/datum/component/squeak, list('sound/foley/footsteps/armor/chain (1).ogg',\ - 'sound/foley/footsteps/armor/chain (2).ogg',\ - 'sound/foley/footsteps/armor/chain (3).ogg'), 100) - else if(do_sound_plate) - AddComponent(/datum/component/squeak, list('sound/foley/footsteps/armor/plate (1).ogg',\ - 'sound/foley/footsteps/armor/plate (2).ogg',\ - 'sound/foley/footsteps/armor/plate (3).ogg'), 100) - +//armor parent obj /obj/item/clothing/suit/roguetown/armor slot_flags = ITEM_SLOT_ARMOR body_parts_covered = CHEST @@ -42,320 +25,7 @@ nodismemsleeves = TRUE flags_inv = HIDEBOOB|HIDECROTCH -/obj/item/clothing/suit/roguetown/armor/chainmail - slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT - name = "haubergeon" - desc = "A steel maille shirt." - body_parts_covered = CHEST|GROIN|ARMS|VITALS - icon_state = "haubergeon" - armor = list("blunt" = 60, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT) - blocksound = CHAINHIT - do_sound_chain = TRUE - drop_sound = 'sound/foley/dropsound/chain_drop.ogg' - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - armor_class = ARMOR_CLASS_MEDIUM - -/obj/item/clothing/suit/roguetown/armor/chainmail/iron - icon_state = "ichainmail" - name = "chainmaille" - desc = "A chain vest made of heavy iron rings. Better than nothing." - body_parts_covered = CHEST|GROIN|VITALS - smeltresult = /obj/item/ingot/iron - -/obj/item/clothing/suit/roguetown/armor/chainmail/hauberk - slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT - name = "hauberk" - desc = "A longer steel maille that protects the legs." - body_parts_covered = CHEST|GROIN|ARMS|LEGS|VITALS - icon_state = "hauberk" - item_state = "hauberk" - armor = list("blunt" = 60, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - smeltresult = /obj/item/ingot/steel - do_sound_chain = TRUE - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 - -/obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/fluted - name = "fluted hauberk" - desc = "An ornate cuirass, flanked with sleeves of steel maille." - icon_state = "flutedhauberk" - item_state = "flutedhauberk" - - -/obj/item/clothing/suit/roguetown/armor/chainmail/bikini - name = "chainmail bikini" - desc = "Not very comfortable against the skin." - icon_state = "chainkini" - item_state = "chainkini" - allowed_sex = list(FEMALE) - allowed_race = CLOTHED_RACES_TYPES - body_parts_covered = CHEST|GROIN - armor_class = ARMOR_CLASS_LIGHT - -/obj/item/clothing/suit/roguetown/armor/plate - slot_flags = ITEM_SLOT_ARMOR - name = "steel half-plate" - desc = "\'Adventurer-fit\' plate armor with pauldrons." - body_parts_covered = CHEST|GROIN|VITALS - icon_state = "halfplate" - item_state = "halfplate" - armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - nodismemsleeves = TRUE - max_integrity = 500 - allowed_sex = list(MALE, FEMALE) - do_sound_plate = TRUE - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - equip_delay_self = 4 SECONDS - unequip_delay_self = 4 SECONDS - armor_class = ARMOR_CLASS_HEAVY - smelt_bar_num = 3 - -/obj/item/clothing/suit/roguetown/armor/otavan - slot_flags = ITEM_SLOT_ARMOR - name = "otavan half-plate" - desc = "half-plate armor with pauldrons." - body_parts_covered = CHEST|GROIN|VITALS - icon_state = "corsethalfplate" - item_state = "corsethalfplate" - adjustable = CAN_CADJUST - armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "piercing" = 100, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - nodismemsleeves = TRUE - max_integrity = 500 - allowed_sex = list(MALE, FEMALE) - do_sound_plate = TRUE - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - equip_delay_self = 4 SECONDS - unequip_delay_self = 4 SECONDS - armor_class = ARMOR_CLASS_HEAVY - smelt_bar_num = 3 - allowed_race = NON_DWARVEN_RACE_TYPES - -/obj/item/clothing/suit/roguetown/armor/otavan/AdjustClothes(mob/user) - if(loc == user) - playsound(user, "sound/foley/dropsound/cloth_drop.ogg", 100, TRUE, -1) - if(adjustable == CAN_CADJUST) - adjustable = CADJUSTED - icon_state = "fancyhalfplate" - body_parts_covered = CHEST|GROIN|VITALS - flags_cover = null - emote_environment = 0 - update_icon() - if(ishuman(user)) - var/mob/living/carbon/H = user - H.update_inv_armor() - block2add = null - else if(adjustable == CADJUSTED) - ResetAdjust(user) - emote_environment = 3 - update_icon() - if(user) - if(ishuman(user)) - var/mob/living/carbon/H = user - H.update_inv_armor() - -/obj/item/clothing/suit/roguetown/armor/plate/bikini - name = "half-plate bikini" - desc = "Half plate in bikini form, still just as protective somehow. Save for the stomach." - body_parts_covered = CHEST|GROIN - icon_state = "halfplatekini" - item_state = "halfplatekini" - allowed_sex = list(FEMALE) - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 - -/obj/item/clothing/suit/roguetown/armor/plate/half - slot_flags = ITEM_SLOT_ARMOR - name = "steel cuirass" - desc = "A basic cuirass of steel. Lightweight and durable." - body_parts_covered = CHEST|VITALS - icon_state = "cuirass" - item_state = "cuirass" - armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - allowed_race = CLOTHED_RACES_TYPES - nodismemsleeves = TRUE - do_sound_plate = TRUE - blocking_behavior = null - max_integrity = 300 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 - -/obj/item/clothing/suit/roguetown/armor/plate/full - name = "plate armor" - desc = "Full plate. Leg protecting tassets, groin cup, armored vambraces." - icon_state = "plate" - body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS - equip_delay_self = 12 SECONDS - unequip_delay_self = 12 SECONDS - equip_delay_other = 3 SECONDS - strip_delay = 6 SECONDS - smelt_bar_num = 4 - -/obj/item/clothing/suit/roguetown/armor/plate/full/bikini - name = "fullplate bikini" - desc = "Full plate in bikini form, full package and full exposure." - icon_state = "platekini" - allowed_sex = list(FEMALE) - body_parts_covered = CHEST|GROIN|LEGS|ARMS - equip_delay_self = 8 SECONDS - unequip_delay_self = 8 SECONDS - equip_delay_other = 3 SECONDS - strip_delay = 6 SECONDS - smelt_bar_num = 3 - -/obj/item/clothing/suit/roguetown/armor/plate/half/iron - name = "iron breastplate" - desc = "A basic cuirass of iron, protective and moderately durable." - icon_state = "ibreastplate" - max_integrity = 200 - smeltresult = /obj/item/ingot/iron - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 - -/obj/item/clothing/suit/roguetown/armor/plate/half/elven - name = "elven guardian cuirass" - desc = "A cuirass made of steel with a thin decorative gold plating. Lightweight and durable." - color = COLOR_ASSEMBLY_GOLD - -/obj/item/clothing/suit/roguetown/armor/plate/scale - slot_flags = ITEM_SLOT_ARMOR - name = "scalemail" - desc = "Metal scales interwoven intricately to form flexible protection!" - body_parts_covered = CHEST|VITALS|GROIN|LEGS - allowed_sex = list(MALE, FEMALE) - icon_state = "lamellar" - max_integrity = 200 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - equip_delay_self = 4 SECONDS - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 - -/obj/item/clothing/suit/roguetown/armor/heartfelt/lord - slot_flags = ITEM_SLOT_ARMOR - name = "coat of armor" - desc = "A lordly coat of armor." - body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS - icon_state = "heartfelt" - item_state = "heartfelt" - armor = list("blunt" = 90, "slash" = 90, "stab" = 80, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - allowed_sex = list(MALE, FEMALE) - nodismemsleeves = TRUE - blocking_behavior = null - max_integrity = 400 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - armor_class = ARMOR_CLASS_HEAVY - smelt_bar_num = 4 - -/obj/item/clothing/suit/roguetown/armor/heartfelt/hand - slot_flags = ITEM_SLOT_ARMOR - name = "coat of armor" - desc = "A lordly coat of armor." - body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS - icon_state = "heartfelt_hand" - item_state = "heartfelt_hand" - armor = list("blunt" = 90, "slash" = 90, "stab" = 80, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - allowed_sex = list(MALE, FEMALE) - nodismemsleeves = TRUE - blocking_behavior = null - max_integrity = 400 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - armor_class = ARMOR_CLASS_HEAVY - smelt_bar_num = 4 - -/obj/item/clothing/suit/roguetown/armor/brigandine - slot_flags = ITEM_SLOT_ARMOR - name = "brigandine" - desc = "A coat with plates concealed inside an exterior fabric." - icon_state = "brigandine" - blocksound = SOFTHIT - body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS - armor = list("blunt" = 90, "slash" = 60, "stab" = 70, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - allowed_sex = list(MALE, FEMALE) - nodismemsleeves = TRUE - max_integrity = 350 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - equip_delay_self = 4 SECONDS - armor_class = ARMOR_CLASS_HEAVY - sleeved_detail = FALSE - boobed_detail = FALSE - -/obj/item/clothing/suit/roguetown/armor/brigandine/Initialize() - . = ..() - AddComponent(/datum/component/squeak, list('sound/foley/footsteps/armor/coatplates (1).ogg',\ - 'sound/foley/footsteps/armor/coatplates (2).ogg',\ - 'sound/foley/footsteps/armor/coatplates (3).ogg'), 100) - -/obj/item/clothing/suit/roguetown/armor/brigandine/attack_right(mob/user) - if(detail_tag) - return - var/the_time = world.time - var/pickedcolor = input(user, "Select a color.","Brigandine Color") as null|anything in CLOTHING_COLOR_NAMES - if(!pickedcolor) - return - if(world.time > (the_time + 30 SECONDS)) - return - detail_tag = "_det" - detail_color = clothing_color2hex(pickedcolor) - update_icon() - if(ismob(loc)) - var/mob/L = loc - L.update_inv_armor() - -/obj/item/clothing/suit/roguetown/armor/brigandine/update_icon() - cut_overlays() - if(get_detail_tag()) - var/mutable_appearance/pic = mutable_appearance(icon(icon, "[icon_state][detail_tag]")) - pic.appearance_flags = RESET_COLOR - if(get_detail_color()) - pic.color = get_detail_color() - add_overlay(pic) - -/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/Initialize() - . = ..() - if(GLOB.lordprimary) - lordcolor(GLOB.lordprimary,GLOB.lordsecondary) - GLOB.lordcolor += src - -/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/lordcolor(primary,secondary) - detail_tag = "_det" - detail_color = primary - update_icon() - if(ismob(loc)) - var/mob/L = loc - L.update_inv_armor() - -/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/Destroy() - GLOB.lordcolor -= src - return ..() - -/obj/item/clothing/suit/roguetown/armor/brigandine/coatplates - slot_flags = ITEM_SLOT_ARMOR - name = "coat of plates" - desc = "A leather coat with plates attached to it to increase protection while retaining mobility" - icon_state = "coat_of_plates" - blocksound = PLATEHIT - body_parts_covered = CHEST|GROIN|VITALS|ARMS - armor = list("blunt" = 90, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) - max_integrity = 250 - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel - armor_class = ARMOR_CLASS_HEAVY - smelt_bar_num = 2 +//LIGHT ARMOR// /obj/item/clothing/suit/roguetown/armor/armordress slot_flags = ITEM_SLOT_ARMOR @@ -379,6 +49,8 @@ /obj/item/clothing/suit/roguetown/armor/armordress/alt icon_state = "armordressalt" +//gambeson family + /obj/item/clothing/suit/roguetown/armor/gambeson slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT name = "gambeson" @@ -443,6 +115,21 @@ allowed_race = NON_DWARVEN_RACE_TYPES icon_state = "shadowrobe" +/obj/item/clothing/suit/roguetown/armor/gambeson/hierophant + name = "hierophant's shawl" + icon_state = "desertrobe" + item_state = "desertrobe" + desc = "A thick robe intervowen with spell-laced fabrics. Thick and protective while remaining light and breezy; the perfect gear for protecting one from the threats of the sun, the desert and the daemons, yet still allowing one to cast spells aptly." + naledicolor = TRUE + +/obj/item/clothing/suit/roguetown/armor/gambeson/heavy/pontifex + name = "pontifex's kaftan" + icon_state = "monkleather" + item_state = "monkleather" + desc = "Tight boiled leathers that stretch and fit to one's frame perfectly." + +//leather family + /obj/item/clothing/suit/roguetown/armor/leather name = "leather armor" desc = "Flexible cowhide armor. Lightweight, better than nothing." @@ -669,68 +356,331 @@ sellprice = 50 armor_class = ARMOR_CLASS_LIGHT allowed_sex = list(MALE, FEMALE) - allowed_race = CLOTHED_RACES_TYPES + allowed_race = CLOTHED_RACES_TYPES + +/obj/item/clothing/suit/roguetown/armor/silkcoat/Initialize() + . = ..() + color = pick(CLOTHING_PURPLE, null,CLOTHING_GREEN, CLOTHING_RED) + +//MEDIUM ARMOR// + +/obj/item/clothing/suit/roguetown/armor/chainmail + slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT + name = "haubergeon" + desc = "A steel maille shirt." + body_parts_covered = CHEST|GROIN|ARMS|VITALS + icon_state = "haubergeon" + armor = list("blunt" = 60, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT) + blocksound = CHAINHIT + drop_sound = 'sound/foley/dropsound/chain_drop.ogg' + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + armor_class = ARMOR_CLASS_MEDIUM + +/obj/item/clothing/suit/roguetown/armor/chainmail/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle) + +/obj/item/clothing/suit/roguetown/armor/chainmail/iron + icon_state = "ichainmail" + name = "chainmaille" + desc = "A chain vest made of heavy iron rings. Better than nothing." + body_parts_covered = CHEST|GROIN|VITALS + smeltresult = /obj/item/ingot/iron + +/obj/item/clothing/suit/roguetown/armor/chainmail/hauberk + slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT + name = "hauberk" + desc = "A longer steel maille that protects the legs." + body_parts_covered = CHEST|GROIN|ARMS|LEGS|VITALS + icon_state = "hauberk" + item_state = "hauberk" + armor = list("blunt" = 60, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + smeltresult = /obj/item/ingot/steel + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 + +/obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/fluted + name = "fluted hauberk" + desc = "An ornate cuirass, flanked with sleeves of steel maille." + icon_state = "flutedhauberk" + item_state = "flutedhauberk" + + +/obj/item/clothing/suit/roguetown/armor/chainmail/bikini + name = "chainmail bikini" + desc = "Not very comfortable against the skin." + icon_state = "chainkini" + item_state = "chainkini" + allowed_sex = list(FEMALE) + allowed_race = CLOTHED_RACES_TYPES + body_parts_covered = CHEST|GROIN + armor_class = ARMOR_CLASS_LIGHT //placed in the medium category to keep it with its parent obj + +/obj/item/clothing/suit/roguetown/armor/plate/bikini + name = "half-plate bikini" + desc = "Half plate in bikini form, still just as protective somehow. Save for the stomach." + body_parts_covered = CHEST|GROIN + icon_state = "halfplatekini" + item_state = "halfplatekini" + allowed_sex = list(FEMALE) + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 + +/obj/item/clothing/suit/roguetown/armor/plate/half + slot_flags = ITEM_SLOT_ARMOR + name = "steel cuirass" + desc = "A basic cuirass of steel. Lightweight and durable." + body_parts_covered = CHEST|VITALS + icon_state = "cuirass" + item_state = "cuirass" + armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + allowed_race = CLOTHED_RACES_TYPES + nodismemsleeves = TRUE + blocking_behavior = null + max_integrity = 300 + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 + +/obj/item/clothing/suit/roguetown/armor/plate/half/iron + name = "iron breastplate" + desc = "A basic cuirass of iron, protective and moderately durable." + icon_state = "ibreastplate" + max_integrity = 200 + smeltresult = /obj/item/ingot/iron + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 + +/obj/item/clothing/suit/roguetown/armor/plate/half/elven + name = "elven guardian cuirass" + desc = "A cuirass made of steel with a thin decorative gold plating. Lightweight and durable." + color = COLOR_ASSEMBLY_GOLD + +/obj/item/clothing/suit/roguetown/armor/plate/scale + slot_flags = ITEM_SLOT_ARMOR + name = "scalemail" + desc = "Metal scales interwoven intricately to form flexible protection!" + body_parts_covered = CHEST|VITALS|GROIN|LEGS + allowed_sex = list(MALE, FEMALE) + icon_state = "lamellar" + max_integrity = 200 + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + equip_delay_self = 4 SECONDS + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 + +//HEAVY ARMOR// + +/obj/item/clothing/suit/roguetown/armor/plate + slot_flags = ITEM_SLOT_ARMOR + name = "steel half-plate" + desc = "\'Adventurer-fit\' plate armor with pauldrons." + body_parts_covered = CHEST|GROIN|VITALS + icon_state = "halfplate" + item_state = "halfplate" + armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + nodismemsleeves = TRUE + max_integrity = 500 + allowed_sex = list(MALE, FEMALE) + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + equip_delay_self = 4 SECONDS + unequip_delay_self = 4 SECONDS + armor_class = ARMOR_CLASS_HEAVY + smelt_bar_num = 3 -/obj/item/clothing/suit/roguetown/armor/silkcoat/Initialize() +/obj/item/clothing/suit/roguetown/armor/plate/Initialize(mapload) . = ..() - color = pick(CLOTHING_PURPLE, null,CLOTHING_GREEN, CLOTHING_RED) + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_STEP) - //--------------- BLACKSTEEL --------------------- +/obj/item/clothing/suit/roguetown/armor/plate/full + name = "plate armor" + desc = "Full plate. Leg protecting tassets, groin cup, armored vambraces." + icon_state = "plate" + body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS + equip_delay_self = 12 SECONDS + unequip_delay_self = 12 SECONDS + equip_delay_other = 3 SECONDS + strip_delay = 6 SECONDS + smelt_bar_num = 4 -/obj/item/clothing/suit/roguetown/armor/blacksteel/platechest +/obj/item/clothing/suit/roguetown/armor/plate/full/bikini + name = "fullplate bikini" + desc = "Full plate in bikini form, full package and full exposure." + icon_state = "platekini" + allowed_sex = list(FEMALE) + body_parts_covered = CHEST|GROIN|LEGS|ARMS + equip_delay_self = 8 SECONDS + unequip_delay_self = 8 SECONDS + equip_delay_other = 3 SECONDS + strip_delay = 6 SECONDS + smelt_bar_num = 3 + +/obj/item/clothing/suit/roguetown/armor/heartfelt/lord slot_flags = ITEM_SLOT_ARMOR - name = "Blacksteel Plate Armor" - desc = "A suit of Full Plate smithed of durable blacksteel." + name = "coat of armor" + desc = "A lordly coat of armor." body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS - icon = 'icons/roguetown/clothing/special/blkknight.dmi' - mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/blkknight.dmi' - icon_state = "bkarmor" - item_state = "bkarmor" - armor = list("blunt" = 90, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - allowed_race = CLOTHED_RACES_TYPES + icon_state = "heartfelt" + item_state = "heartfelt" + armor = list("blunt" = 90, "slash" = 90, "stab" = 80, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + allowed_sex = list(MALE, FEMALE) nodismemsleeves = TRUE - do_sound_plate = TRUE blocking_behavior = null - max_integrity = 600 + max_integrity = 400 anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/blacksteel + smeltresult = /obj/item/ingot/steel armor_class = ARMOR_CLASS_HEAVY - equip_delay_self = 12 SECONDS - unequip_delay_self = 12 SECONDS - equip_delay_other = 3 SECONDS - strip_delay = 6 SECONDS smelt_bar_num = 4 -/obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass +/obj/item/clothing/suit/roguetown/armor/heartfelt/hand slot_flags = ITEM_SLOT_ARMOR - name = "Blacksteel Cuirass" - desc = "A basic cuirass forged from blacksteel. It's somewhat more durable than regular steel." - body_parts_covered = CHEST|VITALS - icon_state = "grenzelcuirass" - item_state = "grenzelcuirass" - sleeved = 'icons/roguetown/clothing/onmob/helpers/stonekeep_merc.dmi' - armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) - allowed_race = CLOTHED_RACES_TYPES + name = "coat of armor" + desc = "A lordly coat of armor." + body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS + icon_state = "heartfelt_hand" + item_state = "heartfelt_hand" + armor = list("blunt" = 90, "slash" = 90, "stab" = 80, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + allowed_sex = list(MALE, FEMALE) nodismemsleeves = TRUE blocking_behavior = null max_integrity = 400 anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/blacksteel - armor_class = ARMOR_CLASS_MEDIUM - smelt_bar_num = 2 + smeltresult = /obj/item/ingot/steel + armor_class = ARMOR_CLASS_HEAVY + smelt_bar_num = 4 -/obj/item/clothing/suit/roguetown/armor/gambeson/hierophant - name = "hierophant's shawl" - icon_state = "desertrobe" - item_state = "desertrobe" - desc = "A thick robe intervowen with spell-laced fabrics. Thick and protective while remaining light and breezy; the perfect gear for protecting one from the threats of the sun, the desert and the daemons, yet still allowing one to cast spells aptly." - naledicolor = TRUE +/obj/item/clothing/suit/roguetown/armor/otavan + slot_flags = ITEM_SLOT_ARMOR + name = "otavan half-plate" + desc = "half-plate armor with pauldrons." + body_parts_covered = CHEST|GROIN|VITALS + icon_state = "corsethalfplate" + item_state = "corsethalfplate" + adjustable = CAN_CADJUST + armor = list("blunt" = 80, "slash" = 100, "stab" = 80, "piercing" = 100, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + nodismemsleeves = TRUE + max_integrity = 500 + allowed_sex = list(MALE, FEMALE) + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + equip_delay_self = 4 SECONDS + unequip_delay_self = 4 SECONDS + armor_class = ARMOR_CLASS_HEAVY + smelt_bar_num = 3 + allowed_race = NON_DWARVEN_RACE_TYPES -/obj/item/clothing/suit/roguetown/armor/gambeson/heavy/pontifex - name = "pontifex's kaftan" - icon_state = "monkleather" - item_state = "monkleather" - desc = "Tight boiled leathers that stretch and fit to one's frame perfectly." +/obj/item/clothing/suit/roguetown/armor/otavan/AdjustClothes(mob/user) + if(loc == user) + playsound(user, "sound/foley/dropsound/cloth_drop.ogg", 100, TRUE, -1) + if(adjustable == CAN_CADJUST) + adjustable = CADJUSTED + icon_state = "fancyhalfplate" + body_parts_covered = CHEST|GROIN|VITALS + flags_cover = null + emote_environment = 0 + update_icon() + if(ishuman(user)) + var/mob/living/carbon/H = user + H.update_inv_armor() + block2add = null + else if(adjustable == CADJUSTED) + ResetAdjust(user) + emote_environment = 3 + update_icon() + if(user) + if(ishuman(user)) + var/mob/living/carbon/H = user + H.update_inv_armor() + +/obj/item/clothing/suit/roguetown/armor/brigandine + slot_flags = ITEM_SLOT_ARMOR + name = "brigandine" + desc = "A coat with plates concealed inside an exterior fabric." + icon_state = "brigandine" + blocksound = SOFTHIT + body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS + armor = list("blunt" = 90, "slash" = 60, "stab" = 70, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + allowed_sex = list(MALE, FEMALE) + nodismemsleeves = TRUE + max_integrity = 350 + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + equip_delay_self = 4 SECONDS + armor_class = ARMOR_CLASS_HEAVY + sleeved_detail = FALSE + boobed_detail = FALSE + +/obj/item/clothing/suit/roguetown/armor/brigandine/Initialize() + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_COAT_STEP) + +/obj/item/clothing/suit/roguetown/armor/brigandine/attack_right(mob/user) + if(detail_tag) + return + var/the_time = world.time + var/pickedcolor = input(user, "Select a color.","Brigandine Color") as null|anything in CLOTHING_COLOR_NAMES + if(!pickedcolor) + return + if(world.time > (the_time + 30 SECONDS)) + return + detail_tag = "_det" + detail_color = clothing_color2hex(pickedcolor) + update_icon() + if(ismob(loc)) + var/mob/L = loc + L.update_inv_armor() + +/obj/item/clothing/suit/roguetown/armor/brigandine/update_icon() + cut_overlays() + if(get_detail_tag()) + var/mutable_appearance/pic = mutable_appearance(icon(icon, "[icon_state][detail_tag]")) + pic.appearance_flags = RESET_COLOR + if(get_detail_color()) + pic.color = get_detail_color() + add_overlay(pic) + +/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/Initialize() + . = ..() + if(GLOB.lordprimary) + lordcolor(GLOB.lordprimary,GLOB.lordsecondary) + GLOB.lordcolor += src + +/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/lordcolor(primary,secondary) + detail_tag = "_det" + detail_color = primary + update_icon() + if(ismob(loc)) + var/mob/L = loc + L.update_inv_armor() + +/obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/Destroy() + GLOB.lordcolor -= src + return ..() + +/obj/item/clothing/suit/roguetown/armor/brigandine/coatplates + slot_flags = ITEM_SLOT_ARMOR + name = "coat of plates" + desc = "A leather coat with plates attached to it to increase protection while retaining mobility" + icon_state = "coat_of_plates" + blocksound = PLATEHIT + body_parts_covered = CHEST|GROIN|VITALS|ARMS + armor = list("blunt" = 90, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + max_integrity = 250 + anvilrepair = /datum/skill/craft/armorsmithing + smeltresult = /obj/item/ingot/steel + armor_class = ARMOR_CLASS_HEAVY + smelt_bar_num = 2 /obj/item/clothing/suit/roguetown/armor/brigandine/sheriff/coat name = "coat of the commander" @@ -775,3 +725,38 @@ equip_delay_self = 40 armor_class = ARMOR_CLASS_MEDIUM w_class = WEIGHT_CLASS_BULKY + + //--------------- BLACKSTEEL --------------------- + +/obj/item/clothing/suit/roguetown/armor/plate/blacksteel_full_plate + name = "Blacksteel Plate Armor" + desc = "A suit of Full Plate smithed of durable blacksteel." + body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS + icon = 'icons/roguetown/clothing/special/blkknight.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/blkknight.dmi' + icon_state = "bkarmor" + item_state = "bkarmor" + armor = list("blunt" = 90, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) + allowed_race = CLOTHED_RACES_TYPES + blocking_behavior = null + max_integrity = 400 + smeltresult = /obj/item/ingot/blacksteel + equip_delay_self = 12 SECONDS + unequip_delay_self = 12 SECONDS + equip_delay_other = 3 SECONDS + strip_delay = 6 SECONDS + smelt_bar_num = 4 + +/obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate + name = "Blacksteel Cuirass" + desc = "A basic cuirass forged from blacksteel. It's somewhat more durable than regular steel." + body_parts_covered = CHEST|VITALS + icon_state = "grenzelcuirass" + item_state = "grenzelcuirass" + sleeved = 'icons/roguetown/clothing/onmob/helpers/stonekeep_merc.dmi' + allowed_race = CLOTHED_RACES_TYPES + blocking_behavior = null + max_integrity = 400 + smeltresult = /obj/item/ingot/blacksteel + armor_class = ARMOR_CLASS_MEDIUM + smelt_bar_num = 2 diff --git a/code/modules/clothing/rogueclothes/feet.dm b/code/modules/clothing/rogueclothes/feet.dm index 8f838aec1c9..8fc369ca516 100644 --- a/code/modules/clothing/rogueclothes/feet.dm +++ b/code/modules/clothing/rogueclothes/feet.dm @@ -173,6 +173,10 @@ resistance_flags = null sewrepair = TRUE +/obj/item/clothing/shoes/roguetown/jester/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_JINGLE_BELLS) + /obj/item/clothing/shoes/roguetown/grenzelhoft name = "grenzelhoft boots" icon_state = "grenzelboots" diff --git a/code/modules/clothing/rogueclothes/hats.dm b/code/modules/clothing/rogueclothes/hats.dm index ee4ca62ecad..c1b60ca8f7d 100644 --- a/code/modules/clothing/rogueclothes/hats.dm +++ b/code/modules/clothing/rogueclothes/hats.dm @@ -248,6 +248,10 @@ sewrepair = TRUE flags_inv = HIDEEARS +/obj/item/clothing/head/roguetown/jester/Initialize() + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_JINGLE_BELLS, 2) + /obj/item/clothing/head/roguetown/strawhat name = "straw hat" desc = "Keeps the sun off your head while toiling the fields." diff --git a/code/modules/clothing/rogueclothes/neck.dm b/code/modules/clothing/rogueclothes/neck.dm index fe7aed98bcf..07eb1312f10 100644 --- a/code/modules/clothing/rogueclothes/neck.dm +++ b/code/modules/clothing/rogueclothes/neck.dm @@ -368,3 +368,21 @@ desc = "A peculiar icon of worship from a foreign land. Forming the three-progned Psydonite cross in a circular ring, this bracelet embodies the Naledian belief of Psydon's eternity." icon_state = "psybracelet" item_state = null + +/obj/item/clothing/neck/roguetown/collar + name = "collar" + desc = "A band of leather which signifies bondage to another." + icon_state = "collar" + item_state = "collar" + resistance_flags = FIRE_PROOF + dropshrink = 0.5 + +/obj/item/clothing/neck/roguetown/collar/bell_collar + name = "bell collar" + desc = "A band of leather with a bell protects the local zads from the local catfolk." + icon_state = "bell_collar" + icon_state = "bell_collar" + +/obj/item/clothing/neck/roguetown/collar/bell_collar/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_JINGLE_BELLS) diff --git a/code/modules/clothing/rogueclothes/pants.dm b/code/modules/clothing/rogueclothes/pants.dm index d39b5831963..f232a2118e9 100644 --- a/code/modules/clothing/rogueclothes/pants.dm +++ b/code/modules/clothing/rogueclothes/pants.dm @@ -174,13 +174,11 @@ gender = PLURAL icon_state = "chain_legs" item_state = "chain_legs" -// adjustable = CAN_CADJUST sewrepair = FALSE armor = list("blunt" = 60, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT) blocksound = CHAINHIT max_integrity = 300 - var/do_sound = FALSE drop_sound = 'sound/foley/dropsound/chain_drop.ogg' anvilrepair = /datum/skill/craft/armorsmithing smeltresult = /obj/item/ingot/steel @@ -189,6 +187,9 @@ resistance_flags = FIRE_PROOF armor_class = ARMOR_CLASS_MEDIUM +/obj/item/clothing/under/roguetown/chainlegs/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle) /obj/item/clothing/under/roguetown/splintlegs name = "brigandine chausses" @@ -209,6 +210,10 @@ resistance_flags = FIRE_PROOF sewrepair = FALSE +/obj/item/clothing/under/roguetown/splintlegs/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_COAT_STEP) + /obj/item/clothing/under/roguetown/brayette name = "brayette" desc = "" @@ -248,7 +253,6 @@ prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT) blocksound = PLATEHIT max_integrity = 400 - var/do_sound = FALSE drop_sound = 'sound/foley/dropsound/armor_drop.ogg' anvilrepair = /datum/skill/craft/armorsmithing smeltresult = /obj/item/ingot/steel @@ -258,6 +262,9 @@ resistance_flags = FIRE_PROOF armor_class = ARMOR_CLASS_HEAVY +/obj/item/clothing/under/roguetown/platelegs/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_STEP) /obj/item/clothing/under/roguetown/chainlegs/skirt name = "steel chain skirt" @@ -343,7 +350,7 @@ //----------------- BLACKSTEEL--------------------- -/obj/item/clothing/under/roguetown/blacksteel/platelegs +/obj/item/clothing/under/roguetown/platelegs/blacksteel name = "Blacksteel Plate Chausses" desc = "Reinforced leg plates forged of durable blacksteel." gender = PLURAL @@ -351,21 +358,15 @@ mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/blkknight.dmi' icon_state = "bklegs" item_state = "bklegs" -// adjustable = CAN_CADJUST sewrepair = FALSE armor = list("blunt" = 90, "slash" = 100, "stab" = 80, "fire" = 0, "acid" = 0) prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_CHOP, BCLASS_BLUNT) blocksound = PLATEHIT max_integrity = 500 - var/do_sound = FALSE drop_sound = 'sound/foley/dropsound/armor_drop.ogg' anvilrepair = /datum/skill/craft/armorsmithing smeltresult = /obj/item/ingot/blacksteel - r_sleeve_status = SLEEVE_NOMOD - l_sleeve_status = SLEEVE_NOMOD smelt_bar_num = 2 - resistance_flags = FIRE_PROOF - armor_class = ARMOR_CLASS_HEAVY /obj/item/clothing/under/roguetown/trou/leather/pontifex name = "pontifex's chaqchur" diff --git a/code/modules/jobs/job_types/roguetown/mercenaries/classes/grenzelhoft.dm b/code/modules/jobs/job_types/roguetown/mercenaries/classes/grenzelhoft.dm index 698c77a44a6..c52ce87408f 100644 --- a/code/modules/jobs/job_types/roguetown/mercenaries/classes/grenzelhoft.dm +++ b/code/modules/jobs/job_types/roguetown/mercenaries/classes/grenzelhoft.dm @@ -70,7 +70,7 @@ neck = /obj/item/clothing/neck/roguetown/gorget shirt = /obj/item/clothing/suit/roguetown/shirt/grenzelhoft head = /obj/item/clothing/head/roguetown/grenzelhofthat - armor = /obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass + armor = /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate pants = /obj/item/clothing/under/roguetown/grenzelpants shoes = /obj/item/clothing/shoes/roguetown/grenzelhoft gloves = /obj/item/clothing/gloves/roguetown/grenzelgloves diff --git a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm index 5a5dbe3f814..66688c2e7e4 100644 --- a/code/modules/mob/living/simple_animal/rogue/game/saiga.dm +++ b/code/modules/mob/living/simple_animal/rogue/game/saiga.dm @@ -1,44 +1,11 @@ -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/find_food() - ..() - var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc - if(SV) - SV.eat(src) - food = max(food + 30, 100) - -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/update_icon() - cut_overlays() - ..() - if(stat != DEAD) - if(ssaddle) - var/mutable_appearance/saddlet = mutable_appearance(icon, "saddle-f-above", 4.3) - add_overlay(saddlet) - saddlet = mutable_appearance(icon, "saddle-f") - add_overlay(saddlet) - if(has_buckled_mobs()) - var/mutable_appearance/mounted = mutable_appearance(icon, "saiga_mounted", 4.3) - add_overlay(mounted) - -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/tamed() - ..() - deaggroprob = 30 - if(can_buckle) - var/datum/component/riding/D = LoadComponent(/datum/component/riding) - D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8), TEXT_SOUTH = list(0, 8), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 8))) - D.set_vehicle_dir_layer(SOUTH, OBJ_LAYER) - D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) - D.set_vehicle_dir_layer(EAST, OBJ_LAYER) - D.set_vehicle_dir_layer(WEST, OBJ_LAYER) - -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/death() - unbuckle_all_mobs() - .=..() +//the saiga /mob/living/simple_animal/hostile/retaliate/rogue/saiga - icon = 'icons/roguetown/mob/monster/saiga.dmi' - name = "saiga" + name = "saiga doe" desc = "" + icon = 'icons/roguetown/mob/monster/saiga.dmi' icon_state = "saiga" icon_living = "saiga" icon_dead = "saiga_dead" @@ -50,14 +17,21 @@ turns_per_move = 5 see_in_dark = 6 move_to_delay = 8 - animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, + animal_species = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigabuck + butcher_results = list( + /obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, /obj/item/reagent_containers/food/snacks/fat = 2, - /obj/item/natural/hide = 4, /obj/item/natural/bundle/bone/full =1) + /obj/item/natural/hide = 4, + /obj/item/natural/bundle/bone/full = 1, + ) base_intents = list(/datum/intent/simple/headbutt) health = 156 maxHealth = 156 - food_type = list(/obj/item/reagent_containers/food/snacks/grown/wheat,/obj/item/reagent_containers/food/snacks/grown/oat,/obj/item/reagent_containers/food/snacks/grown/apple) + food_type = list( + /obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/oat, + /obj/item/reagent_containers/food/snacks/grown/apple, + ) tame_chance = 25 bonus_tame_chance = 15 footstep_type = FOOTSTEP_MOB_SHOE @@ -72,7 +46,10 @@ STASPD = 15 STACON = 8 STASTR = 12 - childtype = list(/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid = 70, /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy = 30) + childtype = list( + /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid = 70, + /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy = 30, + ) pixel_x = -8 attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') can_buckle = TRUE @@ -81,42 +58,24 @@ aggressive = 1 remains_type = /obj/effect/decal/remains/saiga -/obj/effect/decal/remains/saiga - name = "remains" - gender = PLURAL - icon_state = "skele" - icon = 'icons/roguetown/mob/monster/saiga.dmi' - -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/get_sound(input) - switch(input) - if("aggro") - return pick('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') - if("pain") - return pick('sound/vo/mobs/saiga/pain (1).ogg','sound/vo/mobs/saiga/pain (2).ogg','sound/vo/mobs/saiga/pain (3).ogg') - if("death") - return pick('sound/vo/mobs/saiga/death (1).ogg','sound/vo/mobs/saiga/death (2).ogg') - if("idle") - return pick('sound/vo/mobs/saiga/idle (1).ogg','sound/vo/mobs/saiga/idle (2).ogg','sound/vo/mobs/saiga/idle (3).ogg','sound/vo/mobs/saiga/idle (4).ogg','sound/vo/mobs/saiga/idle (5).ogg','sound/vo/mobs/saiga/idle (6).ogg','sound/vo/mobs/saiga/idle (7).ogg') - - /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigakid - icon = 'icons/roguetown/mob/monster/saiga.dmi' - name = "saiga" + name = "saiga calf" desc = "" icon_state = "saigakid" icon_living = "saigakid" icon_dead = "saigakid_dead" icon_gib = "saigakid_gib" animal_species = null - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/bone = 3) - base_intents = list(/datum/intent/simple/headbutt) + butcher_results = list( + /obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/bone = 3, + ) health = 20 pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL maxHealth = 20 melee_damage_lower = 1 melee_damage_upper = 6 - gender = FEMALE STACON = 5 STASTR = 5 STASPD = 5 @@ -127,6 +86,136 @@ can_buckle = FALSE aggressive = 1 +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigabuck + name = "saiga buck" + desc = "" + icon_state = "buck" + icon_living = "buck" + icon_dead = "buck_dead" + icon_gib = "buck_gib" + gender = MALE + emote_see = list("stares.") + speak_chance = 1 + turns_per_move = 3 + see_in_dark = 6 + move_to_delay = 8 + butcher_results = list( + /obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, + /obj/item/reagent_containers/food/snacks/fat = 1, + /obj/item/natural/hide = 4, + /obj/item/natural/bundle/bone/full = 1, + /obj/item/clothing/head/roguetown/helmet/leather/saiga = 1, + ) + faction = list("saiga") + attack_verb_continuous = "headbutts" + attack_verb_simple = "headbutt" + health = 400 + maxHealth = 400 + melee_damage_lower = 60 + melee_damage_upper = 90 + environment_smash = ENVIRONMENT_SMASH_NONE + retreat_distance = 0 + minimum_distance = 0 + retreat_health = 0.3 + milkies = FALSE //what the fuck + STACON = 15 + STASTR = 12 + STASPD = 12 + attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') + buckle_lying = 0 + tame_chance = 25 + bonus_tame_chance = 15 + aggressive = 1 + remains_type = /obj/effect/decal/remains/saiga + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy + name = "saiga calf" + desc = "" + gender = MALE + icon_state = "saigaboy" + icon_living = "saigaboy" + icon_dead = "saigaboy_dead" + icon_gib = "saigaboy_gib" + animal_species = null + butcher_results = list( + /obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, + /obj/item/natural/bone = 3, + ) + health = 20 + maxHealth = 20 + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + milkies = FALSE + melee_damage_lower = 1 + melee_damage_upper = 6 + STACON = 5 + STASTR = 5 + STASPD = 5 + adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigabuck + tame = TRUE + can_buckle = FALSE + aggressive = 1 + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/tame + tame = TRUE + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigabuck/tame + tame = TRUE + +//the saiga's procs + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/find_food() + ..() + var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc + if(SV) + SV.eat(src) + food = max(food + 30, 100) + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/update_icon() + cut_overlays() + ..() + if(stat != DEAD) + if(ssaddle) + var/mutable_appearance/saddlet = mutable_appearance(icon, "saddle-f-above", 4.3) + add_overlay(saddlet) + saddlet = mutable_appearance(icon, "saddle-f") + add_overlay(saddlet) + if(has_buckled_mobs()) + var/mutable_appearance/mounted = mutable_appearance(icon, "saiga_mounted", 4.3) + add_overlay(mounted) + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/tamed() + ..() + deaggroprob = 30 + if(can_buckle) + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8), TEXT_SOUTH = list(0, 8), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 8))) + D.set_vehicle_dir_layer(SOUTH, OBJ_LAYER) + D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) + D.set_vehicle_dir_layer(EAST, OBJ_LAYER) + D.set_vehicle_dir_layer(WEST, OBJ_LAYER) + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/death() + unbuckle_all_mobs() + .=..() + +/obj/effect/decal/remains/saiga + name = "remains" + gender = PLURAL + icon_state = "skele" + icon = 'icons/roguetown/mob/monster/saiga.dmi' + +/mob/living/simple_animal/hostile/retaliate/rogue/saiga/get_sound(input) + switch(input) + if("aggro") + return pick('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') + if("pain") + return pick('sound/vo/mobs/saiga/pain (1).ogg','sound/vo/mobs/saiga/pain (2).ogg','sound/vo/mobs/saiga/pain (3).ogg') + if("death") + return pick('sound/vo/mobs/saiga/death (1).ogg','sound/vo/mobs/saiga/death (2).ogg') + if("idle") + return pick('sound/vo/mobs/saiga/idle (1).ogg','sound/vo/mobs/saiga/idle (2).ogg','sound/vo/mobs/saiga/idle (3).ogg','sound/vo/mobs/saiga/idle (4).ogg','sound/vo/mobs/saiga/idle (5).ogg','sound/vo/mobs/saiga/idle (6).ogg','sound/vo/mobs/saiga/idle (7).ogg') + /mob/living/simple_animal/hostile/retaliate/rogue/saiga/simple_limb_hit(zone) if(!zone) return "" @@ -168,53 +257,6 @@ return ..() -/mob/living/simple_animal/hostile/retaliate/rogue/saigabuck - icon = 'icons/roguetown/mob/monster/saiga.dmi' - name = "saiga" - icon_state = "buck" - icon_living = "buck" - icon_dead = "buck_dead" - icon_gib = "buck_gib" - gender = MALE - emote_see = list("stares.") - speak_chance = 1 - turns_per_move = 3 - see_in_dark = 6 - move_to_delay = 8 - base_intents = list(/datum/intent/simple/headbutt) - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 4, - /obj/item/reagent_containers/food/snacks/fat = 1, - /obj/item/natural/hide = 4, /obj/item/natural/bundle/bone/full = 1, - /obj/item/clothing/head/roguetown/helmet/leather/saiga = 1) - faction = list("saiga") - mob_biotypes = MOB_ORGANIC|MOB_BEAST - attack_verb_continuous = "headbutts" - attack_verb_simple = "headbutt" - health = 400 - maxHealth = 400 - melee_damage_lower = 60 - melee_damage_upper = 90 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 0 - minimum_distance = 0 - retreat_health = 0.3 - milkies = FALSE - food_type = list(/obj/item/reagent_containers/food/snacks/grown/wheat,/obj/item/reagent_containers/food/snacks/grown/oat,/obj/item/reagent_containers/food/snacks/grown/apple) - footstep_type = FOOTSTEP_MOB_SHOE - pooptype = /obj/item/natural/poo/horse - STACON = 15 - STASTR = 12 - STASPD = 12 - pixel_x = -8 - attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg') - can_buckle = TRUE - buckle_lying = 0 - can_saddle = TRUE - tame_chance = 25 - bonus_tame_chance = 15 - aggressive = 1 - remains_type = /obj/effect/decal/remains/saiga - /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck/update_icon() cut_overlays() ..() @@ -315,39 +357,6 @@ return "foreleg" return ..() - -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/saigaboy - icon = 'icons/roguetown/mob/monster/saiga.dmi' - name = "saiga" - desc = "" - gender = MALE - icon_state = "saigaboy" - icon_living = "saigaboy" - icon_dead = "saigaboy_dead" - icon_gib = "saigaboy_gib" - animal_species = null - butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1, /obj/item/natural/bone = 3) - base_intents = list(/datum/intent/simple/headbutt) - health = 20 - maxHealth = 20 - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - milkies = FALSE - melee_damage_lower = 1 - melee_damage_upper = 6 - STACON = 5 - STASTR = 5 - STASPD = 5 - adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck - tame = TRUE - can_buckle = FALSE - aggressive = 1 -/mob/living/simple_animal/hostile/retaliate/rogue/saiga/tame - tame = TRUE - -/mob/living/simple_animal/hostile/retaliate/rogue/saigabuck/tame - tame = TRUE - /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck/tame/saddled/Initialize() . = ..() var/obj/item/natural/saddle/S = new(src) diff --git a/code/modules/roguetown/roguecrafting/items.dm b/code/modules/roguetown/roguecrafting/items.dm index e6d2c9af686..0890042987c 100644 --- a/code/modules/roguetown/roguecrafting/items.dm +++ b/code/modules/roguetown/roguecrafting/items.dm @@ -751,3 +751,18 @@ /obj/item/rogueweapon/shield/heater/crafted sellprice = 6 + +/datum/crafting_recipe/roguetown/collar + name = "Collar" + result = /obj/item/clothing/neck/roguetown/collar + reqs = list(/obj/item/natural/hide = 1) + craftdiff = 0 + +/datum/crafting_recipe/roguetown/bell_collar + name = "Bell Collar" + result = /obj/item/clothing/neck/roguetown/collar/bell_collar + reqs = list( + /obj/item/natural/hide = 1, + /obj/item/jingle_bells = 1, + ) + craftdiff = 0 diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm index ede9b2795a6..d6837aea8c5 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm @@ -419,21 +419,21 @@ name = "Blacksteel Cuirass (+1 B.Steel)" req_bar = /obj/item/ingot/blacksteel additional_items = list(/obj/item/ingot/blacksteel) - created_item = /obj/item/clothing/suit/roguetown/armor/blacksteel/cuirass + created_item = /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_half_plate craftdiff = 5 /datum/anvil_recipe/armor/blacksteel/platechest name = "Blacksteel Plate Armor (+3 B.Steel)" req_bar = /obj/item/ingot/blacksteel additional_items = list(/obj/item/ingot/blacksteel, /obj/item/ingot/blacksteel, /obj/item/ingot/blacksteel) - created_item = /obj/item/clothing/suit/roguetown/armor/blacksteel/platechest + created_item = /obj/item/clothing/suit/roguetown/armor/plate/blacksteel_full_plate craftdiff = 5 /datum/anvil_recipe/armor/blacksteel/platelegs name = "Blacksteel Plate Chausses (+1 B.Steel)" req_bar = /obj/item/ingot/blacksteel additional_items = list(/obj/item/ingot/blacksteel) - created_item = /obj/item/clothing/under/roguetown/blacksteel/platelegs + created_item = /obj/item/clothing/under/roguetown/platelegs/blacksteel craftdiff = 5 /datum/anvil_recipe/armor/blacksteel/bucket diff --git a/code/modules/roguetown/roguejobs/engineer/anvil_recipes/mechanical.dm b/code/modules/roguetown/roguejobs/engineer/anvil_recipes/mechanical.dm index 77ef5e57607..9b41ff3f77d 100644 --- a/code/modules/roguetown/roguejobs/engineer/anvil_recipes/mechanical.dm +++ b/code/modules/roguetown/roguejobs/engineer/anvil_recipes/mechanical.dm @@ -3,6 +3,13 @@ appro_skill = /datum/skill/craft/engineering craftdiff = 1 +/datum/anvil_recipe/engineering/jingle_bells + name = "Jingling Bells" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/jingle_bells + createditem_num = 5 + craftdiff = 1 + // --------- BRONZE RECIPES ----------- /datum/anvil_recipe/engineering/bronze/locks diff --git a/icons/roguetown/clothing/neck.dmi b/icons/roguetown/clothing/neck.dmi index c649a60a0d6..9064612db5a 100644 Binary files a/icons/roguetown/clothing/neck.dmi and b/icons/roguetown/clothing/neck.dmi differ diff --git a/icons/roguetown/clothing/onmob/neck.dmi b/icons/roguetown/clothing/onmob/neck.dmi index bbc794c94ee..1582eb3aa44 100644 Binary files a/icons/roguetown/clothing/onmob/neck.dmi and b/icons/roguetown/clothing/onmob/neck.dmi differ diff --git a/icons/roguetown/items/misc.dmi b/icons/roguetown/items/misc.dmi index 61f4d6da767..1f6460b90f0 100644 Binary files a/icons/roguetown/items/misc.dmi and b/icons/roguetown/items/misc.dmi differ diff --git a/modular_azurepeak/code/datums/item_equipped_movement_rustle.dm b/modular_azurepeak/code/datums/item_equipped_movement_rustle.dm new file mode 100644 index 00000000000..d8d05f45230 --- /dev/null +++ b/modular_azurepeak/code/datums/item_equipped_movement_rustle.dm @@ -0,0 +1,67 @@ + +/* ported from tgstation: https://github.com/tgstation/tgstation/blob/master/code/datums/components/item_equipped_movement_rustle.dm +with light edits to work with roguecode */ + + +/datum/component/item_equipped_movement_rustle + + ///sound that plays, use an SFX define if there is multiple. + var/rustle_sounds = SFX_CHAIN_STEP + + ///what move are we on. + var/move_counter = 0 + ///how many moves to take before playing the sound. + var/move_delay = 4 + + ///volume at which the sound plays. + var/volume = 100 + ///does the sound vary? + var/sound_vary = TRUE + ///extra-range for this component's sound. + var/sound_extra_range = -1 + ///sound exponent for the rustle. + var/sound_falloff_exponent = 5 + ///when sounds start falling off for the rustle rustle. + var/sound_falloff_distance = 1 + +/datum/component/item_equipped_movement_rustle/Initialize(custom_sounds, move_delay_override, volume_override, extrarange, falloff_exponent, falloff_distance) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_unequip)) + + if(custom_sounds) + rustle_sounds = custom_sounds + if(isnum(volume_override)) + volume = volume_override + if(isnum(move_delay_override)) + move_delay = move_delay_override + if(isnum(extrarange)) + sound_extra_range = extrarange + if(isnum(falloff_exponent)) + sound_falloff_exponent = falloff_exponent + if(isnum(falloff_distance)) + sound_falloff_distance = falloff_distance + +/datum/component/item_equipped_movement_rustle/proc/on_equip(datum/source, mob/equipper, slot) + SIGNAL_HANDLER + RegisterSignal(equipper, COMSIG_MOVABLE_MOVED, PROC_REF(try_step), override = TRUE) + + +/datum/component/item_equipped_movement_rustle/proc/on_unequip(datum/source, mob/dropped) + SIGNAL_HANDLER + move_counter = 0 + UnregisterSignal(dropped, COMSIG_MOVABLE_MOVED) + +/datum/component/item_equipped_movement_rustle/proc/try_step(obj/item/clothing/source)//(mob/source) + SIGNAL_HANDLER + /*if (source.moving_diagonally == FIRST_DIAG_STEP) //you can uncomment these if someone ever implements diagonal movement + return*/ + move_counter++ + if(move_counter >= move_delay) + play_rustle_sound(source) + move_counter = 0 + +/datum/component/item_equipped_movement_rustle/proc/play_rustle_sound(obj/item/clothing/source)//(mob/source) + playsound(source, rustle_sounds, volume, sound_vary, sound_extra_range, sound_falloff_exponent, falloff = sound_falloff_distance) diff --git a/modular_azurepeak/code/datums/loadout.dm b/modular_azurepeak/code/datums/loadout.dm index 997da7691da..c0636e0fec9 100644 --- a/modular_azurepeak/code/datums/loadout.dm +++ b/modular_azurepeak/code/datums/loadout.dm @@ -203,3 +203,11 @@ GLOBAL_LIST_EMPTY(loadout_items) /datum/loadout_item/feather name = "Feather" path = /obj/item/natural/feather + +/datum/loadout_item/collar + name = "Collar" + path = /obj/item/clothing/neck/roguetown/collar + +/datum/loadout_item/bell_collar + name = "Bell Collar" + path = /obj/item/clothing/neck/roguetown/collar/bell_collar diff --git a/roguetown.dme b/roguetown.dme index c6508456150..aedc5d7227b 100644 --- a/roguetown.dme +++ b/roguetown.dme @@ -1887,6 +1887,7 @@ #include "modular_azurepeak\_statpacks.dm" #include "modular_azurepeak\_virtue.dm" #include "modular_azurepeak\code\datums\autopunctuation.dm" +#include "modular_azurepeak\code\datums\item_equipped_movement_rustle.dm" #include "modular_azurepeak\code\datums\loadout.dm" #include "modular_azurepeak\code\datums\mind.dm" #include "modular_azurepeak\code\game\area\areas.dm" diff --git a/sound/items/credits.txt b/sound/items/credits.txt new file mode 100644 index 00000000000..e4d216d547e --- /dev/null +++ b/sound/items/credits.txt @@ -0,0 +1,11 @@ +- jinglebell1.ogg (originally collarbell1.ogg) +- jinglebell2.ogg (originally collarbell2.ogg) +license: published without license +Made by Kevak +source: https://github.com/Rotwood-Vale/Ratwood-Keep/pull/1910 + +- jinglebell3.ogg (originally jesterstep1.ogg) +- jinglebell4.ogg (originally jesterstep2.ogg) +license: "CC-BY-SA-3.0" +Made and posted by GentleJester#8754 on the SS14 discord. +source: https://discord.com/channels/310555209753690112/311537926376783886/1097222920813674527 diff --git a/sound/items/jinglebell1.ogg b/sound/items/jinglebell1.ogg new file mode 100644 index 00000000000..4a6a055fcf6 Binary files /dev/null and b/sound/items/jinglebell1.ogg differ diff --git a/sound/items/jinglebell2.ogg b/sound/items/jinglebell2.ogg new file mode 100644 index 00000000000..4b259130720 Binary files /dev/null and b/sound/items/jinglebell2.ogg differ diff --git a/sound/items/jinglebell3.ogg b/sound/items/jinglebell3.ogg new file mode 100644 index 00000000000..0868c81990f Binary files /dev/null and b/sound/items/jinglebell3.ogg differ diff --git a/sound/items/jinglebell4.ogg b/sound/items/jinglebell4.ogg new file mode 100644 index 00000000000..f596209ccb4 Binary files /dev/null and b/sound/items/jinglebell4.ogg differ