diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index 8498f16bc8..bca29bd657 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -182,3 +182,15 @@
if("Dunked in water")
return CLOTHING_WET
+
+//Kaizoku Assets.
+
+#define CLOTHING_RONIN "#861e1e"
+#define CLOTHING_EIDOLON "#613a3f"
+#define CLOTHING_TOWERYAKKO "#804d97"
+#define CLOTHING_KABUKIMONO "#9b874f"
+
+#define CLOTHING_THUNDER "#be8b48"
+#define CLOTHING_STORM "#1a2677"
+#define CLOTHING_OCEAN "#56928a"
+#define CLOTHING_ISLAND "#bd3541"
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 0e55d96e77..6b3deae9b6 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -328,3 +328,7 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default.
#define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs.
#define BULLET_ACT_MISS "MISS"
+
+//Kaizoku Assets.
+
+#define MANCATCHER /datum/intent/polearm/thrust/mancatcher
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index bcdab799e9..833b4f5929 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -202,6 +202,7 @@
#define FACE (MOUTH | NOSE | EYES)
#define FULL_HEAD (HEAD | MOUTH | NOSE | EYES | EARS | HAIR)
#define HEAD_EXCEPT_MOUTH (HEAD | NOSE | EYES | EARS | HAIR)
+#define HEAD_EXCEPT_EYES (HEAD | MOUTH | NOSE | EARS | HAIR)
#define HEAD_NECK (HEAD | MOUTH | NOSE | EYES | EARS | HAIR | NECK)
#define BELOW_HEAD (CHEST | GROIN | VITALS | ARMS | HANDS | LEGS | FEET)
#define BELOW_CHEST (GROIN | VITALS | LEGS | FEET) //for water
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 33b9d61f18..19dab661b6 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -97,6 +97,10 @@ GLOBAL_LIST_INIT(our_forest_sex, typecacheof(list(
#define issnowelf(A) (is_species(A, /datum/species/elf/snow))
#define ishalfelf(A) (is_species(A, /datum/species/human/halfelf))
#define istiefling(A) (is_species(A, /datum/species/tieberian))
+#define isabyssariad(A) (is_species(A, /datum/species/abyssariad))
+#define ischangeling(A) (is_species(A, /datum/species/abyssariad/changeling))
+#define isogrun(A) (is_species(A, /datum/species/abyssariad/ogrun))
+#define isskylancer(A) (is_species(A, /datum/species/abyssariad/skylancer))
//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index eec8f31007..4bcbb3bc6e 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -466,3 +466,41 @@
//SPECIAL SKIN TONES
#define SKIN_COLOR_ROT "878f79"
+
+//DEFAULT ABYSSARIAD SKIN TONES
+#define SKIN_COLOR_OATHBOUND_MUQIAN "ffe0d1"
+#define SKIN_COLOR_OATHBOUND_KAIZOKU "fcccb3"
+#define SKIN_COLOR_OATHBOUND_SHUHEN "edc6b3"
+#define SKIN_COLOR_OATHBOUND_LINYOU "e2b9a3"
+#define SKIN_COLOR_OATHBOUND_DUSTWALKER "d9a284"
+#define SKIN_COLOR_WARPCASTER_MUQIAN "c9a893"
+#define SKIN_COLOR_WARPCASTER_KAIZOKU "ba9882"
+#define SKIN_COLOR_WARPCASTER_SHUHEN "99745d"
+#define SKIN_COLOR_WARPCASTER_LINYOU "745441"
+#define SKIN_COLOR_WARPCASTER_DUSTWALKER "302017"
+
+//SKYLANCER UNIQUE SKIN TONE
+#define SKIN_COLOR_PEPPERSBLOW "771111"
+
+//OGRE SKIN TONES
+#define SKIN_COLOR_DEFIANCE "bb5155" //RED DEFAULT
+#define SKIN_COLOR_DEFIANCE_SANGUINE "771111"
+#define SKIN_COLOR_STABILITY "6a9479"
+#define SKIN_COLOR_STABILITY_INTELLECT "286940"
+#define SKIN_COLOR_SERENITY "65a9ad"
+#define SKIN_COLOR_SERENITY_PEACE "5958a3"
+#define SKIN_COLOR_AUDACY "aa8e3a"
+#define SKIN_COLOR_AUDACY_MYSTERY "635834"
+#define SKIN_COLOR_BLANK_PURIFICATED "d8e1e2"
+
+
+//UNDINE SKIN TONES
+#define SKIN_COLOR_SWAMPCLAN "728400" //GREEN DEFAULT
+#define SKIN_COLOR_JUNGLECLAN "7a5e1b"
+#define SKIN_COLOR_LEAFCLAN "5ea889"
+#define SKIN_COLOR_BOGCLAN "1b7a5e"
+#define SKIN_COLOR_FORESTCLAN "5FB098"
+#define SKIN_COLOR_SHADOWCLAN "60609e"
+#define SKIN_COLOR_FIREBLOOMCLAN "E26846"
+#define SKIN_COLOR_ABYSSALCLAN "a198b8"
+s
diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm
index 3822810fb8..f86abb8a2d 100644
--- a/code/__DEFINES/roguetown.dm
+++ b/code/__DEFINES/roguetown.dm
@@ -1,7 +1,7 @@
//used in various places
-#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie")
+#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie", "abyssariad")
-#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf","Tiefling", "Aasimar")
+#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf","Tiefling", "Aasimar", "Changeling", "Skylancer", "Ogrun", "Undine")
#define ALL_TEMPLE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/pestra, /datum/patron/divine/malum)
#define ALL_CLERIC_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/necra, /datum/patron/divine/pestra, /datum/patron/divine/dendor, /datum/patron/divine/malum)
diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm
index 2f2d218d61..37c39e9a43 100644
--- a/code/__DEFINES/say.dm
+++ b/code/__DEFINES/say.dm
@@ -66,6 +66,8 @@
#define SPAN_DELF "delf"
#define SPAN_HELL "hellspeak"
#define SPAN_BEAST "beast"
+#define SPAN_ABYSSAL "abyssal"
+
//bitflag #defines for return value of the radio() proc.
#define ITALICS 1
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 2ece238985..fa78094a07 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -45,6 +45,8 @@
#define TRAIT_SHOCKIMMUNE "Shock Immunity"
#define TRAIT_LONGSTRIDER "Longstrider"
#define TRAIT_MOB_FIRE_IMMUNE "Fire Immune" // Not actual full immunity but reduces effect of fire_act()
+#define TRAIT_KAIZOKU "Foglander Cultured"
+
#define TRAIT_BASHDOORS "bashdoors"
#define TRAIT_NOMOOD "no_mood"
@@ -112,6 +114,7 @@ GLOBAL_LIST_INIT(roguetraits, list(
TRAIT_INTRAINING = "I'm going to be a knight someday! I can use training dummies more effectively than others.",
TRAIT_MALUMFIRE = "My hands are blessed by Malum to forge items of superb quality.",
TRAIT_MOB_FIRE_IMMUNE = span_info("I am not easily burned by flames."),
+ TRAIT_KAIZOKU = "Whether by birth or by learning, I've inherited the Islander ways instead of Imperial culture.",
))
// trait accessor defines
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index 9819414a28..de414e7557 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -271,11 +271,14 @@ SUBSYSTEM_DEF(mapping)
++space_levels_so_far
add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE)
+/* // Deprecated tg code, we don't have lavaland, thus we don't load it.
// load mining
if(config.minetype == "lavaland")
LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND)
else if (!isnull(config.minetype))
INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!")
+ */
+
#endif
if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen
diff --git a/code/controllers/subsystem/rogue/devotion.dm b/code/controllers/subsystem/rogue/devotion.dm
index b621d6dbdd..c75083f360 100644
--- a/code/controllers/subsystem/rogue/devotion.dm
+++ b/code/controllers/subsystem/rogue/devotion.dm
@@ -160,3 +160,18 @@
to_chat(src, "I gained [prayersesh] devotion!")
return
to_chat(src, "I gained [prayersesh] devotion!")
+
+//kaizoku asset
+
+/datum/devotion/cleric_holder/proc/grant_spells_sohei(mob/living/carbon/human/H)
+ if(!H || !H.mind)
+ return
+
+ var/datum/patron/A = H.patron
+ var/list/spelllist = list(/obj/effect/proc_holder/spell/invoked/icebind, A.t0)
+ for(var/spell_type in spelllist)
+ if(!spell_type || H.mind.has_spell(spell_type))
+ continue
+ H.mind.AddSpell(new spell_type)
+ level = CLERIC_T0
+ max_devotion = 150
diff --git a/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm b/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm
index a23f0485c1..c7f08d6bea 100644
--- a/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm
+++ b/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm
@@ -38,7 +38,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
maximum_possible_slots = 0
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index feae317bc5..d0f460b2a6 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -209,6 +209,14 @@
if(M.density)
to_chat(user, "Something in the way.")
return
+ if(R.req_kaizoku) //Requires Fog-island/Heartfell culture.
+ if(HAS_TRAIT(user, TRAIT_KAIZOKU))
+ to_chat(user, "I literally cannot fathom how imperials do this. Case hardening? Riveting? Fullering? Fluting? What is that?")
+ return //If abyssariad of someone from Heartfell, you can't make imperial crafts. Hopefully this will be brought over to Smithing too.
+ if(R.req_antikaizoku) //Requires Imperial or 'else' culture.
+ if(!HAS_TRAIT(user, TRAIT_KAIZOKU))
+ to_chat(user, "I literally cannot fathom how islanders do this. Differential hardening? Steel folding? Lost-wax casting? Tatami? What is that?")
+ return //If not Abyssariad or someone from Heartfell, you can't make islander crafts. Hopefully this will be brought over to Smithing too.
if(R.req_table)
if(!(locate(/obj/structure/table) in T))
to_chat(user, "I need to make this on a table.")
diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm
index 9fdf8658aa..186bf1c6db 100644
--- a/code/datums/components/crafting/recipes.dm
+++ b/code/datums/components/crafting/recipes.dm
@@ -24,6 +24,8 @@
var/craftdiff = 1
var/sellprice = 0
//crafting diff, every diff removes 25% chance to craft
+ var/req_kaizoku = FALSE
+ var/req_antikaizoku = FALSE
/*
/datum/crafting_recipe/example
name = ""
diff --git a/code/datums/gods/patrons/divine_pantheon.dm b/code/datums/gods/patrons/divine_pantheon.dm
index fb0bbeba65..40cae05829 100644
--- a/code/datums/gods/patrons/divine_pantheon.dm
+++ b/code/datums/gods/patrons/divine_pantheon.dm
@@ -47,6 +47,12 @@
flaws= "Reckless, Stubborn, Destructive"
worshippers = "Sailors of the Sea and Sky, Horrid Sea-Creachers, Fog Islanders"
sins = "Fear, Hubris, Trying to Tame the Seas"
+ t0 = /obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal
+ t1 = /obj/effect/proc_holder/spell/invoked/projectile/purify
+ t2 = /obj/effect/proc_holder/spell/invoked/icebind
+ t3 = null
+ // t3 = /obj/effect/proc_holder/spell/invoked/elemental //Not finished.
+
/datum/patron/divine/necra
name = "Necra"
diff --git a/code/datums/status_effects/rogue/debuff.dm b/code/datums/status_effects/rogue/debuff.dm
index 1d6fb8ee40..4bf87ce464 100644
--- a/code/datums/status_effects/rogue/debuff.dm
+++ b/code/datums/status_effects/rogue/debuff.dm
@@ -405,3 +405,93 @@
name = "Chilled"
desc = "I can barely feel my limbs!"
icon_state = "chilled"
+
+
+//////////////////////Kaizoku stuff//////////////////
+
+//frozentomb
+
+/datum/status_effect/abyssaltomb //Abyssor-followers should instantly break away from this coffin.
+ id = "abyssor_frozen"
+ status_type = STATUS_EFFECT_UNIQUE
+ duration = -1
+ examine_text = "You've been frozen within an abyssal tomb."
+ alert_type = /atom/movable/screen/alert/status_effect/frozen
+ var/obj/structure/abyssaltomb/tomb
+ var/attempts = 0 // special feature that increases difficulty with each failed struggle attempt against the ice coffin. Or that's what I intended for it to be.
+
+/atom/movable/screen/alert/status_effect/frozen
+ name = "Abyssal Submission"
+ desc = "Imprisoned by frozen tides, beneath the deep blue."
+ icon_state = "intomb"
+ icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi'
+
+//Normal Freeze
+
+/atom/movable/screen/alert/status_effect/debuff/freezing //the abyss is cold.
+ name = "Abyssal Frostnip"
+ desc = "Frost-bitten and touched by the ancient god, seeping through time and existence. The god feels, spreads and carves your skin.\n" //that's abyssor.
+ icon_state = "freezing"
+ icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi'
+
+/atom/movable/screen/alert/status_effect/debuff/freezing/severe //the abyss is VERY cold.
+ name = "Abyssal Frostbite"
+ desc = "It carries his touch, the cold for those who trespassed his domain. Ice crystals carves patterns upon where he gazes, the stare is on you.\n" //that's abyssor.
+ icon_state = "freezing_severe"
+ icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi'
+
+/datum/status_effect/debuff/freezing
+ id = "freezing"
+ alert_type = /atom/movable/screen/alert/status_effect/debuff/freezing
+ duration = 30 SECONDS
+ effectedstats = list("speed" = -3, "endurance" = -2)
+
+/datum/status_effect/debuff/freezing/tick()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ C.adjustOxyLoss(-6, 0) //it will actually allow you to breath underwater.
+ if(prob(50))
+ C.adjustFireLoss(2)
+ C.Jitter(3)
+
+/datum/status_effect/debuff/freezing/on_apply()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ to_chat(C, "The frigid spike manifests supernatural cold within me.")
+
+/datum/status_effect/debuff/freezing/on_remove()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ C.remove_status_effect(/datum/status_effect/debuff/freezing)
+ to_chat(C, "I feel the suffocating cold vanishing, as body warmth returns to me.")
+// severe freezing
+
+/datum/status_effect/debuff/freezing
+ id = "freezing"
+ alert_type = /atom/movable/screen/alert/status_effect/debuff/freezing/severe
+ duration = 30 SECONDS
+ effectedstats = list("speed" = -5, "endurance" = -4, "strength" = -2)
+
+/datum/status_effect/debuff/freezing/severe/on_apply()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ if(C.has_status_effect(/datum/status_effect/debuff/freezing))
+ C.remove_status_effect(/datum/status_effect/debuff/freezing)
+ to_chat(C, "The biting cold intensified. Cold, abyssal tendrils roams and invades the surface of my skin.")
+ else
+ to_chat(C, "Torturous, carving frost upon my core! It reaches down into my spine in soul-rending agony!")
+ return ..()
+
+/datum/status_effect/debuff/freezing/severe/on_remove()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ C.apply_status_effect(/datum/status_effect/debuff/freezing)// Allows transition from severe freezing to normal freezing. Your body is warming up.
+ to_chat(C, "The excruciating icy tendrils retreats, leaving behind a bone-chilling cold weighting upon my muscles.")
+
+/datum/status_effect/debuff/freezing/severe/tick()
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ C.adjustOxyLoss(-6, 0) // Same underwater breathing
+ if(prob(50))
+ C.adjustFireLoss(4)
+ C.Jitter(3)
diff --git a/code/datums/stress/negative_events.dm b/code/datums/stress/negative_events.dm
index 407f958255..b4f9c22c48 100644
--- a/code/datums/stress/negative_events.dm
+++ b/code/datums/stress/negative_events.dm
@@ -288,3 +288,13 @@
timer = 60 MINUTES
stressadd = 1
desc = "I feel useless..."
+
+/datum/stressevent/raider
+ timer = 1 MINUTES
+ stressadd = 1
+ desc = "Vicious sea raider, they prey on fellow men."
+
+/datum/stressevent/whaler
+ timer = 1 MINUTES
+ stressadd = 1
+ desc = "Filthy corrupted whaler. Never forget the Storm Lord."
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index 4a46a0fc45..6bb123bd72 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -336,3 +336,22 @@
smoke.effect_type = smoke_type
smoke.set_up(range, location)
smoke.start()
+
+/////////////////////////////////////////////
+// kaizoku stupid smoke
+/////////////////////////////////////////////
+
+/obj/effect/particle_effect/smoke/bad/stupid
+ lifetime = 20
+ color = "#1b802c"
+ opaque = FALSE
+
+/obj/effect/particle_effect/smoke/bad/stupid/smoke_mob(mob/living/carbon/M)
+ if(..())
+ M.add_nausea(4)
+ M.adjustToxLoss(5, 0)
+ M.emote("cough")
+ return 1
+
+/datum/effect_system/smoke_spread/bad/stupid
+ effect_type = /obj/effect/particle_effect/smoke/bad/stupid
diff --git a/code/game/objects/items/rogueitems/bombs.dm b/code/game/objects/items/rogueitems/bombs.dm
index c445701325..5472b74e54 100644
--- a/code/game/objects/items/rogueitems/bombs.dm
+++ b/code/game/objects/items/rogueitems/bombs.dm
@@ -79,3 +79,177 @@
fuze--
if(fuze <= 0)
explode(TRUE)
+
+/obj/item/grenade/smoke_bomb
+ name = "abyssariad smokebomb"
+ desc = "The stealth operation bomb made out of guano, sugar and nahcolite for shinobi usage."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "smoke_bomb"
+ item_state = "smoke_bomb"
+ slot_flags = ITEM_SLOT_BELT
+
+/obj/item/grenade/smoke_bomb/attack_self(mob/user)
+ user.visible_message("[user]'s hand breaks the ceramic of the [src], releasing smoke!", "I squeeze [src] down to release the inner compounds to the air.")
+ prime()
+
+/obj/item/grenade/smoke_bomb/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ ..()
+ prime()
+
+/obj/item/grenade/smoke_bomb/smokebomb/prime()
+ update_mob()
+ playsound(src, 'sound/blank.ogg', 50, TRUE, -3)
+ var/datum/effect_system/smoke_spread/bad/smoke = new
+ smoke.set_up(4, src)
+ smoke.start()
+ qdel(smoke)
+ qdel(src)
+
+/obj/item/grenade/smoke_bomb/poison
+ name = "abyssariad poisonbomb"
+ desc = "Ceramic sphere containing toxic composts from within, awaiting to be released."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "poison_bomb"
+ item_state = "poison_bomb"
+ slot_flags = ITEM_SLOT_BELT
+
+/obj/item/grenade/smoke_bomb/poison/attack_self(mob/user)
+ user.visible_message("[user]'s hand breaks the ceramic of the [src], engulfing themselves on poisonous smoke.", "I squeeze [src] down to release the inner compounds- like an IDIOT. RUN AWAY!")
+ prime()
+
+/obj/item/grenade/smoke_bomb/poison/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ ..()
+ prime()
+
+/obj/item/grenade/smoke_bomb/poison/prime()
+ update_mob()
+ playsound(src, 'sound/blank.ogg', 50, TRUE, -3)
+ var/datum/effect_system/smoke_spread/bad/stupid/smoke = new
+ smoke.set_up(4, src)
+ smoke.start()
+ qdel(smoke)
+ qdel(src)
+
+/obj/item/zhentianlei
+ name = "thunder crash bomb"
+ desc = "a bomb made out of cast iron and ceramic, now filled with gunpowder to the brim. Usually, it takes five second before the fire on the fuse reaches the gunpowder."
+ icon_state = "zhentianlei"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ w_class = WEIGHT_CLASS_NORMAL
+ throwforce = 0
+ throw_speed = 0.5
+ slot_flags = ITEM_SLOT_HIP
+
+ var/lit = FALSE
+ var/active = FALSE
+ var/fuze = 50 // about five seconds
+ var/turf/ignited_turf = null
+ var/obj/item/ignited_by = null
+ var/initial_icon_state = "zhentianlei"
+ var/active_icon_state = "zhentianlei_rewinded"
+ var/prob2fail = 23 // chance of failure
+
+/obj/item/zhentianlei/spark_act()
+ ignite()
+
+/obj/item/zhentianlei/fire_act()
+ ignite()
+
+/obj/item/zhentianlei/ex_act()
+ if(!QDELETED(src))
+ lit = TRUE
+ trigger_explosion(TRUE)
+
+/obj/item/zhentianlei/New()
+ ..()
+ icon_state = initial_icon_state
+
+/obj/item/zhentianlei/proc/ignite(atom/igniter = null)
+ if(!lit)
+ START_PROCESSING(SSfastprocess, src) // Start the processing for the fuse
+ icon_state = active_icon_state
+ lit = TRUE
+ active = TRUE
+ ignited_by = igniter
+ playsound(src.loc, 'sound/items/firelight.ogg', 100)
+ to_chat(src.loc, "The [name] starts to fizzle!")
+ if(ismob(src.loc))
+ var/mob/M = src.loc
+ M.update_inv_hands()
+
+/obj/item/zhentianlei/proc/stop_ignition()
+ if(lit)
+ lit = FALSE
+ active = FALSE
+ STOP_PROCESSING(SSfastprocess, src)
+ icon_state = initial_icon_state
+ ignited_by = null
+ playsound(src.loc, 'sound/items/firesnuff.ogg', 100)
+ to_chat(src.loc, "\The [name] has been snuffed out.")
+ if(ismob(src.loc))
+ var/mob/M = src.loc
+ M.update_inv_hands()
+
+/obj/item/zhentianlei/proc/trigger_explosion(skipprob = FALSE)
+ STOP_PROCESSING(SSfastprocess, src) // Stop the processing for the fuse
+ var/turf/T = get_turf(src)
+ if(T)
+ if(lit && active)
+ var/prob_fail = prob2fail
+ if(ignited_by && istype(ignited_by, /obj/item))
+ var/obj/item/igniter = ignited_by
+ if(igniter.vars["prob2fail"])
+ prob_fail = igniter.vars["prob2fail"]
+ if(!skipprob && prob(prob_fail))
+ stop_ignition()
+ else
+ explosion(T, light_impact_range = 2, flame_range = 4, smoke = TRUE, soundin = pick('sound/misc/explode/bottlebomb (1).ogg','sound/misc/explode/bottlebomb (2).ogg'))
+ else
+ if(prob(prob2fail))
+ stop_ignition()
+ else
+ playsound(T, 'sound/items/firesnuff.ogg', 100)
+ new /obj/item/shard (T)
+ qdel(src)
+
+/obj/item/zhentianlei/proc/is_flammable(atom/target)
+ if(isturf(target))
+ return (target.vars["flags"] & FLAMMABLE) != 0
+ return FALSE
+
+/obj/item/zhentianlei/process()
+ if(active && lit)
+ fuze -= 1
+ if(fuze <= 0)
+ trigger_explosion(TRUE)
+ else if(active && !lit)
+ stop_ignition()
+
+/obj/item/zhentianlei/examine(mob/user)
+ var/inspect_text = ..()
+ if(active)
+ inspect_text += "The fuse is burning!"
+ else
+ inspect_text += "The fuse is not lit."
+ return inspect_text
+
+/obj/item/zhentianlei/attackby(obj/item/C, mob/living/user)
+ if(C.sharpness >= 1)
+ if(fuze > 30)
+ fuze = 30
+ to_chat(user, "You shorten [src]'s fuse.")
+ playsound(src.loc, 'sound/items/sharpen_short2.ogg', 100)
+ if(fuze == 0)
+ to_chat(user, "The fuse is too small to be cut.")
+ return
+ else
+ fuze = 0
+ to_chat(user, "You shorten [src]'s fuse, turning it into a booby trap!")
+ playsound(src.loc, 'sound/items/sharpen_short2.ogg', 100)
+ return
+ if(istype(C, /obj/item/natural/cloth))
+ if(fuze < 30)
+ fuze = 30
+ to_chat(user, "You fully increase the [src]'s fuse with the cloth.")
+ else
+ return
diff --git a/code/game/objects/items/rogueweapons/melee/axes.dm b/code/game/objects/items/rogueweapons/melee/axes.dm
index 10a673bbbe..1c953aefcb 100644
--- a/code/game/objects/items/rogueweapons/melee/axes.dm
+++ b/code/game/objects/items/rogueweapons/melee/axes.dm
@@ -331,3 +331,84 @@
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/battle/ono
+ slot_flags = ITEM_SLOT_HIP
+ force = 15
+ force_wielded = 25
+ possible_item_intents = list(/datum/intent/axe/cut)
+ name = "nagai ono"
+ desc = "A battleaxe of Abyssariad design with a longer handle and shorter blade than its Humen counterpart. The increased leverage, reduced weight, and smaller striking area give it greater use against armor, while the longer handle makes it easier to parry with."
+ icon_state = "ono"
+ max_blade_int = 500
+ smeltresult = /obj/item/ingot/steel
+ gripped_intents = list(/datum/intent/axe/cut,/datum/intent/axe/battleaxe/chop/ono)
+ parrysound = list('sound/combat/parry/wood/parrywood (1).ogg', 'sound/combat/parry/wood/parrywood (2).ogg', 'sound/combat/parry/wood/parrywood (3).ogg')
+ swingsound = BLADEWOOSH_MED
+ associated_skill = /datum/skill/combat/axesmaces
+ minstr = 8
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ max_blade_int = 200
+ max_integrity = 300
+ wdefense = 6
+
+/obj/item/rogueweapon/battle/getonmobprop(tag)
+ if(tag)
+ switch(tag)
+ if("gen")
+ return list("shrink" = 0.6,"sx" = -12,"sy" = -10,"nx" = 12,"ny" = -10,"wx" = -8,"wy" = -7,"ex" = 3,"ey" = -9,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 90,"sturn" = -90,"wturn" = -90,"eturn" = 90,"nflip" = 0,"sflip" = 8,"wflip" = 8,"eflip" = 0)
+ if("wielded")
+ return list("shrink" = 0.6,"sx" = -12,"sy" = 3,"nx" = 12,"ny" = 2,"wx" = -8,"wy" = 2,"ex" = 4,"ey" = 2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 8,"wflip" = 8,"eflip" = 0)
+ if("onbelt")
+ return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0)
+ return ..()
+
+/obj/item/rogueweapon/thrown/ono
+ slot_flags = ITEM_SLOT_HIP
+ force = 15
+ possible_item_intents = list(/datum/intent/axe/cut, /datum/intent/axe/chop) //Added chop because the throwing Ono is still suitable for woodcutting. It's a hatchet.
+ name = "nage ono"
+ desc = "A well-balanced, short-handled Abyssariad axe designed for throwing. Traditionally used as a hunting weapon as an alternative to archery, as bow wood is scarce on the Fog Isles."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "throwing_ono"
+ max_blade_int = 500
+ smeltresult = /obj/item/ash
+ parrysound = list('sound/combat/parry/wood/parrywood (1).ogg', 'sound/combat/parry/wood/parrywood (2).ogg', 'sound/combat/parry/wood/parrywood (3).ogg')
+ swingsound = BLADEWOOSH_MED
+ wlength = WLENGTH_SHORT
+ associated_skill = /datum/skill/combat/axesmaces
+ minstr = 6
+ max_blade_int = 200
+ max_integrity = 300
+ wdefense = 3
+ throwforce = 40
+ axe_cut = 5 //You'd be surprised to know that the axe head design for throwing is the same one for cutting wood, but lighter.
+ embedding = list("embedded_pain_multiplier" = 3, "embed_chance" = 20, "embedded_fall_chance" = 60)
+
+/obj/item/rogueweapon/woodcut/changfu
+ name = "iron changfu"
+ desc = "The tool of justice, hardwork and destruction, all in one."
+ icon_state = "changfu"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ wdefense = 4 //Battle designed.
+ axe_cut = 3 //Not as viable for cutting as the other one, less than a hatchet in fact.
+
+/datum/intent/axe/battleaxe/chop/ono //because actual battle axes don't have stupid large blades.
+ name = "chop"
+ icon_state = "inchop"
+ blade_class = BCLASS_CHOP
+ attack_verb = list("chops", "hacks")
+ animname = "chop"
+ hitsound = list('sound/combat/hits/bladed/genchop (1).ogg', 'sound/combat/hits/bladed/genchop (2).ogg', 'sound/combat/hits/bladed/genchop (3).ogg')
+ penfactor = AP_HEAVYAXE_STAB
+ swingdelay = 1
+ misscost = 10
diff --git a/code/game/objects/items/rogueweapons/melee/blunt.dm b/code/game/objects/items/rogueweapons/melee/blunt.dm
index a0ff373d0c..015952b933 100644
--- a/code/game/objects/items/rogueweapons/melee/blunt.dm
+++ b/code/game/objects/items/rogueweapons/melee/blunt.dm
@@ -394,3 +394,153 @@
max_integrity = 150
minstr = 10
sellprice = 35
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/mace/goden/otsuchi
+ force = 10
+ force_wielded = 25
+ possible_item_intents = list(/datum/intent/mace/strike)
+ gripped_intents = list(/datum/intent/mace/strike/heavy, /datum/intent/mace/smash/heavy)
+ name = "otsuchi"
+ desc = "A wooden greathammer of Abyssariad make, heavy enough to give any warrior pause. Often used by Yamabushi warriors."
+ icon_state = "otsuchi"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ sharpness = IS_BLUNT
+ wlength = WLENGTH_GREAT
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ associated_skill = /datum/skill/combat/axesmaces
+ smeltresult = /obj/item/ash
+ swingsound = BLUNTWOOSH_HUGE
+ max_integrity = 250
+ minstr = 10
+ wdefense = 3
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ bigboy = TRUE
+ gripsprite = TRUE
+
+/obj/item/rogueweapon/mace/goden/kanabo
+ name = "kanabo"
+ desc = "A heavy two handed club, reinforced with an iron sleeve. Most commonly seen in the hands of Onis and Yamabushis."
+ icon_state = "kanabo"
+ possible_item_intents = list(/datum/intent/mace/strike/heavy)
+ gripped_intents = list(/datum/intent/mace/smash/heavy) //Can't spear people, but can make them bleed due to spikes.
+ sharpness = IS_SHARP
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ parrysound = "parrywood"
+ swingsound = BLUNTWOOSH_MED
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ bigboy = TRUE
+ gripsprite = TRUE
+ slowdown = 1
+
+/obj/item/rogueweapon/mace/goden/kanabo/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse kanabo"
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/mace/goden/steel/tetsubo
+ name = "tetsubo"
+ desc = "A heavier variant of the kanabo, fitted with a steel sleeve bearing menacing spikes and favored by Ogrun Warlords. Requires immense strength to use, but hits like a raging bull."
+ icon_state = "tetsubo"
+ possible_item_intents = list(/datum/intent/mace/strike/heavy)
+ gripped_intents = list(/datum/intent/mace/smash/heavy) //Can't spear people, but can make them bleed due to spikes.
+ sharpness = IS_SHARP
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+
+/obj/item/rogueweapon/mace/goden/steel/tetsubo/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse tetsubo"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/mace/ararebo
+ name = "ararebo"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "ararebo"
+ desc = "A large, iron-capped club used by Abyssariads as a armor-breaking tool. Most suitable to breach Grezenholftean cuirass while still holding a shield in the off-hand."
+
+/obj/item/rogueweapon/mace/ararebo/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse ararebo"
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/mace/ararebo/obsidian
+ name = "obsidian club"
+ icon_state = "obsidian_club"
+ desc = "A large, wooden club with sharp flakes of obsidian embedded into it. Its appearance is similar to a flanged mace, but it inflicts deep cuts."
+ max_integrity = 150
+ wlength = WLENGTH_SHORT
+ w_class = WEIGHT_CLASS_NORMAL
+ sharpness = IS_SHARP
+ wbalance = -1
+ minstr = 0
+ wdefense = 3
+
+/obj/item/rogueweapon/mace/steel/ararebo
+ name = "steel ararebo"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "sararebo"
+ desc = "A large, steel-capped club used by Abyssariads as a armor-breaking tool. Most suitable to breach Grezenholftean cuirass while still holding a shield in the off-hand."
+
+/obj/item/rogueweapon/mace/steel/ararebo/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse steel ararebo"
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/mace/cudgel/rungu
+ force = 15
+ force_wielded = 20
+ name = "rungu club"
+ desc = "A more well defined, chiseled and ashed wooden club that can be throw at enemies. Used by Undine warriors."
+ icon_state = "rungu"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ wbalance = 0
+ wdefense = 1
+ wlength = WLENGTH_NORMAL
+ w_class = WEIGHT_CLASS_NORMAL
+ max_integrity = 150
+ possible_item_intents = list(/datum/intent/mace/strike/wood)
+ gripped_intents = list(/datum/intent/mace/strike/wood, /datum/intent/mace/smash/wood)
+ smeltresult = /obj/item/ash
+ minstr = 0
+ throwforce = 25
+
+/obj/item/rogueweapon/mace/cudgel/jitte
+ name = "jitte"
+ desc = "An abyssariad Ashigaru guard weapon. The hook along the shaft allows the club to arrest a blade that has been parried, increasing the defensive utility of a otherwise simple baton."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "jitte"
+ wdefense = 4
diff --git a/code/game/objects/items/rogueweapons/melee/flail.dm b/code/game/objects/items/rogueweapons/melee/flail.dm
index 0aa82f5a20..c52d728587 100644
--- a/code/game/objects/items/rogueweapons/melee/flail.dm
+++ b/code/game/objects/items/rogueweapons/melee/flail.dm
@@ -135,6 +135,128 @@
if("onbelt")
return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0)
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+/datum/intent/flail/strike/ranged/smash
+ name = "smash"
+ chargetime = 5
+ no_early_release = TRUE
+ penfactor = 80
+ recovery = 10
+ damfactor = 1.2
+ chargedloop = /datum/looping_sound/flailswing
+ keep_looping = TRUE
+ icon_state = "insmash"
+ blade_class = BCLASS_SMASH
+ attack_verb = list("smashes")
+ hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
+ misscost = 10
+
+/datum/intent/flail/strike/ranged
+ name = "strike"
+ blade_class = BCLASS_BLUNT
+ attack_verb = list("strikes", "hits")
+ hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
+ swingdelay = 5
+ penfactor = 5
+ icon_state = "instrike"
+ misscost = 5
+ reach = 2
+ recovery = 10
+ chargedloop = /datum/looping_sound/flailswing
+ keep_looping = TRUE
+ chargetime = 10
+ no_early_release = TRUE
+
+/datum/intent/flail/cut
+ name = "cut"
+ blade_class = BCLASS_CUT
+ attack_verb = list("cuts", "slashes")
+ hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
+ swingdelay = 5
+ penfactor = AP_SPEAR_POKE
+ icon_state = "incut"
+ misscost = 5
+ reach = 2
+ recovery = 10
+ chargedloop = /datum/looping_sound/flailswing
+ keep_looping = TRUE
+ chargetime = 5
+ no_early_release = TRUE
+/datum/intent/flail/cut/chop
+ name = "chop"
+ chargetime = 5
+ no_early_release = TRUE
+ penfactor = AP_FLAIL_SMASH
+ recovery = 10
+ damfactor = 1.2
+ chargedloop = /datum/looping_sound/flailswing
+ keep_looping = TRUE
+ icon_state = "inchop"
+ blade_class = BCLASS_CHOP
+ attack_verb = list("chops")
+ hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
+ misscost = 10
+ chargetime = 10
+/datum/intent/flail/strike/smash
+ name = "smash"
+ chargetime = 5
+ no_early_release = TRUE
+ penfactor = 80
+ recovery = 10
+ damfactor = 1.2
+ chargedloop = /datum/looping_sound/flailswing
+ keep_looping = TRUE
+ icon_state = "insmash"
+ blade_class = BCLASS_SMASH
+ attack_verb = list("smashes")
+ hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
+ misscost = 5
+
+/obj/item/rogueweapon/flail/sflail/kusarifundo
+ name = "kusari fundo"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ desc = "A pair of heavy steel weights connected by a long chain. Originally a self-defense weapon during the Blood Apotheosis when iron was running low - so lead balls were used as weight."
+ icon_state = "kusarifundo"
+
+/obj/item/rogueweapon/flail/nunchaku
+ force = 20
+ w_class = WEIGHT_CLASS_SMALL
+ name = "nunchaku"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ desc = "A pair of wooden rods linked by a short chain, designed for concealment and often used by Abyssariad Plowmen- for where swords was only on the hands of the Zamurai caste."
+ icon_state = "nunchaku"
+
+/obj/item/rogueweapon/flail/kusarigama
+ force = DAMAGE_NORMAL_FLAIL
+ possible_item_intents = list(/datum/intent/flail/strike/ranged, /datum/intent/flail/strike/ranged/smash, /datum/intent/flail/cut, /datum/intent/flail/cut/chop)
+ name = "kusarigama"
+ desc = "A handle with a sickle-like blade, featuring a chain that ends in a spiked ball. Versatile weapon adapted to defeat sword-wielding foes."
+ icon_state = "kusarigama"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ sharpness = IS_SHARP
+ wlength = WLENGTH_NORMAL
+ w_class = WEIGHT_CLASS_NORMAL
+ slot_flags = ITEM_SLOT_HIP
+ blade_dulling = DULLING_BASHCHOP
+ associated_skill = /datum/skill/combat/whipsflails
+ smeltresult = /obj/item/ingot/steel
+ parrysound = list('sound/combat/parry/parrygen.ogg')
+ swingsound = BLUNTWOOSH_MED
+
+/obj/item/rogueweapon/flail/kusarigama/peasant
+ force = DAMAGE_WEAK_FLAIL
+ name = "handmade kusarigama"
+ desc = "A handle with a sickle-like blade and a chain with spiked ball, quickly assembled from an actual plowmen's sickle - it is clearly homemade."
+ icon_state = "kusarigama_homemade"
+ smeltresult = /obj/item/ingot/iron
diff --git a/code/game/objects/items/rogueweapons/melee/knives.dm b/code/game/objects/items/rogueweapons/melee/knives.dm
index bacc260a1b..e511115738 100644
--- a/code/game/objects/items/rogueweapons/melee/knives.dm
+++ b/code/game/objects/items/rogueweapons/melee/knives.dm
@@ -385,4 +385,51 @@
smeltresult = /obj/item/ash
sellprice = 10
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/huntingknife/kunai //Practically a villager knife with more utility. It helps others to climb walls.
+ name = "kunai"
+ desc = "A simple stabbing weapon made of iron which originated as a masonry or gardening tool, useful for climbing walls in similar ways to pitons."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "kunai"
+ force = 8
+
+/obj/item/rogueweapon/knife/kaiken
+ name = "iron kaiken"
+ desc = "The weapon laws in colonized Abyssariad islands, with high humen or elven population, forbade non-warriors from carrying blades in public, so abyssariad colonists made weapons such as this."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "kaiken"
+ possible_item_intents = list(/datum/intent/dagger/thrust, /datum/intent/dagger/cut)
+ force = DAMAGE_DAGGER
+ smeltresult = null
+ sellprice = 15
+/obj/item/rogueweapon/knife/steel/tanto
+ name = "steel tanto"
+ desc = "Initially a companion blade to the tachi in a zamurai's daisho, the tanto was later replaced by the wakizashi with the shift to infantry tactics after the Bloody Apotheosis."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "tanto"
+ possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/thrust, /datum/intent/dagger/chop)
+ force = DAMAGE_DAGGER+2
+ smeltresult = null
+ wdefense = AVERAGE_PARRY
+ wbalance = VERY_HARD_TO_DODGE
+ sellprice = 20
+
+/obj/item/rogueweapon/knife/hunting/sai //I love gundam for helping me on my request on this sai. I love HIM!!!!!!!!!!!!! -Monochrome
+ name = "sai"
+ desc = "Recognizable by its uniqueness and typically carried in pairs, the sai features a sharply-tapered central rod with two prongs at the cross-guards. It lacks blade for cutting, but it excels in jabbing and defending against other weapons."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "sai"
+ possible_item_intents = list(/datum/intent/dagger/thrust,/datum/intent/dagger/thrust/pick)
+ w_class = WEIGHT_CLASS_NORMAL
+ force = 10
+ wdefense = 5
diff --git a/code/game/objects/items/rogueweapons/melee/polearms.dm b/code/game/objects/items/rogueweapons/melee/polearms.dm
index d4e7406be2..8b6a7ec03e 100644
--- a/code/game/objects/items/rogueweapons/melee/polearms.dm
+++ b/code/game/objects/items/rogueweapons/melee/polearms.dm
@@ -58,7 +58,7 @@
penfactor = AP_SPEAR_POKE
chargetime = 0
misscost = 7
-
+
/datum/intent/polearm/thrust/spear
penfactor = AP_POLEARM_THRUST-10
@@ -118,6 +118,25 @@
misscost = 20
warnie = "mobwarning"
+/*-----------\
+| Mancatching |
+\-----------*/
+
+/datum/intent/polearm/thrust/mancatcher //giving it pain, because it having a 'struggle system' to endure stun was a bit too much.
+ name = "grabbing thrust"
+ blade_class = BCLASS_STAB
+ attack_verb = list("stabs")
+ animname = "grab"
+ icon_state = "ingrab"
+ reach = 2
+ chargetime = 10
+ warnie = "mobwarning"
+ hitsound = list('sound/combat/hits/bladed/genstab (1).ogg', 'sound/combat/hits/bladed/genstab (2).ogg', 'sound/combat/hits/bladed/genstab (3).ogg')
+ damfactor = 0.5
+ candodge = FALSE
+ penfactor = 100
+ swingdelay = 1
+ misscost = 10
//................ Wooden Staff ............... //
/obj/item/rogueweapon/polearm/woodstaff
@@ -156,7 +175,7 @@
icon_state = "quarterstaff"
max_integrity = INTEGRITY_STRONG
sellprice = 10
-
+
//................ Iron-shod Staff ............... //
/obj/item/rogueweapon/polearm/woodstaff/quarterstaff/iron
@@ -219,7 +238,7 @@
name = "billhook"
desc = "A polearm with a curved krag, a Valorian design for dismounting mounted warriors and to strike down monstrous beasts."
icon_state = "billhook"
- possible_item_intents = list(POLEARM_THRUST, POLEARM_BASH)
+ possible_item_intents = list(POLEARM_THRUST, POLEARM_BASH)
gripped_intents = list(POLEARM_THRUST, SPEAR_CUT, /datum/intent/polearm/chop, POLEARM_BASH)
resistance_flags = FIRE_PROOF
drop_sound = 'sound/foley/dropsound/blade_drop.ogg'
@@ -416,3 +435,401 @@
thrown_bclass = BCLASS_CUT
throwforce = 25
sellprice = 10
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/polearm/mancatcher
+ force = 10
+ force_wielded = 20
+ possible_item_intents = list(POLEARM_BASH)
+ gripped_intents = list(POLEARM_BASH,MANCATCHER)
+ name = "sasumata"
+ desc = "A unique polearm featuring a spring-action pincer on the end, lined with spikes designed to cause extreme pain, rather than extreme injury. Referred to as a man-catcher in the Humen tongue due to coastal kidnappings performed by abyssariad Wokous."
+ icon_state = "sasumata"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ wlength = WLENGTH_GREAT
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ blade_dulling = DULLING_BASHCHOP
+ walking_stick = TRUE
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ max_blade_int = 120
+ max_integrity = 200
+ wdefense = 5
+ bigboy = TRUE
+ gripsprite = TRUE
+ associated_skill = /datum/skill/combat/polearms
+ walking_stick = TRUE
+ embedding = list(
+ "embed_chance" = 75,
+ "embedded_pain_multiplier" = 10,
+ "embedded_fall_chance" = 0,
+ )
+
+/obj/item/rogueweapon/polearm/spear/yari
+ name = "su yari"
+ desc = "A long, straight-headed spear of Abyssariad design, often used by sea raiders to fend off light cavalry on in-land offensives. Well know for the 'Yari wall' strategy and for being 'Yarimazing' among Abyssariads."
+ icon_state = "suyari"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ bigboy = TRUE
+ gripsprite = TRUE
+ smeltresult = /obj/item/ingot/iron
+ dropshrink = 0.8
+ blade_dulling = DULLING_BASHCHOP
+
+/obj/item/rogueweapon/polearm/spear/yari/katakama
+ name = "katakama yari"
+ desc = "An evolution of the su yari, recognizable for a single scythe-like tang perpendicular to the main point that allows for better defense against the likes of naginata."
+ icon_state = "katakamayari"
+ wdefense = 5
+ smeltresult = /obj/item/ingot/iron
+ max_blade_int = 150
+ max_integrity = 400
+
+/obj/item/rogueweapon/polearm/spear/billhook/jumonji
+ name = "jumonji yari"
+ desc = "The design of the katakama yari taken to its logical conclusion, the jumonji yari features an elongated tang on each side that is the same length as the forward point. There is no polearms that offers better defense without harming efficiency."
+ icon_state = "jumonjiyari"
+
+/obj/item/rogueweapon/polearm/halberd/naginata
+ name = "naginata"
+ desc = "Its earliest form being a tachi blade mounted upon a long wooden pole, the naginata was the first polearm to come into widespread use by the Abyssariad, who developed the weapon in order to better combat Humen and Elven cavalry."
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ icon_state = "naginata"
+ dropshrink = 0.8
+
+/obj/item/rogueweapon/polearm/halberd/naginata/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse naginata"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/polearm/halberd/naginata/tsukushi //make two instead of only one
+ name = "tsukushi naginata"
+ desc = "A cheaper, easier to construct iron Naginata with a blade held by its guard instead of its tang. Likely developed from a scythe, the blade is easily found on poor, wandering monks."
+ force_wielded = DAMAGE_SPEAR_WIELD+3
+ icon_state = "surplusnaginata"
+ smeltresult = /obj/item/ingot/iron
+ dropshrink = 0.8
+ wdefense = 4
+
+/obj/item/rogueweapon/polearm/halberd/bisento //Giving the Bisento storeable 'back' because, otherwise, people will SUFFER spawning with it. Too bugged for my taste.
+ name = "bisento"
+ desc = "The Bisento is the direct evolution of the old, outdated Champion Guandao. Akin to a large cleaver or a broad axe."
+ icon_state = "bisento"
+ dropshrink = 0.8
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+
+/obj/item/rogueweapon/polearm/halberd/bisento/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse bisento"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/polearm/spear/stone/obsidian //direct upgrade to the stone one.
+ force = DAMAGE_SPEAR+2
+ force_wielded = DAMAGE_SPEAR+4
+ throwforce = DAMAGE_SPEAR
+ name = "obsidian spear"
+ desc = "A spear with a surprisingly sharp edge from vulcanic glass. Used by Undine tribes."
+ icon_state = "obsidian_spear"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ smeltresult = /obj/item/ash
+ max_blade_int = 100
+
+/obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff
+ name = "bo staff"
+ desc = "the bo, or 'abyssariad quarterstaff', is a simple weapon used in martial arts to entrap, strike and sweep the enemy."
+ icon_state = "bostaff"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ bigboy = TRUE
+
+/obj/item/rogueweapon/polearm/firelance
+ name = "sanctiflux firelance"
+ desc = "The new iteration of the ancient abyssariad 'Widowmaker', the harbinger of purification against zizodemons, tieflings and grezenhoft. \
+ Used safely by the hundred thousand march, by hands whom holds purifying intentions from the abyss." //Hundred thousand march is the definition of champions. But after bloody apotheosis, its just anyone islander-cultured.
+ icon = 'icons/roguetown/kaizoku/weapons/firelance.dmi'
+ icon_state = "firelance"
+ slot_flags = ITEM_SLOT_BACK
+ w_class = WEIGHT_CLASS_BULKY
+ can_parry = TRUE
+ wlength = WLENGTH_GREAT
+ bigboy = TRUE
+ gripsprite = FALSE
+ resistance_flags = FLAMMABLE // Weapon made mostly of wood
+ max_integrity = INTEGRITY_STANDARD
+ minstr = 8
+ smeltresult = /obj/item/ingot/steel
+ associated_skill = /datum/skill/combat/polearms
+ drop_sound = 'sound/foley/dropsound/wooden_drop.ogg'
+ parrysound = list('sound/combat/parry/wood/parrywood (1).ogg', 'sound/combat/parry/wood/parrywood (2).ogg', 'sound/combat/parry/wood/parrywood (3).ogg')
+ dropshrink = 0.8
+ blade_dulling = DULLING_BASHCHOP
+ walking_stick = TRUE
+ wlength = WLENGTH_LONG
+ sharpness = IS_BLUNT
+ minstr = 8
+ sellprice = 400
+
+ var/cocked = FALSE
+ var/lit = FALSE
+ var/range = 5
+ var/fuel_source = FALSE
+ var/fuze = 30
+
+/obj/item/rogueweapon/polearm/firelance/proc/ignite(mob/living/user)
+ if(lit)
+ to_chat(user.loc, "The Firelance's fuse is already ignited and fierce as a bull.")
+ return
+
+ if(!fuel_source)
+ to_chat(user.loc, "You cannot burn your enemies without a gourd with sanctiflux.")
+ return
+
+ to_chat(src.loc, "The firelance's fuze starts to rebel in sparking lights.")
+ playsound(src.loc, 'sound/items/firelight.ogg', 100)
+
+ lit = TRUE
+ spawn(20) // 2 seconds
+ if(lit)
+ to_chat(src.loc, "The fuze reaches the composite, building deadly pressure.")
+ spawn(40) // 4 seconds
+ if(lit)
+ to_chat(src.loc, "The Firelance is about to release purifying death!")
+ spawn(60) // 6 seconds
+ if(lit)
+ flamefire(user)
+ fuel_source = FALSE
+ lit = FALSE
+ update_icon()
+
+/obj/item/rogueweapon/polearm/firelance/proc/flamefire(mob/living/user)
+ if(!user)
+ return
+
+ var/turf/start = get_turf(user) // VERY important. It determine user's position and firing direction. May remove it for handmade fuels.
+ if(!start)
+ return
+
+ var/delta_x = 0
+ var/delta_y = 0
+ switch(user.dir)
+ if(NORTH) delta_y = 1
+ if(EAST) delta_x = 1
+ if(SOUTH) delta_y = -1
+ if(WEST) delta_x = -1
+
+ for(var/distance in 1 to range) // This fire pattern widens every second tile. This will be the Abyssariad/Heartfelt 'military' standard.
+ var/width = distance / 2 // Calculate when it widens
+ for(var/offset in -width to width) // Control the width itself
+ var/turf/current_turf
+ if(delta_x) // Horizontal spread
+ current_turf = locate(start.x + (delta_x * distance), start.y + offset, start.z)
+ else if(delta_y) // Vertical spread
+ current_turf = locate(start.x + offset, start.y + (delta_y * distance), start.z)
+
+ if(current_turf)
+ // Ignite the tile
+ new /obj/effect/oilspill(current_turf)
+ current_turf.hotspot_expose(500, 30, 1)
+
+ for(var/mob/living/L in current_turf.contents)
+ if(iscarbon(L) && L != user)
+ L.visible_message("[L] is engulfed in flames!")
+ L.adjustFireLoss(rand(10, 20)) //Enough damage to ensure the player will move away.
+ cocked = FALSE
+ fuel_source = FALSE // Consume fuel after use
+ update_icon()
+
+/obj/item/rogueweapon/polearm/firelance/dropped(mob/living/user)
+ . = ..()
+ if(fuel_source)
+ if(HAS_TRAIT(user, TRAIT_KAIZOKU))
+ to_chat(src, "[user] lowered the [usr] with care, sensing the potential calamity bound within, aware of the cost from underestimating it.")
+ return
+ else
+ to_chat(src, "[user] dropped the [usr] with its gourd's cap unsealed, hissing quietly, as it tells the tales of widowmaking by doing the obvious.")
+ user.adjust_fire_stacks(3)
+ user.IgniteMob()
+ flamefire(user)
+
+/obj/item/rogueweapon/polearm/firelance/attack_self(mob/living/user)
+ if(lit) // safeguard
+ return
+ else
+ if(cocked && !fuel_source)
+ to_chat(user, "You open the blades, making it suitable for use. It only requires a gourd filled with fuel.")
+ cocked = FALSE
+ update_icon()
+ return
+
+ if(!cocked && !fuel_source)
+ if(HAS_TRAIT(user, TRAIT_KAIZOKU))
+ to_chat(user, "You triggered the mechanism under the blades even without a gourd. No internal repair is needed.")
+ cocked = TRUE
+ update_icon()
+ return
+ else
+ var/obj/item/bodypart/limb
+ var/list/limb_list = list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
+ for(var/zone in limb_list)
+ limb = user.get_bodypart(zone)
+ if(limb)
+ playsound(src,'sound/misc/eat.ogg', rand(30,60), TRUE)
+ to_chat(user, "Without a gourd, [user]'s [limb] was accidentally snatched by jagged blades, bleeding before being severed!")
+ limb.dismember()
+ qdel(limb)
+ user.emote("scream")
+ cocked = TRUE
+ update_icon()
+ return
+
+ if(!cocked && fuel_source)
+ to_chat(user, "You start spinning the mechanisms, watching the jagged blades close. The weapon is now ready, but it needs to be lit.")
+ if(do_after(user, 60 - user.STASTR, target = user))
+ playsound(user, 'sound/combat/Ranged/crossbow_medium_reload-01.ogg', 100, FALSE)
+ cocked = TRUE
+ update_icon()
+ return
+ else
+ to_chat(user, "Fuel spills due to misuse, rendering the weapon unprepared.")
+ cocked = FALSE
+ fuel_source = FALSE
+ update_icon()
+
+/obj/item/rogueweapon/polearm/firelance/attackby(obj/item/I, mob/living/user)
+ if(!istype(I, /obj/item/sanctiflux))
+ to_chat(user, "[I] is not a valid fuel source!")
+ return
+ else
+ if(fuel_source) // If it already has a fuel source, you can't insert a new one.
+ to_chat(user, "The firelance already has a gourd on.")
+ return
+ if(cocked)
+ to_chat(user, "I shoved the gourd against the steel blades, almost cracking it. I cannot put the gourd inside if the blades are on the way.")
+ return
+ if(!cocked)
+ fuel_source = TRUE
+ update_icon()
+ qdel(I)
+ to_chat(user, "I press the gourd against the insertion hole. I just need to adjust the mechanisms so the automata within do the rest of the job.")
+ ..()
+
+/obj/item/rogueweapon/polearm/firelance/spark_act()
+ ignite(usr)
+
+/obj/item/rogueweapon/polearm/firelance/fire_act()
+ ignite(usr)
+
+/obj/item/rogueweapon/polearm/firelance/update_icon()
+ if(lit)
+ icon_state = "firelance_lit"
+ else
+ if(!cocked)
+ if(fuel_source)
+ icon_state = "firelance_oil"
+ else
+ icon_state = "firelance"
+ else
+ if(fuel_source)
+ icon_state = "firelance_cocked_oil"
+ else
+ icon_state = "firelance_cocked"
+
+/obj/item/sanctiflux
+ name = "sanctiflux gourd"
+ desc = "The abyssariad answer to demonic corruption, purger of zizo and men, malum's essence in sanctifying form to branch with abyssal valors. An Abyssariad secret from Fog Islands."
+ icon = 'icons/roguetown/kaizoku/weapons/items.dmi'
+ icon_state = "gourd"
+
+/obj/effect/oilspill
+ anchored = TRUE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ icon = 'icons/roguetown/kaizoku/tileset/fire.dmi'
+ icon_state = "newfire"
+ layer = GASFIRE_LAYER
+
+ var/life = 120 // Lifespan of the fire in ticks. May decrease later, but I prefer to keep its area-denial use.
+
+/obj/effect/oilspill/Initialize()
+ . = ..()
+ setDir(pick(GLOB.cardinals))
+ START_PROCESSING(SSfastprocess, src)
+ return
+
+/obj/effect/oilspill/process()
+ for(var/mob/living/carbon/human/H in view(2, src)) // Sate pyromaniac addiction. I don't even know if that thing works, but anyway.
+ if(H.has_flaw(/datum/charflaw/addiction/pyromaniac))
+ H.sate_addiction()
+ life--
+ if(life <= 0)
+ qdel(src)
+ return
+
+/obj/effect/oilspill/Destroy()
+ STOP_PROCESSING(SSfastprocess, src)
+ set_light(0)
+ return ..()
+
+/obj/effect/oilspill/Crossed(atom/movable/AM, oldLoc)
+ ..()
+ if(isliving(AM))
+ var/mob/living/L = AM
+ L.fire_act(20, 40)
+
+
+/*
+ This is for later, for when I make different types of oilfuel, all of abyssariad or heartfelt making. Possibly the handmade alternative.
+ //This following code spreads the fire in a linear pattern, the first one I made.
+ for(var/distance in 1 to range)
+ var/turf/current_turf = locate(start.x + (delta_x * distance), start.y + (delta_y * distance), start.z)
+ if(!current_turf || current_turf.density) // Stop if obstructed
+ break
+ // This following code spreads the fire in a triangle pattern.
+ for(var/distance in 1 to range)
+ for(var/offset in -distance to distance)
+ var/turf/current_turf
+ if(delta_x) // Horizontal spread (EAST/WEST)
+ current_turf = locate(start.x + (delta_x * distance), start.y + offset, start.z)
+ else if(delta_y) // Vertical spread (NORTH/SOUTH)
+ current_turf = locate(start.x + offset, start.y + (delta_y * distance), start.z)
+ //This following code preads the fire in diagonal around the player.
+ var/list/diagonal_directions = list(
+ list(1, 1), // NORTHEAST
+ list(1, -1), // SOUTHEAST
+ list(-1, -1),// SOUTHWEST
+ list(-1, 1) // NORTHWEST
+ )
+ // Loop through each diagonal direction
+ for(var/dir_offset in diagonal_directions)
+ var/delta_x = dir_offset[1]
+ var/delta_y = dir_offset[2]
+ // Generate the fire pattern for the given direction
+ for(var/distance in 1 to range)
+ var/turf/current_turf = locate(start.x + (delta_x * distance), start.y + (delta_y * distance), start.z)
+*/
diff --git a/code/game/objects/items/rogueweapons/melee/special.dm b/code/game/objects/items/rogueweapons/melee/special.dm
index fb47dce003..a6ee04a7d0 100644
--- a/code/game/objects/items/rogueweapons/melee/special.dm
+++ b/code/game/objects/items/rogueweapons/melee/special.dm
@@ -196,3 +196,104 @@
charge = 0
update_icon()
playsound(src, pick('sound/items/stunmace_toggle (1).ogg','sound/items/stunmace_toggle (2).ogg','sound/items/stunmace_toggle (3).ogg'), 100, TRUE)
+
+/obj/item/rogueweapon/tetsubishi //I humbly request someone to cook the 'jump' not causing damage.
+ name = "tetsubishi"
+ desc = "a sharp spike object used to slow down pursuer, often used by abyssariad shinobis, it has been massproduced and shipped to Heartfell."
+ icon_state = "tetsubishi"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ force = 5
+ throwforce = 10
+ w_class = WEIGHT_CLASS_SMALL
+ block_chance = 0
+ armor_penetration = 5
+ sharpness = IS_SHARP
+ custom_materials = null
+ can_parry = FALSE
+ wlength = 6
+ sellprice = 1
+ has_inspect_verb = TRUE
+ parrysound = list('sound/combat/parry/parrygen.ogg')
+ anvilrepair = /datum/skill/craft/weaponsmithing
+ obj_flags = CAN_BE_HIT
+ blade_dulling = DULLING_BASH
+ max_integrity = 60
+ wdefense = 3
+ experimental_onhip = TRUE
+ experimental_onback = TRUE
+ embedding = list(
+ "embed_chance" = 60,
+ "embedded_pain_multiplier" = 1,
+ "embedded_fall_chance" = 0,
+ )
+ attack_verb = list("stabbed", "slashed", "sliced", "cut")
+ hitsound = 'sound/blank.ogg'
+ var/icon_prefix
+
+/obj/item/rogueweapon/tetsubishi/Initialize()
+ . = ..()
+ AddComponent(/datum/component/kaizoku/caltrop, 20, 30, 100, CALTROP_BYPASS_SHOES)
+
+/obj/item/rogueweapon/tetsubishi/Crossed(mob/living/L)
+ playsound(loc, 'sound/foley/flesh_rem2.ogg', TRUE)
+ return ..()
+
+/datum/component/kaizoku/caltrop //Less laggy alternative for the server-destroying OG caltrops.
+ var/min_damage
+ var/max_damage
+ var/probability
+ var/flags
+
+ var/cooldown = 0
+
+/datum/component/kaizoku/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _flags = NONE)
+ min_damage = _min_damage
+ max_damage = max(_min_damage, _max_damage)
+ probability = _probability
+ flags = _flags
+
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), PROC_REF(Crossed))
+
+/datum/component/kaizoku/caltrop/proc/Crossed(datum/source, atom/movable/AM)
+ var/atom/A = parent
+ if(!prob(probability))
+ return
+
+ if(ishuman(AM))
+ var/mob/living/carbon/human/H = AM
+ if((flags & CALTROP_IGNORE_WALKERS) && H.m_intent == MOVE_INTENT_WALK)
+ return
+
+ var/picked_def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
+ var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone)
+ if(!istype(O))
+ return
+
+ var/feetCover = (H.wear_armor && (H.wear_armor.body_parts_covered & FEET)) || (H.wear_pants && (H.wear_pants.body_parts_covered & FEET))
+
+ if(!(flags & CALTROP_BYPASS_SHOES) && (H.shoes || feetCover))
+ return
+
+ if((H.movement_type & FLYING) || H.buckled)
+ return
+
+ var/damage = rand(min_damage, max_damage)
+ H.apply_damage(damage, BRUTE, picked_def_zone)
+
+
+ if(cooldown < world.time - 10) //cooldown to avoid message spam.
+ if(!H.incapacitated(ignore_restraints = TRUE))
+ H.visible_message("[H] steps on [A] as it pierces skin.", \
+ "I feel my feet being pierced as I step on [A]!")
+ else
+ H.visible_message("[H] slides their bodies on [A]!", \
+ "I slide on [A]!")
+
+ cooldown = world.time
+ H.Stun(60)
+
+/obj/item/throwing_star/ninja
+ name = "throwing star"
+ desc = "a simple distracting tool used to cause a commotion and bleeding so its user can scramble."
+ icon_state = "shuriken"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
diff --git a/code/game/objects/items/rogueweapons/melee/swords.dm b/code/game/objects/items/rogueweapons/melee/swords.dm
index 38314a1e4f..d0e3e7b47d 100644
--- a/code/game/objects/items/rogueweapons/melee/swords.dm
+++ b/code/game/objects/items/rogueweapons/melee/swords.dm
@@ -858,3 +858,184 @@
sellprice = 25//lets make the two bars worth it
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/sword/uchigatana
+ name = "uchigatana"
+ desc = "Shorter and simpler than the Tachi, the Uchigatana is the primary sidearm for the Abyssariad and Heartfelt footsoldiers. As a Zatana, the curved blade favor powerfull chopping strikes - but lacks a protective crossguard and the curve makes it less efficient in thrusting."
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ icon_state = "uchigatana"
+ pixel_y = -16
+ pixel_x = -16
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ bigboy = TRUE
+ gripsprite = TRUE
+ smeltresult = /obj/item/ingot/steel
+
+/obj/item/rogueweapon/sword/uchigatana/fire //Experimental weapon. Not to be found ingame.
+ name = "fire uchigatana"
+ desc = "Shorter and simpler than the Tachi, the Uchigatana is the primary sidearm for the Abyssariad and Heartfelt footsoldiers. Unlike other uchigatanas, this sword in specifically seems curiously improved with 'frigus' runes."
+
+/obj/item/rogueweapon/sword/uchigatana/fire/attack(mob/M, mob/living/carbon/human/user)
+ if(ismob(M))
+ fire_effect(M, user)
+ ..()
+
+/obj/item/rogueweapon/sword/uchigatana/fire/proc/fire_effect(mob/living/L, mob/user)
+ L.adjust_fire_stacks(1)
+ L.IgniteMob()
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, ExtinguishMob)), 5 SECONDS)
+ if(user)
+ L.lastattacker = user.real_name
+ L.lastattackerckey = user.ckey
+ L.visible_message("[user] has ignited [L] with [src]!", \
+ "[user] has ignited you with [src]!")
+ playsound(loc, 'sound/blank.ogg', 50, TRUE, -1)
+ return
+
+/obj/item/rogueweapon/sword/long/tachi //this sword is all fucked. Oh God. Help me.
+ name = "tachi"
+ desc = "A long, curved Zatana of Abyssariad make, introduced when Wokou raiders returned to the Fog Isles with captured horses and began developing their own cavalry tactics."
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ icon_state = "tachi"
+ item_state = "tachi"
+ pixel_y = -16
+ pixel_x = -18
+
+/obj/item/rogueweapon/sword/long/tachi/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse tachi"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/sword/long/greatsword/odachi
+ name = "odachi"
+ desc = "Greatsword traditionally wielded in open battlefields just as it is a ceremonial blade. Though impractical for duels, it breaks spearlines and shields on a whim, requiring momentum with each slash."
+ icon_state = "odachi"
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ parrysound = "bladedlarge"
+
+/obj/item/rogueweapon/sword/iron/jian
+ name = "iron jian"
+ icon_state = "jian1"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+
+/obj/item/rogueweapon/sword/iron/jian/Initialize()
+ . = ..()
+ var/design = rand(1, 6) //This system will be standardized to other weapons.
+ switch(design)
+ if(1)
+ name = "monk jian"
+ desc = "A simple, double-edged iron sword. With a short guard and slim grip, it is easier to use in martial arts that requires constant flick of the wrist."
+ if(2)
+ name = "frontierman jian"
+ desc = "A simple, double-edged iron sword. With a thicker pommel and stretched guard, it becomes more proper as sideweapons during sieges for overhead attacks."
+ if(3)
+ name = "guardsman jian"
+ desc = "A simple, double-edged iron sword of abyssariad with parrying hooks at cost of slashing effectiveness."
+ if(4)
+ name = "foreigner jian"
+ desc = "A simple, double-edged iron sword of abyssariad design with heartfelt influence, taking smithing standards from Zweihanders."
+ if(5)
+ name = "heartfelt jian"
+ desc = "A simple, double-edged iron sword of abyssariad design with heartfelt influence. Keeping a rather imperial style of guard."
+ if(6)
+ name = "duelist jian"
+ desc = "A simple, double-edged iron sword of abyssariad design with hand protection that resembles one side of the firelance apparatus. Usually used for training."
+ icon_state = "jian[design]"
+
+/obj/item/rogueweapon/sword/scimitar/messer/dao
+ name = "iron dao"
+ desc = "A single edged iron saber of Abyssariad making for horseback use. Suitable for chopping."
+ icon_state = "dao"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+
+/obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao //this sprite disappeared by reasons unknown
+ name = "Yuntoudao"
+ desc = "A expensive Abyssariad saber with wide middle and tapered ends in a 'willow-leaf' shape, it concentrates the force of a strike in an axe-like blow, while retaining the swiftness of a saber."
+ icon_state = "yuntoudao"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+
+/obj/item/rogueweapon/sword/short/jian
+ name = "short steel jian"
+ desc = "A simple, shortened version of the double-edged Jian. This is usually given to Abyssariad citizens as a right for self-defense by the emperor's will."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "shortjian"
+
+/obj/item/rogueweapon/sword/short/wakizashi
+ name = "wakizashi"
+ desc = "A shorter design of a Zatana designed to replace the tanto as a zamurai's sidearm. The sorii makes it cut deeper - but is not efficient at thrusting, and can't handle much stress."
+ icon_state = "wakizashi"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ possible_item_intents = list(/datum/intent/sword/cut/sorii, /datum/intent/sword/thrust/sorii)
+
+/datum/intent/sword/cut/sorii //It is the reverse of the Shortsword.
+ clickcd = 10
+ penfactor = 30
+
+/datum/intent/sword/thrust/sorii
+ clickcd = 10
+ damfactor = 0.85
+
+/obj/item/rogueweapon/sword/sabre/piandao
+ name = "piandao"
+ desc = "An curved abyssariad sword with a broad, single-edged blade that ends in a heavier curve for powerful and fast sweeping strikes."
+ icon_state = "piandao"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+
+/obj/item/rogueweapon/sword/sabre/piandao/dec
+ name = "decorated piandao"
+ desc = "The Abyssariad saber with the hilt covered in gold and letters reflecting the user's family lineage."
+ icon_state = "piandaodec"
+ max_integrity = 550
+ sellprice = 140
+
+/obj/item/rogueweapon/sword/dragonslayer //It's a sword, yes. It will be used as a sword? My dudes we moving that one like warhammers at this point. So it's blunt at this point.
+ name = "dragonslayer eclipse sword"
+ desc = "Dragonslayers uses swords too big to be called a sword. Massive, thick, heavy and far too rough. Indeed, they use a heap of raw iron. These are not crafted for fnesse, but for raw carnage in steel to obliterate Dragon's almost impenetrable skin."
+ gripped_intents = list(/datum/intent/dragonslayer/smash, /datum/intent/polearm/chop) //This is practically a mace... that can chop off heads since it's sharp.
+ icon_state = "eclipse_sword"
+ resistance_flags = FIRE_PROOF
+ smeltresult = /obj/item/ingot/steel
+ max_integrity = 500
+ force = 5 //You won't get ANYTHING by using in one hand. Trust me. EVEN IF YOU COULD.
+ force_wielded = 40 // I thought Gundam would nerf it. He buffed it instead. What a World!
+ slowdown = 1
+ wbalance = -1
+ sellprice = 300
+ w_class = WEIGHT_CLASS_HUGE
+ wbalance = -1 //haha... yeah.
+ wdefense = 3
+ minstr = 14
+ associated_skill = /datum/skill/combat/axesmaces //if you tell me that fighting with this sword is LIKE a sword, I will kill you (ingame)-Mono
+ icon = 'icons/roguetown/kaizoku/weapons/64.dmi'
+ slot_flags = ITEM_SLOT_BACK
+ parrysound = "largeblade"
+ pickup_sound = "brandish_blade"
+ bigboy = TRUE
+
+/datum/intent/dragonslayer/smash
+ name = "smash"
+ icon_state = "insmash"
+ attack_verb = list("clangs")
+ animname = "smash"
+ blade_class = BCLASS_CHOP
+ hitsound = list('sound/combat/hits/bladed/dragonslayer.ogg', 'sound/combat/hits/bladed/dragonslayer2.ogg')
+ penfactor = 30
+ damfactor = 1.2
+ chargetime = 5
+ swingdelay = 5
+ misscost = 35
+ warnie = "mobwarning"
diff --git a/code/game/objects/items/rogueweapons/ranged/ammo.dm b/code/game/objects/items/rogueweapons/ranged/ammo.dm
index 03b1002eb6..7c5fad06b9 100644
--- a/code/game/objects/items/rogueweapons/ranged/ammo.dm
+++ b/code/game/objects/items/rogueweapons/ranged/ammo.dm
@@ -463,6 +463,93 @@
reagents.handle_reactions()
return BULLET_ACT_HIT
+//// Kaizoku Edition ////
+
+/obj/projectile/bullet/reusable/arrow/poison/fog
+ name = "fog arrow"
+ desc = "An arrow with it's tip drenched in a powerful sedative."
+ icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi'
+ icon_state = "arrowfog_proj"
+ ammo_type = /obj/item/ammo_casing/caseless/rogue/arrow
+
+/obj/item/ammo_casing/caseless/rogue/arrow/poison/fog
+ name = "fog arrow"
+ desc = "An arrow with it's tip drenched in a powerful sedative."
+ projectile_type = /obj/projectile/bullet/reusable/arrow/poison/fog
+ icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi'
+ icon_state = "arrow_fog"
+
+/obj/projectile/bullet/reusable/arrow/poison/fog/Initialize()
+ . = ..()
+ create_reagents(50, NO_REACT)
+
+/obj/projectile/bullet/reusable/arrow/poison/fog/on_hit(atom/target, blocked = FALSE)
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ if(blocked != 100) // not completely blocked
+ if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
+ ..()
+ reagents.reaction(M, INJECT)
+ reagents.trans_to(M, reagents.total_volume)
+ return BULLET_ACT_HIT
+ else
+ blocked = 100
+ target.visible_message("\The [src] was deflected!", \
+ "My armor protected me against \the [src]!")
+
+ ..(target, blocked)
+ DISABLE_BITFIELD(reagents.flags, NO_REACT)
+ reagents.handle_reactions()
+ return BULLET_ACT_HIT
+
+/obj/projectile/bullet/reusable/arrow/poison/fog/Initialize()
+ . = ..()
+ reagents.add_reagent(/datum/reagent/fogblight, 5)
+
+/obj/item/ammo_casing/caseless/rogue/bolt/poison/fog
+ name = "fog bolt"
+ desc = "A bolt dipped with a potent sedative."
+ projectile_type = /obj/projectile/bullet/reusable/bolt/poison/fog
+ possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/thrust)
+ icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi'
+ icon_state = "bolt_fog"
+
+/obj/projectile/bullet/reusable/bolt/poison/fog
+ name = "fog bolt"
+ desc = "A bolt dipped with a potent sedative."
+ damage = 35
+ damage_type = BRUTE
+ icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi'
+ icon_state = "boltfogn_proj"
+ ammo_type = /obj/item/ammo_casing/caseless/rogue/bolt
+
+/obj/projectile/bullet/reusable/bolt/poison/fog/Initialize()
+ . = ..()
+ create_reagents(50, NO_REACT)
+
+/obj/projectile/bullet/reusable/bolt/poison/fog/on_hit(atom/target, blocked = FALSE)
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ if(blocked != 100) // not completely blocked
+ if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
+ ..()
+ reagents.reaction(M, INJECT)
+ reagents.trans_to(M, reagents.total_volume)
+ return BULLET_ACT_HIT
+ else
+ blocked = 100
+ target.visible_message("\The [src] was deflected!", \
+ "My armor protected me against \the [src]!")
+
+ ..(target, blocked)
+ DISABLE_BITFIELD(reagents.flags, NO_REACT)
+ reagents.handle_reactions()
+ return BULLET_ACT_HIT
+
+/obj/projectile/bullet/reusable/bolt/poison/fog/Initialize()
+ . = ..()
+ reagents.add_reagent(/datum/reagent/fogblight, 5)
+
#undef ARROW_DAMAGE
#undef BOLT_DAMAGE
diff --git a/code/game/objects/items/rogueweapons/ranged/bows.dm b/code/game/objects/items/rogueweapons/ranged/bows.dm
index b2acff092c..b9a0ba221e 100644
--- a/code/game/objects/items/rogueweapons/ranged/bows.dm
+++ b/code/game/objects/items/rogueweapons/ranged/bows.dm
@@ -237,3 +237,19 @@
chargetime = 0.75
chargedrain = 1.5
charging_slowdown = 2.5
+
+/obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+ name = "hankyu bow"
+ desc = "A smaller version of the asymmetrical bow named Yumi. It must be shot overhead, and it is perfect for horseback use."
+ icon = 'icons/roguetown/kaizoku/weapons/bows.dmi'
+ icon_state = "hankyubow"
+ item_state = "hankyubow"
+ base_icon = "hankyubow"
+
+/obj/item/gun/ballistic/revolver/grenadelauncher/bow/long/yumi
+ name = "yumi bow"
+ desc = "The asymmetrical and elegant piece of Kyudo warfare, hard-hitting and powerful, bringing fear to orcish hordes and demons on a whim."
+ icon = 'icons/roguetown/kaizoku/weapons/bows.dmi'
+ icon_state = "yumibow"
+ item_state = "yumibow"
+ base_icon = "yumibow"
diff --git a/code/game/objects/items/rogueweapons/shields.dm b/code/game/objects/items/rogueweapons/shields.dm
index 5dca852788..ec6f0d7b82 100644
--- a/code/game/objects/items/rogueweapons/shields.dm
+++ b/code/game/objects/items/rogueweapons/shields.dm
@@ -292,3 +292,105 @@
return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0)
if("onbelt")
return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0)
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/rogueweapon/shield/wood/rattan //The description about the firearm projectiles protection is actually real for this shield, pretty neat thing to include here. It won't change gamewise tho
+ name = "rattan shield"
+ desc = "A lightweight rattan shield woven with leather padding and hardened in oil, known for keeping shrapnel and firearm projectiles stuck after being shot at. \nIt can exceptionally block attacks but is more brittle than metal."
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ icon_state = "rattanshield"
+ dropshrink = 0.8
+ coverage = 50
+ max_integrity = 150
+
+/obj/item/rogueweapon/shield/wood/rattan/attack_hand(mob/user)
+ ..()
+
+/obj/item/rogueweapon/shield/wood/rattan/getonmobprop(tag)
+ . = ..()
+ if(tag)
+ switch(tag)
+ if("gen")
+ return list("shrink" = 0.6,"sx" = -5,"sy" = -1,"nx" = 6,"ny" = -1,"wx" = 0,"wy" = -2,"ex" = 0,"ey" = -2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 1,"eflip" = 0)
+ if("onback")
+ return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0)
+
+/obj/item/rogueweapon/shield/tower/abyssaltower
+ name = "abyssal towershield"
+ desc = "The legendary shield frame named 'Naraku-kai no Tate', long used by Abyssariad champions in the old age against demonic incursions on Fog Islands. It has resemblance with Aasimar's tower shields, which was proper for the time."
+ icon_state = "abyssaltower"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ force = 15
+ throwforce = 10
+ throw_speed = 1
+ throw_range = 3
+ wlength = WLENGTH_NORMAL
+ wbalance = -1 // Heavy, big shield
+ resistance_flags = FLAMMABLE
+ wdefense = 6
+ coverage = 65
+ parrysound = list('sound/combat/parry/shield/towershield (1).ogg','sound/combat/parry/shield/towershield (2).ogg','sound/combat/parry/shield/towershield (3).ogg')
+ max_integrity = 300
+ smeltresult = /obj/item/ingot/iron // Made with an iron ingot, let us recover it
+
+/obj/item/rogueweapon/shield/abyssaltower/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse abyssal towershield"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/rogueweapon/shield/tower/metal/abyssal
+ name = "spiked steel aegis"
+ desc = "Light steel spikes are visible on this shield to protect the user against the chaotic close-quarter skirmishes where grappling and flanking is common, but can be caught on enemy armor and weapons."
+ icon_state = "aegis"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ possible_item_intents = list(/datum/intent/shield/bash/metal, /datum/intent/shield/block/metal)
+ force = 20
+ throwforce = 10
+ throw_speed = 1
+ throw_range = 3
+ wlength = WLENGTH_NORMAL
+ resistance_flags = null
+ flags_1 = CONDUCT_1
+ wdefense = 7
+ coverage = 70
+ attacked_sound = list('sound/combat/parry/shield/metalshield (1).ogg','sound/combat/parry/shield/metalshield (2).ogg','sound/combat/parry/shield/metalshield (3).ogg')
+ parrysound = list('sound/combat/parry/shield/metalshield (1).ogg','sound/combat/parry/shield/metalshield (2).ogg','sound/combat/parry/shield/metalshield (3).ogg')
+ max_integrity = 500
+ blade_dulling = DULLING_BASH
+ sellprice = 30
+ smeltresult = /obj/item/ingot/steel // Made with steel, let us repurpose it
+
+/obj/item/rogueweapon/shield/tower/metal/abyssal/getonmobprop(tag)
+ if(tag)
+ switch(tag)
+ if("gen")
+ return list("shrink" = 0.6,"sx" = -5,"sy" = -1,"nx" = 6,"ny" = -1,"wx" = 0,"wy" = -2,"ex" = 0,"ey" = -2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 1,"eflip" = 0)
+ if("onback")
+ return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0)
+ return ..()
+
+/obj/item/rogueweapon/shield/tower/metal/attack_hand(mob/user)
+ ..()
+
+/obj/item/rogueweapon/shield/tower/metal/abyssal/dustcurse/dropped()
+ . = ..()
+ name = "Dustcurse spiked steel aegis"
+ minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players.
+ to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!")
+ if(QDELETED(src))
+ return
+ qdel(src)
+
diff --git a/code/game/objects/structures/frontierjustice.dm b/code/game/objects/structures/frontierjustice.dm
new file mode 100644
index 0000000000..8cd884efb6
--- /dev/null
+++ b/code/game/objects/structures/frontierjustice.dm
@@ -0,0 +1,87 @@
+/obj/structure/frontierjustice
+ name = "frontier justice"
+ desc = "The manifestation extrajudicidal punishment by vigilantism, or performed by evil doers to instill fear. One may never know."
+ icon = 'icons/roguetown/kaizoku/mapset/frontierjustice.dmi'
+ icon_state = "edgy1"
+ anchored = TRUE
+ density = FALSE
+ opacity = 0
+ blade_dulling = DULLING_CUT
+ max_integrity = 50
+ layer = ABOVE_OBJ_LAYER
+ destroy_sound = 'sound/foley/bodyfall (1).ogg'
+
+/obj/structure/frontierjustice/Initialize()
+ . = ..()
+ icon_state = "edgy[rand(1,5)]"
+
+/obj/structure/frontierjustice/examine_status(mob/user)
+ if(max_integrity)
+ var/healthpercent = (obj_integrity/max_integrity) * 100
+ switch(healthpercent)
+ if(50 to 99)
+ return "The flesh is still in place."
+ if(25 to 50)
+ return "Damage has set its toll."
+ if(1 to 25)
+ return "The corpse is almost butchered."
+
+/obj/structure/frontierjustice/Destroy()
+ var/turf/T = loc
+ if(isturf(T)) // Ensure `T` is a valid turf
+ var/obj/item/reagent_containers/food/snacks/rogue/meat/steak/meat_piece = new(T)
+ if(meat_piece)
+ meat_piece.name = "humen meat" //funny
+ . = ..()
+
+/obj/structure/frontierjustice/dead
+ name = "fated as you"
+ desc = "Killed off and left to rot."
+ icon_state = "dead1"
+ destroy_sound = 'sound/combat/dismemberment/dismem (1).ogg'
+
+/obj/structure/frontierjustice/dead/Initialize()
+ . = ..()
+ icon_state = "dead1" //had to put that otherwise OG frontier justice would kill it off
+
+/obj/structure/frontierjustice/canibalism
+ name = "the meal"
+ desc = "Poor victim of the greenskins or wood elven."
+ icon_state = "cannibalism1"
+ destroy_sound = 'sound/combat/dismemberment/dismem (1).ogg'
+
+/obj/structure/frontierjustice/canibalism/Initialize()
+ . = ..()
+ icon_state = "cannibalism[rand(1,2)]"
+
+/obj/structure/frontierjustice/canibalism/Destroy()
+ var/turf/T = loc
+ if(isturf(T)) // Ensure `T` is a valid turf
+ var/obj/item/reagent_containers/food/snacks/rogue/meat/steak/fried/meat_piece = new(T)
+ if(meat_piece)
+ meat_piece.name = "cooked humen meat" //funny
+ meat_piece.desc = "A slab of manflesh, slow-cooked over glowing coals."
+ . = ..()
+
+/obj/structure/frontierjustice/crossed
+ name = "believer"
+ desc = "If one forgot the meaning of some religious symbols, surely this will remind them."
+ icon_state = "crossed1"
+ destroy_sound = 'sound/foley/breaksound.ogg'
+
+/obj/structure/frontierjustice/crossed/Initialize()
+ . = ..()
+ icon_state = "crossed[rand(1,3)]"
+
+/obj/structure/frontierjustice/caged
+ name = "cage"
+ desc = "Better check if someone is already inside, awaiting for salvation that never came."
+ icon_state = "cage1"
+ destroy_sound = 'sound/combat/hits/blunt/metalblunt (2).ogg'
+
+/obj/structure/frontierjustice/caged/Initialize()
+ . = ..()
+ icon_state = "cage[rand(1,3)]"
+
+/obj/structure/frontierjustice/caged/Destroy()
+ . = ..()
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index a903b3a4df..dce8811240 100644
--- a/code/game/turfs/closed/_closed.dm
+++ b/code/game/turfs/closed/_closed.dm
@@ -154,6 +154,10 @@
amt2raise = floor(L.STAINT/2)
boon = L.mind?.get_learning_boon(/datum/skill/misc/climbing)
var/obj/structure/table/TA = locate() in L.loc
+ var/obj/item/offhand = user.get_inactive_held_item()
+ if(offhand)
+ if(istype(offhand, /obj/item/rogueweapon/huntingknife/kunai))
+ myskill += 3
if(TA)
myskill += 1
else
diff --git a/code/game/turfs/closed/wall/roguewalls.dm b/code/game/turfs/closed/wall/roguewalls.dm
index ac07a8becb..058d5a4cab 100644
--- a/code/game/turfs/closed/wall/roguewalls.dm
+++ b/code/game/turfs/closed/wall/roguewalls.dm
@@ -379,3 +379,64 @@
baseturfs = list(/turf/open/floor/rogue/concrete)
climbdiff = 1
damage_deflection = 20
+
+/turf/closed/wall/mineral/rogue/stone/abyssal
+ name = "abyssal ishigaki wall"
+ desc = "Made from large, interlocking uncut stones without the use of mortar, so a castle is built above it. However, many make simple walls out of it."
+ icon = 'icons/roguetown/kaizoku/wallset/abyssalstone.dmi'
+ icon_state = "abyssabyssal"
+ sheet_type = /obj/item/natural/stone
+ break_sound = 'sound/combat/hits/onstone/stonedeath.ogg'
+ attacked_sound = list('sound/combat/hits/onstone/wallhit.ogg', 'sound/combat/hits/onstone/wallhit2.ogg', 'sound/combat/hits/onstone/wallhit3.ogg')
+ canSmoothWith = list(/turf/closed/wall/mineral/rogue/stone/abyssal)
+ above_floor = /turf/open/floor/rogue/blocks
+ baseturfs = list(/turf/open/floor/rogue/blocks)
+ climbdiff = 1
+ damage_deflection = 10
+
+/turf/closed/wall/mineral/rogue/stone/abyssal/window
+ name = "abyssal ishigaki window"
+ desc = "An simple hole within a Ishigaki wall."
+ opacity = FALSE
+ max_integrity = 800
+
+/turf/closed/wall/mineral/rogue/stone/window/CanPass(atom/movable/mover, turf/target)
+ if(istype(mover) && ((mover.pass_flags & PASSTABLE) || (mover.pass_flags & PASSGRILLE)) )
+ return 1
+ return ..()
+
+/turf/closed/wall/mineral/rogue/stone/abyssal/window/Initialize()
+ . = ..()
+ icon_state = "abyssal"
+ var/mutable_appearance/M = mutable_appearance(icon, "abyssalhole", layer = ABOVE_NORMAL_TURF_LAYER)
+ add_overlay(M)
+
+/turf/closed/wall/mineral/rogue/wood/abyssal
+ name = "wagoya wall"
+ desc = "wooden wall of abyssal architecture that uses wooden joinery that fits together seamlessly to avoid use of nails or screws, increasing protection against earthshakes."
+ icon = 'icons/roguetown/kaizoku/wallset/eastern_wood.dmi'
+ icon_state = "wood"
+ break_sound = 'sound/combat/hits/onwood/destroywalldoor.ogg'
+ attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg')
+ canSmoothWith = list(/turf/closed/wall/mineral/rogue/wood, /obj/structure/roguewindow, /obj/structure/roguetent, /turf/closed/wall/mineral/rogue/wooddark)
+// sheet_type = /obj/item/grown/log/tree/lumber
+ above_floor = /turf/open/floor/rogue/woodturned
+ baseturfs = list(/turf/open/floor/rogue/woodturned)
+ neighborlay = "dirtedge"
+ climbdiff = 3
+
+/turf/closed/wall/mineral/rogue/wood/abyssal/window
+ name = "wagoya no sama"
+ desc = "A murderhole on a wooden wall that lacks nails and screws."
+ opacity = FALSE
+ max_integrity = 550
+
+/turf/closed/wall/mineral/rogue/wood/abyssal/window/CanPass(atom/movable/mover, turf/target)
+ if(istype(mover) && ((mover.pass_flags & PASSTABLE) || (mover.pass_flags & PASSGRILLE)) )
+ return 1
+ return ..()
+
+/turf/closed/wall/mineral/rogue/wood/abyssal/window/Initialize()
+ . = ..()
+ var/mutable_appearance/M = mutable_appearance(icon, "woodhole", layer = ABOVE_NORMAL_TURF_LAYER)
+ add_overlay(M)
diff --git a/code/game/turfs/open/floor/roguefloor.dm b/code/game/turfs/open/floor/roguefloor.dm
index 49dc737efa..ec56346e59 100644
--- a/code/game/turfs/open/floor/roguefloor.dm
+++ b/code/game/turfs/open/floor/roguefloor.dm
@@ -1322,3 +1322,46 @@
. = ..()
icon_state = "bathtile_pool_mid"
/* ................................................ */
+
+
+/* .................. Kaizoku Sand ................... */
+/turf/open/floor/rogue/sand
+ icon = 'icons/roguetown/kaizoku/tileset/tileset.dmi'
+ icon_state = "sand1"
+ footstep = FOOTSTEP_SAND
+ barefootstep = FOOTSTEP_SOFT_BAREFOOT
+ clawfootstep = FOOTSTEP_SAND
+ heavyfootstep = FOOTSTEP_GENERIC_HEAVY
+ landsound = 'sound/foley/jumpland/dirtland.wav'
+ neighborlay = "sandedges"
+ smooth = SMOOTH_TRUE
+ canSmoothWith = list(
+ /turf/closed/mineral/rogue,
+ /turf/closed/mineral,
+ /turf/closed/wall/mineral/rogue/stonebrick,
+ /turf/closed/wall/mineral/rogue/wood,
+ /turf/closed/wall/mineral/rogue/wooddark,
+ /turf/closed/wall/mineral/rogue/stone,
+ /turf/closed/wall/mineral/rogue/stone/moss,
+ /turf/open/floor/rogue/cobble,
+ /turf/open/floor/rogue/dirt,
+ /turf/open/floor/rogue/grass,
+ /turf/open/floor/rogue/grass/red,
+ /turf/open/floor/rogue/grass/yel,
+ /turf/open/floor/rogue/grass/cold,
+ /turf/open/floor/rogue/snow,
+ /turf/open/floor/rogue/snow/patchy,
+ /turf/open/floor/rogue/snow/rough
+ )
+
+/turf/open/floor/rogue/sand/cardinal_smooth(adjacencies)
+ // Apply custom smoothing for sand turfs
+ roguesmooth(adjacencies)
+
+/turf/open/floor/rogue/sand/Initialize()
+ . = ..()
+ icon_state = "sand[rand(1,4)]"
+
+/obj/effect/decal/turfedge_neu/sand
+ icon_state = "sandedge"
+ icon = 'icons/roguetown/kaizoku/tileset/tileset.dmi'
diff --git a/code/modules/antagonists/roguetown/villain/bandit.dm b/code/modules/antagonists/roguetown/villain/bandit.dm
index 73c6e76f59..330771abd4 100644
--- a/code/modules/antagonists/roguetown/villain/bandit.dm
+++ b/code/modules/antagonists/roguetown/villain/bandit.dm
@@ -80,201 +80,251 @@
/datum/outfit/job/roguetown/bandit/pre_equip(mob/living/carbon/human/H)
..()
H.become_blind("TRAIT_GENERIC")
- var/classes = list("Deserter","Poacher","Brigand")
- var/classchoice = input("Choose your background", "Available backgrounds") as anything in classes
-
- switch(classchoice)
-
- if("Deserter") //well armored, polearm skill, shield skill. The heavy melee class.
+ if(H.dna?.species)
+ if(HAS_TRAIT(H, TRAIT_KAIZOKU)) //Average sword, barely any armor - all this to justify a chance in getting 4 exp in Swords for Akira Kurosawa experience for duels. Still weaker than Guardians, since they are not champions.
H.set_blindness(0)
- to_chat(H, span_warning("You were once a soldier employed under a lord, and left illegally. You're capable with armor, shields, and polearms."))
- H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
+ to_chat(H, span_warning("You are a person of the waves, the one who drifters as the ocean. Now with your link to Abyssor broken, you've bonded to Matthios to avoid the dai-corruption."))
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) //for the sake of duelism trope, there is a chance to get 4xp sword.
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.burakumin = TRUE //Other abyssariads will easily notice a Ronin, compared to other races. This is partially intended.
+
ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
H.change_stat("strength", 2)
H.change_stat("endurance", 1)
H.change_stat("constitution", 1)
- wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
- beltr = /obj/item/clothing/mask/rogue/shepherd/rag
- beltl = /obj/item/rogueweapon/knife/hunting
-
- if(H.age == AGE_OLD) //old deserters are experts with polearms
- H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
-
- var/helmet2choose = pickweight(list("Volfhelm" = 5, "Skullcap" = 2, "Barbute" = 1))
- switch(helmet2choose)
- if("Volfhelm")
- head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
- if("Skullcap")
- head = /obj/item/clothing/head/roguetown/helmet/skullcap
- if("Barbute") // big roller
- head = /obj/item/clothing/head/roguetown/helmet/heavy/rust
-
- var/armor2choose = pickweight(list("Rusty halfplate" = 2, "Chainmail" = 1))
- switch(armor2choose)
- if("Rusty halfplate")
- armor = /obj/item/clothing/suit/roguetown/armor/cuirass/iron/rust
- if("Chainmail")
- armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron
-
- var/weapon2choose = pickweight(list("Spear" = 2, "Bardiche" = 1))
- switch(weapon2choose)
- if("Spear")
- backr = /obj/item/rogueweapon/polearm/spear
- if("Bardiche")
- backr = /obj/item/rogueweapon/polearm/halberd/bardiche
-
- switch(pick(1,2))
- if (1) //worse leg protection, better neck protection, and a face mask
+ pants = /obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/ronin
+ cloak = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/ronin
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half
+ head = /obj/item/clothing/head/roguetown/tengai/roningasa //Not protective
+ if(prob(35))
+ beltr = /obj/item/rogueweapon/sword/short/wakizashi //Higher Daisho
+ else
+ beltr = /obj/item/rogueweapon/knife/steel/tanto //Lesser Daisho
+
+ H.become_blind("TRAIT_GENERIC")
+
+ var/background = pickweight(list("Fulldaisho" = 6, "Savagekiller" = 3, "Antidaisho" = 2, "Reformed" = 1))
+ switch(background)
+ if("Fulldaisho")
+ beltl = /obj/item/rogueweapon/sword/uchigatana
+ to_chat(H, "I managed to retain my full Daisho, even without masters to finance my activities.")
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ if("Reformed")
+ beltl = /obj/item/rogueweapon/flail/sflail/kusarifundo
+ to_chat(H, "My sword was broken during battle, and from the blade, I made one anew. This is all what remains of my deceased master.")
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE)
+ if("Savagekiller")
+ beltr = /obj/item/rogueweapon/battle/ono
+ to_chat(H, "I killed a sanguinary savage and took from him his axe, and grinded the steel into a more efficient Ono. I've conquered a WHALER's soul, and will DOMINATE HIS WAYS.")
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ if("Antidaisho")
+ beltr = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao
+ to_chat(H, "The Daisho is obsolete. My sword is made to do more than draw blood - It should grind my enemies into mince.")
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ else //If not Abyssariad, can be anything else from this following options:
+ var/classes = list("Deserter","Poacher","Brigand")
+ var/classchoice = input("Choose your background", "Available backgrounds") as anything in classes
+ switch(classchoice)
+
+ if("Deserter") //well armored, polearm skill, shield skill. The heavy melee class.
+ H.set_blindness(0)
+ to_chat(H, span_warning("You were once a soldier employed under a lord, and left illegally. You're capable with armor, shields, and polearms."))
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
+ beltr = /obj/item/clothing/mask/rogue/shepherd/rag
+ beltl = /obj/item/rogueweapon/knife/hunting
+
+ if(H.age == AGE_OLD) //old deserters are experts with polearms
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
+
+ var/helmet2choose = pickweight(list("Volfhelm" = 5, "Skullcap" = 2, "Barbute" = 1))
+ switch(helmet2choose)
+ if("Volfhelm")
+ head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
+ if("Skullcap")
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap
+ if("Barbute") // big roller
+ head = /obj/item/clothing/head/roguetown/helmet/heavy/rust
+
+ var/armor2choose = pickweight(list("Rusty halfplate" = 2, "Chainmail" = 1))
+ switch(armor2choose)
+ if("Rusty halfplate")
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/iron/rust
+ if("Chainmail")
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron
+
+ var/weapon2choose = pickweight(list("Spear" = 2, "Bardiche" = 1))
+ switch(weapon2choose)
+ if("Spear")
+ backr = /obj/item/rogueweapon/polearm/spear
+ if("Bardiche")
+ backr = /obj/item/rogueweapon/polearm/halberd/bardiche
+
+ switch(pick(1,2))
+ if (1) //worse leg protection, better neck protection, and a face mask
+ pants = /obj/item/clothing/under/roguetown/trou/leather
+ neck = /obj/item/clothing/neck/roguetown/chaincoif
+ mask = /obj/item/clothing/mask/rogue/facemask
+ if (2) //better leg protection, worse neck protection
+ pants = /obj/item/clothing/under/roguetown/chainlegs/iron
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/iron
+
+ if("Poacher") //good perception, speed, bow skill, and knife skill. Also some cooking and skincrafting since they are poachers. The speedy ranged class.
+ H.set_blindness(0)
+ to_chat(H, span_warning("You illegally hunt within the lands of others, and are quite good at it."))
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+ H.change_stat("strength", 1)
+ H.change_stat("endurance", 1)
+ H.change_stat("perception", 2)
+ H.change_stat("speed", 2)
+
+ armor = /obj/item/clothing/suit/roguetown/armor/gambeson
pants = /obj/item/clothing/under/roguetown/trou/leather
- neck = /obj/item/clothing/neck/roguetown/chaincoif
- mask = /obj/item/clothing/mask/rogue/facemask
- if (2) //better leg protection, worse neck protection
- pants = /obj/item/clothing/under/roguetown/chainlegs/iron
- neck = /obj/item/clothing/neck/roguetown/chaincoif/iron
+ beltr = /obj/item/rogueweapon/knife/hunting
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
+ beltl = /obj/item/quiver/arrows
+ mask = /obj/item/clothing/mask/rogue/shepherd/rag
+
+ var/helmet2choose = pickweight(list("Hood" = 1, "Volfhelm" = 1))
+ switch(helmet2choose)
+ if("Hood")
+ head = /obj/item/clothing/head/roguetown/roguehood
+ neck = /obj/item/clothing/neck/roguetown/coif
+ if(H.age == AGE_OLD) //old poachers also saved up for a better coif
+ head = /obj/item/clothing/neck/roguetown/chaincoif/iron
+ if("Volfhelm")
+ head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
+
+ if(H.age == AGE_OLD) //old poachers are better at their jobs
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/labor/butchering, 1, TRUE)
+
+ switch(pick(1,2,3))
+ if (1)
+ beltr = /obj/item/rogueweapon/knife/hunting
+ if (2)
+ beltr = /obj/item/rogueweapon/knife/cleaver
+ if (3)
+ beltr = /obj/item/rogueweapon/knife/dagger
+
+ if("Brigand") //good sword skill, shield skill, flail skill, mace skill, slightly speedy. Kind of an all rounder.
+ H.set_blindness(0)
+ to_chat(H, span_warning("You are experienced with using swords and clubs to threaten and rob others."))
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 1)
+ H.change_stat("speed", 1)
- if("Poacher") //good perception, speed, bow skill, and knife skill. Also some cooking and skincrafting since they are poachers. The speedy ranged class.
- H.set_blindness(0)
- to_chat(H, span_warning("You illegally hunt within the lands of others, and are quite good at it."))
- H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/craft/tanning, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
- ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
- H.change_stat("strength", 1)
- H.change_stat("endurance", 1)
- H.change_stat("perception", 2)
- H.change_stat("speed", 2)
-
- armor = /obj/item/clothing/suit/roguetown/armor/gambeson
- pants = /obj/item/clothing/under/roguetown/trou/leather
- beltr = /obj/item/rogueweapon/knife/hunting
- backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
- beltl = /obj/item/quiver/arrows
- mask = /obj/item/clothing/mask/rogue/shepherd/rag
-
- var/helmet2choose = pickweight(list("Hood" = 1, "Volfhelm" = 1))
- switch(helmet2choose)
- if("Hood")
- head = /obj/item/clothing/head/roguetown/roguehood
neck = /obj/item/clothing/neck/roguetown/coif
- if(H.age == AGE_OLD) //old poachers also saved up for a better coif
- head = /obj/item/clothing/neck/roguetown/chaincoif/iron
- if("Volfhelm")
- head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
-
- if(H.age == AGE_OLD) //old poachers are better at their jobs
- H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/labor/butchering, 1, TRUE)
-
- switch(pick(1,2,3))
- if (1)
- beltr = /obj/item/rogueweapon/knife/hunting
- if (2)
- beltr = /obj/item/rogueweapon/knife/cleaver
- if (3)
- beltr = /obj/item/rogueweapon/knife/dagger
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
+ pants = /obj/item/clothing/under/roguetown/trou/leather
+ beltl = /obj/item/clothing/mask/rogue/shepherd/rag
+ neck = /obj/item/clothing/neck/roguetown/coif
- if("Brigand") //good sword skill, shield skill, flail skill, mace skill, slightly speedy. Kind of an all rounder.
- H.set_blindness(0)
- to_chat(H, span_warning("You are experienced with using swords and clubs to threaten and rob others."))
- H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE)
- H.change_stat("strength", 2)
- H.change_stat("endurance", 2)
- H.change_stat("constitution", 1)
- H.change_stat("speed", 1)
-
- neck = /obj/item/clothing/neck/roguetown/coif
- wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
- pants = /obj/item/clothing/under/roguetown/trou/leather
- beltl = /obj/item/clothing/mask/rogue/shepherd/rag
- neck = /obj/item/clothing/neck/roguetown/coif
-
- var/helmet2choose = pickweight(list("Leather helmet" = 2, "Volfhelm" = 2, "Coif" = 1))
- switch(helmet2choose)
- if("Leather helmet")
- head = /obj/item/clothing/head/roguetown/helmet/leather/conical
- if("Volfhelm")
- head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
- if("Coif")
- head = /obj/item/clothing/neck/roguetown/chaincoif/iron
-
- switch(pick(1,2))
- if (1)
- armor = /obj/item/clothing/suit/roguetown/armor/leather
- if (2)
- armor = /obj/item/clothing/suit/roguetown/armor/leather/hide
-
- if(H.age == AGE_OLD) //old brigands have been in the business for so long that they have managed to pick up some better gear along the way
- armor = /obj/item/clothing/suit/roguetown/armor/leather/splint
- mask = /obj/item/clothing/mask/rogue/facemask
-
- switch(pick(1,2,3,4))
- if (1)
- beltr = /obj/item/rogueweapon/sword/iron
- if (2)
- beltr = /obj/item/rogueweapon/flail
- if (3)
- beltr = /obj/item/rogueweapon/mace
- if (4)
- beltr = /obj/item/rogueweapon/sword/scimitar/messer
-
- H.cure_blind("TRAIT_GENERIC")
-
- // The commmon skills shared between all bandits
- H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
-
- H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
-
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/bandit_volfhelm)
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/cult_hood)
-
- // The commmon gear shared between all bandits
- belt = /obj/item/storage/belt/rogue/leather/bandit
- shoes = /obj/item/clothing/shoes/roguetown/boots
- backl = /obj/item/storage/backpack/rogue/satchel
- backpack_contents = list(/obj/item/flashlight/flare/torch/metal)
-
- switch(pick(1,3))
- if (1 to 2)
- gloves = /obj/item/clothing/gloves/roguetown/leather
- shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/random
- if (3)
- gloves = /obj/item/clothing/gloves/roguetown/angle
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/black
-
- H.change_stat("intelligence", -1)
- var/obj/item/bodypart/B = H.get_bodypart("head")
- if(B)
- B.sellprice = rand(44, 88)
-
- H.ambushable = FALSE
+ var/helmet2choose = pickweight(list("Leather helmet" = 2, "Volfhelm" = 2, "Coif" = 1))
+ switch(helmet2choose)
+ if("Leather helmet")
+ head = /obj/item/clothing/head/roguetown/helmet/leather/conical
+ if("Volfhelm")
+ head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
+ if("Coif")
+ head = /obj/item/clothing/neck/roguetown/chaincoif/iron
+
+ switch(pick(1,2))
+ if (1)
+ armor = /obj/item/clothing/suit/roguetown/armor/leather
+ if (2)
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/hide
+
+ if(H.age == AGE_OLD) //old brigands have been in the business for so long that they have managed to pick up some better gear along the way
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/splint
+ mask = /obj/item/clothing/mask/rogue/facemask
+
+ switch(pick(1,2,3,4))
+ if (1)
+ beltr = /obj/item/rogueweapon/sword/iron
+ if (2)
+ beltr = /obj/item/rogueweapon/flail
+ if (3)
+ beltr = /obj/item/rogueweapon/mace
+ if (4)
+ beltr = /obj/item/rogueweapon/sword/scimitar/messer
+
+ H.cure_blind("TRAIT_GENERIC")
+
+ // The commmon skills shared between all bandits
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/bandit_volfhelm)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/cult_hood)
+
+ // The commmon gear shared between all bandits
+ belt = /obj/item/storage/belt/rogue/leather/bandit
+ shoes = /obj/item/clothing/shoes/roguetown/boots
+ backl = /obj/item/storage/backpack/rogue/satchel
+ backpack_contents = list(/obj/item/flashlight/flare/torch/metal)
+
+ switch(pick(1,3))
+ if (1 to 2)
+ gloves = /obj/item/clothing/gloves/roguetown/leather
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/random
+ if (3)
+ gloves = /obj/item/clothing/gloves/roguetown/angle
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/black
+
+ H.change_stat("intelligence", -1)
+ var/obj/item/bodypart/B = H.get_bodypart("head")
+ if(B)
+ B.sellprice = rand(44, 88)
+
+ H.ambushable = FALSE
/datum/antagonist/bandit/roundend_report()
if(owner?.current)
@@ -327,4 +377,3 @@
reqs = list(/obj/item/natural/hide = 1)
result = /obj/item/clothing/head/roguetown/helmet/leather/hood_ominous
category = CAT_NONE
-
diff --git a/code/modules/antagonists/roguetown/villain/peasantrebel.dm b/code/modules/antagonists/roguetown/villain/peasantrebel.dm
index b988e83f26..37c5a812b7 100644
--- a/code/modules/antagonists/roguetown/villain/peasantrebel.dm
+++ b/code/modules/antagonists/roguetown/villain/peasantrebel.dm
@@ -151,6 +151,13 @@
var/datum/team/prebels/RT = mind_datum.rev_team
var/shittime = world.time
playsound_local(src, 'sound/misc/rebel.ogg', 100, FALSE)
+ if(ishuman(src)) //Non-Burakumin Abyssariads cannot join peasant rebels. That would break their honor code. Burakumins can do it freely, as they have no honor.
+ var/mob/living/carbon/human/C = src
+ if((C.dna.species?.id == "abyssariad") && (!C.burakumin))
+ to_chat(src, "It would be a absolute DISHONOR to go against the Emperor's will.")
+ to_chat(guy, "[src] cannot accept the offer.")
+ RT.offers2join += "[real_name] IS TOO LOYAL/span> [guy.real_name]: \"[offer]\""
+ return
var/garbaggio = alert(src, "[offer]","Rebellion", "Yes", "No")
if(world.time > shittime + 35 SECONDS)
to_chat(src,"Too late.")
diff --git a/code/modules/cargo/packsrogue/instruments.dm b/code/modules/cargo/packsrogue/instruments.dm
index 89e6013c9e..242993592f 100644
--- a/code/modules/cargo/packsrogue/instruments.dm
+++ b/code/modules/cargo/packsrogue/instruments.dm
@@ -37,3 +37,8 @@
name = "Drum"
cost = 10
contains = /obj/item/rogue/instrument/drum
+
+/datum/supply_pack/rogue/instruments/shamisen
+ name = "Shamisen"
+ cost = 25
+ contains = /obj/item/rogue/instrument/shamisen
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index 0d68ffb6d9..cfbb861395 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -605,7 +605,8 @@ GLOBAL_LIST_EMPTY(asset_datums)
"hell.ttf" = 'interface/fonts/languages/hell.ttf',
"orc.ttf" = 'interface/fonts/languages/orc.ttf',
"sand.ttf" = 'interface/fonts/languages/sand.ttf',
- "undead.ttf" = 'interface/fonts/languages/undead.ttf'
+ "undead.ttf" = 'interface/fonts/languages/undead.ttf',
+ "abyssal.ttf" = 'interface/fonts/languages/abyssal.ttf'
)
/datum/asset/spritesheet/goonchat
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 41f44bbe75..17203e279d 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1955,6 +1955,8 @@ Slots: [job.spawn_positions]
if(user.client)
if(bla.patreon_req > user.client.patreonlevel())
continue
+ if(bla.minrace_pq > get_playerquality(user.ckey)) // PQ check here
+ continue
else
continue
crap += bla
@@ -2468,6 +2470,10 @@ Slots: [job.spawn_positions]
chosen_species = /datum/species/human/northern
pref_species = new /datum/species/human/northern
random_character(gender)
+ if(pref_species.minrace_pq > get_playerquality(parent.ckey))
+ chosen_species = /datum/species/human/northern
+ pref_species = new /datum/species/human/northern
+ random_character(gender)
character.age = age
character.dna.features = features.Copy()
diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm
index c583192070..17db34e678 100644
--- a/code/modules/clothing/rogueclothes/armor.dm
+++ b/code/modules/clothing/rogueclothes/armor.dm
@@ -114,7 +114,7 @@
desc = "Favored by the female nobility, to maintain both vitality and good taste while out hunting."
icon_state = "armordress"
allowed_sex = list(FEMALE)
- allowed_race = list("human", "tiefling", "elf", "aasimar")
+ allowed_race = list("human", "tiefling", "elf", "aasimar", "abyssariad")
r_sleeve_status = SLEEVE_NORMAL
l_sleeve_status = SLEEVE_NORMAL
sellprice = VALUE_PADDED_DRESS
@@ -540,12 +540,31 @@
//................ Armored surcoat (Heartfelt) ............... //
/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt
- desc = "A lordly protection in Heartfelt colors. Masterfully crafted coat of plates, for important nobility."
- color = CLOTHING_BLOOD_RED
+ name = "heartfelt kikko gusoku"
+ desc = "A lordly protection in Heartfelt colors. Masterfully crafted coat of hexagon plates, for important nobility."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "heartfelt_kikko"
+ item_state = "heartfelt_kikko"
+ allowed_sex = list(MALE,FEMALE)
sellprice = VALUE_SNOWFLAKE_STEEL+BONUS_VALUE_SMALL
body_parts_covered = COVERAGE_FULL
+//................ Armored surcoat (Heartfelt Hand) ............... //
+/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand
+ name = "heartfelt kikko coat"
+ desc = "A coat of armor typicially worn by distinguished retainers of Heartfeltian nobles, using exotic silks adquired from Fog Island."
+ icon_state = "heartfelt_kikkocoat"
+ item_state = "heartfelt_kikkocoat"
+
+/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand/female
+ name = "heartfelt kikko dress"
+ desc = "A dress of armor typicially worn by distinguished retainers of Heartfeltian nobles, using exotic silks adquired from Fog Island."
+ icon_state = "heartfelt_kikkodress"
+ item_state = "heartfelt_kikkodress"
+
//................ Coat of Plate ............... //
/obj/item/clothing/suit/roguetown/armor/medium/coatplates
name = "coat of plates"
@@ -867,3 +886,471 @@
name = "ancient ceremonial gloves"
icon_state = "vgloves"
smeltresult = /obj/item/ingot/steel
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/suit/roguetown/armor/leather/vest/muneate //exists only for the drip.
+ name = "muneate"
+ desc = "A simple leather chest protector for casual archers. Barely protective- almost useless."
+ icon_state = "muneate"
+ item_state = "muneate"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/leather/vest/muneate/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/armor/leather/vest/muneate/kappa
+ color = CLOTHING_FOREST_GREEN
+
+/obj/item/clothing/suit/roguetown/armor/plate/nanbando
+ name = "nanban-dou-sode"
+ desc = "Abyssariad steel cuirass, refined and with additional sode for protection. Rare and prized by High-ranking zamurais, this design has been acquired from raided humen settlements."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "nanbando"
+ item_state = "nanbando"
+
+/obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ name = "nanban-dou"
+ desc = "The Abyssariad steel cuirass that only protects the chest. Relatively common among the ones from the lower Zamurai caste."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "nanbandoc"
+ item_state = "nanbandoc"
+
+/obj/item/clothing/suit/roguetown/armor/plate/full/nanbando
+ name = "nanban-do-gusoku"
+ desc = "A complete set of abyssariad steel armor, refined and with additional auxiliary parts for protection."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "nanbandofull"
+
+/obj/item/clothing/suit/roguetown/armor/plate/full/nanbando/cursed/Initialize()
+ . = ..()
+ name = "soulbinded nanban-do-gusoku"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/suit/roguetown/armor/plate/full/nanbando/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ name = "lamellae-tatami do"
+ desc = "a foldable, lightweight armor for convenient motion and manufacturing ease. \
+ It is made of rectangular steel lamellae sewn into chainmail and is a massforged armor. \
+ Considered the backbone of abyssariad military armor, often used below mirror-armor and o-yoroi."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "laminartatami"
+
+/obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami
+ name = "tatami karuta-gane"
+ desc = "a foldable, lightweight armor for convenient motion and manufacturing ease. \
+ It is made of lacquered, card-like iron squares sewn into a padded cloth or leather backing."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "tatami"
+
+/obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ name = "kusari katabira"
+ desc = "Or simply 'single-layer chainmail robe', this armor is made of riveted steel rings \
+ patched together with slim plates protecting elbows. The armor reaches down to the legs and arms."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "kusari"
+ item_state = "kusari"
+
+/obj/item/clothing/suit/roguetown/armor/plate/mirror/iron
+ name = "iron mirror armor"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ desc = "Polished iron plates defines the frame of this armor with a metal disk at its center. This is the armor design used by the Islander army together with a kusari katabira."
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "imirrorarmor"
+ max_integrity = 200
+ armor = list("melee" = 80, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ smeltresult = /obj/item/ingot/iron
+ armor_class = AC_MEDIUM
+ sellprice = 20
+
+/obj/item/clothing/suit/roguetown/armor/plate/mirror
+ name = "steel mirror armor"
+ icon_state = "mirrorarmor"
+ desc = "Polished steel plates defines the frame of this armor with a metal disk at its center. This is the armor design used by the Islander army together with a kusari katabira."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "mirrorarmor"
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi //I did everything I could to fix this shit. I couldn't. So the entire 'colourscheme overlay' ordeal went to hell.
+ name = "o-yoroi"
+ desc = "Heavy-duty lamellar armor esteemed high-ranking zamurais on horseback or on land."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "halfoyoroi"
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/cursed/Initialize()
+ . = ..()
+ name = "soulbinded o-yoroi gusoku"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/royal/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/oyoroi/royal/update_icon()
+ cut_overlays()
+ detail_tag = "_met"
+ detail_color = GLOB.lordprimary
+ 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/oyoroi/captain/Initialize()
+ . = ..()
+ if(GLOB.lordprimary)
+ lordcolor(GLOB.lordprimary,GLOB.lordsecondary)
+ else
+ GLOB.lordcolor += src
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/captain/lordcolor(primary,secondary)
+ detail_tag = "_met"
+ detail_color = primary
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_armor()
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/captain/Destroy()
+ GLOB.lordcolor -= src
+ return ..()
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku
+ name = "o-yoroi gusoku"
+ desc = "Heavy-duty, complete set of lamellar armor esteemed by high-ranking zamurais on horseback or on land."
+ icon_state = "oyoroi"
+ body_parts_covered = CHEST|GROIN|VITALS|LEGS|ARMS
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku/cursed/Initialize()
+ . = ..()
+ name = "soulbinded o-yoroi gusoku"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido
+ name = "san mai-do"
+ desc = "A cheap cuirass with three main plates riveted together with cloth. Flexible and dynamic, integral for many poor footsoldiers"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "sanmaido"
+
+/obj/item/clothing/suit/roguetown/armor/leather/abyssal
+ name = "leather lamellar armor"
+ desc = "Also know as 'Tiejia', this islander leather armor features small rectangular leather plates laced together to cover vital organs."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "tiejia"
+
+/obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker
+ name = "leather cavalry armor"
+ desc = "The Khatag Teghelgah designed to be used by abyssariad light cavalry and horse archers on the heart of Fog Island."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "arisan_khuyag"
+
+/obj/item/clothing/suit/roguetown/armor/leather/splint/kikko //This one is more realistic than Studded Leather armor. A reminder that Studded leather armor is a misinterpretation of a Brigandine.
+ name = "kikko jacket"
+ desc = "A cheaper and lighter version of Kikko Tatami, a leather jacket with metal hexagon plates in a turtle-shell pattern."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "kikko"
+ adjustable = CAN_CADJUST
+
+/obj/item/clothing/suit/roguetown/armor/leather/studded/kikko/eidolon
+ color = CLOTHING_EIDOLON
+
+/obj/item/clothing/suit/roguetown/armor/leather/studded/kikko/AdjustClothes(mob/user)
+ if(loc == user)
+ if(adjustable == CAN_CADJUST)
+ adjustable = CADJUSTED
+ if(toggle_icon_state)
+ icon_state = "[initial(icon_state)]_open"
+ flags_inv = null
+ body_parts_covered = CHEST
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_armor()
+ else if(adjustable == CADJUSTED)
+ ResetAdjust(user)
+ if(user)
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_armor()
+
+/obj/item/clothing/suit/roguetown/armor/leather/hide/shozoku
+ name = "shozoku"
+ desc = "The main garment used by Ninjas and Kunoichis to blend into the night. Not viable during daylight, but it is easy to store anywhere, and any time."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "shinobi"
+ item_state = "shinobi"
+ blocksound = SOFTHIT
+
+/obj/item/clothing/suit/roguetown/armor/chainmail/rattan //New armor; Iron-to-steel tier.
+ slot_flags = ITEM_SLOT_ARMOR
+ name = "rattan armor"
+ desc = "A flexible and durable full body coat made from oil-boiled rattan and layered iron wires. Used by LinYou Raiders, it can be easily repaired."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ icon_state = "rattan"
+ item_state = "rattan"
+ sellprice = VALUE_IRON_ARMOR+10
+
+ armor = ARMOR_MAILLE_IRON
+ max_integrity = INTEGRITY_STANDARD
+ prevent_crits = ALL_EXCEPT_BLUNT_AND_STAB
+ sewrepair = TRUE //this armor's utility.
+
+/obj/item/clothing/suit/roguetown/armor/leather/jacket/haori
+ name = "haori"
+ desc = "a traditional jacket meant to be worn over a kimono."
+ icon_state = "haori"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/leather/jacket/haori/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/armor/leather/jacket/haori/dark
+ color = CLOTHING_SOOT_BLACK
+
+//New Rare Heartfelt equipment
+/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad
+ name = "abyssariad kikko gusoku"
+ desc = "The Heartfelt design reforged in the ways of Fog Islands to better supply quick-moving zamurai cavalry, replacing the heavier and costier O-Yoroi lamellar."
+ body_parts_covered = CHEST|GROIN|VITALS|LEGS //does not protect the arms. Countering the Brigandine that protects the arms, but not legs.
+ icon_state = "kikkoabyssal"
+ item_state = "kikkoabyssal"
+ sellprice = 65 //not unique.
+
+/obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku
+ name = "kaizoku's waitao"
+ icon_state = "waitao_coat"
+ color = null
+ desc = "A silken coat of Heartfelt making used by the Abyssariad Kaizoku, those who brought the name of Fog Islands to the outsiders by accident. Or just artistic folk."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ body_parts_covered = CHEST|VITALS|LEGS
+ sellprice = 45
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/shanwenkai //I dislike overused armor in unique roles. so I just made an "Officer" armor based on the chinese actual officer armor. Brigadine.
+ slot_flags = ITEM_SLOT_ARMOR
+ name = "weeper-patterned championage armor" //This is the Shan Wen Kia armor, but the downwards 'Y' is upwards now, so I can't name it
+ desc = "The ancient godwenkai, a heavy armor made with overlapping arrangement of armor plates, assembled with the symbol of the Weeping God. This is used by Abyssariad Champions who still lingers on this world, honoring the Weeper who fed Abyssor."
+ icon_state = "shanwenkai"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/brigandine/shanwenkai/update_icon()
+ return
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT
+ name = "padded ruankai"
+ desc = "made of layered cotton or silk, it is quilted together to absorb shock from blows to protect wearer as a cushioning layer. Enough to survive a horse's kick."
+ icon_state = "ruankai"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare
+ name = "yoroi hitatare"
+ desc = "A traditional Abyssariad padded robe with wide sleeves, made to be worn beneath armor. It is comfortable and thick, but not very protective compared to a ruankai, but can be used all the time without raising suspicion."
+ icon_state = "yoroihitatare"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ var/picked = FALSE
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/zamurai/proc/get_player_input()
+ if(!ishuman(loc))
+ return
+
+ var/list/colors = list(
+ "PURPLE"="#865c9c",
+ "RED"="#933030",
+ "BROWN"="#685542",
+ "GREEN"="#79763f",
+ "BLUE"="#395480",
+ "YELLOW"="#b5b004",
+ "TEAL"="#249589",
+ "WHITE"="#ffffff",
+ "ORANGE"="#b86f0c",
+ "MAJENTA"="#962e5c")
+ var/mob/living/carbon/human/L = loc
+ var/choice = input(L, "Choose a color.", "ZAMURAI COLORPLEX") as anything in colors
+ var/playerchoice = colors[choice]
+ picked = TRUE
+ detail_color = playerchoice
+ update_icon()
+ for(var/obj/item/clothing/V in L.get_equipped_items(FALSE))
+ testing("clothes to color are [V]")
+ if(V.colorgrenz)
+ V.detail_color = playerchoice
+ V.update_icon()
+ L.regenerate_icons()
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/zamurai/Initialize()
+ . = ..()
+ if(!picked)
+ INVOKE_ASYNC(src, PROC_REF(get_player_input))
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/zamurai/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)
+
+// Randomized color Hitatare
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+// Ronin Hitatare
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/ronin
+ color = CLOTHING_SOOT_BLACK
+
+// Eidolon Hitatare
+/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/eidolon
+ color = CLOTHING_EIDOLON
+
+/obj/item/clothing/suit/roguetown/armor/gambeson/heavy/deelcoat
+ name = "reinforced deel coat"
+ desc = "A loose-fitting abyssariad tunic usually made with horse leather, traditionally used by the Dustwalkers. The dense padding greatly protects the user against blunt trauma."
+ icon_state = "deel"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/leather/splint/ninjakappa //same as studded leather armor
+ name = "tribalistic bronze cuirass"
+ desc = "A layered armor with oil-boiled leather reinforced with bronze plates sew into the fabric. Light and flexible, it is used by Undines who became part of underground shinobi operations to destroy illegal gangs, drugdealers and centers of prostitution."
+ icon_state = "ninjakappa"
+ item_state = "ninjakappa"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+
+/obj/item/clothing/suit/roguetown/armor/rare/myrmidon
+ name = "myrmidon mingguang kai" // that's "明光铠", not the genshin character.
+ desc = "Ocean-blessed overlapping steel plates joined by butchered demonhide threads and orichalcum infusion, \
+ long purified with abyssor sigils and symbols of the Weeper. Each steel layer is engraved: \
+ \"By the Heavenly Emperor's command. For the abyss against all odds.\""
+ icon_state = "myrmidon"
+ item_state = "myrmidon"
+ allowed_race = list("abyssariad")
+ sleevetype = null
+ max_integrity = INTEGRITY_STRONGEST+100 //Chest + Pants - Everything is on a single armor. Breaks easier since it gets battered everywhere, so it requires more endurance.
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ body_parts_covered = CHEST|GROIN|ARMS|VITALS|LEGS //Pays off by not having other limbparts.
+
+/obj/item/clothing/suit/roguetown/armor/ceramic
+ name = "tribal coverings"
+ desc = "A more well-designed armor made with sturdy animal bones. Suitable for tribals whom uses little mettalurgy."
+ icon_state = "nacre_covering"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ blocksound = SOFTHIT
+ blade_dulling = DULLING_BASHCHOP
+ body_parts_covered = CHEST|GROIN|VITALS
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_STAB) // Bones are ceramic-like. These are horrible against blunt.
+ armor_class = AC_MEDIUM
+ max_integrity = 150
+ anvilrepair = null //You can't repair 'ceramic' armor. You will need to make a new armor instead.
+ smeltresult = /obj/item/ash
+ sewrepair = FALSE
+ slot_flags = ITEM_SLOT_ARMOR
+
+/obj/item/clothing/suit/roguetown/armor/ceramic/reinforced
+ name = "marauder trollhunter armor"
+ desc = "The heavy armor used by the tribalistic Undine marauder forces under the flag of Abyssariads from the Flag Islands. Made of ceramic-like material from lava forges."
+ icon_state = "marauder_chest"
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_STAB) // Bones are ceramic-like. These are horrible against blunt.
+ blade_dulling = DULLING_BASHCHOP
+ body_parts_covered = CHEST|VITALS|ARMS|GROIN //Protects an acceptable large range of places for such relatively cost-y armor. I hope.
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ max_integrity = 250
+ equip_delay_self = 40
+ armor_class = AC_MEDIUM
+
+/obj/item/clothing/suit/roguetown/armor/ceramic/light
+ name = "bone coverings"
+ desc = "An simple, primitive armor made of chiseled bones bound with fibers and sinews. Stronger than gambesons, but requires conquering tough dendor's creatures to make."
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ icon_state = "ivory_coverings"
+ slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT
+ blocksound = SOFTHIT
+ blade_dulling = DULLING_BASHCHOP
+ body_parts_covered = CHEST|GROIN
+ max_integrity = 100 //breaks quickly
+ prevent_crits = list(BCLASS_CUT, BCLASS_STAB) //Bones acts similar to ceramics, it will crack with blunt damage.
+ armor_class = AC_LIGHT
diff --git a/code/modules/clothing/rogueclothes/feet.dm b/code/modules/clothing/rogueclothes/feet.dm
index eaf8594079..307899712d 100644
--- a/code/modules/clothing/rogueclothes/feet.dm
+++ b/code/modules/clothing/rogueclothes/feet.dm
@@ -28,7 +28,7 @@
icon_state = "blackboots"
item_state = "blackboots"
sellprice = 10
-
+
armor = ARMOR_LEATHER_BAD
prevent_crits = CUT_AND_MINOR_CRITS
max_integrity = INTEGRITY_STANDARD
@@ -46,7 +46,7 @@
armor = ARMOR_LEATHER_BAD
prevent_crits = CUT_AND_MINOR_CRITS
max_integrity = INTEGRITY_STRONGER //Durable.
-
+
/obj/item/clothing/shoes/roguetown/shortboots
name = "shortboots"
color = "#d5c2aa"
@@ -67,7 +67,7 @@
icon_state = "ridingboots"
item_state = "ridingboots"
sellprice = 10
-
+
armor = ARMOR_LEATHER
prevent_crits = CUT_AND_MINOR_CRITS
max_integrity = INTEGRITY_STRONGER
@@ -132,7 +132,7 @@
icon_state = "shalal"
item_state = "shalal"
sellprice = 15
-
+
armor = ARMOR_LEATHER_BAD //Unique to a rare adventurer class
prevent_crits = MINOR_CRITICALS
max_integrity = INTEGRITY_STANDARD
@@ -143,7 +143,7 @@
icon_state = "tribalshoes"
item_state = "tribalshoes"
sellprice = 3
-
+
armor = ARMOR_LEATHER_BAD
prevent_crits = MINOR_CRITICALS
max_integrity = INTEGRITY_POOR
@@ -164,7 +164,7 @@
drop_sound = 'sound/foley/dropsound/armor_drop.ogg'
break_sound = 'sound/foley/breaksound.ogg'
sellprice = 25
-
+
armor_class = AC_HEAVY
armor = ARMOR_PLATE
prevent_crits = ALL_EXCEPT_STAB
@@ -176,7 +176,7 @@
item_state = "soldierboots"
desc = "Lightly armored boots made from iron offering protection against both melee and ranged attacks."
sellprice = 20
-
+
armor_class = AC_MEDIUM
armor = ARMOR_PLATE_BAD
prevent_crits = ALL_EXCEPT_STAB
@@ -191,7 +191,7 @@
item_state = "leatherboots"
resistance_flags = FLAMMABLE
sellprice = 10
-
+
armor = ARMOR_LEATHER
prevent_crits = CUT_AND_MINOR_CRITS
max_integrity = INTEGRITY_STANDARD //Slightly thicker, less durable than riding or noble boots.
@@ -216,12 +216,12 @@
item_state = "furlinedanklets"
sewrepair = TRUE
is_barefoot = TRUE
-
+
armor = ARMOR_LEATHER_BAD
prevent_crits = CUT_AND_MINOR_CRITS
max_integrity = INTEGRITY_POOR
-
-
+
+
/obj/item/clothing/shoes/roguetown/boots/clothlinedanklets
name = "cloth lined anklets"
@@ -231,7 +231,7 @@
item_state = "furlinedanklets"
is_barefoot = TRUE
sewrepair = TRUE
-
+
armor = ARMOR_PADDED_BAD
prevent_crits = MINOR_CRITICALS
max_integrity = INTEGRITY_POOR
@@ -250,7 +250,7 @@
item_state = "grenzelboots"
sleeved = 'icons/roguetown/clothing/onmob/helpers/stonekeep_merc.dmi'
sellprice = 20
-
+
armor = ARMOR_LEATHER_GOOD
prevent_crits = ALL_EXCEPT_CHOP_AND_STAB
max_integrity = INTEGRITY_STRONG
@@ -268,7 +268,7 @@
anvilrepair = /datum/skill/craft/armorsmithing
clothing_flags = CANT_SLEEP_IN
sellprice = 30
-
+
armor_class = AC_HEAVY
armor = ARMOR_PLATE_GOOD
prevent_crits = ALL_EXCEPT_STAB
@@ -327,3 +327,101 @@
item_state = "human_spearshoe"
color = null
blocksound = PLATEHIT
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi
+ name = "kusari tabi"
+ icon_state = "kusaritabi"
+ item_state = "kusaritabi"
+ desc = "The riveted chainmail version of the unarmored Tabi footwear."
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+
+/obj/item/clothing/shoes/roguetown/boots/armor/suneate
+ name = "suneate boots"
+ desc = "Armored suneate made from steel offering heavy protection against both melee and ranged attacks."
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ icon_state = "suneate"
+ item_state = "suneate"
+
+/obj/item/clothing/shoes/roguetown/boots/armor/suneate/cursed/Initialize()
+ . = ..()
+ name = "soulbinded suneate"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/shoes/roguetown/boots/jikatabi
+ name = "jikatabi"
+ desc = "A standard tabi that keeps the toes flexible and healthy, avoiding calluses of long expeditions. However, it looks rather goofy for the non-islanders."
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ icon_state = "jikatabi"
+ item_state = "jikatabi"
+
+/obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/shoes/roguetown/boots/jikatabi/dragontabi
+ name = "dragontabi"
+ icon_state = "dragontabi"
+ item_state = "dragontabi"
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ desc = "A tabi reinforced in dragon bones and asbestos, making it fire immune. Not very protective against physical damage, but still fairly durable."
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 0,"energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0)
+ max_integrity = 250
+ armor_class = AC_MEDIUM
+ heat_protection = LEGS|FEET
+ body_parts_covered = LEGS|FEET
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+
+/obj/item/clothing/shoes/roguetown/sandals/geta
+ name = "geta"
+ desc = "A normal wooden geta most suitable for those who need to wander where the mud absorbs pressure."
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ icon_state = "geta"
+ item_state = "geta"
+
+/obj/item/clothing/shoes/roguetown/shortboots/cloudhead
+ name = "cloudhead shoes"
+ desc = "A traditional shoes with distinctive upturned toe design that resembles the shape of clouds, to symbolize connection to the skies."
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ icon_state = "cloudhead_shoes"
+ item_state = "cloudhead_shoes"
+
+/obj/item/clothing/shoes/roguetown/shortboots/cloudhead/kabukimono
+ name = "kabuki-maru cloudhead shoes"
+ desc = "The same traditional cloudhead shoes of the Abyssariads, but colored in rich yellow tone and with intense implication of being used by a lowly burakumin whom belongs to an armed gang."
+ color = "#9b874f"
+
+/obj/item/clothing/shoes/roguetown/shortboots/cloudhead/toweryakkos
+ name = "tower-yakko cloudhead shoes"
+ desc = "The same traditional cloudhead shoes of the Abyssariads, but colored in rich purple tone and with intense implication of being used by a lowly burakumin whom belongs to an armed gang."
+ color = "#804d97"
+
+/obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ name = "leather gutal"
+ desc = "The boots used by Abyssariad cavalry with upturned toes and durable, oil-boiled leather."
+ icon_state = "leathergutal"
+ item_state = "leathergutal"
+ icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi'
diff --git a/code/modules/clothing/rogueclothes/gloves.dm b/code/modules/clothing/rogueclothes/gloves.dm
index 70c308fa3f..8a3894a0e7 100644
--- a/code/modules/clothing/rogueclothes/gloves.dm
+++ b/code/modules/clothing/rogueclothes/gloves.dm
@@ -121,7 +121,7 @@
name = "iron chain gauntlets"
icon_state = "icgloves"
desc = "Gauntlets made out of interwoven iron chains. Decent melee protection, but are better suited to stop arrows than blades."
-
+
armor = ARMOR_MAILLE_IRON
prevent_crits = ALL_EXCEPT_BLUNT_AND_STAB //Non-riveted, iron chain can be broken apart with a powerful thrust.
max_integrity = INTEGRITY_STANDARD //200 Integrity, good for 5~ halberd stabs.
@@ -216,3 +216,73 @@
allowed_race = list("human")
allowed_sex = list(MALE)
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/gloves/roguetown/fingerless/yugake
+ name = "leather yugake"
+ desc = "Traditional archery gloves used by foglanders to protect the fingers from the impact of the bow's string. Reinforced and sturdy."
+ icon_state = "yugake"
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+
+/obj/item/clothing/gloves/roguetown/leather/abyssal
+ name = "abyssal gloves"
+ desc = "Flexible, sturdy gloves of abyssariad making for horseback use to shield the hands against fast moving reins or grappling hook cables."
+ icon_state = "abyssalgloves"
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+
+/obj/item/clothing/gloves/roguetown/leather/abyssal/black
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/gloves/roguetown/leather/abyssal/kabukimono
+ name = "kabuki-maru abyssal gloves"
+ desc = "Flexible, sturdy gloves of abyssariad making, but with colours well know from being used by criminals of low level from the fog islands."
+ color = CLOTHING_KABUKIMONO
+
+/obj/item/clothing/gloves/roguetown/leather/abyssal/toweryakko
+ name = "tower-yakko abyssal gloves"
+ desc = "Flexible, sturdy gloves of abyssariad making, but with colours well know from being used by criminals of low level from the fog islands."
+ color = CLOTHING_TOWERYAKKO
+
+/obj/item/clothing/gloves/roguetown/angle/falcon
+ name = "falconry gloves"
+ desc = "thick, padded leather gloves to protect a handler's limbs against the sharp talons from their loyal flying companion. Falcons are used in warfare, hunting and communication on Fog Islands."
+ icon_state = "falconrygloves"
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+
+/obj/item/clothing/gloves/roguetown/chain/kikko
+ name = "kikko steel tekko"
+ desc = "Gauntlets made of steel in a shape that seems alike the shells of a turtle."
+ icon_state = "kikkotekko"
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+
+/obj/item/clothing/gloves/roguetown/chain/iron/kikko
+ name = "kikko iron tekko"
+ icon_state = "ikikkotekko"
+ desc = "Gauntlets made of iron in a shape that seems alike the shells of a turtle."
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+
+/obj/item/clothing/gloves/roguetown/plate/lamellaetekko
+ name = "lamellae tekko"
+ desc = "Gauntlets made of steel plates, in sendan style. Offers great protection for the hands while allowing delicate hand dexterity."
+ icon_state = "tatamitekko" //that's not a tatami design.
+ icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi'
diff --git a/code/modules/clothing/rogueclothes/hats.dm b/code/modules/clothing/rogueclothes/hats.dm
index b26a04ca77..e8eea619ce 100644
--- a/code/modules/clothing/rogueclothes/hats.dm
+++ b/code/modules/clothing/rogueclothes/hats.dm
@@ -1603,3 +1603,613 @@
body_parts_covered = null
flags_inv = FALSE
*/
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/head/roguetown/takuhatsugasa
+ name = "takuhatsugasa"
+ icon_state = "takuhatsugasa"
+ desc = "A type of hat worn by monks during their begging rounds - or when punching demons into submission."
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+ flags_inv = HIDEEARS
+
+ armor = ARMOR_PADDED
+ body_parts_covered = HEAD|HAIR|EARS
+ prevent_crits = MINOR_CRITICALS
+ max_integrity = INTEGRITY_POOR
+
+/obj/item/clothing/head/roguetown/tengai
+ name = "tengai"
+ icon_state = "tengai"
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ desc = "A wide-brimmed hat traditionally worn by wandering monks of the Abyssanctum fold."
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ flags_inv = HIDEEARS
+
+ armor = ARMOR_PADDED
+ body_parts_covered = HEAD|HAIR|EARS
+ prevent_crits = MINOR_CRITICALS
+ max_integrity = INTEGRITY_POOR
+
+/obj/item/clothing/head/roguetown/tengai/yamabushi
+ name = "yamabushi tengai"
+ icon_state = "stengai"
+ desc = "A tengai painted in black tar traditionally worn by Abyssanctum yamabushis."
+ bloody_icon_state = "helmetblood"
+
+/obj/item/clothing/head/roguetown/tengai/gasa
+ name = "gasa"
+ icon_state = "gasa"
+ desc = "A conical straw hat used to protect from the sun and rain."
+ flags_inv = HIDEEARS
+
+/obj/item/clothing/head/roguetown/lilly/small
+ name = "small lilypad gasa"
+ icon_state = "lilypad_small"
+ desc = "a small lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas."
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/lilly/medium
+ name = "medium lilypad gasa"
+ icon_state = "lilypad_medium"
+ desc = "a medium lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas."
+
+/obj/item/clothing/head/roguetown/lilly/big
+ name = "big lilypad gasa"
+ icon_state = "lilypad_big"
+ desc = "a big lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas."
+
+/obj/item/clothing/head/roguetown/tengai/roningasa
+ name = "roningasa"
+ icon_state = "roningasa"
+ flags_inv = HIDEEARS|HIDEFACE
+ desc = "A hat typically worn by the masterless zamurais - the ronins."
+ bloody_icon_state = null
+
+/obj/item/clothing/head/roguetown/tengai/torioigasa
+ name = "torioigasa"
+ icon_state = "torioigasa"
+ desc = "A traditional Abyssariad hat designed for long travels on the murklands. Most used by commoners."
+ bloody_icon_state = null
+
+/obj/item/clothing/head/roguetown/tengai/sandogasa
+ name = "sandogasa"
+ icon_state = "sandogasa"
+ flags_inv = HIDEEARS
+ desc = "A large hat providing ample shade and protection from the elements, including rain."
+ bloody_icon_state = null
+
+/obj/item/clothing/head/roguetown/tengai/sandogasa/yamabushi
+ name = "yamabushi sandogasa"
+ icon_state = "ssandogasa"
+ desc = "A sandogasa painted in black tar traditionally worn by Abyssanctum yamabushis."
+ bloody_icon_state = null
+
+/obj/item/clothing/head/roguetown/soheicloth
+ name = "sohei coverings"
+ desc = "Blessed fabric bathed in holy water, keeping a sohei protected from corruptive gases - and providing anonymity. Their symbol of devotion that manifests their humbleness."
+ icon_state = "soheicloth"
+ body_parts_covered = HEAD|HAIR
+ body_parts_covered = HEAD|HAIR|EARS|MOUTH
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR //it is not hiding facial hair when put on the neck. No idea how to fix.
+ slot_flags = ITEM_SLOT_NECK|ITEM_SLOT_HEAD
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/soheicloth/thunder
+ name = "thunder sohei coverings"
+ color = CLOTHING_THUNDER
+
+/obj/item/clothing/head/roguetown/soheicloth/storm
+ name = "storm sohei coverings"
+ color = CLOTHING_STORM
+
+/obj/item/clothing/head/roguetown/soheicloth/ocean
+ name = "ocean sohei coverings"
+ color = CLOTHING_OCEAN
+
+/obj/item/clothing/head/roguetown/soheicloth/island
+ name = "island sohei coverings"
+ color = CLOTHING_ISLAND
+
+/obj/item/clothing/head/roguetown/shinobi_zukin
+ name = "shinobi hood"
+ icon_state = "shinobi_zukin"
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ desc = "A hood worn by members of Shinobi clans to conceal their identity and blend into the shadows. Unsuitable for espionage for being too obvious."
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane
+ name = "hachi-gane"
+ desc = "Simple, lamellar head protection made for humble monks, ronins and the poor - with the material often gathered from iron panning."
+ icon_state = "hachi-gane"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/thunder
+ name = "thunder hachi-gane"
+ desc = "Simple, lamellar head protection. Marked in yellow for the mountainous magicians and monks who praises Abyssor's thunders."
+ color = CLOTHING_THUNDER
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/storm
+ name = "storm hachi-gane"
+ desc = "Simple, lamellar head protection. Marked in dark blue for the lighthouse keepers of Abyssanctum's faith, who keeps the eternal fire going."
+ color = CLOTHING_STORM
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/ocean
+ name = "ocean hachi-gane"
+ desc = "Simple, lamellar head protection. Marked in light blue for the expeditionary magicians and monks of Abyssanctum's faith, long married to the ocean."
+ color = CLOTHING_OCEAN
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/island
+ name = "island hachi-gane"
+ desc = "Simple, lamellar head protection. Marked in red for the soilgazers of Abyssanctum's faith, those bent in ensuring no plague shall reach their blessed islands. "
+ color = CLOTHING_ISLAND
+
+/obj/item/clothing/head/roguetown/helmet/zijinguan
+ name = "zijinguan" //This is actually a ming dynasty helmet
+ desc = "A cheaper version of the Myrmidon helmet that dates back to the age of guardianship, \
+ yet still remains efficient. This helmet has became the symbol of abyssariad military culture \
+ of the commoner class alongside the jingasa."
+ icon_state = "zijinguan"
+ flags_inv = HIDEEARS
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ detail_tag = "_detail"
+ dynamic_hair_suffix = ""
+
+/obj/item/clothing/head/roguetown/helmet/zijinguan/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/head/roguetown/helmet/jingasa //the same as a Kettle. Just don't want the 64x64 bits.
+ name = "jingasa"
+ desc = "A metal gasa in conical shape. Mainly worn by Ashigarus, it protects against \
+ arrows and direct blow. Most efficient together with padding underneath due to the \
+ large space for the helmet to move after hit, easing impact."
+ icon_state = "jingasa"
+ flags_inv = HIDEEARS
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ flags_inv = HIDEEARS
+ smeltresult = /obj/item/ash
+ flags_inv = HIDEEARS
+ sellprice = VALUE_CHEAP_IRON_HELMET
+
+ body_parts_covered = COVERAGE_HEAD
+
+/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto
+ name = "tosei kabuto"
+ desc = "Made from multiple steel plates riveted together, arranged in a radial pattern, \
+ having great balance and weight distribution - protecting even against round balls from firearms. \
+ Often used by the Zamurai class, this helmet is no rare find on a battlefield."
+ icon_state = "tosei_kabuto"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+
+/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto/cursed/Initialize()
+ . = ..()
+ name = "soulbinded tosei kabuto"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto
+ name = "masked tosei kabuto"
+ desc = "Made from multiple steel plates riveted together, arranged in a radial pattern. \
+ This one has a mask to protect the face of whoever uses it, albeit it does make sight difficult."
+ icon_state = "toseikabuto_visor"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+
+/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed/Initialize()
+ . = ..()
+ name = "soulbinded masked tosei kabuto"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/head/roguetown/helmet/visored/zunari //knight helmet.
+ name = "zunari kabuto"
+ desc = "An Etchu Zunari Kabuto with the front end of its longitudinal plate \
+ overlapping the brows, over the eyes, rather than being riveted beneath it \
+ to efficiently reflect blows and arrows - and protect against the sun and sweat."
+ icon_state = "zunari_kabuto"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+ adjustable = CAN_CADJUST
+ emote_environment = 3
+ block2add = FOV_RIGHT|FOV_LEFT
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR
+
+ armor = list("melee" = 90, "bullet" = 80, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ body_parts_covered = HEAD_EXCEPT_MOUTH
+
+/obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed/Initialize()
+ . = ..()
+ name = "soulbinded zunari kabuto"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+
+/obj/item/clothing/head/roguetown/heartfelt
+ name = "heartfelt zunari kabuto"
+ desc = "An Etchu Zunari kabuto with Heartfelt markings. It lacks a demonic \
+ mask for intimidation purposes - yet remains just as effective, besides showing \
+ the incredible artistic value that upholds Heartfelt's culture."
+ icon_state = "heartfelt_kabuto"
+ body_parts_covered = HEAD|HAIR|EARS //maskless, protects less of the face.
+ flags_inv = HIDEEARS
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ emote_environment = 3
+ sellprice = VALUE_STEEL_HELMET+BONUS_VALUE_SMALL
+ clothing_flags = CANT_SLEEP_IN
+ armor = ARMOR_PLATE
+ armor_class = AC_HEAVY
+ prevent_crits = ALL_CRITICAL_HITS
+ max_integrity = INTEGRITY_STRONG
+
+/obj/item/clothing/head/roguetown/helmet/leather/malgai
+ name = "leather malgai"
+ desc = "A abyssariad leather helmet usually used by those who dwells \
+ on the center of Fog islands, where great steppes exists, or your common hunter."
+ icon_state = "malgai"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/leather/malgai/duulga //same changes of 'leather' to 'hide' has been brought over to this hat + mouth protection, because Mongol hat go brrtt
+ name = "arisan duulga"
+ desc = "The thick, oil-boiled layered leather helmet used by Abyssariads Dustriders \
+ from the arid, steppelands on the heart of the Fog Islands."
+ icon_state = "arisan_duulga"
+ armor = list("melee" = 40, "bullet" = 15, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ prevent_crits = list(BCLASS_BLUNT, BCLASS_TWIST)
+ body_parts_covered = HEAD|HAIR|EARS|NOSE|MOUTH
+ resistance_flags = FLAMMABLE // Made of leather
+ smeltresult = /obj/item/ash
+ anvilrepair = null
+ max_integrity = 250
+ sewrepair = TRUE
+ blocksound = SOFTHIT
+ sellprice = 25
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/skullcap/rattan
+ name = "tengpai dou"
+ icon_state = "rattan_helmet"
+ desc = "A cheap abyssariad helmet made from stripped, oil boiled rattan and iron. \
+ Used only by militia and the humble LinYou raiders. Less protective, but can be easily repaired."
+ flags_inv = HIDEEARS
+ armor = list("melee" = 60, "bullet" = 40, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ body_parts_covered = HEAD|HAIR|EARS
+ max_integrity = 125
+ sellprice = 20
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ sewrepair = TRUE
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot //hopefully asking someone to draw this helmet.
+ name = "relic of urn"
+ icon_state = "bronzeb"
+ desc = "The eternal relic of the Champions of the Urn, used by Eidolon Skylancers, \
+ the Demonslayers of the Abyssal order. It cannot be removed, forever one with the user \
+ - molten and grafted into skin, but the infused arcane bends light upon itself for clear sight."
+ smeltresult = /obj/item/ingot/steel //Intentional. The helmet is not actually made of bronze. It is just a lingering apotheosis-age term for that internal-mirror design.
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ block2add = null //Can easily see - cannot remove the helmet. This is your new skull.
+ adjustable = CAN_CADJUST
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot/AdjustClothes(mob/user)
+ if(loc == user)
+ playsound(user, "sound/items/visor.ogg", 100, TRUE, -1)
+ if(adjustable == CAN_CADJUST)
+ adjustable = CADJUSTED
+ icon_state = "[initial(icon_state)]_raised"
+ body_parts_covered = HEAD|HAIR|EARS
+ flags_inv = HIDEEARS|HIDEHAIR
+ flags_cover = null
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT) // Vulnerable to eye stabbing while visor is open
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_head()
+ else if(adjustable == CADJUSTED)
+ ResetAdjust(user)
+ prevent_crits = ALL_CRITICAL_HITS
+ body_parts_covered = FULL_HEAD
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ if(user)
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_head()
+ else // Failsafe.
+ to_chat(user, "How the hell you removed your external cranium? PUT IT BACK, EIDOLON.")
+ return
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot/Initialize()
+ . = ..()
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) //It is molten on the user's head.
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot/obj_break(damage_flag) //If it breaks, qdel.
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot/dropped(mob/living/carbon/human/user)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku
+ name = "kaizoku hat"
+ desc = "A distinguished hat with three sides of the brim turned up and laced, \
+ forming a triangle. Usually used by the Fog Island's privateer navy - or rich fellows on Heartfelt."
+ icon_state = "tricorn"
+
+/obj/item/clothing/head/roguetown/helmet/visored/abyssalchampion //hounskull tier.
+ name = "winged abyssal helmet"
+ desc = "The traditional winged helmet of ancient design with a protective mask covering it. \
+ It has foundations on the ancient myrmidon guardian helmets. \
+ The mask can be lifted internally for higher visibility, but it leaves the eyes exposed."
+ icon_state = "abyssal_champion"
+ item_state = "abyssal_champion"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+ emote_environment = 3
+ block2add = FOV_RIGHT|FOV_LEFT
+
+ armor = list("melee" = 100, "bullet" = 80, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+
+/obj/item/clothing/head/roguetown/helmet/heavy/bucket/soheidemon
+ name = "armored sohei cowl"
+ desc = "A fabric blessed both in holy water and steel. A mask-like metal reinforcement \
+ covered with yellow silk protects the skull of these Sohei warriors."
+ icon_state = "soheidemon"
+ item_state = "soheidemon"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+
+// 'bone-tier' Undine equipments.
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji
+ name = "onmyoji warhat"
+ desc = "Surprisingly huge hats used by Onmyojis whom take part of the abyssal championage in warfare. The hat shadows hides the eyes from the lower castes."
+ icon_state = "abyssalhat"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ resistance_flags = FLAMMABLE
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/random/Initialize()
+ . = ..()
+ color = pick("#4756d8", "#759259", "#bf6f39", "#c1b144")
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/thunder
+ name = "thunder onmyoji warhat"
+ color = CLOTHING_THUNDER
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/storm
+ name = "storm onmyoji warhat"
+ color = CLOTHING_STORM
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/ocean
+ name = "ocean onmyoji warhat"
+ color = CLOTHING_OCEAN
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/island
+ name = "island onmyoji warhat"
+ color = CLOTHING_ISLAND
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/black
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/eboshi
+ name = "eboshi hat"
+ desc = "traditional Onmyoji hats for those who desires to practice natural sciences and divinations rather than warfare."
+ icon_state = "eboshihat"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ sellprice = 100
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ resistance_flags = FLAMMABLE
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+
+/obj/item/clothing/head/roguetown/wizhat/onmyoji/eboshi/Initialize()
+ color = RANDOM_NOBLE_DYES
+ ..()
+
+/obj/item/clothing/head/roguetown/rare/myrmidon
+ name = "myrmidon helmet"
+ desc = "The warrior-priests bound to divine oath, consecrated to fight in the abyss as \
+ extensions of the Heavenly Emperor. It became reference for the current day zijinguan and winged helmets."
+ icon_state = "myrmidon"
+ item_state = "myrmidon"
+ allowed_sex = list(MALE, FEMALE)
+ allowed_race = list("abyssariad")
+ flags_inv = HIDEEARS
+ clothing_flags = CANT_SLEEP_IN
+ body_parts_covered = HEAD_EXCEPT_EYES
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+
+/obj/item/clothing/head/roguetown/rare/dragonslayer
+ name = "dragonslayer helmet"
+ icon_state = "dragonslayer"
+ item_state = "dragonslayer"
+ desc = "The hallmark of the Dragonslayers, those born to endure the blazing infernos from \
+ the sons of magma. The asbestos materials excels in resisting the intense heat of dragonfire and wizardry."
+ heat_protection = HEAD|EARS|HAIR|FACE
+ flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+
+/obj/item/clothing/head/roguetown/bardhat/bloodhunter
+ name = "scrapped hat"
+ desc = "A heartfeltean hat that has been scrapped with sharp tools and hardened in oil, \
+ meant to convey one's status to not only destroy such expensive piece - but to keep it raised like thorns."
+ icon_state = "bloodhunter"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku/female
+ name = "lady hat"
+ desc = "A hat produced by abyssariad and heartfeltean hands for the most beautiful of ladies. Or rich, that is."
+ icon_state = "heartfelthandf"
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+//temple helmet
+//................ Abyssor Shrinekeeper ............... //
+/obj/item/clothing/head/roguetown/padded/shrinekeeper
+ name = "shrinekeeper kabuto"
+ desc = "A gift to new Abyssanctum devotees and a badge of their shrinekeeping duties, referencing guardianship of old, this helm is crafted from the enamel of deep-sea leviathans to protect the head of shrinekeepers.."
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+ icon_state = "shrinekeeper_kabuto"
+ flags_inv = HIDEEARS | HIDEHAIR | HIDEFACIALHAIR
+
+ armor = ARMOR_WEAK
+ prevent_crits = MINOR_CRITICALS
+
+/obj/item/clothing/head/roguetown/helmet/ceramic
+ name = "bone tribal helmet"
+ icon_state = "ivory_head"
+ desc = "a simple, protective bone helmet made from the creatures of the land."
+ slot_flags = ITEM_SLOT_HEAD|ITEM_SLOT_HIP
+ body_parts_covered = HEAD|HAIR
+ prevent_crits = list(BCLASS_STAB) //This one is too thin to actually protect someone beyond stabbing wounds. Cut would have too much 'blunt'.
+ resistance_flags = FIRE_PROOF
+ icon_state = "ivory_head"
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ anvilrepair = null
+ smeltresult = /obj/item/ash
+ sewrepair = FALSE
+ blocksound = SOFTHIT
+ sellprice = 10
+ max_integrity = 150
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi'
+
+/obj/item/clothing/head/roguetown/helmet/ceramic/medium
+ name = "bone ravanger helmet"
+ icon_state = "ravager_head"
+ desc = "The helmets commonly used by Undine warriors or common riverdwellers who took upon themselves to protect their heads against goblinoid invasions."
+ prevent_crits = list(BCLASS_CUT, BCLASS_STAB) //Bones are not good against blunt.
+ body_parts_covered = HEAD|HAIR|EARS
+ flags_inv = HIDEEARS
+ max_integrity = 200
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
+
+/obj/item/clothing/head/roguetown/helmet/ceramic/reinforced
+ name = "marauder trollhunter helmet"
+ icon_state = "marauder_head"
+ desc = "The full bone helmet that became the symbol of the unison of the Undine tribes and the Abyssariads, taking reference from the Championage's Dragonslayer helmets."
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_STAB) //Bones are not good against blunt.
+ body_parts_covered = HEAD|EARS|HAIR|NOSE|EYES|FACE
+ flags_inv = HIDEEARS
+ max_integrity = 250
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ block2add = FOV_RIGHT|FOV_LEFT
+ bloody_icon_state = null
+ icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi'
+ bloody_icon = 'icons/effects/blood64x64.dmi'
+ bloody_icon_state = "helmetblood_big"
+ worn_x_dimension = 64
+ worn_y_dimension = 64
diff --git a/code/modules/clothing/rogueclothes/mask.dm b/code/modules/clothing/rogueclothes/mask.dm
index 3090f36cfc..c819e51841 100644
--- a/code/modules/clothing/rogueclothes/mask.dm
+++ b/code/modules/clothing/rogueclothes/mask.dm
@@ -87,7 +87,7 @@
sewrepair = FALSE
anvilrepair = /datum/skill/craft/armorsmithing
clothing_flags = CANT_SLEEP_IN
-
+
armor = ARMOR_PLATE_BAD
prevent_crits = CUT_AND_MINOR_CRITS //No stab, blunt or chop crit flags. If a chopping weapon can get through 70 armor, it's probably carrying enough force to mess up your face behind a flimsy mask.
max_integrity = INTEGRITY_STANDARD //Flimsier than a proper visor/helmet.
@@ -120,7 +120,7 @@
name = "steel mask"
icon_state = "smask"
desc = "A knightly steel mask that both conceals and protects the face. Usually paired with a bascinet."
-
+
armor = ARMOR_PLATE_BAD //Still thin.
prevent_crits = ALL_EXCEPT_BLUNT_AND_STAB
max_integrity = INTEGRITY_STRONG //250 Integrity, added chop protection. Still worse than a proper visored helmet.
@@ -206,7 +206,7 @@
sewrepair = FALSE
anvilrepair = /datum/skill/craft/armorsmithing
smeltresult = /obj/item/ingot/copper
-
+
max_integrity = INTEGRITY_WORST //Really flimsy, still good for a few blows.
//................ Druids Mask ............... //
@@ -225,3 +225,196 @@
armor = ARMOR_WEAK
prevent_crits = CUT_AND_MINOR_CRITS
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/mask/rogue/kaizoku
+ icon = 'icons/roguetown/kaizoku/clothingicon/masks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/masks.dmi'
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ body_parts_covered = FACE
+ slot_flags = ITEM_SLOT_MASK
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo
+ name = "iron somen taisho"
+ icon_state = "ironmenpo"
+ desc = "Ever since the Onis has been dignified on Abyssariad fold, they have been exalted in war masks - and this became their default pattern for menpos ever since. "
+ max_integrity = 100
+ blocksound = PLATEHIT
+ break_sound = 'sound/foley/breaksound.ogg'
+ drop_sound = 'sound/foley/dropsound/armor_drop.ogg'
+ resistance_flags = FIRE_PROOF
+ armor = list("melee" = 80, "bullet" = 50, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST)
+ blocksound = PLATEHIT
+ flags_inv = HIDEFACE
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | MASKCOVERSMOUTH
+ body_parts_covered = FACE|NECK
+ block2add = FOV_BEHIND
+ slot_flags = ITEM_SLOT_MASK|ITEM_SLOT_HIP
+ experimental_onhip = TRUE
+ sewrepair = FALSE
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/half
+ name = "iron half menpo"
+ icon_state = "ironmempo"
+ max_integrity = 100
+ desc = "A cheaper menpo portraying the lower part of a Ogrun's head. It covers only the neck and the mouth."
+ body_parts_covered = NECK|MOUTH
+ flags_cover = HEADCOVERSMOUTH | MASKCOVERSMOUTH
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/steel
+ name = "steel men-yoroi"
+ icon_state = "smenyoroi"
+ max_integrity = 200
+ armor = list("melee" = 80, "bullet" = 50, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST)
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/half
+ name = "steel mempo"
+ icon_state = "steelmempo"
+ desc = "The lower part of a menpo portraying the maws of a Ogrun's head. It covers only the neck and the mouth, often used by warriors that cares about their sight."
+ max_integrity = 200
+ body_parts_covered = NECK|MOUTH
+ flags_cover = HEADCOVERSMOUTH | MASKCOVERSMOUTH
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask
+ name = "iron Merkkin mask"
+ icon_state = "irontribal"
+ desc = "The old, barely used mask of the almost extinct Merkpeople, with fish-like characteristics. Usually used by Undines."
+ max_integrity = 100
+ body_parts_covered = FACE|MOUTH|EYES
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/steel
+ name = "steel tribal mask"
+ icon_state = "steeltribal"
+ max_integrity = 200
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable
+ var/colorable_var
+ var/picked
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu
+ name = "tengu mask"
+ icon_state = "colourable_tengumask"
+ max_integrity = 200
+ desc = "A mask that glorifies a Skylancer warrior. It portrays the exagerated perception over the race - even if they lack such noses and eyebrows."
+ colorable_var = TRUE
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune
+ name = "changeling mask"
+ icon_state = "colourable_kitsunemask"
+ max_integrity = 200
+ desc = "A mask that glorifies a Changeling warrior. It portrays the less exagerated perception over the race - since the mask's animalistic figure is no equal to their biology-defying skull."
+ detail_tag = "_detail"
+ colorable_var = TRUE
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/oni
+ name = "ogrun mask"
+ icon_state = "colourable_onimask"
+ max_integrity = 200
+ desc = "A mask that glorifies a Ogrun warrior. It portrays the mostly perfect perception of the race, so efficiently it became the standards for Fog island military due to its intimidation value."
+ colorable_var = TRUE
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/attack_right(mob/user)
+ if(colorable_var == TRUE)
+ if(picked)
+ return
+ var/the_time = world.time
+ if(world.time > (the_time + 30 SECONDS))
+ return
+ var/colorone = input(user, "Your emotions spreads your will.","Flush emotions within the threads.") as null|anything in CLOTHING_COLOR_NAMES
+ if(!colorone)
+ return
+ picked = TRUE
+ color = clothing_color2hex(colorone)
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_wear_mask()
+ return
+ else
+ return
+
+/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/kitsune/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/mask/rogue/kaizoku/facemask/dishonor
+ name = "dishonor mask"
+ desc = "Blackpowder-infused, soul-bound veil for dishonored Abyssariads as a consequence for bringing shame to their clan and traditions, for those unentitled to be called Abyssariads - the Burakumins (non-persons), such as prostitutes and beggars. If broken, it will explode."
+ icon_state = "bmask"
+ max_integrity = 300 //Unique and very protective. You will need it. Trust me.
+ blocksound = PLATEHIT
+ break_sound = 'sound/foley/breaksound.ogg'
+ drop_sound = 'sound/foley/dropsound/armor_drop.ogg'
+ resistance_flags = FIRE_PROOF
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT)
+ flags_inv = HIDEFACE
+ body_parts_covered = EYES | EARS | NOSE //Allows them to use their mouth due to the mouth opening.
+ block2add = FOV_BEHIND
+ slot_flags = ITEM_SLOT_MASK|ITEM_SLOT_HIP
+ experimental_onhip = TRUE
+
+/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/Initialize()
+ . = ..()
+ name = "dishonor mask"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/dropped(mob/living/carbon/human/user)
+ . = ..()
+ if(QDELETED(src))
+ return
+ qdel(src)
+
+/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/obj_break(damage_flag)
+ . = ..()
+ if(QDELETED(src))
+ return
+ explode(src)
+ qdel(src)
+
+/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/proc/explode(skipprob)
+ STOP_PROCESSING(SSfastprocess, src)
+ var/turf/T = get_turf(src)
+ explosion(T, light_impact_range = 2, flame_range = 2, smoke = TRUE, soundin = pick('sound/misc/explode/bottlebomb (1).ogg','sound/misc/explode/bottlebomb (2).ogg'))
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband
+ name = "eye bands"
+ icon_state = "eyeband"
+ max_integrity = 20
+ integrity_failure = 0.5
+ body_parts_covered = EYES
+ icon = 'icons/roguetown/kaizoku/clothingicon/masks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/masks.dmi'
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband/random/Initialize()
+ color = pick("#a32121", "#8747b1", "#3d3a36", "#414143", "#685542", "#428138", "#264d26", "#537bc6", "#b5b004", "#249589", "#ffffff", "#bd6606", "#962e5c")
+ ..()
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband/leonardo //katanas
+ color = "#4f47be"
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband/michelangelo //nunchucks
+ color = "#a76e38"
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband/donatello //bo staff
+ color = "#65219c"
+
+/obj/item/clothing/mask/rogue/kaizoku/eyeband/raphael //sais
+ color = "#8a2d2d"
diff --git a/code/modules/clothing/rogueclothes/neck.dm b/code/modules/clothing/rogueclothes/neck.dm
index 4174bc8c7d..dde00e22a7 100644
--- a/code/modules/clothing/rogueclothes/neck.dm
+++ b/code/modules/clothing/rogueclothes/neck.dm
@@ -514,3 +514,85 @@
name = "menear necklace"
desc = "A grim necklace made to show off the wearer's macabre collection of cut off humen ears."
icon_state = "menears"
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+
+/obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin
+ name = "karuta zukin"
+ desc = "A protective hood composed of rectangular plates sewn onto a fabric backing, offering a more solid \
+ defense while remaining flexible."
+ icon_state = "karuta_zukin"
+ item_state = "karuta_zukin"
+ icon = 'icons/roguetown/kaizoku/clothingicon/neck.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/neck.dmi'
+ adjustable = CAN_CADJUST
+
+/obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/random/Initialize()
+ color = pick("#a32121", "#8747b1", "#3d3a36", "#414143", "#685542", "#428138", "#264d26", "#537bc6", "#b5b004", "#249589", "#ffffff", "#bd6606", "#962e5c")
+ ..()
+
+/obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military/Initialize()
+ color = pick("#3d3a36", "#685542", "#264d26")
+ ..()
+
+/obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/kabukimono
+ color = "#9b874f"
+
+/obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/AdjustClothes(mob/user)
+ if(loc == user)
+ if(adjustable == CAN_CADJUST)
+ adjustable = CADJUSTED
+ if(toggle_icon_state)
+ icon_state = "[initial(icon_state)]_t"
+ flags_inv = null
+ body_parts_covered = NECK
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_neck()
+ H.update_inv_head()
+ else if(adjustable == CADJUSTED)
+ ResetAdjust(user)
+ flags_inv = HIDEEARS|HIDEHAIR
+ if(user)
+ if(ishuman(user))
+ var/mob/living/carbon/H = user
+ H.update_inv_neck()
+ H.update_inv_head()
+
+/obj/item/clothing/neck/roguetown/chaincoif/iron/kusari_zukin
+ name = "iron kusari zukin"
+ desc = "A hood made of riveted iron rings usually worn beneath or alongside a Kabuto. \
+ It protects against cuts and slashes - but cannot spread blunt damage as efficiently."
+ icon_state = "kusari_zukin"
+ icon = 'icons/roguetown/kaizoku/clothingicon/neck.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/neck.dmi'
+
+/obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ name = "reformist abyssanctum amulet"
+ desc = "Despair thee not at the abyssal depths, for where light doth fade, vessels of might shall be therein carved, as Abyssor and the Weeper guide their own."
+ icon = 'icons/roguetown/kaizoku/clothingicon/neck.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/neck.dmi'
+ icon_state = "abyssanctum"
+
+/obj/item/clothing/neck/roguetown/mercmedal/toweryakko
+ name = "soul compressor"
+ desc = "A metallic device of Tower-Yakko legacy used to shackle criminal souls and demons to eternity. The once-feared power ceased when Tower-Yakko's moral decay led to their disgrace in the eyes of the emperor. "
+ icon = 'icons/roguetown/kaizoku/clothingicon/neck.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/neck.dmi'
+ icon_state = "soul_compressor"
+
+/obj/item/clothing/neck/roguetown/mercmedal/kabukimaru
+ name = "hihiirokane beads"
+ desc = "Hihiirokane, or 'Mythril', is a luminous, rare metal drawn from the abyssal depths where the pressure is hostile to most life. The Abyssariads holds the key to its mystery, a secret that dwarves would covet at any cost."
+ icon = 'icons/roguetown/kaizoku/clothingicon/neck.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/neck.dmi'
+ icon_state = "mythrilbeads"
diff --git a/code/modules/clothing/rogueclothes/pants.dm b/code/modules/clothing/rogueclothes/pants.dm
index 3abebf3fe7..26e505e184 100644
--- a/code/modules/clothing/rogueclothes/pants.dm
+++ b/code/modules/clothing/rogueclothes/pants.dm
@@ -340,3 +340,199 @@
max_integrity = INTEGRITY_STRONGER //350 Integrity, middle ground between bulky chestpieces and peripheral pieces.
prevent_crits = ALL_EXCEPT_STAB
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami
+ name = "haidate tatami"
+ desc = "Flexible thigh guard with interlocking scales sewn into the fabric. Ideal for agility during battle."
+ gender = PLURAL
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ icon_state = "haidate_tatami"
+ item_state = "haidate_tatami"
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ alternate_worn_layer = SHOESLEEVE_LAYER
+
+/obj/item/clothing/under/roguetown/chainlegs/sendan
+ name = "haidate sendan"
+ desc = "Segmented thigh armor with overlapping plates that allows engagement in prolonged combat, without causing mobility issues."
+ icon_state = "haidate_sendan"
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ alternate_worn_layer = SHOESLEEVE_LAYER
+
+/obj/item/clothing/under/roguetown/chainlegs/sendan/cursed/Initialize()
+ . = ..()
+ name = "soulbinded kote"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/under/roguetown/platelegs/yoroihakama
+ name = "yoroihakama"
+ desc = "Hakama with extreme plate reinforcement, with protuding plates protecting the hips, and many interlocking steel plates under the cloth."
+ gender = PLURAL
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ icon_state = "yoroihakama"
+ item_state = "yoroihakama"
+ alternate_worn_layer = SHOESLEEVE_LAYER
+
+/obj/item/clothing/under/roguetown/kaizoku/yoroihakama/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/under/roguetown/trou/tobi
+ name = "tobi pants"
+ desc = "Baggy pants of abyssariad design. Suitable for those who works the field and avoid horseback."
+ icon_state = "tobi"
+ item_state = "tobi"
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+
+/obj/item/clothing/under/roguetown/trou/tobi/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/under/roguetown/trou/tobi/thunder
+ name = "thunder tobi pants"
+ color = CLOTHING_THUNDER
+
+/obj/item/clothing/under/roguetown/trou/tobi/storm
+ name = "storm tobi pants"
+ color = CLOTHING_STORM
+
+/obj/item/clothing/under/roguetown/trou/tobi/ocean
+ name = "ocean tobi pants"
+ color = CLOTHING_OCEAN
+
+/obj/item/clothing/under/roguetown/trou/tobi/island
+ name = "island tobi pants"
+ color = CLOTHING_ISLAND
+
+/obj/item/clothing/under/roguetown/trou/tobi/dark
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/under/roguetown/trou/tobi/kabukimono
+ color = CLOTHING_KABUKIMONO
+
+/obj/item/clothing/under/roguetown/trou/tobi/dragonslayer
+ desc = "Baggy pants of abyssariad design. This one is coated in asbestos, and may be just as dangerous."
+ color = "#3d4681"
+ armor = list("melee" = 20, "bullet" = 0, "laser" = 75,"energy" = 75, "bomb" = 75, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+
+/obj/item/clothing/under/roguetown/trou/leather/fur
+ name = "thick tobi"
+ icon_state = "furpants"
+ desc = "A tobi made out of Dendor's beloved guardians - so Abyssor's beloved guardians can use it."
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+
+/obj/item/clothing/under/roguetown/trou/leather/fur/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/under/roguetown/trou/leather/fur/dragonslayer
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ color = CLOTHING_RED_OCHRE
+
+/obj/item/clothing/under/roguetown/tights/hakama
+ name = "hakama"
+ icon_state = "hakama"
+ alternate_worn_layer = SHOESLEEVE_LAYER
+ desc = "Suitable for the Abyssariad-cultured, in which large battle-skirts does not hurt their masculinity, differently of the frail Imperial counterpart."
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+
+/obj/item/clothing/under/roguetown/tights/hakama/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/under/roguetown/tights/hakama/eidolon
+ color = CLOTHING_EIDOLON
+
+/obj/item/clothing/under/roguetown/trou/leather/shinobizubon
+ name = "shinobi zubon"
+ desc = "Traditional flexible pants with loose fit around the legs with hardened leather tied under the cloth and ankles to prevent snagging and noise."
+ gender = PLURAL
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ icon_state = "shinobizubon"
+ item_state = "shinobizubon"
+ blocksound = SOFTHIT
+ blade_dulling = DULLING_BASHCHOP
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+
+/obj/item/clothing/under/roguetown/kaizoku/ceramic
+ name = "marauder chausses"
+ desc = "Bone chausses chiseled into a mimicry of shells, equal to a lamellar of mollusk shells, so it better absorb and disperse impact."
+ gender = PLURAL
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ icon_state = "marauder_leg"
+ item_state = "marauder_leg"
+ sewrepair = FALSE
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ max_integrity = 200
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT)
+ armor_class = AC_MEDIUM
+ body_parts_covered = GROIN|LEGS|FEET
+ blocksound = PLATEHIT
+ var/do_sound = FALSE
+ drop_sound = 'sound/foley/dropsound/armor_drop.ogg'
+ anvilrepair = /datum/skill/craft/armorsmithing
+ alternate_worn_layer = SHOESLEEVE_LAYER
+
+/obj/item/clothing/under/roguetown/platelegs/weepershanwenkai
+ name = "weeper-patterned championage lowerhalf"
+ desc = "Lower part of a godwenkai armor, relics of abyssariad championage for those of high-ranking deeply bound to Abyssanctum. Usually made of bronze, the grasp of the current era brought high-quality steel to the table."
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ icon_state = "weepershanwenkai"
+ item_state = "weepershanwenkai"
+ gender = PLURAL
+ alternate_worn_layer = SHOESLEEVE_LAYER
+
+/obj/item/clothing/under/roguetown/kaizoku/ceramic/light
+ name = "ivory leg plates"
+ desc = "The leg protection proper for Undine warriors."
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
+ max_integrity = 100
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ prevent_crits = list(BCLASS_CHOP, BCLASS_BLUNT)
+ body_parts_covered = LEGS|FEET
+ gender = PLURAL
+ icon_state = "ivory_legs"
+ item_state = "ivory_legs"
+
+/obj/item/clothing/under/roguetown/kaizoku/tribal
+ name = "tribal lowerhalf"
+ desc = "piece of clothings usually used by Undine tribesmen of all genders."
+ icon_state = "tribalcloth"
+ icon = 'icons/roguetown/kaizoku/clothingicon/pants.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/pants.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_pants.dmi'
diff --git a/code/modules/clothing/rogueclothes/robes.dm b/code/modules/clothing/rogueclothes/robes.dm
index b0486dbe75..6fdf658238 100644
--- a/code/modules/clothing/rogueclothes/robes.dm
+++ b/code/modules/clothing/rogueclothes/robes.dm
@@ -174,3 +174,15 @@
item_state = "surgrobe"
+//kaizoku stuff
+
+/obj/item/clothing/suit/roguetown/shirt/robe/shrinekeeper
+ name = "shrinekeeper robe"
+ desc = "Silk-woven and shimmering like tides at dusk, for those who honors the will of the abyss."
+ icon_state = "shrinekeeper"
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi'
+ sleevetype = "shirt"
diff --git a/code/modules/clothing/rogueclothes/shirts.dm b/code/modules/clothing/rogueclothes/shirts.dm
index 747771dd27..f5d4f34a5c 100644
--- a/code/modules/clothing/rogueclothes/shirts.dm
+++ b/code/modules/clothing/rogueclothes/shirts.dm
@@ -422,3 +422,181 @@
if(get_detail_color())
pic.color = get_detail_color()
add_overlay(pic)
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kimono
+ name = "traditional kimono"
+ desc = "A front-wrapped garment with long sleeves made from a long, narrow bolt of cloth used as a formal garment by the poor and rich alike."
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ icon_state = "kimono"
+ item_state = "kimono"
+ slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR
+ boobed = TRUE
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/ronin
+ color = CLOTHING_RONIN
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/dark
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/kabukimono
+ color = CLOTHING_KABUKIMONO
+
+/obj/item/clothing/suit/roguetown/shirt/rags/monkgarb
+ name = "monk samue"
+ desc = "The Samue is the clothing used by Abyssanctum monks engaged on the act of Samu, most proper for those performing temple maintenance and mountain hiking."
+ slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ icon_state = "monkgarb"
+ item_state = "monkgarb"
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ body_parts_covered = CHEST|ARMS|VITALS
+
+/obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo //I know this is actually a Kataginu, but it is know more as 'Kamishimo', even if lacking a Hakama. Because HAKAMA is its own thing here.
+ name = "kataginu"
+ desc = "A formal kimono used by men, a short sleeveless garment made of hemp which usually comes together with a hakama, and worn on top of a kosode or kimono. To use one without cloth underneath, conveys a ronin nature."
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR|ITEM_SLOT_CLOAK
+ icon_state = "kamishimo"
+ item_state = "kamishimo"
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ body_parts_covered = CHEST|VITALS
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/ronin
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/eidolon
+ color = CLOTHING_EIDOLON
+
+/obj/item/clothing/suit/roguetown/shirt/looseshirt
+ name = "kimono jinbei"
+ desc = "A summer shirt that goes along with a tobi, used during the hot summers on Fog islands."
+ slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ icon_state = "looseshirt"
+ item_state = "looseshirt"
+ boobed = TRUE
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ body_parts_covered = CHEST|ARMS|VITALS
+
+/obj/item/clothing/suit/roguetown/shirt/looseshirt/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/shirt/looseshirt/shinobi
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/suit/roguetown/shirt/looseshirt/dragonslayer
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ color = CLOTHING_WINESTAIN_RED
+
+/obj/item/clothing/suit/roguetown/shirt/rags/tribal
+ name = "tribal garbs"
+ desc = "Tribal clothings made from plant fiber commonly used by Undine tribesmen."
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR
+ icon_state = "tribalgarb"
+ item_state = "tribalgarb"
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ body_parts_covered = CHEST|VITALS
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian
+ name = "onmyoji's warfare garb"
+ desc = "The garbs used by Abyssariad magicians during times of warfare, holding the marks of Abyssor upon the cloth."
+ icon_state = "abyssaltunic"
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ boobed = TRUE
+ flags_inv = HIDEBOOB
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ allowed_sex = list(MALE, FEMALE)
+ allowed_race = list("human", "tiefling", "aasimar", "abyssariad")
+ color = null
+ sellprice = 100
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/black
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/random/Initialize()
+ color = RANDOM_NOBLE_DYES
+ ..()
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/thunder
+ name = "thunder onmyoji's warfare garb"
+ desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in yellow for the mountainous magicians and monks who praises Abyssor's thunders."
+ color = CLOTHING_THUNDER
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/storm
+ name = "storm onmyoji's warfare garb"
+ desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in dark blue for the lighthouse keepers of Abyssanctum's faith, who keeps the eternal fire going."
+ color = CLOTHING_STORM
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/ocean
+ name = "ocean onmyoji's warfare garb"
+ desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in light blue for the expeditionary magicians and monks of Abyssanctum's faith, long married to the ocean."
+ color = CLOTHING_OCEAN
+
+/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/island
+ name = "island onmyoji's warfare garb"
+ desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in red for the soilgazers of Abyssanctum's faith, those bent in ensuring no plague shall reach their blessed islands. "
+ color = CLOTHING_ISLAND
+
+/obj/item/clothing/suit/roguetown/shirt/kaizoku/robe
+ slot_flags = ITEM_SLOT_ARMOR
+ name = "onmyoji's garb"
+ desc = "Casual abyssariad garbs usually used by magicians, or those living on the frigid, treacherous mountains on the edges of the Fog islands."
+ icon_state = "loosetunic"
+ icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi'
+ sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi'
+ boobed = TRUE
+ flags_inv = HIDEBOOB
+ r_sleeve_status = SLEEVE_NORMAL
+ l_sleeve_status = SLEEVE_NORMAL
+ allowed_sex = list(MALE)
+ allowed_race = list("human", "tiefling", "aasimar", "abyssariad")
+ color = null
+
+/obj/item/clothing/suit/roguetown/shirt/kaizoku/robe/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
diff --git a/code/modules/clothing/rogueclothes/storage.dm b/code/modules/clothing/rogueclothes/storage.dm
index 27cd1d99a5..c962729889 100644
--- a/code/modules/clothing/rogueclothes/storage.dm
+++ b/code/modules/clothing/rogueclothes/storage.dm
@@ -355,3 +355,41 @@
new /obj/item/rogueweapon/surgery/cautery(src)
new /obj/item/natural/worms/leech/parasite(src)
new /obj/item/rogueweapon/surgery/hammer(src)
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho
+ name = "daisho belt"
+ desc = "A oil-boiled reinforced silk or leather belt used by Abyssariads for practicing Daisho."
+ icon_state = "daisho"
+ sellprice = 5
+ icon = 'icons/roguetown/kaizoku/clothingicon/belts.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/belts.dmi'
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja/PopulateContents()
+ new /obj/item/reagent_containers/food/snacks/fogdart(src)
+ new /obj/item/reagent_containers/food/snacks/fogdart(src)
+ new /obj/item/rogueweapon/tetsubishi(src)
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/thunder
+ name = "thunder daisho belt"
+ color = CLOTHING_THUNDER
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/storm
+ name = "storm daisho belt"
+ color = CLOTHING_STORM
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/ocean
+ name = "ocean daisho belt"
+ color = CLOTHING_OCEAN
+
+/obj/item/storage/belt/rogue/kaizoku/leather/daisho/island
+ name = "island daisho belt"
+ color = CLOTHING_ISLAND
+
+/obj/item/storage/backpack/rogue/satchel/ninja/PopulateContents()
+ new /obj/item/grenade/smoke_bomb(src)
+ new /obj/item/grenade/smoke_bomb/poison(src)
+ new /obj/item/throwing_star/ninja(src)
diff --git a/code/modules/clothing/rogueclothes/wrists.dm b/code/modules/clothing/rogueclothes/wrists.dm
index 20e17f3aa1..d41d49cc5d 100644
--- a/code/modules/clothing/rogueclothes/wrists.dm
+++ b/code/modules/clothing/rogueclothes/wrists.dm
@@ -81,3 +81,92 @@
armor = ARMOR_PLATE_BAD
max_integrity = INTEGRITY_POOR //Copper.
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/wrists/roguetown/bracers/kote
+ name = "kote"
+ desc = "A sashinuki kote, the armored sleeves and gloves knitted into a jacketed layer. It belongs as one of the armor component of sangu, together with suneate and haidate."
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ body_parts_covered = ARMS|HANDS //bracer that protects hands and arms. Costier. Why no one made something with this theme before?
+ icon_state = "kote"
+ item_state = "kote"
+
+/obj/item/clothing/wrists/roguetown/bracers/kote/cursed/Initialize()
+ . = ..()
+ name = "soulbinded kote"
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT)
+
+/obj/item/clothing/wrists/roguetown/bracers/mountainstar
+ name = "weeping god-patterned bracers"
+ desc = "Y-shaped steel plates marks this bracer everywhere it is looked upon, most proper for the Weeping God."
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ icon_state = "mountainstar"
+ item_state = "mountainstar"
+
+/obj/item/clothing/wrists/roguetown/kaizoku/dragonwrap
+ name = "dragon wrappings"
+ desc = "fireproof cloth wrappings to cover the arms and hands. It is completely made of asbestos and resin keeping its toxicity in place. For now."
+ slot_flags = ITEM_SLOT_WRISTS
+ icon_state = "dragonwrap"
+ item_state = "dragonwrap"
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0)
+ heat_protection = ARMS|HANDS
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+
+/obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ name = "khudagach bracers"
+ desc = "Oil-boiled leather bracers made to protect the forearms and wrists of abyssariad archers, light cavalry and farming folk."
+ icon_state = "khudagach"
+ item_state = "khudagach"
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+
+/obj/item/clothing/wrists/roguetown/bracers/bonebracer
+ name = "bone bracers"
+ desc = "the bracers made of bone, usually created and used by tribalistic Undines."
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ icon_state = "bonebracers"
+ item_state = "bonebracers"
+ prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_TWIST)
+ resistance_flags = null
+ blocksound = SOFTHIT
+ smeltresult = /obj/item/ash
+ blade_dulling = DULLING_BASHCHOP
+ break_sound = 'sound/foley/cloth_rip.ogg'
+ drop_sound = 'sound/foley/dropsound/cloth_drop.ogg'
+ anvilrepair = null
+ sewrepair = FALSE
+
+/obj/item/clothing/wrists/roguetown/shrinekeeper
+ slot_flags = ITEM_SLOT_WRISTS
+ name = "purificators"
+ desc = "Blessed gauntlets for those who believes they can punch spirits."
+ icon = 'icons/roguetown/kaizoku/clothingicon/wrists.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/wrists.dmi'
+ icon_state = "shrinekeeper_gauntlet"
+ sleevetype = "shirt"
+ resistance_flags = FLAMMABLE
+ sewrepair = TRUE
+ anvilrepair = null
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 0286849561..5e7d1c0e92 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -89,3 +89,386 @@
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
+
+///////////////////////////////////////////////////////////////////
+// Part of Kaizoku project that is still yet to be finished. //
+// The Demo usage is meant for Stonekeep and Warmongers. //
+// If the usage for other sources is desired, before it finishes,//
+// ask monochrome9090 for permission. Respect the artists's will.//
+// If you want this quality content, COMMISSION me instead. //
+// For this project, requirements are low, and mostly lore-based.//
+// I just do not desire for the Abyssariads to be butchered. //
+///////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/cloak/raincloak/mino
+ name = "mino cloak"
+ desc = "An abyssariad raincoat made out of straw that covers the entire body."
+ icon_state = "mino"
+ inhand_mod = FALSE
+ hoodtype = null
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ body_parts_covered = CHEST|GROIN|VITALS|ARMS
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+
+/obj/item/clothing/cloak/raincloak/guardiancloak
+ name = "guardian cloak"
+ desc = "The design of cloaks from Guardians of old. The symbol of the Eternity Eagle remains binding the cloth on the user, for those who protects the skies and oceans."
+ icon_state = "guardiancloak"
+ inhand_mod = FALSE
+ hoodtype = null
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ body_parts_covered = CHEST|GROIN|VITALS|ARMS
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/black
+ color = CLOTHING_SOOT_BLACK
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/random/Initialize()
+ color = RANDOM_PEASANT_DYES
+ ..()
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/red
+ color = CLOTHING_BLOOD_RED
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/guard
+ color = CLOTHING_BLOOD_RED
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/guard/Initialize()
+ . = ..()
+ if(GLOB.lordprimary)
+ lordcolor(GLOB.lordprimary,GLOB.lordsecondary)
+ else
+ GLOB.lordcolor += src
+/obj/item/clothing/cloak/raincloak/guardiancloak/lordcolor(primary,secondary)
+ color = secondary
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+/obj/item/clothing/cloak/raincloak/guardiancloak/Destroy()
+ GLOB.lordcolor -= src
+ return ..()
+
+/obj/item/clothing/cloak/raincloak/horocloak
+ name = "horo cloak"
+ desc = "A billowing cloak of war designed to catch the wind and scatter arrows that hit its user from the back."
+ icon_state = "horocloak"
+ inhand_mod = FALSE
+ hoodtype = null
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ body_parts_covered = CHEST|GROIN|VITALS|ARMS
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+
+/obj/item/clothing/cloak/raincloak/horocloak/random/Initialize()
+ color = pick("#a32121", "#8747b1", "#3d3a36", "#414143", "#685542", "#428138", "#264d26", "#537bc6", "#b5b004", "#249589", "#ffffff", "#bd6606", "#962e5c")
+ ..()
+
+/obj/item/clothing/cloak/raincloak/horocloak/toweryakko
+ color = "#804d97"
+
+/obj/item/clothing/cloak/raincloak/horocloak/kabukimono
+ color = "#9b874f"
+
+/obj/item/clothing/cloak/odoshisohei
+ name = "senior sohei odoshi"
+ desc = "Tightly packed lacing patterns usually used for binding leather and metal scales, now used to show affiliation to clans or shrines."
+ icon_state = "odoshisohei"
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ body_parts_covered = CHEST|GROIN|VITALS|ARMS
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ slot_flags = ITEM_SLOT_CLOAK
+ nodismemsleeves = TRUE
+
+/obj/item/clothing/cloak/haramaki
+ name = "haramaki"
+ icon_state = "haramaki"
+ desc = "Tightly packed lacing patterns usually used for binding leather and metal scales."
+ alternate_worn_layer = TABARD_LAYER
+ body_parts_covered = CHEST|GROIN
+ boobed = TRUE
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ sleevetype = "shirt"
+ nodismemsleeves = TRUE
+ slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_CLOAK
+ var/picked
+
+/obj/item/clothing/cloak/haramaki/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/cloak/haramaki/attack_right(mob/user)
+ if(picked)
+ return
+ var/the_time = world.time
+ var/design = input(user, "Select a design.","Tabard Design") as null|anything in list("None", "Symbol", "Split", "Quadrants", "Boxes", "Diamonds", "Middle-split")
+ if(!design)
+ return
+ if(world.time > (the_time + 30 SECONDS))
+ return
+ if(design == "Symbol")
+ design = null
+ design = input(user, "Select a symbol.","Tabard Design") as null|anything in list("chalice","psy","peace","z","imp","skull","widow","arrow")
+ if(!design)
+ return
+ design = "_[design]"
+ var/colorone = input(user, "Select a primary color.","Tabard Design") as null|anything in CLOTHING_COLOR_NAMES
+ if(!colorone)
+ return
+ var/colortwo
+ if(design != "None")
+ colortwo = input(user, "Select a primary color.","Tabard Design") as null|anything in CLOTHING_COLOR_NAMES
+ if(!colortwo)
+ return
+ if(world.time > (the_time + 30 SECONDS))
+ return
+ picked = TRUE
+ if(design != "None")
+ detail_tag = design
+ switch(design)
+ if("Split")
+ detail_tag = "_spl"
+ if("Quadrants")
+ detail_tag = "_quad"
+ if("Boxes")
+ detail_tag = "_box"
+ if("Diamonds")
+ detail_tag = "_dim"
+ if("Middle-split")
+ detail_tag = "_spl2"
+ color = clothing_color2hex(colorone)
+ if(colortwo)
+ detail_color = clothing_color2hex(colortwo)
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+
+/obj/item/clothing/cloak/haramaki/odoshi
+ name = "odoshi"
+ icon_state = "odoshi"
+
+/obj/item/clothing/cloak/newheartfelt
+ name = "heartfelt cloak"
+ desc = "Luxurious silk cloak adorned in regal red, the protective garment that has long portrayed the fiery spirit of the Heartfelt people, and their dutiful lords."
+ icon_state = "heartfelt_cloak"
+ body_parts_covered = CHEST|GROIN|VITALS|ARMS
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ sleevetype = "shirt"
+ slot_flags = ITEM_SLOT_CLOAK
+ allowed_sex = list(MALE, FEMALE)
+ allowed_race = list("human", "tiefling", "aasimar", "abyssariad")
+ sellprice = 50
+ nodismemsleeves = TRUE
+
+/obj/item/clothing/cloak/jinbaori
+ name = "jinbaori"
+ icon_state = "jinbaori"
+ alternate_worn_layer = TABARD_LAYER
+ body_parts_covered = CHEST|GROIN
+ boobed = TRUE
+ mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi'
+ icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi'
+ sleevetype = "shirt"
+ nodismemsleeves = TRUE
+ slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_CLOAK
+ var/picked
+
+/obj/item/clothing/cloak/jinbaori/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/cloak/jinbaori/attack_right(mob/user)
+ if(picked)
+ return
+ var/the_time = world.time
+ var/design = input(user, "Select a design.","Tabard Design") as null|anything in list("None", "Split", "Quadrants", "Boxes", "Diamonds", "Middle-split")
+ if(!design)
+ return
+ if(world.time > (the_time + 30 SECONDS))
+ return
+ if(design == "Symbol")
+ design = null
+ design = input(user, "Select a symbol.","Tabard Design") as null|anything in list("chalice","psy","peace","z","imp","skull","widow","arrow")
+ if(!design)
+ return
+ design = "_[design]"
+ var/colorone = input(user, "Select a primary color.","Tabard Design") as null|anything in CLOTHING_COLOR_NAMES
+ if(!colorone)
+ return
+ var/colortwo
+ if(design != "None")
+ colortwo = input(user, "Select a primary color.","Tabard Design") as null|anything in CLOTHING_COLOR_NAMES
+ if(!colortwo)
+ return
+ if(world.time > (the_time + 30 SECONDS))
+ return
+ picked = TRUE
+ if(design != "None")
+ detail_tag = design
+ switch(design)
+ if("Split")
+ detail_tag = "_spl"
+ if("Quadrants")
+ detail_tag = "_quad"
+ if("Boxes")
+ detail_tag = "_box"
+ if("Diamonds")
+ detail_tag = "_dim"
+ if("Middle-split")
+ detail_tag = "_spl2"
+ color = clothing_color2hex(colorone)
+ if(colortwo)
+ detail_color = clothing_color2hex(colortwo)
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+
+/obj/item/clothing/cloak/jinbaori/guard
+ desc = "A jinbaori with the lord's heraldic colors. This one is worn typically by ashigarus retainers adquired by the lords of rockhill from a pact with the Fog Islands."
+ color = CLOTHING_BLOOD_RED
+ detail_tag = "_spl"
+ detail_color = CLOTHING_PLUM_PURPLE
+
+/obj/item/clothing/cloak/jinbaori/raider
+ name = "raider jinbaori"
+ desc = "A jinbaori used by the traditional abyssanctum ashigaru retainers. Relentless as the ocean who brew them."
+ color = CLOTHING_DARK_INK
+ detail_tag = "_spl"
+ detail_color = CLOTHING_ROYAL_PURPLE
+
+/obj/item/clothing/cloak/jinbaori/guard/attack_right(mob/user)
+ if(picked)
+ return
+ var/the_time = world.time
+ var/chosen = input(user, "Select a design.","Tabard Design") as null|anything in list("Split", "Quadrants", "Boxes", "Diamonds", "Middle-split")
+ if(world.time > (the_time + 10 SECONDS))
+ return
+ if(!chosen)
+ return
+ picked = TRUE
+ switch(chosen)
+ if("Split")
+ detail_tag = "_spl"
+ if("Quadrants")
+ detail_tag = "_quad"
+ if("Boxes")
+ detail_tag = "_box"
+ if("Diamonds")
+ detail_tag = "_dim"
+ if("Middle-split")
+ detail_tag = "_spl2"
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+
+/obj/item/clothing/cloak/jinbaori/guard/Initialize()
+ ..()
+ if(GLOB.lordprimary)
+ lordcolor(GLOB.lordprimary,GLOB.lordsecondary)
+ else
+ GLOB.lordcolor += src
+
+/obj/item/clothing/cloak/haramaki/odoshi/zamurai
+ desc = "The odoshi used by Foglander Zamurais bond to Rockhill's lords. It uses said lord's heraldic colors."
+ color = CLOTHING_BLOOD_RED
+ detail_tag = "_spl2"
+ detail_color = CLOTHING_PLUM_PURPLE
+
+/obj/item/clothing/cloak/haramaki/odoshi/zamurai/attack_right(mob/user)
+ if(picked)
+ return
+ var/the_time = world.time
+ var/chosen = input(user, "Select a design.","Tabard Design") as null|anything in list("Split", "Quadrants", "Boxes", "Diamonds", "Middle-split")
+ if(world.time > (the_time + 10 SECONDS))
+ return
+ if(!chosen)
+ return
+ picked = TRUE
+ switch(chosen)
+ if("Split")
+ detail_tag = "_spl"
+ if("Quadrants")
+ detail_tag = "_quad"
+ if("Boxes")
+ detail_tag = "_box"
+ if("Diamonds")
+ detail_tag = "_dim"
+ if("Middle-split")
+ detail_tag = "_spl2"
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+
+/obj/item/clothing/cloak/haramaki/odoshi/zamurai/Initialize()
+ ..()
+ if(GLOB.lordprimary)
+ lordcolor(GLOB.lordprimary,GLOB.lordsecondary)
+ else
+ GLOB.lordcolor += src
+
+/obj/item/clothing/cloak/haramaki/odoshi/zamurai/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/cloak/haramaki/odoshi/zamurai/lordcolor(primary,secondary)
+ color = primary
+ detail_color = secondary
+ update_icon()
+ if(ismob(loc))
+ var/mob/L = loc
+ L.update_inv_cloak()
+
+/obj/item/clothing/cloak/haramaki/odoshi/zamurai/Destroy()
+ GLOB.lordcolor -= src
+ return ..()
+
+/obj/item/clothing/cloak/haramaki/odoshi/toweryakko
+ color = "#804d97"
+
+/obj/item/clothing/cloak/haramaki/odoshi/toweryakko/attack_right(mob/user)
+ return
+
+/obj/item/clothing/cloak/haramaki/odoshi/raider
+ name = "raider odoshi"
+ desc = "A odoshi used by the traditional abyssanctum zamurai retainers. Relentless as the ocean who brew them."
+ color = CLOTHING_DARK_INK
+ detail_tag = "_spl"
+ detail_color = CLOTHING_ROYAL_PURPLE
+
+/obj/item/clothing/cloak/raincloak/guardiancloak/dragonslayer
+ name = "dragonslayer guardian cloak"
+ desc = "Fireproof asbestos cloak processed in copal and frankincense resin, enclosed within dragonscales to prevent direct contact with asbestos fibers. The cloak almost completely prevents warmth from reaching the user."
+ edelay_type = 4
+ equip_delay_self = 20
+ heat_protection = FULL_BODY
+ body_parts_covered = FULL_BODY
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | LAVA_PROOF
+ color = "#7e0707"
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
index 17497221ad..e35c8d9e4e 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
@@ -10,7 +10,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
var/list/allowed_patrons
var/list/allowed_ages
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm
index 2e511e0bd5..b5aefd5840 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm
@@ -12,7 +12,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/bandit
maximum_possible_slots = 4
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/champion.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/champion.dm
new file mode 100644
index 0000000000..3ef2867af9
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/champion.dm
@@ -0,0 +1,154 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/datum/advclass/combat/abyssariad/champion //Champion role.
+ name = "Abyssal Champion"
+ tutorial = "The phantoms of the divine winds, the abyssal champions are the Heavenly Emperor's divine enforcers whom still lingers in large numbers. \
+ They are directly funded by the imperial court, surpassing zamurais in power and renown, and even keeping them in check in case of audacious rebellions. \
+ Their presence overseas is bound to their demon-slaying duties and current day warring intervetions against the influence from major powers, and alliance to Heartfelt."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Changeling", // Myrmidon
+ "Skylancer", // Eidolon
+ "Ogrun",
+ "Undine") // Dragonslayer
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/champion
+ category_tags = list(CTAG_ADVENTURER)
+ maximum_possible_slots = 1
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/champion/pre_equip(mob/living/carbon/human/H)
+ ..()
+ if(H.dna.species.name == "Changeling")
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 3)
+ H.change_stat("intelligence", 1)
+ H.change_stat("speed", -2)
+
+ r_hand = /obj/item/rogueweapon/polearm/halberd/bisento //Bisento cannot be stored in the back. Sometimes not even spawning. So I gave them an Wakizashi too in case the worst happens.
+ pants = /obj/item/clothing/under/roguetown/trou/leather/fur
+ beltl = /obj/item/storage/belt/rogue/pouch/coins/mid
+ shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ gloves = /obj/item/clothing/gloves/roguetown/angle/falcon
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ armor = /obj/item/clothing/suit/roguetown/armor/rare/myrmidon
+ head = /obj/item/clothing/head/roguetown/rare/myrmidon
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune
+ beltr = /obj/item/rogueweapon/sword/short/wakizashi
+ ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ to_chat(H, "You are a member of the Abyssal stormlancers, machine-slayers in service of the emperor, bulwark against demons and rogue automata of ancient eras, ready to change the tide of battles during sieges.")
+ if(findtext(H.real_name, " Clanless")) //You can't be a clanless champion. This one literally does not exist because, at least, they would've settled a bloodline.
+ to_chat(H, "I am member of the Royal court, of course I have a bloodline.")
+ clanfication(H)
+
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune
+ else if(H.dna.species.name == "Ogrun")
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 5, TRUE)
+
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 2)
+ H.change_stat("speed", -1)
+
+ backr = /obj/item/storage/backpack/rogue/satchel
+ backl = /obj/item/rogueweapon/sword/dragonslayer
+ pants = /obj/item/clothing/under/roguetown/trou/leather/fur/dragonslayer
+ beltl = /obj/item/storage/belt/rogue/pouch/coins/mid
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/dragontabi
+ gloves = /obj/item/clothing/gloves/roguetown/chain/kikko
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt/dragonslayer
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ head = /obj/item/clothing/head/roguetown/rare/dragonslayer
+ wrists = /obj/item/clothing/wrists/roguetown/kaizoku/dragonwrap
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/oni
+ cloak = /obj/item/clothing/cloak/raincloak/guardiancloak/dragonslayer
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ to_chat(H, "You are the hunter, bane of progeny of magma, slaughter of malum's creatures. Armed with swords that dwarves any man and armored in tough fiber that laughs in the face of flames, your duty is to kill all dragons, no matter the cost.")
+ if(findtext(H.real_name, " Clanless")) //You can't be a clanless champion. This one literally does not exist because, at least, they would've settled a bloodline.
+ to_chat(H, "I am member of the Royal court, of course I have a bloodline.")
+ clanfication(H)
+
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/oni
+ else
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+ H.change_stat("strength", 2)
+ H.change_stat("speed", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("perception", -2) //Using a urn on the head, struggling for years to understand how the magic reflected light functions surely can't lead to a good sight.
+ H.change_stat("intelligence", -1)
+ to_chat(H, "You are a member of the abyssal windrunners, scarred by hellfire and face-forged in abyssal urn. You defy the limits of flesh, faith and speed shields your flesh when armor will not.")
+ backl = /obj/item/storage/backpack/rogue/satchel
+ head = /obj/item/clothing/head/roguetown/helmet/heavy/bronzepot // cursed item.
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ backr = /obj/item/storage/backpack/rogue/backpack
+ beltr = /obj/item/rogueweapon/sword/uchigatana
+ beltl = /obj/item/rogueweapon/sword/uchigatana
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ cloak = /obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/eidolon
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/studded/kikko/eidolon
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/eidolon
+ wrists = /obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ pants = /obj/item/clothing/under/roguetown/tights/hakama/eidolon
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu
+ if(findtext(H.real_name, " Clanless")) //You can't be a clanless champion. This one literally does not exist because, at least, they would've settled a bloodline.
+ to_chat(H, "I am member of the Royal court, of course I have a bloodline.")
+ clanfication(H)
+
+
+ H.champion = TRUE
+ var/prev_real_name = H.real_name
+ var/prev_name = H.name
+ var/spec1 = "Myrmidon"
+ var/spec2 = "Eidolon"
+ var/spec3 = "Dragonslayer"
+ if(H.dna.species.name == "Changeling")
+ H.real_name = "[spec1] [prev_real_name]"
+ H.name = "[spec1] [prev_name]"
+ else if(H.dna.species.name == "Skylancer")
+ H.real_name = "[spec2] [prev_real_name]"
+ H.name = "[spec2] [prev_name]"
+ else
+ H.real_name = "[spec3] [prev_real_name]"
+ H.name = "[spec3] [prev_name]"
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm
new file mode 100644
index 0000000000..9889c93f26
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm
@@ -0,0 +1,56 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/kyudoka //Ashigaru/Civilian role.
+ name = "Kyudoka"
+ tutorial = "The praticioners of Kyujutsu trained in Dustwalker dojos, making use of the large Yumi as a weapon of war, \
+ trying to keep the culture alive even after the creation of handcannons and firelances overly used by the Fog Island's manpower."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ //humen - need to settle Heartfeltean culture on this one.
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine")
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/kyudoka
+ category_tags = list(CTAG_ADVENTURER)
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/kyudoka/pre_equip(mob/living/carbon/human/H)
+ ..()
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1,1), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
+
+ shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ pants = /obj/item/clothing/under/roguetown/trou/leather/fur/random
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random //For the drip's sake that portrays their military side.
+ if(prob(23))
+ gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal
+ else
+ gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ belt = /obj/item/storage/belt/rogue/leather
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker
+ cloak = /obj/item/clothing/cloak/raincloak/mino
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/long/yumi
+ backl = /obj/item/storage/backpack/rogue/satchel
+ beltr = /obj/item/flashlight/flare/torch/lantern
+ backpack_contents = list(/obj/item/bait = 1, /obj/item/rogueweapon/huntingknife/kunai = 1)
+ beltl = /obj/item/quiver/arrows
+ H.change_stat("perception", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("speed", 1)
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm
new file mode 100644
index 0000000000..50747da621
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm
@@ -0,0 +1,110 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/marauder //None. This is a tribal.
+ name = "Marauder Tribal"
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Undine")
+ outfit = /datum/outfit/job/roguetown/adventurer/marauder
+ category_tags = list(CTAG_ADVENTURER)
+ tutorial = "Ever since Grenzelhoft invasions on Fog Islands, the Undine Tribes became allies of many Abyssariad clans and guardians. Even if untrue for the entire government itself, Undine Marauders take part of Abyssariad expeditions as ''allies'' and formidable annihilators of Humens and Goblins alike."
+
+/datum/outfit/job/roguetown/adventurer/marauder/pre_equip(mob/living/carbon/human/H)
+ ..()
+ //average normal skill for all. They are not civilized Undine, so they have skills for survival.
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 4, TRUE) //Tribal Undine lives on the river.
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/labor/fishing, 2, TRUE) //fish is their main course.
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 4, TRUE) //crafting is their deal.
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/labor/butchering, 3, TRUE) //butchering is also their deal.
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE) //Elf-Goblin nature.
+
+ H.become_blind("TRAIT_GENERIC")
+ var/tribaltype = list("boneclad","bodysnatcher", "skypiercer")
+ var/specialization = input("Choose your equipments", "Available equipments") as anything in tribaltype
+ switch(specialization)
+ if("boneclad") //Starts with no survival tool. Full melee, tier 3 makeshift armor roundstart. Mace/axe focus.
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/ceramic/reinforced
+ head = /obj/item/clothing/head/roguetown/helmet/ceramic/reinforced
+ pants = /obj/item/clothing/under/roguetown/kaizoku/ceramic
+ beltl = /obj/item/rogueweapon/mace/cudgel/rungu
+ backl = /obj/item/rogueweapon/mace/ararebo/obsidian
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/bonebracer
+ shirt = /obj/item/clothing/suit/roguetown/shirt/rags/tribal
+ belt = /obj/item/storage/belt/rogue/leather/rope
+
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 2, TRUE)
+
+ to_chat(H, span_warning( "I am a warrior from Boneclad Clan! Revenge against paupers-folk! No more shall we pity the fool! To be forced to work is only for weaklings and the disgraced!"))
+
+ //same as normal warriors.
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+ H.change_stat("intelligence", -1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if("bodysnatcher") //Starts with blade as survival tool. Has Tier 2 makeshift armor, spear and throwable ranged weapon. Spear focus.
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/ceramic
+ head = /obj/item/clothing/head/roguetown/helmet/ceramic/medium
+ pants = /obj/item/clothing/under/roguetown/kaizoku/ceramic/light
+ backr = /obj/item/rogueweapon/polearm/spear/stone/obsidian
+ backl = /obj/item/rogueweapon/shield/wood/rattan
+ beltr = /obj/item/rogueweapon/mace/cudgel/rungu
+ beltl = /obj/item/rogueweapon/huntingknife/kunai
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/bonebracer
+ shirt = /obj/item/clothing/suit/roguetown/shirt/rags/tribal
+ belt = /obj/item/storage/belt/rogue/leather/rope
+
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 2, TRUE)
+
+ to_chat(H, span_warning( "We've suffered under the yoke of humens for ages, and so I hold the banner of my ancestors with all my strength. How long must we suffer war?"))
+
+ //same as normal warriors.
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+ H.change_stat("intelligence", -1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if("skypiercer") //Start with survival tool. Ranged weapon focus.
+ H.set_blindness(0)
+ cloak = /obj/item/clothing/cloak/raincloak/mino
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/muneate/kappa
+ shirt = /obj/item/clothing/suit/roguetown/armor/ceramic/light
+ head = /obj/item/clothing/head/roguetown/helmet/ceramic
+ pants = /obj/item/clothing/under/roguetown/kaizoku/tribal
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/bonebracer
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
+ beltl = /obj/item/flashlight/flare/torch/lantern
+ backl = /obj/item/quiver/arrows
+ belt = /obj/item/storage/belt/rogue/leather
+
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 2, TRUE)
+ backpack_contents = list(/obj/item/bait = 1, /obj/item/rogueweapon/huntingknife/kunai = 1)
+
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+ H.change_stat("strength", -1)
+ H.change_stat("perception", 2)
+ H.change_stat("speed", 2)
+
+ to_chat(H, span_warning( "We suffered under the veil of night, but no longer shall we suffer, as my clan will rain death on the whalers - and I shall take part in this."))
+
+ H.cure_blind("TRAIT_GENERIC")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm
new file mode 100644
index 0000000000..02a13eeca6
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm
@@ -0,0 +1,70 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary.
+//Contact Monochrome9090 for further information.
+
+/datum/advclass/combat/abyssariad/mastersohei // High Abyssanctum role. Normally a religious leader for expeditions and whatnot.
+ name = "Preceptor Sohei"
+ tutorial = "High-ranking Sohei who hold authority within multiple temples and Soheis retainers within their influence. \
+ Often in charge of militant activities, these senior soheis are in search of demonic corruption to dismantle - \
+ or involve themselves in spiritual matters with a iron fist."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/mastersohei
+ maximum_possible_slots = 1
+ pickprob = 100
+ category_tags = list(CTAG_ADVENTURER)
+ vampcompat = FALSE
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/mastersohei/pre_equip(mob/living/carbon/human/H)
+ ..()
+ head = /obj/item/clothing/head/roguetown/helmet/heavy/bucket/soheidemon
+ wrists = /obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ pants = /obj/item/clothing/under/roguetown/chainlegs/sendan
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ beltl = /obj/item/storage/belt/rogue/pouch/coins/mid
+ id = /obj/item/clothing/ring/silver
+ cloak = /obj/item/clothing/cloak/odoshisohei
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/random
+ gloves = /obj/item/clothing/gloves/roguetown/chain/kikko
+ backl = /obj/item/rogueweapon/polearm/halberd/bisento
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/holy, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("perception", 2)
+ H.change_stat("intelligence", 2)
+ H.change_stat("constitution", 1)
+ H.change_stat("endurance", 1)
+ H.change_stat("speed", -2)
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/churn)
+
+ var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron)
+ //Paladins, while devout warriors spent WAY too much time studying the blade. No more acolyte+
+ C.update_devotion(50, 50)
+ C.holder_mob = H
+ C.grant_spells_sohei(H)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/churn)
+ ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) //It's meant to be only heavy armor, but Kusari is medium. Idk how templar is doing, but in my testing, the armor was freaked.
+ ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm
new file mode 100644
index 0000000000..951c7cd929
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm
@@ -0,0 +1,79 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/onmyoji //Considered 'high-abyssanctum', as Onmyojis actually makes part of their religion. (Also, their mana are sourced from Abyssor due to soul exchanging.)
+ name = "Onmyoji"
+ tutorial = "The Chosen of the Pressuring Depth, spiritcallers of Abyssor, sage of the oceans. The Onmyojis are celestial magicians skilled in divination \
+ and manifesting the powers of the sea as intermediaries between the Abyssariads and the Abyssal realm. The Onmyojis are empowered in the same way Abyssor \
+ was empowered, in the depths of the Weeping God's pressuring tears."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji
+ category_tags = list(CTAG_ADVENTURER)
+ maximum_possible_slots = 2
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji
+ allowed_patrons = list(/datum/patron/divine/abyssor)
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji/pre_equip(mob/living/carbon/human/H)
+ ..()
+ shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead
+ belt = /obj/item/storage/belt/rogue/leather/rope
+ backr = /obj/item/storage/backpack/rogue/satchel
+ beltl = /obj/item/reagent_containers/glass/bottle/rogue/manapot
+ backl = /obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff
+ armor = /obj/item/clothing/suit/roguetown/shirt/kaizoku/robe
+ head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/eboshi
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/dark
+
+ var/yesno = list("Yes. I am Iron-hearted.","No. I am Civilian.")
+ var/military = input("Sworn to the Fog Island ranks?", "Emperor's regiment?") as anything in yesno
+ var/background = pickweight(list("thunder" = 1, "storm" = 1, "ocean" = 1, "island" = 1)) //This is just flavour in the same way Soheis are. Wait, are they related??? Leave it to the Players to explain.
+ switch(military) //Just clothes.
+ if("Yes. I am Iron-hearted.") //Cooler clothing. Roleplay-wise, an champion-type, theme unique solely to Kaizoku as far I'm aware.
+ switch(background)
+ if("thunder")
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/thunder
+ head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/thunder
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/thunder
+ if("storm")
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/storm
+ head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/storm
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/storm
+ if("ocean")
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/ocean
+ head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/ocean
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/ocean
+ if("island")
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/island
+ head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/island
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/island
+ H.set_blindness(0)
+ if("No. I am a Civilian.)") //Just continue and replace.
+ H.set_blindness(0)
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/arcane, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/alchemy, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE)
+ H.change_stat("strength", -1)
+ H.change_stat("intelligence", 3)
+ H.change_stat("constitution", -1)
+ H.change_stat("endurance", -1)
+ H.change_stat("speed", -2)
+ //placeholder spells.
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball) //They are intended to have their own powers. I will make that later in the future with the help of another coder.
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt)
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch)
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile)
+ H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/forcewall)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm
new file mode 100644
index 0000000000..eaa1fb75b2
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm
@@ -0,0 +1,97 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/shinobi //Civilian role. Ashigarus or former (low-ranking) monks takes this role.
+ name = "Shinobi"
+ tutorial = "The military or former monks convert agents of a Daimyo or a clan who operates in secrecy, using stealth, \
+ disguise and deception as tool. Knowledged in poison, Shinobis steals battle plans and assassinates \
+ important political figures. Differently of Imperial Assassins or Rogues, the Shinobis still have concepts \
+ of loyalty to Abyssal Tide's honor."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ //humen - need to settle Heartfeltean culture on this one.
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/shinobi
+ category_tags = list(CTAG_ADVENTURER)
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/shinobi/pre_equip(mob/living/carbon/human/H)
+ ..()
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 5)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/traps, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/engineering, 2, TRUE) //Shinobis produces bombs.
+ if(prob(70))
+ beltl = /obj/item/clothing/gloves/roguetown/leather
+ else
+ beltl = /obj/item/clothing/gloves/roguetown/fingerless
+ backl = /obj/item/storage/backpack/rogue/satchel/ninja
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ pants = /obj/item/clothing/under/roguetown/trou/leather/shinobizubon
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja
+ if(prob(40))
+ beltl = /obj/item/rogueweapon/knife/steel/tanto
+ else
+ beltl = /obj/item/rogueweapon/knife/kaiken
+
+ if(H.dna.species?.id == "undine")
+ to_chat(H, "Living in the Fog island's waterways, I've been trained and fed by the many Abyssariad monks. From their will, I am a branch of their skills.")
+ var/TMNT = pickweight(list("Donatello" = 1, "Leonardo" = 1, "Michelangelo" = 1, "Raphael" = 1)) // is this a reference...?
+ H.become_blind("TRAIT_GENERIC")
+ pants = /obj/item/clothing/under/roguetown/kaizoku/tribal
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/splint/ninjakappa
+ switch(TMNT) //I'm fucking autistic
+ if("Donatello")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/donatello
+ backr = /obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 4, TRUE) //worst weapon, good skill.
+ if("Michelangelo")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/michelangelo
+ beltr = /obj/item/rogueweapon/flail/nunchaku
+ beltl = /obj/item/rogueweapon/flail/nunchaku
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE)
+ if("Raphael")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/raphael
+ beltr = /obj/item/rogueweapon/knife/hunting/sai
+ beltl = /obj/item/rogueweapon/knife/hunting/sai
+ if("Leonardo")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/leonardo
+ beltr = /obj/item/rogueweapon/sword/short/wakizashi
+ beltl = /obj/item/rogueweapon/sword/short/wakizashi
+ else
+ head = /obj/item/clothing/head/roguetown/shinobi_zukin
+ pants = /obj/item/clothing/under/roguetown/trou/leather/shinobizubon
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt/shinobi
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/shozoku
+ beltr = /obj/item/quiver/arrows
+ beltl = /obj/item/rogueweapon/knife/kaiken
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+ H.change_stat("perception", 1)
+ H.change_stat("speed", 3)
+ H.change_stat("constitution", 1)
+ H.cure_blind("TRAIT_GENERIC")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.dm
new file mode 100644
index 0000000000..0cd8b3b305
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.dm
@@ -0,0 +1,59 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/shrinekeepers //Low-abyssanctum role, but its efficiency requires champion-tier levels entirely because of unarmed skills. They are NOT champions.
+ name = "Shrinekeeper"
+ allowed_sexes = list(MALE, FEMALE)
+ tutorial = "The shrines needs to be cared of, and there is no one most suitable for such duty than the purifier branch. \
+ Those who knows the art of folding clothes while people are still in them. The Involuntary Yoga Practicers. Bokh and Bajutsu.\
+ They perform rituals to submit demonic spirits just as much they submit mortals with martial arts."
+ allowed_races = list(
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine")
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers
+ category_tags = list(CTAG_ADVENTURER)
+ vampcompat = FALSE
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers
+ allowed_patrons = list(/datum/patron/divine/abyssor)
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers/pre_equip(mob/living/carbon/human/H)
+ ..()
+ head = /obj/item/clothing/head/roguetown/takuhatsugasa
+ neck = /obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ cloak = /obj/item/clothing/cloak/raincloak/mino
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
+ belt = /obj/item/storage/belt/rogue/leather/rope
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ backl = /obj/item/storage/backpack/rogue/backpack
+ backr = /obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff
+ shirt = /obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, pick(1,1,2), TRUE) // Wood staff
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/carpentry, 1, TRUE) //They lose 'Medicine' to have 'Carpetry', because Shrinekeepers... repair shrines.
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, pick(2,2,3), TRUE)
+
+ H.change_stat("strength", 3)
+ H.change_stat("constitution", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("perception", -1)
+ H.change_stat("speed", 1)
+
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+
+ if(H.patron != /datum/patron/divine/abyssor)
+ H.patron = GLOB.patronlist[/datum/patron/divine/abyssor]
+ to_chat(H, "I am a Abyssanctum, loyal to The World Whale. May the tides of fate guide me to honor.")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm
new file mode 100644
index 0000000000..da3ce108e2
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm
@@ -0,0 +1,106 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary.
+//Contact Monochrome9090 for further information.
+
+/datum/advclass/combat/abyssariad/sohei //Low-abyssanctum tier.
+ name = "Underling Sohei"
+ tutorial = "Senso Soheis are the Abyssanctum war disciples from the Tideweaver branch, the direct \
+ continuation of the champions of old age. Their duty is to protect the shrines and spiritual entities \
+ from demonic corruption."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ //humen - need to settle Heartfeltean culture on this one.
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/sohei
+ category_tags = list(CTAG_ADVENTURER)
+ vampcompat = FALSE
+ maximum_possible_slots = 2 //Only two, united with Yamabushi.
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/sohei
+ allowed_patrons = list(/datum/patron/divine/abyssor)
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/sohei/pre_equip(mob/living/carbon/human/H)
+ ..()
+ neck = /obj/item/clothing/head/roguetown/soheicloth
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido
+ wrists = /obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane
+ beltr = /obj/item/rogueweapon/knife/hunting/sai
+
+ var/background = pickweight(list("thunder" = 1, "storm" = 1, "ocean" = 1, "island" = 1)) //This is just flavour. Mostly unwritten portrayal how different Soheis were of each other. Leave it up to the players to interact.
+ var/weapontype = pickweight(list("yari" = 6, "tsukushi" = 5, "katakama" = 3)) // Rolls for various polearms.
+ switch(background)
+ if("thunder")
+ neck = /obj/item/clothing/head/roguetown/soheicloth/thunder
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/thunder
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/thunder
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/thunder
+ if("storm")
+ neck = /obj/item/clothing/head/roguetown/soheicloth/storm
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/storm
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/storm
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/storm
+ if("ocean")
+ neck = /obj/item/clothing/head/roguetown/soheicloth/ocean
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/ocean
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ocean
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/ocean
+ if("island")
+ neck = /obj/item/clothing/head/roguetown/soheicloth/island
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/island
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/island
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/island
+ switch(weapontype)
+ if("tsukushi")
+ backr = /obj/item/rogueweapon/polearm/halberd/naginata/tsukushi //weaker naginata, mass-produced iron tier. Slightly more rare than Yari.
+ if("katakama")
+ backr = /obj/item/rogueweapon/polearm/spear/yari/katakama//Steel, more combat-effective and rarer than iron Yari.
+ if("yari")
+ backr = /obj/item/rogueweapon/polearm/spear/yari //just a simple iron spear.
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) //The true focus of this class.
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) //I don't think they are deserving of bows, but Soheis irl also used them, soo...
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/holy, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, pick(0,1,1), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1,1), TRUE)
+ if(H.age == AGE_OLD)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 1, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("constitution", 1)
+ H.change_stat("endurance", 2)
+ H.change_stat("perception", -2) //imagine training meditation so hard you end up edging your own eyes, but start noticing spirits. (schizophrenia)
+ H.change_stat("speed", -1)
+
+ var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron)
+ //Max devotion limit - Sohei are strong for a common role, but cannot pray to gain more abilities beyond t1
+ C.update_devotion(50, 50)
+ C.holder_mob = H
+ C.grant_spells_sohei(H)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
+
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ if(H.patron != /datum/patron/divine/abyssor)
+ H.patron = GLOB.patronlist[/datum/patron/divine/abyssor]
+ to_chat(H, "I am a Abyssanctum, loyal to The World Whale. May the tides of fate guide me to honor.")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm
new file mode 100644
index 0000000000..3ffbdd21d9
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm
@@ -0,0 +1,152 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/wokou //Civilian role. They are not even Ashigarus, so no retainer/military position whasoever.
+ name = "Wokou Warrior"
+ tutorial = "The Wokou is a general term for abyssariad fighter and/or pirates, those who constantly causes annual invasions on coastline provinces worldwide. They have many specializations and many \
+ receives government subsidy. However, their presence on Enigma has less boundaries to raiding the place, but more about taking the 'lawful' privateer role."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine")
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/wokou
+ category_tags = list(CTAG_ADVENTURER)
+ pickprob = 100
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/wokou/pre_equip(mob/living/carbon/human/H) // Same as Warrior.
+ ..()
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, pick(1,2), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, pick(1,2), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, pick(1,1,2), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, pick(2,3), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(1,1,2), TRUE)
+
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi
+ gloves = /obj/item/clothing/gloves/roguetown/leather
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/random
+
+ H.become_blind("TRAIT_GENERIC")
+ var/wokoutype = list("LinYou(Ambusher)","Dustrider(Scout)","Muqian(Towerdweller)","Shuhen(Militia)","Kaizoku(Navy)")
+ var/specialization = input("Choose your culture", "Available culture") as anything in wokoutype
+ switch(specialization) //as far I know, all roles here are meant to be balanced.
+ if("LinYou(Ambusher)") //Weaker iron armor, specialized exactly in being able to repair their own weaker armor.
+ var/roll = rand(1, 100)
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/rattan
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/rattan
+ backl = /obj/item/storage/backpack/rogue/satchel
+ backr = /obj/item/rogueweapon/shield/wood/rattan
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ if(roll <= 33)
+ beltl = /obj/item/rogueweapon/sword/short/jian
+ else if(roll <= 66)
+ beltl = /obj/item/rogueweapon/sword/scimitar/messer/dao
+ else
+ beltl = /obj/item/rogueweapon/sword/iron/jian
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ to_chat(H, span_warning( "Hailing from the tropical edges, I am a 'LinYou', armored in humble, oil-boiled wickerwork and iron, I am trained to perform long-term expeditions and guerrila tactics on any soil."))
+
+ //same as normal warriors.
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+ H.change_stat("intelligence", -1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if("Dustrider(Scout)") // Full light armor, highest quality of light armor. Loses shield and money for bow. Literally mongolian, but lacking a horse. Only Dodge expert.
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy/deelcoat
+ head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/duulga
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+ backl = /obj/item/storage/backpack/rogue/satchel
+ beltr = /obj/item/quiver/arrows
+ if(prob(60))
+ beltl = /obj/item/rogueweapon/huntingknife/kunai //so they HAVE something to use in melee combat.
+ else
+ beltl = /obj/item/rogueweapon/knife/steel/tanto // luckyroll. Now you have a short-short sword.
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE)
+
+ //please tell me if this is balanced or not.
+ H.change_stat("strength", 1)
+ H.change_stat("speed", 2)
+ H.change_stat("intelligence", -1)
+ H.change_stat("endurance", 1)
+ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
+ to_chat(H, span_warning( "Hailing from the arid heart of the island, I am a 'Dustwalker'. I left my horse behind to try my luck among the sailing allies, but my trusted bow remains with me."))
+
+ if("Shuhen(Militia)") //No protective helmet, full face protection + neck from a full menpo - still does not protect the head. Their weapon also functions to work the field, but since that can be done by hand nowadays, is no balance issue now.
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/plate/mirror/iron
+ head = /obj/item/clothing/head/roguetown/tengai/gasa
+ if(prob(33))
+ head = /obj/item/clothing/head/roguetown/tengai/torioigasa
+ if(prob(33))
+ head = /obj/item/clothing/head/roguetown/tengai/sandogasa
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ backr = /obj/item/rogueweapon/shield/wood/rattan
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ if(prob(60))
+ beltl = /obj/item/rogueweapon/sickle/kama
+ else
+ beltl = /obj/item/rogueweapon/woodcut/changfu // luckyroll. Now you have an axe.
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
+ to_chat(H, span_warning("Farmlands shall never struggle under my might, as I came from the Outskirts where the demons once brew, I slaughtered the Grezenholft like pigs - and I can do it again. May the waters fortalify the soil I step on."))
+
+ //same as normal warriors.
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+ H.change_stat("intelligence", -1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if("Muqian(Towerdweller)") //The 20% of Wokou Population. Practically the best armored - but has no shield and no money, and have to rely on flails for combat. 'Kusari/Chain-People'
+ H.set_blindness(0)
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/iron/kusari_zukin
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi
+ beltl = /obj/item/rogueweapon/flail/kusarigama/peasant
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 1, TRUE)
+ to_chat(H, span_warning("I am a Muqian, I hail from the towers of civilization, those upheld in sturdy chains alike my body. May the dices of destiny enlight my ways."))
+
+ //same as normal warriors.
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 1)
+ H.change_stat("intelligence", -1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if("Kaizoku(Navy)") // Special one. "AYO THIS IS THE PROJECT NAME!!!" Start with Steel Weapon - but uses weak light armor, but they have DRIP, and non-rattan shield, because from where they come from, has no Rattan.
+ H.set_blindness(0)
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku
+ head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku
+ beltl = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao
+ backr = /obj/item/rogueweapon/shield/wood
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE)
+ to_chat(H, span_warning("I am a son of Kaizoku and I am one with the destroyed Atoll, my life is on the seas. The major empire's supply lines shall crumble against my ways of warfare. May the Abyssal Emperor live FOREVER. "))
+
+ //focused on having more stamina.
+ H.change_stat("strength", 1)
+ H.change_stat("speed", 2)
+ H.change_stat("intelligence", -1)
+ H.change_stat("perception", -1)
+ H.change_stat("endurance", 2)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ H.cure_blind("TRAIT_GENERIC")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm
new file mode 100644
index 0000000000..a41be3fa40
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm
@@ -0,0 +1,97 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary.
+//Contact Monochrome9090 for further information.
+
+/datum/advclass/combat/abyssariad/yamabushi //Low-ranking Abyssanctum.
+ name = "Yamabushi"
+ allowed_sexes = list(MALE, FEMALE)
+ tutorial = "The Yamabushi stands as the battle-hardened stewards and hermits of knowledge dedicated to society's \
+ welfare of Abyssanctum's faith. Their wisdom welcome other patron within their sacred ranks so their devotion \
+ further embrace the greater good. They meditate on mountains and endure long lengths each voyage."
+ allowed_races = list(
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine")
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/yamabushi
+ maximum_possible_slots = 2 //Less slots. It is split with Sohei.
+ min_pq = 2
+ category_tags = list(CTAG_ADVENTURER)
+ pickprob = 100
+ vampcompat = FALSE
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/yamabushi
+ allowed_patrons = ALL_CLERIC_PATRONS
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/yamabushi/pre_equip(mob/living/carbon/human/H)
+ ..()
+ switch(H.patron?.name)
+ if("Astrata")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/astrata
+ if("Dendor")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/dendor
+ if("Necra")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/necra
+ if("Eora")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/eora
+ if("Ravox")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/ravox
+ if("Noc")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/noc
+ if("Abyssor")
+ wrists = /obj/item/clothing/neck/roguetown/psicross/abyssanctum //the only one allowed for Abyssariads bond to Abyssor.
+ if("Pestra")
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver/pestra
+ else // Failsafe
+ wrists = /obj/item/clothing/neck/roguetown/psycross/silver
+
+ armor = /obj/item/clothing/suit/roguetown/armor/plate/nanbando
+ shirt = /obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi
+ pants = /obj/item/clothing/under/roguetown/tights/hakama/random
+ backl = /obj/item/storage/backpack/rogue/satchel
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ if(prob(40))
+ beltr = /obj/item/rogueweapon/mace/ararebo
+ beltl = /obj/item/rogueweapon/thrown/ono
+ else if(prob(20))
+ backr = /obj/item/rogueweapon/mace/goden/kanabo // luckyroll, payoff for the Otsuchi.
+ else
+ backr = /obj/item/rogueweapon/mace/goden/otsuchi //Somewhat worse than normal mace
+ if(prob(50))
+ head = /obj/item/clothing/head/roguetown/tengai/yamabushi
+ else
+ head = /obj/item/clothing/head/roguetown/tengai/sandogasa/yamabushi
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE)
+ if(H.age == AGE_OLD)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("perception", -2)
+ H.change_stat("constitution", 1)
+ H.change_stat("endurance", 2)
+ H.change_stat("speed", -1)
+ if(H.patron != /datum/patron/divine/abyssor)
+ to_chat(H, "As a Member of Abyssanctum, the Curator Branch ensured my duties would remain even if I found my faith in another God that is not Abyssor, as long it is Pantheonistic.")
+
+ ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron)
+ C.holder_mob = H
+ C.update_devotion(50, 50)
+ C.grant_spells_cleric(H)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm
new file mode 100644
index 0000000000..140e179e0a
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm
@@ -0,0 +1,95 @@
+/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills/////////////////////////////////////////////////////////
+//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. //
+//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. //
+//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.//
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/advclass/combat/abyssariad/zamurai // Zamurai-tier role. Still not leading people since they own no retainer on Rockhill.
+ name = "Zamurai"
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ //humen - need to settle Heartfeltean culture on this one.
+ "Changeling",
+ "Skylancer",
+ "Ogrun")
+ outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/zamurai
+ maximum_possible_slots = 1
+ pickprob = 50
+ tutorial = "A lower-ranking zamurai serving the warrior caste that became adrift during a expedition, \
+ keeping their trusty steed. They are expected to uphold their oficial duties and following the strict \
+ martial code of the Abyssal Tide, at least on paper."
+ category_tags = list(CTAG_ADVENTURER)
+ horse = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame/saddled
+
+/datum/advclass/combat/abyssariad/zamurai/equipme(mob/living/carbon/human/H)
+ if(H.gender == FEMALE)
+ horse = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame/saddled
+ return ..()
+
+/datum/outfit/job/roguetown/adventurer/abyssariad/zamurai/pre_equip(mob/living/carbon/human/H)
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/random //Fully intended to give them Haidate Tatami, but the armor is strong enough already.
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/suneate
+ gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal //kote already protects the hands.
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/zamurai //weaker gambeson. Has way more DRIP. (Doesn't matter for balance, shutup)
+ armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad //Paying off for 4 swordskill instead of 5.
+ head = /obj/item/clothing/head/roguetown/helmet/visored/zunari //fucking-shit-up knight helmet tier. Sacrificed some to keep that one.
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/kote //Cooler Bracer that protects the hands.
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military
+
+ to_chat(H, span_warning( "I am a noble storm-hardened warrior in lacquered armor whom lands I own and control. Yet, here I stand in unfamiliar lands no different of my own."))
+
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/labor/taming, 1, TRUE) //Zamurais does not tame their steed. Their retainer do that.
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ if(findtext(H.real_name, " Clanless")) //You can't be a clanless zamurai.
+ to_chat(H, "As a important member of Fog Islands, of course I have a clan. What the hell you've been thinking?")
+ clanfication(H)
+
+ var/prev_real_name = H.real_name // Initialize the previous real name
+ var/original_first_name
+ var/original_clan
+ var/honorary = "-dono" //The organization for that one is different from the Rockhillian counterpart.
+ var/index = findtext(prev_real_name, " of ") // If "of" is found, split the name
+ if(index)
+ original_first_name = copytext(prev_real_name, 1, index)
+ original_clan = copytext(prev_real_name, index)
+ H.real_name = "[original_first_name][honorary][original_clan]"
+ else // If no "of" is found, apply honorific to the full name instead.
+ H.real_name = "[prev_real_name][honorary]"
+
+ H.become_blind("TRAIT_GENERIC")
+ var/zamuraitype = list("Odashibushi(Melee)","Yumibushi(Ranged)")
+ var/specialization = input("Choose your Specialization", "Available Specialization") as anything in zamuraitype
+ switch(specialization)
+ if("Odashibushi(Melee)") //Not as sword-specialized as Swordmaster, but have better armor.
+ H.set_blindness(0)
+ backr = /obj/item/rogueweapon/sword/long/greatsword/odachi
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE) //4 instead of 5. Abyssariads with 5 are champions only.
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 2)
+ H.change_stat("speed", -1)
+
+ if("Yumibushi(Ranged)") // Ranged Focus.
+ H.set_blindness(0)
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/long/yumi
+ beltl = /obj/item/quiver/arrows
+ beltr = /obj/item/rogueweapon/sword/uchigatana
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE)
+ H.change_stat("perception", 2)
+ H.change_stat("speed", 2)
+ H.change_stat("strength", 1)
+ H.cure_blind("TRAIT_GENERIC")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm
index 07387638a4..3fd674c0bd 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm
@@ -8,7 +8,8 @@
"Half-Elf",
"Dwarf",
"Tiefling",
- "Dark Elf"
+ "Dark Elf",
+ "Undine" //Undines don't care about muh honor.
)
outfit = /datum/outfit/job/roguetown/adventurer/assassin
category_tags = list(CTAG_PILGRIM)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm
index 63354580a2..c0f5e6f890 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm
@@ -12,19 +12,19 @@
/datum/outfit/job/roguetown/adventurer/heartfeltlord/pre_equip(mob/living/carbon/human/H)
..()
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
belt = /obj/item/storage/belt/rogue/leather/black
neck = /obj/item/clothing/neck/roguetown/gorget
- head = /obj/item/clothing/head/roguetown/helmet
- shoes = /obj/item/clothing/shoes/roguetown/nobleboot
- pants = /obj/item/clothing/under/roguetown/tights/black
- cloak = /obj/item/clothing/cloak/heartfelt
+ head = /obj/item/clothing/head/roguetown/heartfelt
+ shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/dark
+ cloak = /obj/item/clothing/cloak/newheartfelt
armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt
beltr = /obj/item/storage/belt/rogue/pouch/coins/rich
beltl = /obj/item/scomstone
- gloves = /obj/item/clothing/gloves/roguetown/leather/black
- neck = /obj/item/clothing/neck/roguetown/chaincoif
- beltl = /obj/item/rogueweapon/sword/long
+ gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal/black
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin
+ beltl = /obj/item/rogueweapon/sword/long/tachi
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
@@ -47,3 +47,6 @@
ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC)
ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ if(!HAS_TRAIT(H, TRAIT_KAIZOKU))
+ ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC)
+ to_chat(H, "")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm
index 8978c6eb5a..a3a63b4d35 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm
@@ -2,8 +2,14 @@
name = "Hand of Heartfelt"
tutorial = "You serve your lord as hand, taking care of diplomatic actions within your realm, \
but why have you come to Rockhill?"
- allowed_sexes = list(MALE)
- allowed_races = list("Humen")
+ allowed_sexes = list(FEMALE, MALE)
+ allowed_races = list(
+ "Humen",
+ "Changeling", //With the alliance, members of the Zamurai/Court class from Fog Island becomes hands if other members of the family marry with heartfelt nobles or vice-versa.
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
outfit = /datum/outfit/job/roguetown/adventurer/heartfelthand
maximum_possible_slots = 1
min_pq = 1
@@ -12,19 +18,24 @@
/datum/outfit/job/roguetown/adventurer/heartfelthand/pre_equip(mob/living/carbon/human/H)
..()
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
belt = /obj/item/storage/belt/rogue/leather/black
- shoes = /obj/item/clothing/shoes/roguetown/nobleboot
- pants = /obj/item/clothing/under/roguetown/tights/black
+ shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/dark
neck = /obj/item/clothing/neck/roguetown/gorget
- armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt
+ if(H.gender == MALE)
+ armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand
+ head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku
+ else
+ armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand/female
+ head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku/female
beltr = /obj/item/storage/belt/rogue/pouch/coins/rich
gloves = /obj/item/clothing/gloves/roguetown/leather/black
- beltl = /obj/item/rogueweapon/sword/decorated
+ beltl = /obj/item/rogueweapon/sword/sabre/piandao/dec
beltr = /obj/item/scomstone
backr = /obj/item/storage/backpack/rogue/satchel/heartfelt
mask = /obj/item/clothing/mask/rogue/spectacles/golden
- neck = /obj/item/clothing/neck/roguetown/chaincoif
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
@@ -41,3 +52,6 @@
H.change_stat("intelligence", 3)
ADD_TRAIT(H, TRAIT_SEEPRICES, type)
ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ if(!HAS_TRAIT(H, TRAIT_KAIZOKU))
+ ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC)
+ to_chat(H, "")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm
index dac82e065d..23b4f15435 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm
@@ -12,7 +12,11 @@
"Half-Elf",
"Dwarf",
"Tiefling",
- "Dark Elf"
+ "Dark Elf",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/swashbuckler
maximum_possible_slots = 1
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm
index 9b3276f77c..bfdc11161e 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm
@@ -11,7 +11,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/gravedigger
min_pq = 0
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm
index 3ca69e0240..a387d9a131 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm
@@ -12,7 +12,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/puritan
maximum_possible_slots = 1
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm
index 6a772158dc..3e5b8b3d18 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm
@@ -13,7 +13,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/bard
category_tags = list(CTAG_PILGRIM, CTAG_TOWNER)
@@ -62,6 +66,15 @@
backr = /obj/item/rogue/instrument/guitar
if(H.dna.species.id == "aasimar")
backr = /obj/item/rogue/instrument/drum // March along the drums of war.
+ if(H.dna.species.id == "abyssariad" || H.dna.species.name == "Undine")
+ backr = /obj/item/rogue/instrument/shamisen // Why do our shamisens sounds so rock-y? Consider it a 'Abyssariad Interation' of the japanese kind. Remember, not everything must be equal.
+ cloak = /obj/item/clothing/cloak/raincloak/guardiancloak/red
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku
+ shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead
+ head = /obj/item/clothing/head/roguetown/bardhat/bloodhunter
+ beltr = /obj/item/rogueweapon/knife/kaiken
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake
ADD_TRAIT(H, TRAIT_GOODLOVER, TRAIT_GENERIC) // Bardic rizz
ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC)
ADD_TRAIT(H, TRAIT_BARDIC_TRAINING, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
index 2898be261a..184873599d 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
@@ -10,7 +10,8 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Ogrun" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role.
)
outfit = /datum/outfit/job/roguetown/adventurer/blacksmith
category_tags = list(CTAG_PILGRIM)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/carpenter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/carpenter.dm
index 971881d492..6e4bc853fe 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/carpenter.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/carpenter.dm
@@ -10,7 +10,8 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Ogrun" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role."
)
outfit = /datum/outfit/job/roguetown/adventurer/carpenter
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm
index 82b7ad4630..5d7a048b36 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm
@@ -10,7 +10,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/fisher
category_tags = list(CTAG_PILGRIM, CTAG_TOWNER)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm
index dbdc4caace..dba989f79b 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm
@@ -10,7 +10,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/hunter
@@ -70,7 +74,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/hunter // Everything is the same
category_tags = list(CTAG_PILGRIM, CTAG_TOWNER)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm
index c69e2d81d3..b42257362b 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm
@@ -10,7 +10,8 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Ogrun" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role.
)
outfit = /datum/outfit/job/roguetown/adventurer/miner
category_tags = list(CTAG_PILGRIM, CTAG_TOWNER)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/peasant.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/peasant.dm
index 7c05a13251..c839bf7758 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/peasant.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/peasant.dm
@@ -44,11 +44,32 @@
beltr = /obj/item/flint
var/obj/item/rogueweapon/pitchfork/P = new()
H.put_in_hands(P, forced = TRUE)
- if(H.gender == FEMALE)
- head = /obj/item/clothing/head/roguetown/armingcap
- armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
- pants = null
+ if(HAS_TRAIT(H, TRAIT_KAIZOKU)) //Heartfelt humens.
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake
+ if(H.gender == FEMALE)
+ shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono
+ else
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ pants = /obj/item/clothing/under/roguetown/trou/tobi
+ var/helmettype = pickweight(list("Gasa" = 1, "Roningasa" = 1, "Sandogasa" = 1, "Takuhatsugasa" = 1, "Torioigasa" = 1))
+ switch(helmettype)
+ if("Gasa")
+ head = /obj/item/clothing/head/roguetown/tengai/gasa
+ if("Roningasa")
+ head = /obj/item/clothing/head/roguetown/tengai/roningasa
+ if("Sandogasa")
+ head = /obj/item/clothing/head/roguetown/tengai/sandogasa
+ if("Takuhatsugasa")
+ head = /obj/item/clothing/head/roguetown/takuhatsugasa
+ if("Torioigasa")
+ head =/obj/item/clothing/head/roguetown/tengai/torioigasa
+ else
+ if(H.gender == FEMALE)
+ head = /obj/item/clothing/head/roguetown/armingcap
+ armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
+ pants = null
backpack_contents = list(/obj/item/neuFarm/seed/wheat=1,/obj/item/neuFarm/seed/apple=1,/obj/item/ash=1,/obj/item/rogueweapon/knife/villager=1)
H.change_stat("strength", 1)
H.change_stat("constitution", 1)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/physicker.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/physicker.dm
index f930541c99..61cee21b51 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/physicker.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/physicker.dm
@@ -12,7 +12,8 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role.
)
outfit = /datum/outfit/job/roguetown/adventurer/physicker
category_tags = list(CTAG_PILGRIM)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm
index 69b23c9540..29f8c2b7ac 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm
@@ -12,7 +12,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/fishermaster
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm
index a263bad8d7..3bfc9bd88f 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm
@@ -6,6 +6,10 @@
"Half-Elf",
"Dwarf",
"Tiefling",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/adventurer/weaver
category_tags = list(CTAG_PILGRIM)
diff --git a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
index 7e5d10d5a1..b12eeb3cd0 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm
@@ -13,7 +13,10 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling", //Abyssariad dungeoneers, on the standards of Rockhill, are burakumins. Their non-impure version is the Kaishakunin.
+ "Skylancer",
+ "Ogrun"
)
allowed_sexes = list(MALE, FEMALE)
@@ -62,3 +65,12 @@
if(H.dna.species.id == "human")
H.dna.species.soundpack_m = new /datum/voicepack/male/warrior()
H.verbs |= /mob/living/carbon/human/proc/torture_victim
+
+ if(H.dna.species?.id == "abyssariad")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
+ H.burakumin = TRUE
+ to_chat(H, "My honor is forfeit; I have become a tool of cruelty and torture. The swift and merciful death that must be yearned to my victims are no option for me here. Perhaps one dae my sins will no longer linger.")
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
diff --git a/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm b/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm
index 4826290d7c..a8b8083fa5 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm
@@ -14,7 +14,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "You are an Archer in the Kings garrison and are used as a scout, or to man the walls and shoot at invaders."
display_order = JDO_GARRISONARCHER
diff --git a/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm b/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm
index c733c2c56b..4ce0c4298f 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm
@@ -12,7 +12,14 @@
"Elf",
"Half-Elf",
"Dwarf",
- "Aasimar"
+ "Aasimar",
+ "Tiefling",
+ "Dark Elf",
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
allowed_ages = list(AGE_ADULT, AGE_MIDDLEAGED, AGE_IMMORTAL)
tutorial = "You are a soldier in the ruler's garrison. Your experience, training, and equipment may vary... but you are the first line of defense against the horrors that encroach on Rockhill."
@@ -42,13 +49,29 @@
if(!index)
index = H.real_name
S.name = "guard's tabard ([index])"
+ if(istype(H.cloak, /obj/item/clothing/cloak/jinbaori/guard))
+ var/obj/item/clothing/S = H.cloak
+ var/index = findtext(H.real_name, " ")
+ if(index)
+ index = copytext(H.real_name, 1,index)
+ if(!index)
+ index = H.real_name
+ S.name = "ashigaru's jinbaori ([index])"
//Universal stuff for all guards, regardless of their class selection.
-/datum/outfit/job/roguetown/guardsman
- pants = /obj/item/clothing/under/roguetown/trou/leather
- cloak = /obj/item/clothing/cloak/stabard/guard
- shoes = /obj/item/clothing/shoes/roguetown/boots
- belt = /obj/item/storage/belt/rogue/leather
+/datum/outfit/job/roguetown/guardsman/pre_equip(mob/living/carbon/human/H)
+ if(H.dna?.species && H.dna.species?.id != "abyssariad")
+ pants = /obj/item/clothing/under/roguetown/trou/leather
+ cloak = /obj/item/clothing/cloak/stabard/guard
+ shoes = /obj/item/clothing/shoes/roguetown/boots
+ belt = /obj/item/storage/belt/rogue/leather
+ if(H.dna?.species && H.dna.species?.id == "abyssariad")
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/random
+ cloak = /obj/item/clothing/cloak/jinbaori/guard //I can't put these somewhere else.
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg')
+
/* ! ! ! Class Selection Section Below ! ! !
Design philosphy:
@@ -67,16 +90,29 @@ Design philosphy:
/datum/outfit/job/roguetown/guardsman/footman/pre_equip(mob/living/carbon/human/H)
..()
- //Gets a steel cuirass over chain, a gorget, and a nasal helmet
- armor = /obj/item/clothing/suit/roguetown/armor/cuirass
- shirt = /obj/item/clothing/suit/roguetown/armor/chainmail
- neck = /obj/item/clothing/neck/roguetown/gorget
- head = /obj/item/clothing/head/roguetown/helmet/nasal
- backr = /obj/item/rogueweapon/shield/wood
- beltr = /obj/item/rogueweapon/sword/scimitar/messer
- beltl = /obj/item/rogueweapon/mace
- backpack_contents = list(/obj/item/keyring/guard)
-
+ if(H.dna?.species && H.dna.species?.id == "abyssariad") // (non-patterned) Islander equipment system
+ to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.")
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half //Abyssariads relies less in gorgets, more in masks.
+ head = /obj/item/clothing/head/roguetown/helmet/zijinguan //Hopefully the feather colors will be fixed.
+ backr = /obj/item/rogueweapon/shield/wood/rattan
+ beltr = /obj/item/rogueweapon/sword/scimitar/messer/dao
+ beltl = /obj/item/rogueweapon/mace/ararebo
+ backpack_contents = list(/obj/item/keyring/guard)
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "If I am bound to the king, I must be one with my bloodline.")
+ clanfication(H)
+ if(H.dna?.species && H.dna.species?.id != "abyssariad") // Default non-Islander equipment
+ //Gets a steel cuirass over chain, a gorget, and a nasal helmet
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ head = /obj/item/clothing/head/roguetown/helmet/nasal
+ backr = /obj/item/rogueweapon/shield/wood
+ beltr = /obj/item/rogueweapon/sword/scimitar/messer
+ beltl = /obj/item/rogueweapon/mace
+ backpack_contents = list(/obj/item/keyring/guard)
//Stats for class
H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
@@ -104,13 +140,25 @@ Design philosphy:
/datum/outfit/job/roguetown/guardsman/pikeman/pre_equip(mob/living/carbon/human/H)
..()
- //Gets chain over a gambeson, a gorget, and a kettle helmet
- armor = /obj/item/clothing/suit/roguetown/armor/chainmail
- shirt = /obj/item/clothing/suit/roguetown/armor/gambeson
- neck = /obj/item/clothing/neck/roguetown/gorget
- head = /obj/item/clothing/head/roguetown/helmet/kettle
- beltr = /obj/item/rogueweapon/sword/scimitar/messer
- backpack_contents = list(/obj/item/keyring/guard)
+ if(H.dna.species?.id == "abyssariad") //I gotta try making the abyssariads guards be forced to have surnames.
+ to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.")
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ head = /obj/item/clothing/head/roguetown/helmet/jingasa
+ beltr = /obj/item/rogueweapon/sword/scimitar/messer/dao
+ backpack_contents = list(/obj/item/keyring/guard)
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "If I am bound to the king, I must be one with my bloodline.")
+ clanfication(H)
+ else
+ //Gets chain over a gambeson, a gorget, and a kettle helmet
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ head = /obj/item/clothing/head/roguetown/helmet/kettle
+ beltr = /obj/item/rogueweapon/sword/scimitar/messer
+ backpack_contents = list(/obj/item/keyring/guard)
//Stats for class
H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
@@ -134,8 +182,12 @@ Design philosphy:
switch(weapontype)
if("Spear")
backr = /obj/item/rogueweapon/polearm/spear
+ if(H.dna.species?.id == "abyssariad")
+ backr = /obj/item/rogueweapon/polearm/spear/yari
if("Bardiche")
backr = /obj/item/rogueweapon/polearm/halberd/bardiche
+ if(H.dna.species?.id == "abyssariad")
+ backr = /obj/item/rogueweapon/polearm/halberd/naginata
/datum/advclass/garrison/archer
name = "Garrison Archer"
@@ -146,17 +198,31 @@ Design philosphy:
/datum/outfit/job/roguetown/guardsman/archer/pre_equip(mob/living/carbon/human/H)
..()
- //Gets a padded gambeson, leather bracers, and a chain coif
- armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy
- shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
- backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
- head = /obj/item/clothing/head/roguetown/roguehood/red
- neck = /obj/item/clothing/neck/roguetown/chaincoif
- wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
- beltr = /obj/item/quiver/arrows
- beltl = /obj/item/rogueweapon/knife/dagger/steel/special
- backpack_contents = list(/obj/item/keyring/guard)
-
+ if(H.dna.species?.id == "abyssariad")
+ to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.")
+ armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy/deelcoat
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+ head = /obj/item/clothing/head/roguetown/tengai/gasa
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ beltr = /obj/item/quiver/arrows
+ beltl = /obj/item/rogueweapon/knife/steel/tanto
+ backpack_contents = list(/obj/item/keyring/guard)
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "If I am bound to the king, I must be one with my bloodline.")
+ clanfication(H)
+ else
+ //Gets a padded gambeson, leather bracers, and a chain coif
+ armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
+ backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
+ head = /obj/item/clothing/head/roguetown/roguehood/red
+ neck = /obj/item/clothing/neck/roguetown/chaincoif
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
+ beltr = /obj/item/quiver/arrows
+ beltl = /obj/item/rogueweapon/knife/dagger/steel/special
+ backpack_contents = list(/obj/item/keyring/guard)
//Stats for class
H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 4, TRUE)
@@ -183,19 +249,33 @@ Design philosphy:
name = "Garrison Fencer"
tutorial = "You are a fencer in the garrison levy. If nothing else you know a simple truth, there are few problems that cannot be resolved with quick feet and the precise application of a deft blade."
outfit = /datum/outfit/job/roguetown/guardsman/fencer
-
category_tags = list(CTAG_GARRISON)
/datum/outfit/job/roguetown/guardsman/fencer/pre_equip(mob/living/carbon/human/H)
..()
//Gets studded leather (which hopefully will be renamed splint mail at some point...) and a chain coif
- armor = /obj/item/clothing/suit/roguetown/armor/leather/splint
- shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
- beltr = /obj/item/rogueweapon/sword/rapier
- beltl = /obj/item/rogueweapon/knife/dagger/steel/special
- head = /obj/item/clothing/head/roguetown/roguehood/red
- neck = /obj/item/clothing/neck/roguetown/chaincoif
backpack_contents = list(/obj/item/keyring/guard)
+ if(H.dna.species?.id == "abyssariad")
+ to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.")
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/splint/kikko
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
+ beltr = /obj/item/rogueweapon/sword/rapier
+ head = /obj/item/clothing/head/roguetown/tengai/gasa
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military
+ beltl = /obj/item/rogueweapon/knife/steel/tanto
+ backpack_contents = list(/obj/item/keyring/guard)
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "Since my clan became bound to the king, I must be one with my bloodline. I am no Clanless.")
+ clanfication(H)
+ else
+ //Gets studded leather (which hopefully will be renamed splint mail at some point...) and a chain coif
+ armor = /obj/item/clothing/suit/roguetown/armor/leather/splint
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
+ beltr = /obj/item/rogueweapon/sword/rapier
+ beltl = /obj/item/rogueweapon/knife/dagger/steel/special
+ head = /obj/item/clothing/head/roguetown/roguehood/red
+ neck = /obj/item/clothing/neck/roguetown/chaincoif
+ backpack_contents = list(/obj/item/keyring/guard)
H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
@@ -215,4 +295,3 @@ Design philosphy:
set name = "HALT!"
set category = "Noises"
emote("haltyell")
-
diff --git a/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm b/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm
index 04cb83bf22..287efe2e0f 100644
--- a/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm
+++ b/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm
@@ -12,7 +12,10 @@
"Elf",
"Half-Elf",
"Dwarf",
- "Aasimar"
+ "Aasimar",
+ "Changeling", //Lore Situationism: The three abyssariad races have been brought over to the Garrison for prestige values and to cement the King's power by holding culturally loyal-bound raiders as part of the army.
+ "Skylancer",
+ "Ogrun"
)
allowed_ages = list(AGE_ADULT, AGE_MIDDLEAGED, AGE_IMMORTAL)
tutorial = "You're the rulers hand-picked guard, awarded with knighthood for your prowess and loyalty. Your only oath is a personal one to your ruler, no one else may command you! Serve them until your dying breath."
@@ -39,52 +42,103 @@
if(!index)
index = H.real_name
S.name = "knight's tabard ([index])"
+ if(istype(H.cloak, /obj/item/clothing/cloak/haramaki/odoshi/zamurai))
+ var/obj/item/clothing/S = H.cloak
+ var/index = findtext(H.real_name, " ")
+ if(index)
+ index = copytext(H.real_name, 1,index)
+ if(!index)
+ index = H.real_name
+ S.name = "zamurai's odoshi ([index])"
var/prev_real_name = H.real_name
var/prev_name = H.name
- var/honorary = "Sir"
- if(H.gender == FEMALE)
- honorary = "Dame"
- H.real_name = "[honorary] [prev_real_name]"
- H.name = "[honorary] [prev_name]"
+ if(H.dna.species?.id != "abyssariad")
+ var/honorary = "Sir"
+ if(H.gender == FEMALE)
+ honorary = "Dame"
+ H.real_name = "[honorary] [prev_real_name]"
+ H.name = "[honorary] [prev_name]"
+ else
+ var/original_first_name
+ var/original_clan
+ var/honorary = "-dono" //The organization for that one is different of the Rockhillian counterpart.
+ var/index = findtext(prev_real_name, " of ") // If no "of" is found, apply honorific to the full name instead. Someone made a snowflake.
+ if(index)
+ original_first_name = copytext(prev_real_name, 1, index)
+ original_clan = copytext(prev_real_name, index)
+ H.real_name = "[original_first_name][honorary][original_clan]"
+ else // If no "of" is found, apply honorific to the full name instead.
+ H.real_name = "[prev_real_name][honorary]"
+
+ H.name = H.real_name // Sync `name` with the modified `real_name`
/datum/outfit/job/roguetown/royalguard/pre_equip(mob/living/carbon/human/H)
..()
- pants = /obj/item/clothing/under/roguetown/chainlegs
- cloak = /obj/item/clothing/cloak/tabard/knight/guard
- neck = /obj/item/clothing/neck/roguetown/gorget
- shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
- armor = /obj/item/clothing/suit/roguetown/armor/brigandine // Wear the King's colors.
- shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light
- beltl = /obj/item/keyring/mguard
- belt = /obj/item/storage/belt/rogue/leather
- beltr = /obj/item/rogueweapon/sword/arming
- backr = /obj/item/storage/backpack/rogue/satchel
- backl = /obj/item/rogueweapon/shield/tower/metal
- r_hand = /obj/item/rogueweapon/polearm/halberd
- if(prob(30))
- head = /obj/item/clothing/head/roguetown/helmet/visored/knight
- else
- head = /obj/item/clothing/head/roguetown/helmet/sallet
+ if(H.dna?.species && H.dna.species?.id == "abyssariad")
+ to_chat(H, span_warning( "I am a noble storm-hardened Zamurai. I hold the blood oath of my ancestors, bound to the throne - I serve the ruler's clan with utmost devotion, let death find me before dishonoring my pact."))
+ pants = /obj/item/clothing/under/roguetown/chainlegs/sendan
+ neck = null //Abyssariads rarely uses gorgets. For that they use menpos.
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ cloak = /obj/item/clothing/cloak/haramaki/odoshi/zamurai
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/royal
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ beltr = /obj/item/rogueweapon/sword/uchigatana
+ backr = /obj/item/storage/backpack/rogue/satchel
+ r_hand = /obj/item/rogueweapon/polearm/halberd/naginata
+ backl = /obj/item/rogueweapon/shield/tower/metal/abyssal
+ if(prob(30))
+ head = /obj/item/clothing/head/roguetown/helmet/visored/zunari
+ else
+ head = /obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "The King acquired my clan - so I have to belong to one before reaching this royal duty I serve.")
+ clanfication(H)
+ H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg')
- if(H.mind)
- H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE)
+ if(H.dna?.species && H.dna.species?.id != "abyssariad")
+ pants = /obj/item/clothing/under/roguetown/chainlegs
+ cloak = /obj/item/clothing/cloak/tabard/knight/guard
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine // Wear the King's colors.
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light
+ beltl = /obj/item/keyring/mguard
+ belt = /obj/item/storage/belt/rogue/leather
+ beltr = /obj/item/rogueweapon/sword
+ backr = /obj/item/storage/backpack/rogue/satchel
+ backl = /obj/item/rogueweapon/shield/tower/metal
+ r_hand = /obj/item/rogueweapon/polearm/halberd
+ if(prob(30))
+ head = /obj/item/clothing/head/roguetown/helmet/visored/knight
+ else
+ head = /obj/item/clothing/head/roguetown/helmet/sallet
+ if(H.dna.species.name == "Ogrun")
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 4, TRUE)
+ r_hand = /obj/item/rogueweapon/mace/goden/steel/tetsubo
+ else
H.mind.adjust_skillrank(/datum/skill/combat/polearms, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/shields, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
- H.change_stat("strength", 2)
- H.change_stat("perception", 2)
- H.change_stat("endurance", 2)
- H.change_stat("constitution", 1)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
+ H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg')
+
+ H.change_stat("strength", 2)
+ H.change_stat("perception", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 1)
+
H.verbs |= /mob/proc/haltyell
ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
ADD_TRAIT(H, TRAIT_KNOWBANDITS, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/captain.dm b/code/modules/jobs/job_types/roguetown/nobility/captain.dm
index d3be400fca..c169c9aacf 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/captain.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/captain.dm
@@ -10,8 +10,12 @@
"Humen",
"Elf",
"Half-Elf",
- "Dwarf"
+ "Dwarf",
+ "Changeling", //Lore Situationism: The three abyssariad races have been brought over to the Garrison for prestige values and to cement the King's power by holding culturally loyal-bound raiders as part of the army.
+ "Skylancer",
+ "Ogrun"
)
+
allowed_sexes = list(MALE, FEMALE)
display_order = JDO_CAPTAIN
tutorial = "Law and Order, your divine reason for existence. You have been given command over the garrison to help keep order and peace within the city and defend it against the many dangers of the island."
@@ -29,27 +33,56 @@
var/mob/living/carbon/human/H = L
var/prev_real_name = H.real_name
var/prev_name = H.name
- var/honorary = "Sir"
- if(H.gender == FEMALE)
- honorary = "Dame"
- H.real_name = "[honorary] [prev_real_name]"
- H.name = "[honorary] [prev_name]"
+ if(H.dna.species?.id != "abyssariad")
+ var/honorary = "Sir"
+ if(H.gender == FEMALE)
+ honorary = "Dame"
+ H.real_name = "[honorary] [prev_real_name]"
+ H.name = "[honorary] [prev_name]"
+ else
+ var/honorary = "Jiangjun" //Just like china, abyssariads have a standardized military practices from a unified political system for the Imperial Court.
+ // Jianjun IS a term for 'General' nowadays, but it was widely used during Han, Tang, Song, Yuan and Ming dynasties for high-ranking military officers.
+ H.real_name = "[honorary] [prev_real_name]"
+ H.name = "[honorary] [prev_name]"
/datum/outfit/job/roguetown/captain/pre_equip(mob/living/carbon/human/H)
..()
- head = /obj/item/clothing/head/roguetown/helmet/visored/knight
- gloves = /obj/item/clothing/gloves/roguetown/plate
- pants = /obj/item/clothing/under/roguetown/platelegs
- armor = /obj/item/clothing/suit/roguetown/armor/brigandine/captain
- neck = /obj/item/clothing/neck/roguetown/gorget
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard
- shoes = /obj/item/clothing/shoes/roguetown/boots
- backr = /obj/item/storage/backpack/rogue/satchel
- backl = /obj/item/rogueweapon/shield/tower/metal
- belt = /obj/item/storage/belt/rogue/leather/plaquesilver
- beltl = /obj/item/rogueweapon/sword/sabre
- beltr = /obj/item/rogueweapon/mace/cudgel
- cloak = /obj/item/clothing/cloak/cape/guard
+ if(H.dna?.species && H.dna.species?.id != "abyssariad") // Default non-Islander equipment
+ head = /obj/item/clothing/head/roguetown/helmet/visored/knight
+ gloves = /obj/item/clothing/gloves/roguetown/plate
+ pants = /obj/item/clothing/under/roguetown/platelegs
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine/captain
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard
+ shoes = /obj/item/clothing/shoes/roguetown/boots
+ backr = /obj/item/storage/backpack/rogue/satchel
+ backl = /obj/item/rogueweapon/shield/tower/metal
+ belt = /obj/item/storage/belt/rogue/leather/plaquesilver
+ beltl = /obj/item/rogueweapon/sword/sabre
+ beltr = /obj/item/rogueweapon/mace/cudgel
+ cloak = /obj/item/clothing/cloak/cape/guard
+
+ else if(H.dna?.species && H.dna.species?.id == "abyssariad") // Alternative, Islander equipment
+ to_chat(H, "As a Abyssal Guardian, I follow the desires of Abyssor's son to now be bound to the Rockhill throne - I serve the ruler's clan with utmost devotion, let death find me before dishonoring my pact.")
+ head = /obj/item/clothing/head/roguetown/helmet/visored/zunari
+ gloves = /obj/item/clothing/gloves/roguetown/plate/lamellaetekko
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine/shanwenkai
+ pants = /obj/item/clothing/under/roguetown/platelegs/weepershanwenkai
+ neck = /obj/item/clothing/neck/roguetown/gorget
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal
+ beltl = /obj/item/rogueweapon/sword/sabre/piandao
+ beltr = /obj/item/rogueweapon/mace/cudgel/jitte
+ backl = /obj/item/rogueweapon/shield/tower/metal/abyssal
+ backr = /obj/item/storage/backpack/rogue/satchel
+ belt = /obj/item/storage/belt/rogue/leather/plaquesilver
+ cloak = /obj/item/clothing/cloak/raincloak/guardiancloak/guard
+ H.champion = TRUE
+
+ if(findtext(H.real_name, " Clanless"))
+ to_chat(H, "The King acquired my clan - so I have to belong to one before reaching this royal duty I serve.")
+ clanfication(H)
+
backpack_contents = list(/obj/item/keyring/captain = 1, /obj/item/signal_horn = 1)
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 4, TRUE)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm b/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm
index 0a9a3028d7..f96e5a68aa 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm
@@ -17,8 +17,10 @@
"Elf",
"Half-Elf",
"Dwarf",
- "Aasimar"
- )
+ "Dark Elf",
+ "Aasimar",
+ "Changeling")
+
allowed_sexes = list(MALE, FEMALE)
cmode_music = 'sound/music/combat_physician.ogg'
diff --git a/code/modules/jobs/job_types/roguetown/nobility/merchant.dm b/code/modules/jobs/job_types/roguetown/nobility/merchant.dm
index 1df2652a05..ac9f9a56ea 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/merchant.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/merchant.dm
@@ -13,7 +13,8 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Skylancer" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role.
)
tutorial = "You were born into wealth, learning from before you could talk about the basics of mathematics. With the trade empire of the Mercator guild behind you, life is good! These people are addicted to your wares and you are the literal beating heart of this economy: Dont let these filthy-covered troglodytes ever forget that."
diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm
index 205128220a..24b1187ded 100644
--- a/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm
+++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm
@@ -9,7 +9,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/mercenary/boltslinger
category_tags = list(CTAG_MERCENARY)
diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/kabukimono.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/kabukimono.dm
new file mode 100644
index 0000000000..d50db95708
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/kabukimono.dm
@@ -0,0 +1,59 @@
+// Literally Yakuza, but split into Kabukimonos and Toweryakkos.
+// They are different references to Kabuki-monos and Machi-yakko.
+// ALL of them are Burakumins.
+// Their presence on the alt map will be more of gang warfare instead of a mercenary job.
+
+/datum/advclass/mercenary/kabukimaru
+ name = "Kabuki-maru"
+ tutorial = "You're an exiled brigand driven by coin while robed in yellow. Known for wild antics, loose camaraderie and using large odachis. Your rivals in purple robes are a constant thorn in your search for richness."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Humen", //Heartfeltean.
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+ )
+ outfit = /datum/outfit/job/roguetown/mercenary/kabukimaru
+ category_tags = list(CTAG_MERCENARY)
+ maximum_possible_slots = 5
+
+/datum/outfit/job/roguetown/mercenary/kabukimaru/pre_equip(mob/living/carbon/human/H)
+ ..()
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(3,4), TRUE) //sword is their focus.
+ H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, pick(1,1,2), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, pick(2,3), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, pick(0,0,1), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
+ H.burakumin = TRUE //They will not receive the explosive mask, as these have already been exiled. They do not require masks to exist on a society.
+
+ beltr = /obj/item/storage/belt/rogue/pouch/coins/poor
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/kabukimono
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/kabukimono
+ shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead/kabukimono
+ gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal/kabukimono
+ belt = /obj/item/storage/belt/rogue/leather
+ beltl = /obj/item/rogueweapon/mace/cudgel/jitte
+ cloak = /obj/item/clothing/cloak/raincloak/horocloak/kabukimono
+ shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/kabukimono
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ backl = /obj/item/storage/backpack/rogue/satchel
+ backr = /obj/item/rogueweapon/sword/long/greatsword/odachi
+ if(!H.has_language(/datum/language/abyssal))
+ H.grant_language(/datum/language/abyssal)
+ to_chat(H, "I can speak Abyssal with ,a before my speech.")
+
+ H.merctype = 9
+
+ H.change_stat("strength", 2) // Big sword. They really are not that different of the grezenholft counterpart, but even less armored.
+ H.change_stat("endurance", 1)
+ H.change_stat("constitution", 2)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm
index 90d4d8e0f5..4e20200e00 100644
--- a/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm
+++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm
@@ -5,7 +5,11 @@
allowed_races = list(
"Humen",
"Half-Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/mercenary/steppesman
category_tags = list(CTAG_MERCENARY)
@@ -28,6 +32,12 @@
pants = /obj/item/clothing/under/roguetown/tights/red
shoes = /obj/item/clothing/shoes/roguetown/boots/leather
backl = /obj/item/gun/ballistic/revolver/grenadelauncher/bow
+ backr = /obj/item/storage/backpack/rogue/satchel
+ if(HAS_TRAIT(H, TRAIT_KAIZOKU))
+ backl = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu
+ beltr = /obj/item/rogueweapon/sword/sabre/piandao
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ backpack_contents = list(/obj/item/rogueweapon/knife/hunting = 1, /obj/item/storage/belt/rogue/pouch/coins/poor = 1)
if(H.mind)//quick fighter that has Dodge Expert and a bow for ranged attacks, 4 weapon skills
H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE)
diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/toweryakko.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/toweryakko.dm
new file mode 100644
index 0000000000..0e4f92a923
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/toweryakko.dm
@@ -0,0 +1,64 @@
+/datum/advclass/mercenary/toweryakko
+ name = "Tower-Yakko"
+ tutorial = "You've been the operator of a network of smuggling and racketeering from the Towers on Fog Islands after your faction shifted from vigilantism to organized crime, but you have been exiled ever since and now search for richness on lands away, but your rivals in yellow kimonos does the same."
+ allowed_sexes = list(MALE, FEMALE)
+ allowed_races = list(
+ "Humen", //Heartfeltean.
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
+
+ )
+ outfit = /datum/outfit/job/roguetown/mercenary/toweryakko
+ category_tags = list(CTAG_MERCENARY)
+ maximum_possible_slots = 5
+
+
+/datum/outfit/job/roguetown/mercenary/toweryakko/pre_equip(mob/living/carbon/human/H)
+ ..()
+ shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead/toweryakkos
+ head = /obj/item/clothing/head/roguetown/helmet/jingasa
+ gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal/toweryakko
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ belt = /obj/item/storage/belt/rogue/leather
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ cloak = /obj/item/clothing/cloak/haramaki/odoshi/toweryakko
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido
+ backr = /obj/item/rogueweapon/shield/abyssaltower
+ beltr = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao
+ beltl = /obj/item/flashlight/flare/torch/lantern
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ pants = /obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami
+ backl = /obj/item/storage/backpack/rogue/satchel
+ backpack_contents = list(/obj/item/storage/belt/rogue/pouch/coins/poor)
+ if(!H.has_language(/datum/language/abyssal))
+ H.grant_language(/datum/language/abyssal)
+ to_chat(H, "I can speak Abyssal with ,a before my speech.")
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, pick(0,1,1), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, pick(3,4), TRUE) //ultrafocus on sword and shield.
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(3,4), TRUE) //ultrafocus on sword and shield.
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, pick(0,1,1), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.burakumin = TRUE //They will not receive the explosive mask, as these have already been exiled. They do not require masks to exist on a society.
+
+ H.merctype = 9
+
+ H.change_stat("strength", 1)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 1)
+ ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+
+//colortone for toweryakkos; color = "#804d97"
diff --git a/code/modules/jobs/job_types/roguetown/other/mercenary.dm b/code/modules/jobs/job_types/roguetown/other/mercenary.dm
index e37af1b485..f48ea89d89 100644
--- a/code/modules/jobs/job_types/roguetown/other/mercenary.dm
+++ b/code/modules/jobs/job_types/roguetown/other/mercenary.dm
@@ -14,7 +14,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "
Blood stained hands, do you even see it when they line your palms with golden treasures?
\
You are a paid killer, redeemable only by fact that your loyalty can be bought, \
diff --git a/code/modules/jobs/job_types/roguetown/other/skeleton.dm b/code/modules/jobs/job_types/roguetown/other/skeleton.dm
index 28687d3309..c25b3f6f9e 100644
--- a/code/modules/jobs/job_types/roguetown/other/skeleton.dm
+++ b/code/modules/jobs/job_types/roguetown/other/skeleton.dm
@@ -14,7 +14,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = ""
diff --git a/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm b/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm
index 7c848f648d..79691b436c 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm
@@ -43,6 +43,18 @@
shoes = /obj/item/clothing/shoes/roguetown/boots/leather
shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/puritan
armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/sea
+ if(H.dna.species?.id == "abyssariad")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
+ H.burakumin = TRUE
+ to_chat(H, "In pursuit of hedonism and vices, I forfeited my honor and values of the Abyssal Tide. My soul can no longer claim the essence of an Abyssariad.")
+ if(H.patron == /datum/patron/divine/abyssor)
+ H.patron = GLOB.patronlist[/datum/patron/divine/eora]
+ to_chat(H, "The waters I once revered now scorn me - the rivers blistering my impure skin. I've failed Abyssor as his champion, and now I've bonded with [H.patron].")
+
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
// Washing Implements
@@ -132,4 +144,3 @@
-
diff --git a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
index ccc9209f7b..f342e5cca7 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
@@ -14,7 +14,11 @@
"Half-Elf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
outfit = /datum/outfit/job/roguetown/vagrant
bypass_lastclass = TRUE
@@ -70,6 +74,14 @@
H.change_stat("intelligence", -3)
H.change_stat("constitution", -2)
H.change_stat("endurance", -2)
+ if(H.dna.species?.id == "abyssariad")
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
+ to_chat(H, "In failure I forfeited my honor and values of the Abyssal Tide. If I am to claim the essence of an Abyssariad once more, I must prove myself worthy.")
+ H.burakumin = TRUE
+ if(H.wear_mask)
+ if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left ))
+ qdel(H.wear_mask)
+ mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor
/datum/outfit/job/roguetown/vagrant
name = "Beggar"
diff --git a/code/modules/jobs/job_types/roguetown/peasants/butcher.dm b/code/modules/jobs/job_types/roguetown/peasants/butcher.dm
index a7ced10540..d61670b5e9 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/butcher.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/butcher.dm
@@ -13,7 +13,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "Some say youre a strange individual, some say youre a cheat while some claim you are a savant in the art of sausage making. Without your skilled hands and knifework most of the livestock around the town would be wasted. "
@@ -59,3 +63,19 @@
H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/labor/butchering, 5, TRUE)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedarmor) //Guayo asked me to give this to the Butcher.
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedhelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumhelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumarmor)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/lighthelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/lightarmor)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_spear)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_club)
+
+ if(HAS_TRAIT(H, TRAIT_KAIZOKU))
+ to_chat(H, "Despite what some people believe, my role on society is respected, as my abyssal honor is not put in test in a daily basis.")
+ if(H.gender == MALE)
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/random
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ else
+ shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/random
diff --git a/code/modules/jobs/job_types/roguetown/peasants/cook.dm b/code/modules/jobs/job_types/roguetown/peasants/cook.dm
index 017831131b..fd3c80891c 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/cook.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/cook.dm
@@ -13,7 +13,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "Slice, chop, and into the pot... You've spent more nites than you can count cutting meat and vegetables until your fingers are bloody and raw, but it's honest work."
diff --git a/code/modules/jobs/job_types/roguetown/peasants/soilson.dm b/code/modules/jobs/job_types/roguetown/peasants/soilson.dm
index ecc73ff218..932c2a9053 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/soilson.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/soilson.dm
@@ -15,7 +15,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "It is a simple life you live, your basic understanding of life is something many would be envious of if they knew how perfect it was. You know a good day's work, the sweat on your brow is yours: Famines and plague may take its toll, but you know how to celebrate life well. Till the soil and produce fresh food for those around you, and maybe youll be more than an unsung hero someday."
@@ -51,22 +55,50 @@
ADD_TRAIT(H, TRAIT_SEEDKNOW, TRAIT_GENERIC)
neck = /obj/item/storage/belt/rogue/pouch/coins/poor
- if(H.gender == MALE)
- head = /obj/item/clothing/head/roguetown/roguehood/random
- if(prob(50))
- head = /obj/item/clothing/head/roguetown/strawhat
- pants = /obj/item/clothing/under/roguetown/tights/random
- armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/striped
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random
- shoes = /obj/item/clothing/shoes/roguetown/simpleshoes
+
+ if(HAS_TRAIT(H, TRAIT_KAIZOKU))
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach
+ gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake
+ armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random
+ beltl = /obj/item/rogueweapon/sickle/kama //proper weapontool. Unique crafting for a handmade flail.kama
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
belt = /obj/item/storage/belt/rogue/leather/rope
beltr = /obj/item/roguekey/soilson
- beltl = /obj/item/rogueweapon/knife/villager
+ if(H.gender == FEMALE)
+ shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono
+ else
+ shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt
+ pants = /obj/item/clothing/under/roguetown/trou/tobi
+ var/helmettype = pickweight(list("Gasa" = 1, "Roningasa" = 1, "Sandogasa" = 1, "Takuhatsugasa" = 1, "Torioigasa" = 1))
+ switch(helmettype)
+ if("Gasa")
+ head = /obj/item/clothing/head/roguetown/tengai/gasa
+ if("Roningasa")
+ head = /obj/item/clothing/head/roguetown/tengai/roningasa
+ if("Sandogasa")
+ head = /obj/item/clothing/head/roguetown/tengai/sandogasa
+ if("Takuhatsugasa")
+ head = /obj/item/clothing/head/roguetown/takuhatsugasa
+ if("Torioigasa")
+ head =/obj/item/clothing/head/roguetown/tengai/torioigasa
else
- head = /obj/item/clothing/head/roguetown/armingcap
- armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random
- shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
- shoes = /obj/item/clothing/shoes/roguetown/simpleshoes
- belt = /obj/item/storage/belt/rogue/leather/rope
- beltr = /obj/item/roguekey/soilson
- beltl = /obj/item/rogueweapon/knife/villager
+ if(H.gender == MALE)
+ head = /obj/item/clothing/head/roguetown/roguehood/random
+ if(prob(50))
+ head = /obj/item/clothing/head/roguetown/strawhat
+ pants = /obj/item/clothing/under/roguetown/tights/random
+ armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/striped
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random
+ shoes = /obj/item/clothing/shoes/roguetown/simpleshoes
+ belt = /obj/item/storage/belt/rogue/leather/rope
+ beltr = /obj/item/roguekey/soilson
+ beltl = /obj/item/rogueweapon/knife/villager
+ else
+ head = /obj/item/clothing/head/roguetown/armingcap
+ armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt
+ shoes = /obj/item/clothing/shoes/roguetown/simpleshoes
+ belt = /obj/item/storage/belt/rogue/leather/rope
+ beltr = /obj/item/roguekey/soilson
+ beltl = /obj/item/rogueweapon/knife/villager
+
diff --git a/code/modules/jobs/job_types/roguetown/roguetown.dm b/code/modules/jobs/job_types/roguetown/roguetown.dm
index 9fcd63a63a..fa7ca67b5a 100644
--- a/code/modules/jobs/job_types/roguetown/roguetown.dm
+++ b/code/modules/jobs/job_types/roguetown/roguetown.dm
@@ -63,10 +63,38 @@
if(H.dna)
H.dna.species.random_underwear(H.gender)
if(H.dna.species)
+ if(H.dna.species.id == "human")
+ if(H.skin_tone == SKIN_COLOR_HEARTFELT)
+ ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC)
+ H.grant_language(/datum/language/abyssal)
if(H.dna.species.id == "elf")
H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
if(H.dna.species.id == "dwarf")
H.mind.adjust_skillrank(/datum/skill/labor/mining, 1, TRUE)
+ if(H.dna.species.id == "abyssariad")
+ H.verbs |= /mob/proc/throatsing
+ H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg')
+ ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC)
+ if(H.dna.species.name == "Changeling")
+ ADD_TRAIT(H, TRAIT_STRONGBITE, TRAIT_GENERIC) // When their Skull-bending "wag system" comes about, it will be their debuff to counter this.
+ if(H.dna.species.name == "Skylancer")
+ H.verbs |= /mob/proc/birdcall
+ if(H.dna.species.name == "Undine")
+ H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg')
+ ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedarmor)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedhelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumhelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumarmor)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/lighthelmet)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/lightarmor)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_spear)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_club)
+ H.verbs |= /mob/proc/croak
+// if(H.dna.species.id == "Abyssariad"||H.dna.species.name == "Undine") // Not finished yet because I can't test it now.
+// if(H.patron == /datum/patron/divine/abyssor)
+// H.set_patron(/datum/patron/goodabyssanctum/abyssor) //so they spawn with their unique powers.
+
H.underwear_color = null
H.update_body()
diff --git a/code/modules/jobs/job_types/roguetown/temple/acolyte.dm b/code/modules/jobs/job_types/roguetown/temple/acolyte.dm
index d372aabb55..7d6ee33d51 100644
--- a/code/modules/jobs/job_types/roguetown/temple/acolyte.dm
+++ b/code/modules/jobs/job_types/roguetown/temple/acolyte.dm
@@ -12,7 +12,11 @@
"Half-Elf",
"Dwarf",
"Dark Elf",
- "Aasimar"
+ "Aasimar",
+ "Changeling",
+ "Skylancer",
+ "Ogrun",
+ "Undine"
)
tutorial = "Chores, exercise, prayer... and more chores. You are a humble acolyte at the temple in Rockhill, not yet a trained guardian or an ordained priest. But who else would keep the fires lit and the floors clean?"
allowed_patrons = ALL_TEMPLE_PATRONS
@@ -68,6 +72,13 @@
pants = /obj/item/clothing/under/roguetown/tights/red
shoes = /obj/item/clothing/shoes/roguetown/boots
armor = /obj/item/clothing/suit/roguetown/shirt/robe/malum
+ if("Abyssor")
+ head = /obj/item/clothing/head/roguetown/padded/shrinekeeper
+ neck = /obj/item/clothing/neck/roguetown/psicross/abyssanctum
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe/shrinekeeper
+ shirt = /obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random
+ shoes = /obj/item/clothing/shoes/roguetown/sandals/geta
+ wrists = /obj/item/clothing/wrists/roguetown/shrinekeeper
else // Failsafe
head = /obj/item/clothing/head/roguetown/roguehood/random
neck = /obj/item/clothing/neck/roguetown/psycross/silver
diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm
index fde931c439..e079f0de75 100644
--- a/code/modules/language/language_holder.dm
+++ b/code/modules/language/language_holder.dm
@@ -142,3 +142,6 @@
/datum/language_holder/hellspeak
languages = list(/datum/language/hellspeak)
+
+/datum/language_holder/abyssal
+ languages = list(/datum/language/abyssal)
diff --git a/code/modules/language/roguetown/abyssal.dm b/code/modules/language/roguetown/abyssal.dm
new file mode 100644
index 0000000000..1b3ad4ba6b
--- /dev/null
+++ b/code/modules/language/roguetown/abyssal.dm
@@ -0,0 +1,147 @@
+/datum/language/abyssal
+ name = "Abyssal"
+ desc = ""
+ speech_verb = "conveys"
+ ask_verb = "quizzes"
+ exclaim_verb = "roars"
+ key = "a"
+ flags = LANGUAGE_HIDE_ICON_IF_UNDERSTOOD | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD
+ space_chance = 66
+ default_priority = 80
+ icon_state = "asse"
+ spans = list(SPAN_ABYSSAL)
+ syllables = list(
+"ichi",
+"ni",
+"san",
+"shi",
+"yon",
+"go",
+"roku",
+"shichi",
+"nana",
+"hachi",
+"kyuu",
+"ku",
+"juu",
+"hyaku",
+"sen",
+"man",
+"en",
+"ji",
+"nichi",
+"hi",
+"getsu",
+"tsuki",
+"ka",
+"hi",
+"sui",
+"mizu",
+"moku",
+"ki",
+"kin",
+"kane",
+"do",
+"tsuchi",
+"nen",
+"toshi",
+"jou",
+"ue",
+"ka",
+"shita",
+"chuu",
+"naka",
+"shou",
+"chii",
+"dai",
+"oo",
+"san",
+"yama",
+"sen",
+"kawa",
+"sa",
+"hidari",
+"migi",
+"sen",
+"saki",
+"sei",
+"ikiru",
+"yuu",
+"tomo",
+"gaku",
+"manabu",
+"kou",
+"kan",
+"aida",
+"fun",
+"bun",
+"zen",
+"mae",
+"ato",
+"kon",
+"ima",
+"ka",
+"nani",
+"jin",
+"hito",
+"hou",
+"kata",
+"hon",
+"ji",
+"aza",
+"sho",
+"kaku",
+"ken",
+"miru",
+"kou",
+"iku",
+"shoku",
+"taberu",
+"in",
+"nomu",
+"kyuu",
+"yasumu",
+"nyuu",
+"hairu",
+"deru",
+"kou",
+"kuchi",
+"chou",
+"machi",
+"son",
+"mura",
+"sei",
+"shin",
+"ko",
+"furui",
+"chou",
+"nagai",
+"tan",
+"kou",
+"takai",
+"an",
+"yasui",
+"ta",
+"oo",
+"shou",
+"sha",
+"haku",
+"shiro",
+"koku",
+"kuro",
+"seki",
+"aka",
+"sei",
+"ao",
+"kou",
+"ki",
+"iro",
+"kuu",
+"kai",
+"umi",
+"ten",
+"ama",
+"u",
+"ame",
+"den",
+"wa")
diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm
index a2aeaec4ab..45fc7b0da9 100644
--- a/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -55,7 +55,7 @@
features["ears"] = pref_species.default_features["ears"]
for(var/X in GLOB.horns_list.Copy())
var/datum/sprite_accessory/S = GLOB.horns_list[X]
- if(!(pref_species in S.specuse))
+ if(!(pref_species in S?.specuse))
continue
if(S.gender == NEUTER)
features["horns"] = X
@@ -115,6 +115,8 @@
if(user)
if(pref_species.patreon_req > user.patreonlevel())
return FALSE
+ if(pref_species.minrace_pq > get_playerquality(user.ckey)) // PQ check here
+ return FALSE
return TRUE
/mob/proc/patreonlevel()
diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm
index b58b4ddf82..fe36b7a46e 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories.dm
@@ -87,14 +87,14 @@
/datum/sprite_accessory/hair/bald
name = "Bald"
icon_state = ""
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
gender = MALE
/datum/sprite_accessory/hair/adventurer_human
name = "Adventurer"
icon_state = "adventurer"
gender = MALE
- specuse = list("human")
+ specuse = list("human", "abyssariad")
/datum/sprite_accessory/hair/berserker
name = "Berserker"
@@ -107,7 +107,7 @@
name = "Bog"
icon_state = "bog"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/boss_dwarf
name = "Boss"
@@ -126,13 +126,13 @@
name = "Brother"
icon_state = "brother"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/cavehead
name = "Cavehead"
icon_state = "cavehead" // original name thinning?
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
under_layer = TRUE
/datum/sprite_accessory/hair/conscript
@@ -146,7 +146,7 @@
name = "Courtier"
icon_state = "courtier"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/dark_knight
name = "Dark Knight"
@@ -165,7 +165,7 @@
name = "Druid"
icon_state = "druid" // original name elf_scout?
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/fancy_elf
name = "Fancy"
@@ -177,7 +177,7 @@
name = "Forester"
icon_state = "forester"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/foreigner_tief
name = "Foreigner"
@@ -215,19 +215,19 @@
name = "Heroic"
icon_state = "heroic"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/hunter
name = "Hunter"
icon_state = "hunter"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/landlord
name = "Landlord"
icon_state = "landlord"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/lover_tief
name = "Lover"
@@ -239,7 +239,7 @@
name = "Lions mane"
icon_state = "lion"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/monk
name = "Monk"
@@ -257,7 +257,7 @@
name = "Mercenary"
icon_state = "mercenary"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/miner_dwarf
name = "Miner"
@@ -269,44 +269,44 @@
name = "Nobility"
icon_state = "nobility"
gender = MALE
- specuse = list("human")
+ specuse = list("human", "abyssariad")
/datum/sprite_accessory/hair/nomadic_humtief
name = "Nomadic"
icon_state = "nomadic"
gender = MALE
- specuse = list("human", "tiefling")
+ specuse = list("human", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/pirate
name = "Pirate"
icon_state = "pirate"
gender = MALE
under_layer = TRUE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/princely
name = "Princely"
icon_state = "princely"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/rogue
name = "Rogue"
icon_state = "rogue"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/romantic
name = "Romantic"
icon_state = "romantic"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/scribe
name = "Scribe"
icon_state = "scribe"
gender = MALE
- specuse = list("human", "dwarf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "aasimar", "tiefling", "abyssariad")
under_layer = TRUE
/datum/sprite_accessory/hair/southern_human
@@ -379,7 +379,7 @@
name = "Warrior"
icon_state = "warrior"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/wildside
name = "Wild sidecut"
@@ -415,13 +415,13 @@
name = "Archivist"
icon_state = "archivist_f" // original name bob_scully
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/barbarian
name = "Barbarian"
icon_state = "barbarian_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/beartails
name = "Beartails"
@@ -434,37 +434,37 @@
name = "Buns"
icon_state = "buns_f" // original name twinbuns
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/bob
name = "Bob"
icon_state = "bob_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/curlyshort
name = "Curly Short"
icon_state = "curly_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/empress
name = "Empress"
icon_state = "empress_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/fancy_femelf
name = "Fancy"
icon_state = "fancy_elf_f"
gender = FEMALE
- specuse = list("elf")
+ specuse = list("elf", "abyssariad")
/datum/sprite_accessory/hair/grumpy_f
name = "Grumpy"
icon_state = "grumpy_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/gnomish_f
name = "Gnomish"
@@ -482,7 +482,7 @@
name = "Homely"
icon_state = "homely_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/junia
name = "Junia"
@@ -500,13 +500,13 @@
name = "Loose Braid"
icon_state = "loosebraid_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/maiden
name = "Maiden"
icon_state = "maiden_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/majestic_dwarf_F
name = "Majestiq"
@@ -524,7 +524,7 @@
name = "Messy"
icon_state = "messy_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/mysterious_elf
name = "Mysterious"
@@ -536,7 +536,7 @@
name = "Mystery"
icon_state = "mystery_f" // modified hime_long
gender = FEMALE
- specuse = list("human", "dwarf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/noblesse
name = "Noblesse"
@@ -560,7 +560,7 @@
name = "Pixie"
icon_state = "pixie_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/plain
name = "Plain"
@@ -572,19 +572,19 @@
name = "Queenly"
icon_state = "queenly_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/shrine
name = "Shrinekeeper"
icon_state = "shrine_f"
gender = FEMALE
- specuse = list("elf", "tiefling", "human")
+ specuse = list("elf", "tiefling", "human", "abyssariad")
/datum/sprite_accessory/hair/soilbride
name = "Soilbride"
icon_state = "soilbride_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/squire_f
name = "Squire"
@@ -602,7 +602,7 @@
name = "Tied ponytail"
icon_state = "tied_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/hair/tiedup
name = "Tied up"
@@ -620,7 +620,7 @@
name = "Wisp"
icon_state = "wisp_f"
gender = FEMALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
//////////////////////////////
@@ -636,7 +636,7 @@
/datum/sprite_accessory/hair/shaved
name = "Shaved"
icon_state = "shaved"
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
gender = NEUTER
under_layer = TRUE
@@ -650,7 +650,7 @@
name = "Majestie"
icon_state = "majestic_elf"
gender = NEUTER
- specuse = list("elf")
+ specuse = list("elf", "abyssariad")
/datum/sprite_accessory/hair/locs
name = "Locs"
@@ -695,25 +695,25 @@
name = "Shaved"
icon_state = "facial_shaven"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/brew
name = "Brew"
icon_state = "facial_moonshiner"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/chops
name = "Choppe"
icon_state = "facial_muttonmus"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/chin
name = "Clean Chin"
icon_state = "facial_chin"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/braided
name = "Dignitary"
@@ -725,7 +725,7 @@
name = "Drinker"
icon_state = "facial_manly"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/fullbeard
name = "Full Beard"
@@ -737,67 +737,67 @@
name = "Fullest Beard"
icon_state = "facial_brokenman"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/knightly
name = "Knightly"
icon_state = "facial_knightly"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/know
name = "Knowledge"
icon_state = "facial_wise"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/fiveoclockm
name = "Mustache"
icon_state = "facial_5oclockmoustache"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/pick
name = "Pick"
icon_state = "facial_longbeard"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/pipe
name = "Pipesmoker"
icon_state = "facial_pipe"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/viking
name = "Raider"
icon_state = "facial_viking"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/ranger
name = "Ranger"
icon_state = "facial_dwarf"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/vandyke
name = "Rumata"
icon_state = "facial_vandyke"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/burns
name = "Sideburns"
icon_state = "facial_burns"
gender = MALE
- specuse = list("human", "dwarf", "elf", "aasimar", "tiefling")
+ specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad")
/datum/sprite_accessory/facial_hair/hermit
name = "Wise Hermit"
icon_state = "facial_moonshiner"
gender = MALE
- specuse = list("human", "dwarf", "elf", "tiefling")
+ specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad")
///////////////////////////
// Accessory Definitions //
@@ -1021,15 +1021,32 @@
name = "Femundies"
icon_state = "female_bikini"
gender = FEMALE
- specuse = ALL_RACES_LIST
+ specuse = list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie") //had to change that one. Sorry. The RNG was forcing the Abyssariad females to have this.
/datum/sprite_accessory/underwear/female_leotard
name = "Femleotard"
icon_state = "female_leotard"
gender = FEMALE
- specuse = ALL_RACES_LIST
+ specuse = list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie") //had to change that one. Sorry. The RNG was forcing the Abyssariad females to have this.
roundstart = FALSE
+/datum/sprite_accessory/underwear/male_fundoshi
+ name = "Mendoshi"
+ icon_state = "male_fundoshi"
+ gender = MALE
+ specuse = list("abyssariad")
+ roundstart = TRUE
+ use_static = TRUE
+ icon = 'icons/roguetown/kaizoku/clothing/underwear.dmi'
+
+/datum/sprite_accessory/underwear/male_fundoshi/female
+ name = "Femdoshi"
+ icon_state = "female_fundoshi"
+ gender = FEMALE
+ specuse = list("abyssariad")
+ roundstart = TRUE
+ use_static = TRUE
+
//#endif
////////////////////////////
// Undershirt Definitions //
@@ -1482,3 +1499,224 @@
/datum/sprite_accessory/moth_markings/moonfly
name = "Moon Fly"
icon_state = "moonfly"
+
+//Female Kaizoku hair below.
+
+/datum/sprite_accessory/hair/kaizoku/empress
+ name = "Abyssal Empress"
+ icon_state = "empress"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/onnamusha
+ name = "Onnamusha"
+ icon_state = "warlady"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/waterfield
+ name = "Waterbearer"
+ icon_state = "waterfield"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/homewaifu
+ name = "Homewife"
+ icon_state = "homewaifu"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/casual
+ name = "Natural River"
+ icon_state = "casual"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/martyr
+ name = "Inhonor of the Fallen"
+ icon_state = "martyr"
+ gender = FEMALE
+ specuse = list("abyssariad")
+
+//Male Kaizoku hair below.
+
+/datum/sprite_accessory/hair/kaizoku
+ name = "Zamurai Manbun"
+ icon = 'icons/roguetown/kaizoku/body_details/hairstyles.dmi'
+ icon_state = "samurai"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/ronin
+ name = "Vagabond"
+ icon_state = "ronin"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/freespirit
+ name = "Free Spirit"
+ icon_state = "freespirit"
+ gender = NEUTER
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/novice
+ name = "New Rice"
+ icon_state = "novice"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/yakuza
+ name = "Irezumi Gangster"
+ icon_state = "yakuza"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/steppeman
+ name = "Aridlands raider"
+ icon_state = "steppeman"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/bishonen
+ name = "Husband"
+ icon_state = "bishonen"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/emperor
+ name = "Imperial Court"
+ icon_state = "emperor"
+ gender = MALE
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/protagonist
+ name = "Historical Protagonist"
+ icon_state = "hprotagonist"
+ gender = NEUTER
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/hair/kaizoku/protagonistalt
+ name = "Longer Protagonist"
+ icon_state = "alsoprotagonist"
+ gender = NEUTER
+ specuse = list("abyssariad")
+
+//Abyssariad accessories.
+
+/datum/sprite_accessory/detail/irezumi
+ name = "Blademaster Irezumi"
+ icon_state = "irezumi_blademaster"
+ icon = 'icons/roguetown/kaizoku/body_details/accessories.dmi'
+ specuse = list("abyssariad")
+
+/datum/sprite_accessory/detail/irezumi/champion
+ name = "Champion Irezumi"
+ icon_state = "irezumi_champion"
+
+/datum/sprite_accessory/detail/irezumi/monk
+ name = "Monk Irezumi"
+ icon_state = "irezumi_monk"
+
+/datum/sprite_accessory/detail/irezumi/seduction
+ name = "Eyes Irezumi"
+ icon_state = "irezumi_seduction"
+
+/datum/sprite_accessory/detail/irezumi/seductionalt
+ name = "Side-eyes Irezumi"
+ icon_state = "irezumi_seductionalt"
+
+/datum/sprite_accessory/detail/irezumi/warrior
+ name = "Abyss Warrior Irezumi"
+ icon_state = "irezumi_warrior"
+
+//kaizoku bodyparts
+
+/datum/sprite_accessory/tails/human/onetail
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Onetail"
+ icon_state = "onetail"
+ specuse = list("changeling")
+ gender = NEUTER
+ color_src = HAIR
+ offsetti = TRUE
+
+/datum/sprite_accessory/ears/upright
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Upright"
+ icon_state = "upright"
+ specuse = list("changeling")
+ color_src = HAIR
+ offsetti = TRUE
+/*
+/datum/sprite_accessory/ears/lying
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Lying"
+ icon_state = "lying"
+ specuse = list("changeling")
+ color_src = HAIR
+ offsetti = TRUE
+/datum/sprite_accessory/ears/twotails
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "twotails"
+ icon_state = "twotails"
+ specuse = list("changeling")
+ color_src = HAIR
+ offsetti = TRUE
+/datum/sprite_accessory/ears/threetails
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "threetails"
+ icon_state = "threetails"
+ specuse = list("changeling")
+ color_src = HAIR
+ offsetti = TRUE
+*/
+
+/datum/sprite_accessory/tails/human/tenguv //Wings DO NOT WORK, so I set it as tails. If you want to fix that, go ahead.
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "TenguV"
+ icon_state = "tenguv"
+ specuse = list("tengu")
+ gender = NEUTER
+ color_src = HAIR
+ offsetti = TRUE
+
+/datum/sprite_accessory/ears/tengus
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "TenguS"
+ icon_state = "tengus"
+ specuse = list("tengu")
+ color_src = HAIR
+ offsetti = TRUE
+
+/datum/sprite_accessory/ears/oni
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "ogrun"
+ icon_state = "oni"
+ specuse = list("ogrun")
+ color_src = SKINCOLOR
+ offsetti = TRUE
+
+/datum/sprite_accessory/horns/human/oni
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Onihorn"
+ icon_state = "onihorn"
+ specuse = list("ogrun")
+ color_src = 0
+ offsetti = TRUE
+
+/datum/sprite_accessory/tails/human/kappav
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Kappav"
+ icon_state = "kappav"
+ specuse = list("undine")
+ gender = NEUTER
+ color_src = HAIR
+ offsetti = TRUE
+
+/datum/sprite_accessory/ears/kappae
+ icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi'
+ name = "Kappae"
+ icon_state = "kappae"
+ specuse = list("undine")
+ color_src = SKINCOLOR
+ offsetti = TRUE
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 3b1132783a..a5b473274d 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -5,6 +5,10 @@
user.add_stress(/datum/stressevent/delf)
if(!istiefling(user) && istiefling(src))
user.add_stress(/datum/stressevent/tieb)
+ if(HAS_TRAIT(user, TRAIT_KAIZOKU) && !HAS_TRAIT(src, TRAIT_KAIZOKU))
+ user.add_stress(/datum/stressevent/whaler)
+ if(!HAS_TRAIT(user, TRAIT_KAIZOKU) && HAS_TRAIT(src, TRAIT_KAIZOKU))
+ user.add_stress(/datum/stressevent/raider)
if(user.has_flaw(/datum/charflaw/paranoid) && (STASTR - user.STASTR) > 1)
user.add_stress(/datum/stressevent/parastr)
@@ -97,6 +101,10 @@
if(virginity)
. += "VIRGIN!"
+ if(isabyssariad(user) && isabyssariad(src))
+ if(burakumin)
+ . += "IMPURE BURAKUMIN!"
+
if(real_name in GLOB.outlawed_players)
. += "OUTLAW!"
if(mind && mind.special_role)
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index b8c165b3a7..aeb1672a79 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -134,6 +134,14 @@
// Boolean. Usually set only to TRUE for non-Eoran church roles.
var/virginity = FALSE
+ // Another Boolean. But this time entirely for Kaizoku content to define those whom Abyssariads considers 'impure', and for champions.
+ var/burakumin = FALSE
+ var/champion = FALSE
+
+ //a var used for a rather niched power.
+ var/purification = FALSE
+
+
possible_rmb_intents = list(/datum/rmb_intent/feint,\
/datum/rmb_intent/aimed,\
/datum/rmb_intent/strong,\
diff --git a/code/modules/mob/living/carbon/human/npc/raider.dm b/code/modules/mob/living/carbon/human/npc/raider.dm
new file mode 100644
index 0000000000..33a8a5d310
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/npc/raider.dm
@@ -0,0 +1,274 @@
+// Important. These guys are only suitable for events and film-making. Unless you have an ocean-based map, don't make them spawnable naturally.
+//They are not finished yet and should not be treated as full content. There is abilities I'd like to provide them.
+
+GLOBAL_LIST_INIT(ashigaru_quotes, world.file2list("strings/rt/ashigarulines.txt"))
+GLOBAL_LIST_INIT(ashigaru_aggro, world.file2list("strings/rt/ashigaruaggrolines.txt"))
+
+/mob/living/carbon/human/species/abyssariad/raider
+ aggressive = 1
+ mode = AI_IDLE
+ faction = list("zamurai", "station")
+ ambushable = FALSE
+ dodgetime = 3 SECONDS
+ flee_in_pain = FALSE
+ possible_rmb_intents = list()
+
+ wander = FALSE
+
+/mob/living/carbon/human/species/abyssariad/raider/ambush
+ aggressive = 1
+ wander = TRUE
+ dodgetime = 1 SECONDS
+
+/mob/living/carbon/human/species/abyssariad/raider/retaliate(mob/living/L)
+ var/newtarg = target
+ .=..()
+ if(target)
+ aggressive = 1
+ wander = TRUE
+ if(target != newtarg)
+ if(prob(25))
+ emote("rage")
+
+/mob/living/carbon/human/species/abyssariad/raider/ambush/should_target(mob/living/L)
+ . = ..() // They kill fallen enemies. Very honorable.
+
+/mob/living/carbon/human/species/abyssariad/raider/Initialize()
+ . = ..()
+ var/list/racetypes = list("Changeling" = 1, "Skylancer" = 1, "Ogrun" = 1)
+ var/type = pickweight(racetypes)
+ switch(type)
+ if("Changeling")
+ set_species(/datum/species/abyssariad/changeling)
+ if("Skylancer")
+ set_species(/datum/species/abyssariad/skylancer)
+ if("Ogrun")
+ set_species(/datum/species/abyssariad/ogrun)
+ addtimer(CALLBACK(src, PROC_REF(after_creation)), 1 SECONDS)
+
+/mob/living/carbon/human/species/abyssariad/raider/npc_idle()
+ if(m_intent == MOVE_INTENT_SNEAK)
+ return
+ if(world.time < next_idle)
+ return
+ next_idle = world.time + rand(30, 70)
+ if((mobility_flags & MOBILITY_MOVE) && isturf(loc) && wander)
+ if(prob(20))
+ var/turf/T = get_step(loc, pick(GLOB.cardinals))
+ if(!istype(T, /turf/open/transparent/openspace))
+ Move(T)
+ else
+ face_atom(get_step(src, pick(GLOB.cardinals)))
+ else if(!wander && prob(10))
+ face_atom(get_step(src, pick(GLOB.cardinals)))
+ if(prob(3))
+ say(pick(GLOB.ashigaru_quotes))
+ if(prob(3))
+ emote(pick("laugh", "throatsing"))
+
+//ashigarus
+
+/mob/living/carbon/human/species/abyssariad/raider/ambush/ashigaru/after_creation()
+ ..()
+ job = "Exiled Ashigaru"
+ ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+
+ equipOutfit(new /datum/outfit/job/roguetown/antag/raider/ashigaru)
+
+/datum/outfit/job/roguetown/antag/raider/ashigaru/pre_equip(mob/living/carbon/human/H)
+ ..()
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half
+ pants = /obj/item/clothing/under/roguetown/trou/tobi/random
+ cloak = /obj/item/clothing/cloak/jinbaori/raider
+ shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 1)
+
+ var/loadout = rand(1, 4)
+ switch(loadout)
+ if(1)
+ r_hand = /obj/item/rogueweapon/sword/scimitar/messer/dao
+ l_hand = /obj/item/rogueweapon/shield/wood/rattan
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido
+ head = /obj/item/clothing/head/roguetown/helmet/jingasa
+ if(2)
+ r_hand = /obj/item/rogueweapon/mace/steel/ararebo
+ l_hand = /obj/item/rogueweapon/shield/wood/rattan
+ head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ if(3)
+ r_hand = /obj/item/rogueweapon/polearm/spear/yari
+ l_hand = /obj/item/rogueweapon/shield/wood/rattan
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ head = /obj/item/clothing/head/roguetown/helmet/jingasa
+ if(4)
+ r_hand = /obj/item/rogueweapon/polearm/spear/yari/katakama
+ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ head = /obj/item/clothing/head/roguetown/helmet/jingasa
+
+// lowclass zamurais
+
+/mob/living/carbon/human/species/abyssariad/raider/zamurai/after_creation()
+ ..()
+ job = "Lowclass Zamurai"
+ ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+ equipOutfit(new /datum/outfit/job/roguetown/antag/raider/zamurai)
+
+/datum/outfit/job/roguetown/antag/raider/zamurai/pre_equip(mob/living/carbon/human/H)
+ ..()
+ pants = /obj/item/clothing/under/roguetown/chainlegs/sendan
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ cloak = /obj/item/clothing/cloak/haramaki/odoshi/raider
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/suneate/cursed
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/kote/cursed
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+ H.change_stat("strength", 3)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 2)
+ H.change_stat("intelligence", 2)
+ H.change_stat("speed", 2)
+
+ var/loadout = rand(1, 4)
+ switch(loadout)
+ if(1)
+ r_hand = /obj/item/rogueweapon/sword/uchigatana
+ l_hand = /obj/item/rogueweapon/shield/abyssaltower
+ armor = /obj/item/clothing/suit/roguetown/armor/plate/mirror
+ head = /obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random
+ if(2)
+ r_hand = /obj/item/rogueweapon/mace/steel/ararebo
+ l_hand = /obj/item/rogueweapon/shield/abyssaltower
+ head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ if(3)
+ r_hand = /obj/item/rogueweapon/polearm/halberd/naginata/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad
+ head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ if(4)
+ r_hand = /obj/item/rogueweapon/polearm/halberd/naginata/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad
+ head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+
+//highclass zamurais
+
+/mob/living/carbon/human/species/abyssariad/raider/ambush/highzamurai/after_creation()
+ ..()
+ job = "Exiled High Zamurai"
+ ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
+ ADD_TRAIT(src, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
+
+ equipOutfit(new /datum/outfit/job/roguetown/antag/raider/highzamurai)
+
+/datum/outfit/job/roguetown/antag/raider/highzamurai
+ name = "Exiled Highclass Zamurai"
+
+/datum/outfit/job/roguetown/antag/raider/highzamurai/pre_equip(mob/living/carbon/human/H)
+ ..()
+ H.change_stat("strength", 3)
+ H.change_stat("endurance", 2)
+ H.change_stat("constitution", 2)
+ H.change_stat("intelligence", 2)
+ H.change_stat("speed", 2)
+
+ pants = /obj/item/clothing/under/roguetown/chainlegs/sendan/cursed
+ mask = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ cloak = /obj/item/clothing/cloak/haramaki/odoshi/raider
+ shoes = /obj/item/clothing/shoes/roguetown/boots/armor/suneate/cursed
+ belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/kote/cursed
+ neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military
+
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 5, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 5, TRUE)
+
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE)
+
+ var/loadout = rand(1, 4)
+ switch(loadout)
+ if(1)
+ r_hand = /obj/item/rogueweapon/mace/goden/steel/tetsubo/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/plate/full/nanbando/cursed
+ head = /obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ if(2)
+ r_hand = /obj/item/rogueweapon/polearm/halberd/bisento/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/plate/full/nanbando/cursed
+ head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ if(3)
+ r_hand = /obj/item/rogueweapon/mace/steel/ararebo/dustcurse
+ l_hand = /obj/item/rogueweapon/shield/abyssaltower/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi
+ head = /obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ if(4)
+ r_hand = /obj/item/rogueweapon/sword/long/tachi/dustcurse
+ l_hand = /obj/item/rogueweapon/shield/tower/metal/abyssal/dustcurse
+ armor = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku/cursed
+ head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed
+ shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 53760aacc8..c3edd0979f 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -16,6 +16,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/list/possible_ages = ALL_AGES_LIST
var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
var/patreon_req
+ var/minrace_pq = -999
var/max_age = 75
var/list/offset_features = list(OFFSET_ID = list(0,0), OFFSET_GLOVES = list(0,0),\
OFFSET_CLOAK = list(0,0), OFFSET_FACEMASK = list(0,0), OFFSET_HEAD = list(0,0), \
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm
new file mode 100644
index 0000000000..eb89d16caa
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm
@@ -0,0 +1,93 @@
+/mob/living/carbon/human/species/abyssariad
+ race = /datum/species/abyssariad
+
+/datum/species/abyssariad
+ name = "foglander"
+ id = "abyssariad"
+ max_age = 1250 //The year Abyssariads have been created by Abyssor.
+ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT
+
+/datum/species/abyssariad/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+ ..()
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
+ C.grant_language(/datum/language/common)
+ C.grant_language(/datum/language/abyssal)
+
+/datum/species/abyssariad/get_accent(mob/living/carbon/human/H)
+ return strings("abyssal_replacement.json", "abyssal")
+
+///mob/proc/banzai() //Don't have female 'Banzai' yells for that.
+// set name = "Banzai"
+// set category = "Noises"
+// emote("banzai")
+
+/mob/proc/yoo()
+ set name = "Yoo"
+ set category = "Noises"
+ emote("yoo")
+
+/mob/proc/throatsing()
+ set name = "Throatsing"
+ set category = "Noises"
+ emote("throatsing")
+
+/mob/proc/birdcall()
+ set name = "Birdcall"
+ set category = "Noises"
+ emote("birdcall")
+
+/datum/species/abyssariad/check_roundstart_eligible()
+ return FALSE
+
+/datum/species/abyssariad/after_creation(mob/living/carbon/C)
+ ..()
+// if(!C.has_language(/datum/language/abyssal))
+ C.grant_language(/datum/language/abyssal)
+ to_chat(C, "I can speak Abyssal with ,a before my speech.")
+
+/datum/species/abyssariad/on_species_loss(mob/living/carbon/C)
+ . = ..()
+ UnregisterSignal(C, COMSIG_MOB_SAY)
+ C.remove_language(/datum/language/abyssal)
+
+/datum/species/abyssariad/qualifies_for_rank(rank, list/features)
+ return TRUE
+
+/datum/species/abyssariad/get_skin_list()
+ return sortList(list(
+ "skin1" = "ffe0d1",
+ "skin2" = "fcccb3"
+ ))
+
+
+/datum/species/abyssariad/get_hairc_list()
+ return sortList(list(
+ "black - nightsky" = "0a0707",
+ "brown - treebark" = "362e25",
+ "blonde - moonlight" = "dfc999",
+ "red - autumn" = "a34332"
+ ))
+
+/proc/clanfication(mob/living/carbon/human/H)
+ var/index = findtext(H.real_name, " Clanless") //Find 'Clanless' where an 'Clanless' makes no sense to exist.
+ if(index)
+ var/original_first_name = copytext(H.real_name, 1, index) //First name extraction.
+ var/new_surname = H.dna.species.random_surname() //Generation of a generic clan surname for RP purposes.
+ var/new_full_name = "[original_first_name][new_surname]" //Creates a new full name. "Firstname of Surname clan"
+ H.change_name(new_full_name) //Applies the name.
+ testing("[H.real_name] has been reassigned a surname: [new_full_name]") //Debuglog for information. Sometimes "(name) the of (surname) happens and I'M FUGGING GOING INSANE."
+
+//Not done yet.
+/*
+/mob/living/carbon/human/verb/abyssaltide()
+ set name = "Abyssal Tide"
+ set category = "Memory"
+ if(HAS_TRAIT(src, TRAIT_KAIZOKU)) // I'm fUGGING ANGRY AT THIS, WHY IT DOESN'T WORKKAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ var/readme_text = file2text("strings/rt/Abyssal_Tide.json") // CAN'T READ IIIIIIIIT
+ if (readme_text)
+ src << browse(readme_text, "window=memory") // AHHHHHHHHHHHHHHHHHH 'IM GOING TO DUFDSGOKSDOGRT
+ else
+ to_chat(src, "OOC: The Abyssal Tide information is missing or cannot be read. Please check for further information on Discord.")
+ else
+ to_chat(src, "You have no idea what Abyssal Tide means.")
+*/
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm
new file mode 100644
index 0000000000..0852c322e0
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm
@@ -0,0 +1,183 @@
+ /*==============*
+ * *
+ * Changeling *
+ * *
+ *===============*/
+
+// ( + Hard Bite perk )
+// ( - 'Bite' intention always set a warning state. )
+/*
+>>>MAJOR NEED! Please, someone code in a "Felinid"-like system for the changeling, but instead of CRINGE 'CUTESY' BS, I want
+help to portray Changeling's bloodthirsty nature. The 'Eldritch Jaw', which is essentially, "wagging_tail" system
+for the mouth THAT opens with a automatic emote (bite intention).<<<
+Future plan:
+-Physical Extension, Kitsune-bi; Immune to fire, put fires on others by touch and need no water, but takes damage from water sources, including water splash from buckets.
+-Can only eat meat from all sources. Uncooked or cooked meat, fat, tallows, bones, corpses, gibs. Cannot eat vegetables, cereals, fruits. Exceptions only comes to Sake and Rice.
+*/
+
+/mob/living/carbon/human/species/abyssariad/changeling
+ race = /datum/species/abyssariad/changeling
+
+/datum/species/abyssariad/changeling
+ name = "Changeling"
+ id = "abyssariad"
+ desc = "Storm branched Champions
\
+ Molded from Abyssor's tumultuous embrace of storm and will, the Changelings are a warrior, demiurgic race \
+ deeply bonded with honor and ethos that intertwines with the tempestuous forces of Abyssor, \
+ never set on a balance, all Changelings are extreme as the storms, with the tendency to be both \
+ hermeticly humble and quick tempered, and know for either loving duel for honor's sake \
+ - or being the most radical martial pacifists on the planet. Their society almost crumbled \
+ during The Bloody Apotheosis, but their bronze-age traditions lives on together with a deep \
+ hatred for all things Graggar. Their biology allows high degree of fleshbending, their faces exactly alike masks. \
+ They are noble souls that, when not belonging to military or clerical jobs, usually partakes \
+ in the society's intelligentsia division, usually as astronomers, alchemists and surgeons."
+
+ skin_tone_wording = "Championage Branch"
+
+ default_color = "FFFFFF"
+ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
+ inherent_traits = list(TRAIT_NOMOBSWAP)
+ default_features = list("mcolor" = "FFF", "ears" = "Upright", "tail_human" = "Onetail")
+ use_skintones = 1
+ possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, if they become stray from Abyssor - they suffer severe dementia, and after some decades, become Dais.
+ skinned_type = /obj/item/stack/sheet/animalhide/human
+ disliked_food = NONE
+ liked_food = MEAT
+ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT
+ limbs_icon_m = 'icons/roguetown/kaizoku/abyssariad_bodies/male/mt_kit.dmi'
+ limbs_icon_f = 'icons/roguetown/kaizoku/abyssariad_bodies/female/ft_kit.dmi'
+ dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi'
+ dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_female.dmi'
+ hairyness = ""
+ mutant_bodyparts = list("ears","tail_human")
+ use_f = FALSE
+ soundpack_m = /datum/voicepack/male/abyssariad
+ soundpack_f = /datum/voicepack/female/abyssariad
+ offset_features = list(OFFSET_ID = list(0,1), OFFSET_GLOVES = list(0,1), OFFSET_WRISTS = list(0,1),\
+ OFFSET_CLOAK = list(0,1), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \
+ OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,1), \
+ OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,1), OFFSET_PANTS = list(0,1), \
+ OFFSET_SHIRT = list(0,1), OFFSET_ARMOR = list(0,1), OFFSET_HANDS = list(0,1), OFFSET_UNDIES = list(0,1), \
+ OFFSET_ID_F = list(0,-1), OFFSET_GLOVES_F = list(0,1), OFFSET_WRISTS_F = list(0,1), OFFSET_HANDS_F = list(0,1), \
+ OFFSET_CLOAK_F = list(0,1), OFFSET_FACEMASK_F = list(0,0), OFFSET_HEAD_F = list(0,0), \
+ OFFSET_FACE_F = list(0,0), OFFSET_BELT_F = list(0,1), OFFSET_BACK_F = list(0,0), \
+ OFFSET_NECK_F = list(0,0), OFFSET_MOUTH_F = list(0,0), OFFSET_PANTS_F = list(0,1), \
+ OFFSET_SHIRT_F = list(0,1), OFFSET_ARMOR_F = list(0,1), OFFSET_UNDIES_F = list(0,1))
+ // Lore explanation for stats:
+ // Qualities: +Dense muscles ; higher fast-twitch fiber
+ // =>Disadvantage: -Lower Stationary Acuity; They are better at noticing movements, bad at noticing stationary objects. Bad with bows by nature. Foxes have that IRL because of nightvision. At least they have more reason to have it than Dark Elves.
+ // -Low fat mass, high muscle mass. Streamlined body structure that minimizes resistance and maximizes intense muscular movements.
+ specstats = list("strength" = 1, "perception" = -2, "intelligence" = 2, "constitution" = -1, "endurance" = 1, "speed" = 1, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage.
+ specstats_f = list("strength" = 1, "perception" = -2, "intelligence" = 2, "constitution" = -1, "endurance" = 1, "speed" = 1, "fortune" = 0)
+ enflamed_icon = "widefire"
+ mutanttongue = /obj/item/organ/tongue/kitsune
+ minrace_pq = 0
+ // 1(str)-1+1-0.5+0.5+1(spd)+0 = 2 specstats. Balance adjusted.
+ //statsvalue reference by Dova
+ //Strength and Speed are 1, everything else is .5, all races are +2 or +3 except Humen
+ customizers = list(
+ /datum/customizer/organ/eyes/humanoid,
+ /datum/customizer/bodypart_feature/hair/head/humanoid,
+ /datum/customizer/bodypart_feature/hair/facial/humanoid,
+ /datum/customizer/bodypart_feature/accessory
+ )
+ body_markings = list(
+ /datum/body_marking/tonage,
+ )
+
+/datum/species/abyssariad/changeling/get_span_language(datum/language/message_language)
+ if(!message_language)
+ return
+// if(message_language.type == /datum/language/abyssal)
+// return list(SPAN_ABYSSAL)
+// if(message_language.type == /datum/language/common)
+// return list(SPAN_SELF)
+ return message_language.spans
+
+/datum/species/abyssariad/changeling/check_roundstart_eligible()
+ return TRUE
+
+/datum/species/abyssariad/changeling/get_skin_list()
+ return sortList(list(
+ "Oathbound Muqian" = SKIN_COLOR_OATHBOUND_MUQIAN,
+ "Oathbound Kaizoku" = SKIN_COLOR_OATHBOUND_KAIZOKU,
+ "Oathbound Shuhen" = SKIN_COLOR_OATHBOUND_SHUHEN,
+ "Oathbound Linyou" = SKIN_COLOR_OATHBOUND_LINYOU,
+ "Oathbound Dustwalker" = SKIN_COLOR_OATHBOUND_DUSTWALKER,
+ "Warpcaster Muqian" = SKIN_COLOR_WARPCASTER_MUQIAN,
+ "Warpcaster Kaizoku" = SKIN_COLOR_WARPCASTER_KAIZOKU,
+ "Warpcaster Shuhen" = SKIN_COLOR_WARPCASTER_SHUHEN,
+ "Warpcaster Linyou" = SKIN_COLOR_WARPCASTER_LINYOU,
+ "Warpcaster Dustwalker" = SKIN_COLOR_WARPCASTER_DUSTWALKER,
+ ))
+
+
+/datum/species/abyssariad/changeling/get_hairc_list()
+ return sortList(list(
+ "blond - pale" = "9d8d6e",
+ "blond - dirty" = "88754f",
+ "blond - drywheat" = "d5ba7b",
+ "blond - strawberry" = "c69b71",
+
+ "brown - mud" = "362e25",
+ "brown - oats" = "584a3b",
+ "brown - grain" = "58433b",
+ "brown - soil" = "48322a",
+
+ "black - oil" = "181a1d",
+ "black - cave" = "201616",
+ "black - rogue" = "2b201b",
+ "black - midnight" = "1d1b2b",
+
+ "red - berry" = "48322a",
+ "red - wine" = "82534c",
+ "red - sunset" = "82462b",
+ "red - blood" = "822b2b",
+
+ "white - platinum" = "f8f3f3",
+ "white - silver" = "ddddc8",
+ "white - oceanid" = "141f1f"
+
+ ))
+
+/datum/species/abyssariad/changeling/random_name(gender,unique,lastname)
+ var/randname
+ if(unique)
+ if(gender == MALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") )
+ if(!findname(randname))
+ break
+ if(gender == FEMALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") )
+ if(!findname(randname))
+ break
+ else
+ if(gender == MALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") )
+ if(gender == FEMALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") )
+ randname += " Clanless"
+ return randname
+
+/datum/species/abyssariad/changeling/random_surname()
+ return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorlast.txt"))]"
+
+// Commented out. All this was a code FAILURE by my part, and I require help.
+/*
+/datum/species/abyssariad/changeling/can_wag_tongue(mob/living/carbon/human/H)
+ return ("kitsune_tongue" in mutant_bodyparts) || ("waggingkitsune_tongue" in mutant_bodyparts)
+/datum/species/abyssariad/changeling/is_wagging_tongue(mob/living/carbon/human/H)
+ return ("waggingkitsune_tongue" in mutant_bodyparts)
+/datum/species/abyssariad/changeling/start_wagging_tongue(mob/living/carbon/human/H)
+ if("changeling" in mutant_bodyparts)
+ mutant_bodyparts -= "kitsune_tongue"
+ mutant_bodyparts |= "waggingkitsune_tongue"
+ H.update_body()
+/datum/species/abyssariad/changeling/stop_wagging_tongue(mob/living/carbon/human/H)
+ if("waggingkitsune_tongue" in mutant_bodyparts)
+ mutant_bodyparts -= "waggingkitsune_tongue"
+ mutant_bodyparts |= "kitsune_tongue"
+ H.update_body()
+*/
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm
new file mode 100644
index 0000000000..6dcb95d37f
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm
@@ -0,0 +1,155 @@
+ /*==============*
+ * *
+ * ogrun *
+ * *
+ *===============*/
+
+// ( Not done yet. But hopefully something related to endurance. )
+// ( Not done yet, but hopefully something quite goreful. )
+
+/mob/living/carbon/human/species/abyssariad/ogrun //Remember to code in abyssal powers that forces Orcs to become Onis if it is used with specific purifying ways.
+ race = /datum/species/abyssariad/ogrun
+
+/datum/species/abyssariad/ogrun
+ name = "Ogrun"
+ id = "abyssariad"
+ desc = "Island Branched Champions
\
+ Created from Abyssor's purifying artifacts under the guide of other Abyssariads, \
+ the Ogrun are a stoic race, with stout and sturdy bodies equal to wide trunked trees. \
+ Just like the islands that sprinkled the ocean's surface, the Onis are individuals \
+ bearing the constant waves and storms of life. It is set in history that Onis were \
+ recovered orcs from the Bloody Apotheosis under the effects of Abyssor's Grey Dreams, \
+ and under mercy instead of carnage, were purified by Abyssal artifacts into the \
+ complete removal of their graggarious demonic corruption, unrooting the evil for the \
+ forevermore. They are rekindled souls that, when not belonging to military or clerical jobs, \
+ usually partakes in the society's industrial division, usually as blacksmiths, artisans and architects."
+
+ skin_tone_wording = "Championage Branch"
+
+ default_color = "FFFFFF"
+ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,STUBBLE)
+ inherent_traits = list(TRAIT_NOMOBSWAP)
+ default_features = list("mcolor" = "FFF", "ears" = "ogrun", "horns" = "onihorn")
+ mutant_bodyparts = list("ears","horns")
+ use_skintones = 1
+ possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, Onis are the newest ones on the fold, and they become Orcs mentally if they stray away from Abyssor.
+ max_age = 430 //The year Onis became part of the Abyssariads. Roughly after the Blood Apotheosis
+ skinned_type = /obj/item/stack/sheet/animalhide/human
+ disliked_food = NONE
+ liked_food = MEAT
+ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT
+ limbs_icon_m = 'icons/roguetown/mob/bodies/m/mt_muscular.dmi'
+ limbs_icon_f = 'icons/roguetown/mob/bodies/f/ft_muscular.dmi'
+ dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi'
+ dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_male.dmi'
+ hairyness = "t2"
+ use_m = TRUE
+ soundpack_m = /datum/voicepack/male/abyssariad
+ soundpack_f = /datum/voicepack/female/abyssariad
+ offset_features = list(OFFSET_ID = list(0,1), OFFSET_GLOVES = list(0,1), OFFSET_WRISTS = list(0,1),\
+ OFFSET_CLOAK = list(0,1), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \
+ OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,1), \
+ OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,1), OFFSET_PANTS = list(0,1), \
+ OFFSET_SHIRT = list(0,1), OFFSET_ARMOR = list(0,1), OFFSET_HANDS = list(0,1), OFFSET_UNDIES = list(0,1), \
+ OFFSET_ID_F = list(0,1), OFFSET_GLOVES_F = list(0,1), OFFSET_WRISTS_F = list(0,1), OFFSET_HANDS_F = list(0,1), \
+ OFFSET_CLOAK_F = list(0,1), OFFSET_FACEMASK_F = list(0,1), OFFSET_HEAD_F = list(0,1), \
+ OFFSET_FACE_F = list(0,1), OFFSET_BELT_F = list(0,1), OFFSET_BACK_F = list(0,1), \
+ OFFSET_NECK_F = list(0,1), OFFSET_MOUTH_F = list(0,1), OFFSET_PANTS_F = list(0,1), \
+ OFFSET_SHIRT_F = list(0,1), OFFSET_ARMOR_F = list(0,1), OFFSET_UNDIES_F = list(0,1))
+ specstats = list("strength" = 1, "perception" = -1, "intelligence" = -1, "constitution" = 2, "endurance" = 2, "speed" = 0, "fortune" = 0)
+ specstats_f = list("strength" = 1, "perception" = -1, "intelligence" = -1, "constitution" = 2, "endurance" = 2, "speed" = 0, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage.
+ enflamed_icon = "widefire"
+ minrace_pq = 0
+// 1(str)-0.5-0.5+1+1+0(spd)+0 = 2 = 2.0 specstats. Balance adjusted.
+//statsvalue reference by Dova
+//Strength and Speed are 1, everything else is .5, all races are +2 or +3 except Humen. So we keeping it as +2 for balance reasons.
+
+
+ customizers = list(
+ /datum/customizer/organ/eyes/humanoid,
+ /datum/customizer/bodypart_feature/hair/head/humanoid,
+ /datum/customizer/bodypart_feature/hair/facial/humanoid,
+ /datum/customizer/bodypart_feature/accessory,
+ )
+ body_markings = list(
+ /datum/body_marking/tonage,
+ )
+
+/datum/species/abyssariad/ogrun/check_roundstart_eligible()
+ return TRUE
+
+/datum/species/abyssariad/ogrun/get_skin_list()
+ return sortList(list(
+ "Defiant Oni" = SKIN_COLOR_DEFIANCE,
+ "Sanguine Oni" = SKIN_COLOR_DEFIANCE_SANGUINE,
+ "Stable Oni" = SKIN_COLOR_STABILITY,
+ "Intellectual Oni" = SKIN_COLOR_STABILITY_INTELLECT,
+ "Serene Oni" = SKIN_COLOR_SERENITY,
+ "Harmonious Oni" = SKIN_COLOR_SERENITY_PEACE,
+ "Audacious Oni" = SKIN_COLOR_AUDACY,
+ "Mysterious Oni" = SKIN_COLOR_AUDACY_MYSTERY,
+ "Recently Purified" = SKIN_COLOR_BLANK_PURIFICATED,
+ ))
+
+/datum/species/abyssariad/ogrun/get_hairc_list()
+ return sortList(list(
+ "black - oil" = "181a1d",
+ "black - cave" = "201616",
+ "black - rogue" = "2b201b",
+ "black - midnight" = "1d1b2b",
+
+ "brown - mud" = "362e25",
+ "brown - oats" = "584a3b",
+ "brown - grain" = "58433b",
+ "brown - soil" = "48322a",
+
+ "red - berry" = "48322a",
+ "red - wine" = "82534c",
+ "red - sunset" = "82462b",
+ "red - blood" = "822b2b",
+
+ "white - snow" = "dee9ed",
+ "white - ice" = "f4f4f4",
+
+ "blond - pale" = "9d8d6e",
+ "blond - dirty" = "88754f",
+ "blond - drywheat" = "8f8766",
+ "blond - strawberry" = "977033",
+
+ "white - platinum" = "f8f3f3",
+ "white - silver" = "ddddc8",
+ "white - oceanid" = "141f1f"
+
+
+ ))
+
+/datum/species/abyssariad/ogrun/get_span_language(datum/language/message_language)
+ if(!message_language)
+ return
+// if(message_language.type == /datum/language/abyssal)
+// return list(SPAN_ABYSSAL)
+ return message_language.spans
+
+/datum/species/abyssariad/ogrun/random_name(gender,unique,lastname)
+ var/randname
+ if(unique)
+ if(gender == MALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/onim.txt") )
+ if(!findname(randname))
+ break
+ if(gender == FEMALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/onif.txt") )
+ if(!findname(randname))
+ break
+ else
+ if(gender == MALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/onim.txt") )
+ if(gender == FEMALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/onif.txt") )
+ randname += " Clanless"
+ return randname
+
+/datum/species/abyssariad/ogrun/random_surname()
+ return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorm.txt.txt"))]"
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm
new file mode 100644
index 0000000000..7c0c56c393
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm
@@ -0,0 +1,150 @@
+ /*==============*
+ * *
+ * Skylancer *
+ * *
+ *===============*/
+
+// ( Not done yet. But hopefully temporary flying. )
+// ( Not done yet, but hopefully easily breakable bones. )
+
+/mob/living/carbon/human/species/abyssariad/skylancer
+ race = /datum/species/abyssariad/skylancer
+
+/datum/species/abyssariad/skylancer
+ name = "Skylancer"
+ id = "abyssariad"
+ desc = "Sky branched Champions
\
+ Molded from Abyssor's relentless skies, the avian denmorians are a inquisitive race with lithe bodies \
+ glaceful as the flows of the tides to navigate and glide across the rocky shores and crashing \
+ waves of their currently destroyed domain to provide information, supplies and messages in any \
+ battlefield. Just like the skies they branched from, they are vast and enduring - if not \
+ mysterious and deep, often appearing aloof and solitary to outsiders. Their society almost crumbled \
+ during The Bloody Apotheosis, but their bronze-age traditions lives on together with a deep \
+ hatred for all things Graggar. They are refined souls that, when not belonging to military or clerical jobs, \
+ usually partakes in the society's mercantile division, usually as merchants, bankers and gem lapidary. \
+ Their specialized syrinxs makes them complex vocalizators for spionage and disguise."
+
+ skin_tone_wording = "Championage Branch"
+
+ default_color = "FFFFFF"
+ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
+ inherent_traits = list(TRAIT_NOMOBSWAP)
+ default_features = list("mcolor" = "FFF", "ears" = "TenguS", "tail_human" = "TenguV")
+ use_skintones = 1
+ possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, if they become stray from Abyssor's will - they suffer severe dementia after some decades.
+ skinned_type = /obj/item/stack/sheet/animalhide/human
+ disliked_food = NONE
+ liked_food = NONE
+ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT
+ limbs_icon_m = 'icons/roguetown/kaizoku/abyssariad_bodies/male/mtan.dmi'
+ limbs_icon_f = 'icons/roguetown/kaizoku/abyssariad_bodies/female/ftan.dmi'
+ dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi'
+ dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_female.dmi'
+ hairyness = ""
+ mutant_bodyparts = list("ears","tail_human")
+ use_f = TRUE
+ soundpack_m = /datum/voicepack/male/abyssariad
+ soundpack_f = /datum/voicepack/female/abyssariad
+ offset_features = list(OFFSET_ID = list(0,2), OFFSET_GLOVES = list(0,0), OFFSET_WRISTS = list(0,1),\
+ OFFSET_CLOAK = list(0,2), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \
+ OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,2), \
+ OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,2), OFFSET_PANTS = list(0,2), \
+ OFFSET_SHIRT = list(0,2), OFFSET_ARMOR = list(0,2), OFFSET_HANDS = list(0,2), OFFSET_UNDIES = list(0,0), \
+ OFFSET_ID_F = list(0,-1), OFFSET_GLOVES_F = list(0,0), OFFSET_WRISTS_F = list(0,0), OFFSET_HANDS_F = list(0,0), \
+ OFFSET_CLOAK_F = list(0,0), OFFSET_FACEMASK_F = list(0,-1), OFFSET_HEAD_F = list(0,-1), \
+ OFFSET_FACE_F = list(0,-1), OFFSET_BELT_F = list(0,0), OFFSET_BACK_F = list(0,-1), \
+ OFFSET_NECK_F = list(0,-1), OFFSET_MOUTH_F = list(0,-1), OFFSET_PANTS_F = list(0,0), \
+ OFFSET_SHIRT_F = list(0,0), OFFSET_ARMOR_F = list(0,0), OFFSET_UNDIES_F = list(0,0))
+ specstats = list("strength" = -1, "perception" = 2, "intelligence" = 0, "constitution" = -2, "endurance" = 2, "speed" = 2, "fortune" = 0)
+ specstats_f = list("strength" = -1, "perception" = 2, "intelligence" = 0, "constitution" = -2, "endurance" = 2, "speed" = 2, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage.
+ enflamed_icon = "widefire"
+ mutanteyes = /obj/item/organ/eyes/rogue/tengu
+ minrace_pq = 0
+
+ customizers = list(
+ /datum/customizer/organ/eyes/humanoid,
+ /datum/customizer/bodypart_feature/hair/head/humanoid,
+ /datum/customizer/bodypart_feature/hair/facial/humanoid,
+ /datum/customizer/bodypart_feature/accessory,
+ )
+ body_markings = list(
+ /datum/body_marking/tonage,
+ )
+
+/datum/species/abyssariad/skylancer/get_span_language(datum/language/message_language)
+ if(!message_language)
+ return
+// if(message_language.type == /datum/language/abyssal)
+// return list(SPAN_ABYSSAL)
+ return message_language.spans
+
+/datum/species/abyssariad/skylancer/check_roundstart_eligible()
+ return TRUE
+
+/datum/species/abyssariad/skylancer/get_skin_list()
+ return sortList(list(
+ "Oathbound Muqian" = SKIN_COLOR_OATHBOUND_MUQIAN,
+ "Oathbound Kaizoku" = SKIN_COLOR_OATHBOUND_KAIZOKU,
+ "Oathbound Shuhen" = SKIN_COLOR_OATHBOUND_SHUHEN,
+ "Oathbound Linyou" = SKIN_COLOR_OATHBOUND_LINYOU,
+ "Oathbound Dustwalker" = SKIN_COLOR_OATHBOUND_DUSTWALKER,
+ "Warpcaster Muqian" = SKIN_COLOR_WARPCASTER_MUQIAN,
+ "Warpcaster Kaizoku" = SKIN_COLOR_WARPCASTER_KAIZOKU,
+ "Warpcaster Shuhen" = SKIN_COLOR_WARPCASTER_SHUHEN,
+ "Warpcaster Linyou" = SKIN_COLOR_WARPCASTER_LINYOU,
+ "Warpcaster Dustwalker" = SKIN_COLOR_WARPCASTER_DUSTWALKER,
+ "Peppersblow Warpcaster" = SKIN_COLOR_PEPPERSBLOW,
+ ))
+
+
+/datum/species/abyssariad/skylancer/get_hairc_list()
+ return sortList(list(
+ "blond - pale" = "9d8d6e",
+ "blond - dirty" = "88754f",
+ "blond - drywheat" = "d5ba7b",
+ "blond - strawberry" = "c69b71",
+
+ "brown - mud" = "362e25",
+ "brown - oats" = "584a3b",
+ "brown - grain" = "58433b",
+ "brown - soil" = "48322a",
+
+ "black - oil" = "181a1d",
+ "black - cave" = "201616",
+ "black - rogue" = "2b201b",
+ "black - midnight" = "1d1b2b",
+
+ "red - berry" = "48322a",
+ "red - wine" = "82534c",
+ "red - sunset" = "82462b",
+ "red - blood" = "822b2b",
+
+ "white - platinum" = "f8f3f3",
+ "white - silver" = "ddddc8",
+ "white - oceanid" = "141f1f"
+
+ ))
+
+/datum/species/abyssariad/skylancer/random_name(gender,unique,lastname)
+ var/randname
+ if(unique)
+ if(gender == MALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") )
+ if(!findname(randname))
+ break
+ if(gender == FEMALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") )
+ if(!findname(randname))
+ break
+ else
+ if(gender == MALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") )
+ if(gender == FEMALE)
+ randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") )
+ randname += " Clanless"
+ return randname
+
+/datum/species/abyssariad/skylancer/random_surname()
+ return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorm.txt.txt"))]"
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/undine.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/undine.dm
new file mode 100644
index 0000000000..2d20e13d93
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/undine.dm
@@ -0,0 +1,212 @@
+ /*==============*
+ * *
+ * Undine *
+ * *
+ *===============*/
+
+// ( Not done yet. But hopefully breathing underwater. )
+// ( Not sure what to give them as debuff tbh. )
+
+/mob/living/carbon/human/species/elf/undine
+ race = /datum/species/elf/undine
+
+/datum/species/elf/undine
+ name = "Undine"
+ id = "elf"
+ desc = "Undine
\
+ An amalgamation between Goblins and Elves that arrived at the Fog islands centuries \
+ ago, long corrupted by demonic essence and alchemical misconducts over generations, \
+ they now possess features that blends amphibious traits from Goblin's lineage, \
+ including moist, permeable skin and a large shell on their back. They are a small, \
+ water-dwelling creatures that inhabit rivers and ponds, often living tribalistic, \
+ hedonistic lives, feared by those aware of their mischievous, people-drowning nature. \
+ One may say these are misunderstood rituals of trust, others warns the others that it is \
+ a sacrifice to the spirits they believe that exists. They have a natural, biological \
+ antipathy and abhorrence to humens - and a mutual alliance with Abyssariads."
+ default_color = "FFFFFF"
+ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,OLDGREY)
+ inherent_traits = list(TRAIT_NOMOBSWAP)
+ default_features = list("mcolor" = "FFF", "ears" = "Kappae", "tail_human" = "Kappav")
+ use_skintones = 1
+ skinned_type = /obj/item/stack/sheet/animalhide/human
+ disliked_food = NONE
+ liked_food = NONE
+ use_f = TRUE
+ mutant_bodyparts = list("ears","tail_human")
+ possible_ages = list(AGE_ADULT, AGE_MIDDLEAGED, AGE_OLD)
+ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT
+ limbs_icon_m = 'icons/roguetown/kaizoku/abyssariad_bodies/male/ms_kappa.dmi'
+ limbs_icon_f = 'icons/roguetown/kaizoku/abyssariad_bodies/female/fs_kappa.dmi'
+ dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi'
+ dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_female.dmi'
+
+ hairyness = ""
+ use_f = FALSE
+ soundpack_m = /datum/voicepack/male/elf
+ soundpack_f = /datum/voicepack/female/elf
+ minrace_pq = 0
+
+ offset_features = list(OFFSET_ID = list(0,-1), OFFSET_GLOVES = list(0,-1), OFFSET_WRISTS = list(0,-1),\
+ OFFSET_CLOAK = list(0,-1), OFFSET_FACEMASK = list(0,-1), OFFSET_HEAD = list(0,-1), \
+ OFFSET_FACE = list(0,-1), OFFSET_BELT = list(0,-1), OFFSET_BACK = list(0,-1), \
+ OFFSET_NECK = list(0,-1), OFFSET_MOUTH = list(0,-1), OFFSET_PANTS = list(0,-1), \
+ OFFSET_SHIRT = list(0,-1), OFFSET_ARMOR = list(0,-1), OFFSET_HANDS = list(0,-1), OFFSET_UNDIES = list(0,-1), \
+ OFFSET_ID_F = list(0,-1), OFFSET_GLOVES_F = list(0,-1), OFFSET_WRISTS_F = list(0,-1), OFFSET_HANDS_F = list(0,-2), \
+ OFFSET_CLOAK_F = list(0,-1), OFFSET_FACEMASK_F = list(0,-2), OFFSET_HEAD_F = list(0,-2), \
+ OFFSET_FACE_F = list(0,-2), OFFSET_BELT_F = list(0,-1), OFFSET_BACK_F = list(0,-2), \
+ OFFSET_NECK_F = list(0,-2), OFFSET_MOUTH_F = list(0,-2), OFFSET_PANTS_F = list(0,-1), \
+ OFFSET_SHIRT_F = list(0,-1), OFFSET_ARMOR_F = list(0,-1), OFFSET_UNDIES_F = list(0,-1))
+ specstats = list("strength" = 0, "perception" = 0, "intelligence" = 0, "constitution" = 2, "endurance" = 2, "speed" = 0, "fortune" = 0)
+ specstats_f = list("strength" = -1, "perception" = 0, "intelligence" = 0, "constitution" = 2, "endurance" = 2, "speed" = 1, "fortune" = 0)
+ enflamed_icon = "widefire"
+ // Usual 0+0+0+1+1+0+0 = 2, switching only strength for speed, so they are balanced alike the abyssariads.
+
+/datum/species/elf/undine/check_roundstart_eligible()
+ return TRUE
+
+/datum/species/elf/undine/get_span_language(datum/language/message_language)
+ if(!message_language)
+ return
+// if(message_language.type == /datum/language/elvish)
+// return list(SPAN_SELF)
+// if(message_language.type == /datum/language/common)
+// return list(SPAN_SELF)
+ if(message_language.type == /datum/language/abyssal)
+ return list(SPAN_ABYSSAL)
+ return message_language.spans
+
+/datum/species/elf/undine/get_skin_list()
+ return sortList(list(
+ "Swamp Bodysnatcher" = SKIN_COLOR_SWAMPCLAN,
+ "Jungle Bodysnatcher" = SKIN_COLOR_JUNGLECLAN, //EDIT
+ "Leaf Skypiercer" = SKIN_COLOR_LEAFCLAN,
+ "Bog Skypiercer" = SKIN_COLOR_BOGCLAN, //EDIT
+ "Forest Boneclad" = SKIN_COLOR_FORESTCLAN,
+ "Shadow Boneclad" = SKIN_COLOR_SHADOWCLAN,
+ "Firebloom Riverdweller" = SKIN_COLOR_FIREBLOOMCLAN,
+ "Abyssal Riverdweller" = SKIN_COLOR_ABYSSALCLAN,
+ ))
+
+/datum/species/elf/undine/get_hairc_list()
+ return sortList(list(
+ "black - oil" = "181a1d",
+ "black - cave" = "201616",
+ "black - rogue" = "2b201b",
+ "black - midnight" = "1d1b2b",
+
+ "brown - mud" = "362e25",
+ "brown - oats" = "584a3b",
+ "brown - grain" = "58433b",
+ "brown - soil" = "48322a",
+
+ "red - berry" = "48322a",
+ "red - wine" = "82534c",
+ "red - sunset" = "82462b",
+ "red - blood" = "822b2b",
+
+ "green - grass" = "2a482c",
+ "green - swamp" = "3b482a",
+ "green - leaf" = "2f3c2e",
+ "green - moss" = "3b3c2a",
+ "white - silver" = "e8fdfd",
+ "white - oceanid" = "afdddd"
+ ))
+
+/datum/species/elf/undine/random_name(gender,unique,lastname)
+ var/randname
+ if(unique)
+ if(gender == MALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/elf/elfwm.txt") )
+ if(!findname(randname))
+ break
+ if(gender == FEMALE)
+ for(var/i in 1 to 10)
+ randname = pick( world.file2list("strings/rt/names/elf/elfwf.txt") )
+ if(!findname(randname))
+ break
+ else
+ if(gender == MALE)
+ randname = pick( world.file2list("strings/rt/names/elf/elfwm.txt") )
+ if(gender == FEMALE)
+ randname = pick( world.file2list("strings/rt/names/elf/elfwf.txt") )
+ return randname
+
+/datum/species/elf/undine/random_surname()
+ return " [pick(world.file2list("strings/rt/names/elf/elfwlast.txt"))]"
+
+/datum/species/elf/undine/get_accent(mob/living/carbon/human/H)
+ return strings("abyssal_replacement.json", "abyssal")
+
+/mob/proc/croak()
+ set name = "Croak"
+ set category = "Noises"
+ emote("croak")
+
+/datum/crafting_recipe/bandit_volfhelm
+ name = "(Bandit) Volfhelm"
+ time = 4 SECONDS
+ reqs = list(/obj/item/natural/fur/volf = 2)
+ result = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm
+ category = CAT_NONE
+
+/datum/species/elf/undine/get_accent(mob/living/carbon/human/H)
+ return strings("abyssal_replacement.json", "abyssal")
+
+// Unique Undine Recipes. They are actually meant to be RACIAL. But I'm too bad at doing that.
+
+/datum/crafting_recipe/reinforcedarmor //3-tier, medium armor. Requires troll horns.
+ name = "Reinforced Tribal Armor"
+ time = 8 SECONDS
+ reqs = list(/obj/item/alch/bone = 5, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 3, /obj/item/alch/horn = 1)
+ result = /obj/item/clothing/suit/roguetown/armor/ceramic/reinforced
+ category = CAT_NONE
+
+/datum/crafting_recipe/reinforcedhelmet //3-tier, medium armor. Requires troll horns.
+ name = "Reinforced Tribal Helmet"
+ time = 8 SECONDS
+ reqs = list(/obj/item/alch/bone = 3, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 2, /obj/item/alch/horn = 1) //Costs less since it is a helmet. Still requires troll horns.
+ result = /obj/item/clothing/head/roguetown/helmet/ceramic/reinforced
+ category = CAT_NONE
+
+/datum/crafting_recipe/mediumhelmet //2-tiers, medium armor. The materials can be adquired naturally by butchering.
+ name = "Medium Tribal helmet"
+ time = 4 SECONDS
+ reqs = list(/obj/item/alch/bone = 2, /obj/item/alch/sinew = 1, /obj/item/natural/hide = 1, /obj/item/natural/cloth = 4)
+ result = /obj/item/clothing/head/roguetown/helmet/ceramic/medium
+ category = CAT_NONE
+
+/datum/crafting_recipe/mediumarmor //2-tiers, medium armor. The materials can be adquired naturally by butchering.
+ name = "Medium Tribal Armor"
+ time = 4 SECONDS
+ reqs = list(/obj/item/alch/bone = 3, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 2, /obj/item/natural/cloth = 4)
+ result = /obj/item/clothing/suit/roguetown/armor/ceramic
+ category = CAT_NONE
+
+/datum/crafting_recipe/lighthelmet //1-tiers, light armor. The materials can be adquired naturally by butchering.
+ name = "Light Tribal Helmet"
+ time = 4 SECONDS
+ reqs = list(/obj/item/alch/bone = 1, /obj/item/natural/cloth = 4)
+ result = /obj/item/clothing/head/roguetown/helmet/ceramic
+ category = CAT_NONE
+
+/datum/crafting_recipe/lightarmor //1-tier, light armor. The materials can be adquired naturally by butchering.
+ name = "Light Tribal Armor"
+ time = 4 SECONDS
+ reqs = list(/obj/item/alch/bone = 2, /obj/item/natural/cloth = 4)
+ result = /obj/item/clothing/suit/roguetown/armor/ceramic/light
+ category = CAT_NONE
+
+/datum/crafting_recipe/obsidian_club
+ name = "Obsidian Club"
+ time = 4 SECONDS
+ reqs = list(/obj/item/grown/log/tree/lumber = 1, /obj/item/natural/stone = 4, /obj/item/ash = 1)
+ result = /obj/item/rogueweapon/mace/ararebo/obsidian
+ category = CAT_NONE
+
+/datum/crafting_recipe/obsidian_spear
+ name = "Obsidian Spear"
+ time = 4 SECONDS
+ reqs = list(/obj/item/grown/log/tree/lumber = 1, /obj/item/natural/cloth = 1, /obj/item/natural/stone = 2, /obj/item/ash = 1)
+ result = /obj/item/rogueweapon/polearm/spear/stone/obsidian
+ category = CAT_NONE
diff --git a/code/modules/mob/living/carbon/human/voicepacks/female/abyssariad.dm b/code/modules/mob/living/carbon/human/voicepacks/female/abyssariad.dm
new file mode 100644
index 0000000000..fa26c27fd7
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/voicepacks/female/abyssariad.dm
@@ -0,0 +1,65 @@
+/datum/voicepack/female/abyssariad/get_sound(soundin, modifiers)
+ var/used
+ switch(modifiers)
+ if("old")
+ used = getfold(soundin)
+ if("young")
+ used = getfyoung(soundin)
+ if("silenced")
+ used = getfsilenced(soundin)
+ if(!used)
+ switch(soundin)
+ if("fatigue")
+ used = 'sound/vo/female/abyssariad/fatigue.ogg'
+ if("firescream")
+ used = list('sound/vo/female/abyssariad/painscream1.ogg','sound/vo/female/abyssariad/painscream2.ogg')
+ if("gasp")
+ used = list('sound/vo/female/abyssariad/gasp.ogg','sound/vo/female/abyssariad/gasp2.ogg','sound/vo/female/abyssariad/gasp3.ogg','sound/vo/female/abyssariad/gasp4.ogg','sound/vo/female/abyssariad/gasp5.ogg','sound/vo/female/abyssariad/gasp6.ogg')
+ if("huh")
+ used = list('sound/vo/female/abyssariad/huh.ogg','sound/vo/female/abyssariad/huh1.ogg','sound/vo/female/abyssariad/huh2.ogg')
+ if("laugh")
+ used = list('sound/vo/female/abyssariad/laugh.ogg','sound/vo/female/abyssariad/laugh1.ogg','sound/vo/female/abyssariad/laugh3.ogg','sound/vo/female/abyssariad/laugh4.ogg','sound/vo/female/abyssariad/laugh5.ogg','sound/vo/female/abyssariad/laugh6.ogg')
+ if("groan")
+ used = list('sound/vo/female/abyssariad/groan.ogg','sound/vo/female/abyssariad/DISAPPOINTMENT.ogg','sound/vo/female/abyssariad/ah.ogg')
+ if("pain")
+ used = list('sound/vo/female/abyssariad/pain1.ogg','sound/vo/female/abyssariad/pain2.ogg','sound/vo/female/abyssariad/pain3.ogg','sound/vo/female/abyssariad/pain4.ogg','sound/vo/female/abyssariad/pain5.ogg','sound/vo/female/abyssariad/pain6.ogg')
+ if("embed")
+ used = list('sound/vo/female/abyssariad/paincrit1.ogg','sound/vo/female/abyssariad/paincrit2.ogg','sound/vo/female/abyssariad/paincrit3.ogg','sound/vo/female/abyssariad/paincrit4.ogg','sound/vo/female/abyssariad/paincrit5.ogg')
+ if("paincrit")
+ used = list('sound/vo/female/abyssariad/paincrit1.ogg','sound/vo/female/abyssariad/paincrit2.ogg','sound/vo/female/abyssariad/paincrit3.ogg','sound/vo/female/abyssariad/paincrit4.ogg','sound/vo/female/abyssariad/paincrit5.ogg')
+ if("painscream")
+ used = list('sound/vo/female/abyssariad/painscream1.ogg','sound/vo/female/abyssariad/painscream2.ogg','sound/vo/female/abyssariad/painscream3.ogg')
+ if("painmoan")
+ used = 'sound/vo/female/abyssariad/screamgasp.ogg'
+ if("scream")
+ used = list('sound/vo/female/abyssariad/scream1.ogg','sound/vo/female/abyssariad/scream2.ogg','sound/vo/female/abyssariad/scream3.ogg','sound/vo/female/abyssariad/scream4.ogg','sound/vo/female/abyssariad/scream5.ogg','sound/vo/female/abyssariad/scream6.ogg')
+ if("throatsing") //need to find a way to put a cooldown on this emote.
+ used = list('sound/vo/female/abyssariad/fthroatsing1.ogg','sound/vo/female/abyssariad/fthroatsing2.ogg','sound/vo/female/abyssariad/fthroatsing3.ogg','sound/vo/female/abyssariad/fthroatsing4.ogg')
+ if("breathgasp")
+ used = list('sound/vo/female/abyssariad/deathgasp.ogg','sound/vo/female/abyssariad/deathgasp2.ogg','sound/vo/female/abyssariad/deathgasp3.ogg')
+ if("chuckle")
+ used = list('sound/vo/female/abyssariad/chuckle3.ogg','sound/vo/female/abyssariad/chuckle4.ogg','sound/vo/female/abyssariad/chuckle5.ogg','sound/vo/female/abyssariad/chuckle6.ogg')
+ if("giggle")
+ used = list('sound/vo/female/abyssariad/chuckle1.ogg','sound/vo/female/abyssariad/chuckle2.ogg')
+ if("grumble") //need to find a way to make a bigger cooldown on this one. This emote is long.
+ if(prob(5))
+ used = 'sound/vo/female/abyssariad/wawawa.ogg' //I do not fear being murdered during my sleep.
+ else
+ used = list('sound/vo/female/abyssariad/grumble1.ogg','sound/vo/female/abyssariad/grumble2.ogg','sound/vo/female/abyssariad/grumble3.ogg','sound/vo/female/abyssariad/grumble4.ogg')
+ if("jump")
+ used = list('sound/vo/female/abyssariad/jump1.ogg','sound/vo/female/abyssariad/jump2.ogg','sound/vo/female/abyssariad/jump3.ogg')
+ if("leap")
+ used = list('sound/vo/female/abyssariad/jump4.ogg','sound/vo/female/abyssariad/jump5.ogg','sound/vo/female/abyssariad/jump6.ogg')
+ if("rage")
+ used = list('sound/vo/female/abyssariad/angry1.ogg','sound/vo/female/abyssariad/angry2.ogg')
+ if("sexmoanlight")
+ used = list('sound/vo/female/abyssariad/smoan1.ogg','sound/vo/female/abyssariad/smoan2.ogg','sound/vo/female/abyssariad/smoan3.ogg','sound/vo/female/abyssariad/smoan4.ogg','sound/vo/female/abyssariad/smoan5.ogg','sound/vo/female/abyssariad/smoan6.ogg','sound/vo/female/abyssariad/smoan7.ogg','sound/vo/female/abyssariad/smoan8.ogg','sound/vo/female/abyssariad/smoan9.ogg','sound/vo/female/abyssariad/smoan10.ogg')
+ if("sexmoanhvy")
+ used = list('sound/vo/female/abyssariad/moanheavy1.ogg','sound/vo/female/abyssariad/moanheavy2.ogg','sound/vo/female/abyssariad/moanheavy3.ogg','sound/vo/female/abyssariad/moanheavy4.ogg','sound/vo/female/abyssariad/moanheavy5.ogg','sound/vo/female/abyssariad/moanheavy6.ogg','sound/vo/female/abyssariad/moanheavy7.ogg','sound/vo/female/abyssariad/moanheavy8.ogg','sound/vo/female/abyssariad/moanheavy9.ogg','sound/vo/female/abyssariad/moanheavy10.ogg','sound/vo/female/abyssariad/moanheavy11.ogg','sound/vo/female/abyssariad/moanheavy12.ogg','sound/vo/female/abyssariad/moanheavy13.ogg','sound/vo/female/abyssariad/moanheavy14.ogg','sound/vo/female/abyssariad/moanheavy15.ogg','sound/vo/female/abyssariad/moanheavy16.ogg','sound/vo/female/abyssariad/moanheavy17.ogg','sound/vo/female/abyssariad/moanheavy18.ogg','sound/vo/female/abyssariad/moanheavy19.ogg','sound/vo/female/abyssariad/moanheavy20.ogg')
+ if("moan")
+ used = list('sound/vo/female/abyssariad/moan1.ogg','sound/vo/female/abyssariad/moan2.ogg','sound/vo/female/abyssariad/moan4.ogg','sound/vo/female/abyssariad/moan5.ogg')
+ if("birdcall")
+ used = list('sound/vo/female/abyssariad/moan1.ogg','sound/vo/female/abyssariad/moan2.ogg','sound/vo/female/abyssariad/moan4.ogg','sound/vo/female/abyssariad/moan5.ogg')
+ if(!used) //we haven't found a racial specific sound so use generic
+ used = ..(soundin)
+ return used
diff --git a/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm b/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm
index d9b1abacbf..1dc4f4059a 100644
--- a/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm
+++ b/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm
@@ -33,6 +33,8 @@
used = list('sound/vo/female/elf/painscream (1).ogg','sound/vo/female/elf/painscream (2).ogg')
if("scream")
used = list('sound/vo/female/elf/scream (1).ogg','sound/vo/female/elf/scream (2).ogg','sound/vo/female/elf/scream (3).ogg','sound/vo/female/elf/scream (4).ogg')
+ if("croak") //undine only.
+ used = list('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall2.ogg','sound/vo/general/undinecall3.ogg','sound/vo/general/undinecall4.ogg','sound/vo/general/undinecall5.ogg','sound/vo/general/undinecall6.ogg')
if(!used) //we haven't found a racial specific sound so use generic
used = ..(soundin)
diff --git a/code/modules/mob/living/carbon/human/voicepacks/male/abyssariad.dm b/code/modules/mob/living/carbon/human/voicepacks/male/abyssariad.dm
new file mode 100644
index 0000000000..983a4b0532
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/voicepacks/male/abyssariad.dm
@@ -0,0 +1,58 @@
+/datum/voicepack/male/abyssariad/get_sound(soundin, modifiers)
+ var/used
+ switch(modifiers)
+ if("old")
+ used = getmold(soundin)
+ if("silenced")
+ used = getmsilenced(soundin)
+ if(!used)
+ switch(soundin)
+ if("chuckle")
+ used = list('sound/vo/male/abyssariad/chuckle(1).ogg','sound/vo/male/abyssariad/chuckle(2).ogg','sound/vo/male/abyssariad/chuckle(3).ogg','sound/vo/male/abyssariad/chuckle(4).ogg','sound/vo/male/abyssariad/chuckle(5).ogg')
+ if("cry")
+ used = list('sound/vo/male/abyssariad/cry(1).ogg','sound/vo/male/abyssariad/cry(3).ogg','sound/vo/male/abyssariad/cry(4).ogg')
+ if("embed")
+ used = list('sound/vo/male/abyssariad/painembed(1).ogg','sound/vo/male/abyssariad/painembed(2).ogg','sound/vo/male/abyssariad/painembed(3).ogg','sound/vo/male/abyssariad/painembed(4).ogg')
+ if("firescream")
+ used = list('sound/vo/male/abyssariad/painscream(1).ogg','sound/vo/male/abyssariad/painscream(2).ogg','sound/vo/male/abyssariad/painscream(3).ogg','sound/vo/male/abyssariad/painscream(4).ogg','sound/vo/male/abyssariad/painscream(5).ogg','sound/vo/male/abyssariad/painscream(6).ogg')
+ if("gasp")
+ used = list('sound/vo/male/abyssariad/gasp(1).ogg','sound/vo/male/abyssariad/gasp(2).ogg','sound/vo/male/abyssariad/gasp(3).ogg')
+ if("grumble")
+ used = 'sound/vo/male/abyssariad/rude.ogg'
+ if("haltyell")
+ used = used = list('sound/vo/male/abyssariad/halt(1).ogg','sound/vo/male/abyssariad/halt(2).ogg','sound/vo/male/abyssariad/halt(3).ogg')
+ if("huh")
+ used = list('sound/vo/male/abyssariad/huh(1).ogg','sound/vo/male/abyssariad/huh(2).ogg','sound/vo/male/abyssariad/huh(3).ogg')
+ if("laugh")
+ used = list('sound/vo/male/abyssariad/laugh(1).ogg','sound/vo/male/abyssariad/laugh(2).ogg','sound/vo/male/abyssariad/laugh(3).ogg','sound/vo/male/abyssariad/laugh(4).ogg','sound/vo/male/abyssariad/laugh(5).ogg','sound/vo/male/abyssariad/laugh(6).ogg','sound/vo/male/abyssariad/laugh(7).ogg','sound/vo/male/abyssariad/laugh(8).ogg')
+ if("pain")
+ used = list('sound/vo/male/abyssariad/pain(1).ogg','sound/vo/male/abyssariad/pain(2).ogg','sound/vo/male/abyssariad/pain(3).ogg','sound/vo/male/abyssariad/pain(4).ogg','sound/vo/male/abyssariad/pain(5).ogg','sound/vo/male/abyssariad/pain(6).ogg','sound/vo/male/abyssariad/pain(7).ogg','sound/vo/male/abyssariad/pain(8).ogg')
+ if("paincrit")
+ used = list('sound/vo/male/abyssariad/paincrit(1).ogg','sound/vo/male/abyssariad/paincrit(2).ogg','sound/vo/male/abyssariad/paincrit(3).ogg')
+ if("painmoan")
+ used = list('sound/vo/male/abyssariad/paincrit(1).ogg','sound/vo/male/abyssariad/paincrit(2).ogg','sound/vo/male/abyssariad/paincrit(3).ogg')
+ if("painscream")
+ used = list('sound/vo/male/abyssariad/painscream(1).ogg','sound/vo/male/abyssariad/painscream(2).ogg','sound/vo/male/abyssariad/painscream(3).ogg','sound/vo/male/abyssariad/painscream(4).ogg','sound/vo/male/abyssariad/painscream(5).ogg','sound/vo/male/abyssariad/painscream(6).ogg')
+ if("rage")
+ used = list('sound/vo/male/abyssariad/rage1.ogg','sound/vo/male/abyssariad/rage2.ogg','sound/vo/male/abyssariad/rage3.ogg','sound/vo/male/abyssariad/rage4.ogg')
+ if("scream")
+ used = list('sound/vo/male/abyssariad/scream(1).ogg','sound/vo/male/abyssariad/scream(2).ogg','sound/vo/male/abyssariad/scream(3).ogg')
+ if("hmm") //used = list('sound/vo/male/abyssariad/huh.ogg','sound/vo/male/abyssariad/huh(2).ogg')
+ used = list('sound/vo/male/abyssariad/huh(4).ogg','sound/vo/male/abyssariad/huh(5).ogg','sound/vo/male/abyssariad/huh(6).ogg')
+ if("jump")
+ used = list('sound/vo/male/abyssariad/jump(1).ogg','sound/vo/male/abyssariad/jump(2).ogg','sound/vo/male/abyssariad/jump(3).ogg')
+ if("leap")
+ used = list('sound/vo/male/abyssariad/attack1.ogg','sound/vo/male/abyssariad/attack2.ogg')
+ if("yoo")
+ used = 'sound/vo/male/abyssariad/yoooo.ogg'
+ if("throatsing") //need to find a way to make a bigger cooldown on this one. This emote is long.
+ if(prob(5))
+ used = 'sound/vo/male/abyssariad/throatsing_rare.ogg' //I am not afraid. I know gundam will hate me for this one. But trust me, it's worth it
+ else
+ used = list('sound/vo/male/abyssariad/throatsing1.ogg','sound/vo/male/abyssariad/mthroatsing1.ogg','sound/vo/male/abyssariad/mthroatsing2.ogg','sound/vo/male/abyssariad/mthroatsing3.ogg','sound/vo/male/abyssariad/mthroatsing4.ogg','sound/vo/male/abyssariad/mthroatsing5.ogg')
+ if("birdcall")
+ used = list('sound/vo/general/tengucall1.ogg','sound/vo/general/tengucall2.ogg','sound/vo/general/tengucall3.ogg','sound/vo/general/tengucall4.ogg','sound/vo/general/tengucall5.ogg','sound/vo/general/tengucall5.ogg','sound/vo/general/tengucall6.ogg','sound/vo/general/tengucall7.ogg','sound/vo/general/tengucall8.ogg','sound/vo/general/tengucall9.ogg','sound/vo/general/tengucall10.ogg','sound/vo/general/tengucall12.ogg','sound/vo/general/tengucall13.ogg','sound/vo/general/tengucall14.ogg','sound/vo/general/brazilianmeme.ogg')
+
+ if(!used)
+ used = ..(soundin)
+ return used
diff --git a/code/modules/mob/living/carbon/human/voicepacks/male/elf.dm b/code/modules/mob/living/carbon/human/voicepacks/male/elf.dm
index e740adf361..d2ba6292fa 100644
--- a/code/modules/mob/living/carbon/human/voicepacks/male/elf.dm
+++ b/code/modules/mob/living/carbon/human/voicepacks/male/elf.dm
@@ -39,6 +39,8 @@
used = list('sound/vo/male/elf/rage (1).ogg','sound/vo/male/elf/rage (2).ogg')
if("scream")
used = list('sound/vo/male/elf/scream (1).ogg','sound/vo/male/elf/scream (2).ogg')
+ if("croak") //undine only.
+ used = list('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall2.ogg','sound/vo/general/undinecall3.ogg','sound/vo/general/undinecall4.ogg','sound/vo/general/undinecall5.ogg','sound/vo/general/undinecall6.ogg')
if(!used)
used = ..(soundin)
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 2ee517a44c..d67fe81b2c 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -1381,3 +1381,21 @@
else
to_chat(user, "You're incapable of slapping in your current state.")
*/
+
+/datum/emote/living/throatsing
+ key = "throatsing"
+ message = "murmurs a guttural, throaty warble."
+ emote_type = EMOTE_AUDIBLE
+ only_forced_audio = TRUE
+
+/datum/emote/living/croaks
+ key = "croaks"
+ message = "croaks."
+ emote_type = EMOTE_AUDIBLE
+ only_forced_audio = TRUE
+
+/datum/emote/living/birdcall
+ key = "birdcall"
+ message = "performs a enthusiastic Skylancer call."
+ emote_type = EMOTE_AUDIBLE
+ only_forced_audio = TRUE
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 3e77965563..3a95b53080 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1069,18 +1069,53 @@
if(stat)
return
surrendering = 1
- if(alert(src, "Yield in surrender?",,"YES","NO") == "YES")
- changeNext_move(CLICK_CD_EXHAUSTED)
- var/image/flaggy = image('icons/effects/effects.dmi',src,"surrender",ABOVE_MOB_LAYER)
- flaggy.appearance_flags = RESET_TRANSFORM|KEEP_APART
- flaggy.transform = null
- flaggy.pixel_y = 12
- flick_overlay_view(flaggy, src, 150)
- Stun(150)
- src.visible_message("[src] yields!")
- playsound(src, 'sound/misc/surrender.ogg', 100, FALSE, -1)
- sleep(150)
- surrendering = 0
+ if(ishuman(src))
+ var/mob/living/carbon/human/C = src
+ if((C.dna.species?.id == "abyssariad") && (!C.burakumin))//Non-burakumin Abyssariads cannot surrender. Burakumins follows no Abyssal code, so they can.
+ if(C.stat != CONSCIOUS && !C.handcuffed)
+ to_chat(src, "You cannot do this ritual while unable to reach your chest.")
+ return
+ else
+ if(alert(src, "Commit ritualistic disembowelment?",,"YES","NO") == "YES")
+ var/obj/item/inhand = C.get_active_held_item()
+ if(inhand)
+ if(istype(inhand, /obj/item/rogueweapon/huntingknife || /obj/item/rogueweapon/sword))
+ say("Hesitation is DEFEAT!")
+ visible_message(" used [inhand] to carve their own guts before splitting themselves apart!", \
+ "You voluntarily sever your boundaries to this consciousness as abyssal vitae spills out in waves.", null, null, pulledby)
+ to_chat(C, "Your ancestors honors your sacrifice.")
+ apply_damage(250, BRUTE, "chest", run_armor_check("chest", "melee", damage = 10))
+ spill_organs(FALSE, FALSE, TRUE)
+ spawn_gibs()
+ adjust_triumphs(1)
+ else
+ to_chat(C, "Traditionally, you should use a tanto for that. But any knife or sword will do.")
+ else
+ if(C.champion) //Champions requires no weapon for this ritual. Why? They are badasses, of course. That's the entire explanation.
+ say("Hesitation is DEFEAT!")
+ visible_message("'s claws carves their own guts before splitting themselves apart!", \
+ "You voluntarily sever your boundaries to this consciousness as abyssal vitae spills out in waves.", null, null, pulledby)
+ to_chat(C, "Your ancestors honors your sacrifice.")
+ apply_damage(250, BRUTE, "chest", run_armor_check("chest", "melee", damage = 10))
+ spill_organs(FALSE, FALSE, TRUE)
+ spawn_gibs()
+ adjust_triumphs(1)
+ else
+ to_chat(C, "You must hold a bladed weapon to perform this ritual.")
+ surrendering = 0
+ else
+ if(alert(src, "Yield in surrender?",,"YES","NO") == "YES")
+ changeNext_move(CLICK_CD_EXHAUSTED)
+ var/image/flaggy = image('icons/effects/effects.dmi',src,"surrender",ABOVE_MOB_LAYER)
+ flaggy.appearance_flags = RESET_TRANSFORM|KEEP_APART
+ flaggy.transform = null
+ flaggy.pixel_y = 12
+ flick_overlay_view(flaggy, src, 150)
+ Stun(150)
+ src.visible_message("[src] yields!")
+ playsound(src, 'sound/misc/surrender.ogg', 100, FALSE, -1)
+ sleep(150)
+ surrendering = 0
/mob/proc/stop_attack(message = FALSE)
@@ -1470,6 +1505,11 @@
//Mobs on Fire
/mob/living/proc/IgniteMob()
if(fire_stacks > 0 && !on_fire)
+ var/obj/item/mainhand = get_active_held_item()
+ if(istype(mainhand, /obj/item/rogueweapon/sword/dragonslayer)) //Since fire immunity by armor didn't work, this will. Feel free to improve my code.
+ src.visible_message("[src]'s sword reflects the fire off!", \
+ "The abyssal blessings protected me from the fire!")
+ return FALSE
testing("ignis")
on_fire = 1
src.visible_message("[src] catches fire!", \
@@ -1871,7 +1911,7 @@
var/obj/item/restraints/legcuffs/beartrap/M = O
if(isturf(M.loc) && M.armed)
found_ping(get_turf(M), client, "trap")
- if(istype(O, /obj/structure/flora/roguegrass/maneater/real))
+ if(istype(O, /obj/structure/flora/roguegrass/maneater/real || /obj/structure/abyssaltomb))
found_ping(get_turf(O), client, "trap")
/proc/found_ping(atom/A, client/C, state)
diff --git a/code/modules/mob/living/roguetownprocs.dm b/code/modules/mob/living/roguetownprocs.dm
index a92e8eb869..99ddef25f0 100644
--- a/code/modules/mob/living/roguetownprocs.dm
+++ b/code/modules/mob/living/roguetownprocs.dm
@@ -161,6 +161,10 @@
offhand_defense += (offhand.wdefense * WEAPON_DEFENSE_WEIGHT)
if(istype(offhand, /obj/item/rogueweapon/shield))
force_shield = TRUE
+ if(istype(offhand, /obj/item/rogueweapon/knife/hunting/sai) && istype(mainhand, /obj/item/rogueweapon/knife/hunting/sai))
+ offhand_defense += (8 * WEAPON_DEFENSE_WEIGHT) // Sai's wdefense x 2
+ else
+ offhand_defense += (offhand.wdefense * WEAPON_DEFENSE_WEIGHT)
if(!force_shield)
if(mainhand_defense >= offhand_defense)
highest_defense += mainhand_defense
diff --git a/code/modules/mob/living/simple_animal/hostile/roguetown/fogfrog.dm b/code/modules/mob/living/simple_animal/hostile/roguetown/fogfrog.dm
new file mode 100644
index 0000000000..a425643aec
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/roguetown/fogfrog.dm
@@ -0,0 +1,138 @@
+/obj/item/reagent_containers/food/snacks/fogdart
+ name = "fogdart frog"
+ desc = "the Abyssariad tree frog capable of living in a variety of habitats on Fog Islands, but is more well know for their sleep-inducing glands. It has enough for five projectiles."
+ icon_state = "fogfrog"
+ icon = 'icons/roguetown/kaizoku/mobs/fogfrog.dmi'
+ list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/fogblight = 25)
+ verb_say = "croaks"
+ verb_yell = "croaks"
+ foodtype = RAW
+ obj_flags = CAN_BE_HIT
+ var/dead = FALSE
+ eat_effect = /datum/status_effect/debuff/uncookedfood
+ fried_type = /obj/item/reagent_containers/food/snacks/rogue/friedfrog
+ max_integrity = 10
+ sellprice = 0
+ rotprocess = null
+
+/obj/item/reagent_containers/food/snacks/fogdart/onbite(mob/living/carbon/human/user)
+ if(loc == user)
+ if(user.mind && user.mind.has_antag_datum(/datum/antagonist/vampirelord))
+ if(dead)
+ to_chat(user, "It's dead.")
+ return
+ var/datum/antagonist/vampirelord/VD = user.mind.has_antag_datum(/datum/antagonist/vampirelord)
+ if(do_after(user, 30, target = src))
+ user.visible_message("[user] drinks from [src]!",\
+ "I drink from [src]!")
+ playsound(user.loc, 'sound/misc/drink_blood.ogg', 100, FALSE, -4)
+ VD.handle_vitae(50)
+ dead = TRUE
+ playsound(get_turf(user), 'sound/vo/mobs/rat/rat_death.ogg', 100, FALSE, -1)
+ icon_state = "srat1"
+ rotprocess = SHELFLIFE_SHORT
+ var/mob/living/carbon/V = user
+ V.add_stress(/datum/stressevent/drankrat)
+ return
+ return ..()
+
+/obj/item/reagent_containers/food/snacks/rogue/friedfrog
+ name = "fried frog"
+ desc = "are you sure you are going to eat this?"
+ icon = 'icons/roguetown/items/food.dmi'
+ icon_state = "fogfrog_cooked"
+ bitesize = 2
+ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/fogblight = 10) //heat denaturalized the poison, so it is less harmful. Still bad.
+ tastes = list("stupid decisions" = 1)
+ w_class = WEIGHT_CLASS_TINY
+ eat_effect = null
+ rotprocess = SHELFLIFE_SHORT
+ sellprice = 0
+
+/obj/item/reagent_containers/food/snacks/fogdart/burning(input as num)
+ if(!dead)
+ if(burning >= burntime)
+ dead = TRUE
+ playsound(src, 'sound/vo/mobs/rat/rat_death.ogg', 100, FALSE, -1)
+ icon_state = "fogfrog_fried"
+ rotprocess = SHELFLIFE_SHORT
+ . = ..()
+
+/obj/item/reagent_containers/food/snacks/fogdart/Crossed(mob/living/L)
+ . = ..()
+ if(L)
+ if(!dead)
+ if(isturf(loc))
+ dir = pick(GLOB.cardinals)
+ step(src, dir)
+// playsound(src, pick('sound/vo/mobs/rat/rat_life.ogg','sound/vo/mobs/rat/rat_life2.ogg','sound/vo/mobs/rat/rat_life3.ogg'), 100, TRUE, -1)
+
+/obj/item/reagent_containers/food/snacks/fogdart/dead
+ icon_state = "fogfrog_dead"
+ dead = TRUE
+ rotprocess = SHELFLIFE_SHORT
+
+/obj/item/reagent_containers/food/snacks/fogdart/Initialize()
+ . = ..()
+ START_PROCESSING(SSobj, src)
+ if(dead)
+ icon_state = "fogfrog_dead"
+ rotprocess = SHELFLIFE_SHORT
+
+/obj/item/reagent_containers/food/snacks/fogdart/attack_hand(mob/user)
+ if(isliving(user))
+ var/mob/living/L = user
+ if(!(L.mobility_flags & MOBILITY_PICKUP))
+ return
+ user.changeNext_move(CLICK_CD_MELEE)
+ if(dead)
+ ..()
+ else
+ if(!isturf(loc))
+ if(isliving(user))
+ var/mob/living/L = user
+ if(prob(L.STASPD * 1.5))
+ ..()
+ else
+ dir = pick(GLOB.cardinals)
+ step(src, dir)
+ to_chat(user, "I managed to grab it, but it slides away!")
+ playsound(src, pick('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall1.ogg','sound/vo/general/undinecall2.ogg'), 100, TRUE, -1)
+ return
+ ..()
+
+/obj/item/reagent_containers/food/snacks/fogdart/process()
+ ..()
+ if(dead)
+ return
+ if(!isturf(loc)) //no floating out of bags
+ return
+ if(prob(5))
+ playsound(src, pick('sound/vo/general/undinecall3.ogg','sound/vo/general/undinecall4.ogg','sound/vo/general/undinecall5.ogg'), 100, TRUE, -1)
+ if(prob(75) && !dead)
+ dir = pick(GLOB.cardinals)
+ step(src, dir)
+
+/obj/item/reagent_containers/food/snacks/fogdart/obj_destruction(damage_flag)
+ //..()
+ if(!dead)
+ new /obj/item/reagent_containers/food/snacks/fogdart/dead(src)
+ playsound(src, 'sound/vo/general/undinecall6.ogg', 100, FALSE, -1)
+ qdel(src)
+ return 1
+ . = ..()
+
+/obj/item/reagent_containers/food/snacks/fogdart/attackby(obj/item/I, mob/user, params)
+ if(!dead)
+ if(isliving(user))
+ var/mob/living/L = user
+ if(prob(L.STASPD * 2))
+ ..()
+ else
+ if(isturf(loc))
+ dir = pick(GLOB.cardinals)
+ step(src, dir)
+ to_chat(user, "The vermin dodges my attack.")
+ playsound(src, pick('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall1.ogg','sound/vo/general/undinecall2.ogg'), 100, TRUE, -1)
+ return
+ ..()
diff --git a/code/modules/mob/living/simple_animal/rogue/game/horse.dm b/code/modules/mob/living/simple_animal/rogue/game/horse.dm
new file mode 100644
index 0000000000..25d6e4a487
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/rogue/game/horse.dm
@@ -0,0 +1,139 @@
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/update_icon()
+ cut_overlays()
+ ..()
+ if(stat != DEAD)
+ if(ssaddle)
+ var/mutable_appearance/saddlet = mutable_appearance(icon, "saddle", 4.3)
+ add_overlay(saddlet)
+ if(has_buckled_mobs())
+ var/mutable_appearance/mounted = mutable_appearance(icon, "horse_mounted", 4.3)
+ add_overlay(mounted)
+
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tamed(mob/user)
+ ..()
+ 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, 12), TEXT_SOUTH = list(0, 12), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 12))) //horses are 6 pixels taller.
+ 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/horse
+ icon = 'icons/roguetown/kaizoku/mobs/horse.dmi'
+ name = "fogbeast"
+ desc = "A huge and elegant beast that gallops across open fields with hooves deadlier than any sword. Long extinct from the mainlands, it is the favourite beasts of Fog Islanders and Heartfelteans."
+ icon_state = "horse"
+ icon_living = "horse"
+ icon_dead = "horse_dead"
+ icon_gib = "horse_gib"
+ faction = list("saiga")
+ gender = FEMALE
+ footstep_type = FOOTSTEP_MOB_SHOE
+ emote_see = list("grazes on grass.", "whinnies softly.", "stamps a hoof.", "gazes upon the horizon.", "'s tail whips mosquitos away.")
+ move_to_delay = 7
+ botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 12,
+ /obj/item/natural/hide = 1,
+ /obj/item/alch/bone = 1)
+ 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 = 3,
+ /obj/item/natural/head/saiga = 1,
+ /obj/item/alch/bone = 2)
+ perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 5,
+ /obj/item/reagent_containers/food/snacks/fat = 2,
+ /obj/item/natural/hide = 4,
+ /obj/item/alch/bone = 3,
+ /obj/item/natural/head/saiga = 1)
+
+ health = HORSE_UNGENDERED_HEALTH
+ maxHealth = HORSE_UNGENDERED_HEALTH
+ food_type = list(/obj/item/reagent_containers/food/snacks/produce/wheat,
+ /obj/item/reagent_containers/food/snacks/produce/oat,
+ /obj/item/reagent_containers/food/snacks/produce/jacksberry,
+ /obj/item/reagent_containers/food/snacks/produce/apple)
+ tame_chance = 40 // Foglander horses are easier to tame due to centuries of domestication, but you won't see them naturally on Stonekeep.
+ bonus_tame_chance = 15
+ pooptype = /obj/item/natural/poo/horse
+
+ base_intents = list(/datum/intent/simple/headbutt)
+ attack_sound = list('sound/vo/mobs/saiga/attack (1).ogg','sound/vo/mobs/saiga/attack (2).ogg')
+ attack_verb_continuous = "headbutts"
+ attack_verb_simple = "headbutt"
+ melee_damage_lower = 20
+ melee_damage_upper = 30
+ retreat_distance = 10
+ minimum_distance = 10
+ STASPD = 15
+ STACON = 12
+ STASTR = 11
+ childtype = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/horsekid
+ can_buckle = TRUE
+ buckle_lying = FALSE
+ can_saddle = TRUE
+ aggressive = TRUE
+
+
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/Initialize()
+ . = ..()
+ if(prob(50))
+ gender = MALE
+
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tamed(mob/user)
+ ..()
+ 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/horse/horsekid
+ icon = 'icons/roguetown/kaizoku/mobs/horse.dmi'
+ name = "fogbeast calf"
+ icon_state = "horsekid"
+ icon_living = "horsekid"
+ icon_dead = "horsekid_dead"
+ icon_gib = "horsekid_gib"
+
+ animal_species = null
+ gender = NEUTER //Sex will only matter when it gets initializated.
+ pass_flags = PASSTABLE | PASSMOB
+ mob_size = MOB_SIZE_SMALL
+
+ botched_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/mince = 1)
+ butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1)
+ perfect_butcher_results = list(/obj/item/reagent_containers/food/snacks/rogue/meat/steak = 1,
+ /obj/item/natural/hide = 1)
+
+ health = CALF_HEALTH
+ maxHealth = CALF_HEALTH
+
+ base_intents = list(/datum/intent/simple/headbutt)
+ melee_damage_lower = 1
+ melee_damage_upper = 6
+
+ STACON = 5
+ STASTR = 5
+ STASPD = 5
+ defprob = 50
+ pixel_x = -16
+ adult_growth = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse
+ tame = TRUE
+ can_buckle = FALSE
+ aggressive = FALSE
+
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame
+ tame = TRUE
+
+/mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame/saddled/Initialize()
+ . = ..()
+ var/obj/item/natural/saddle/S = new(src)
+ ssaddle = S
+ update_icon()
diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
index 81030f971d..8c942c091c 100644
--- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
+++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
@@ -5,6 +5,7 @@
#define SPIDER_HEALTH 120
#define VOLF_HEALTH 110
#define SHADE_HEALTH 75
+#define HORSE_UNGENDERED_HEALTH 200
#define ROUS_HEALTH 35
#define FEMALE_MOOBEAST_HEALTH 100
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 3bbab26886..81e24d81d2 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -502,8 +502,24 @@
qdel(mmb_intent)
input = null
mmb_intent = null
+ if(ishuman(src))
+ var/mob/living/carbon/human/K = src
+ if(K.dna.species.name == "Changeling")
+ //K.mawchange = FALSE
+ //K.overlay_eldritchjaw = 1 // disactivates jaw - overlays are BAD for that. Don't use it.
+ //emote.wag_mouth = FALSE //I can't make a wag system.
+ visible_message("[src]'s face knits together.")
+ playsound(src.loc, 'sound/combat/fracture/fracturewet (2).ogg', 50, 1)
else
mmb_intent = new INTENT_BITE(src)
+ if(ishuman(src))
+ var/mob/living/carbon/human/K = src
+ if(K.dna.species.name == "Changeling")
+ //K.mawchange = TRUE
+ //K.overlay_eldritchjaw = 0 // activates jaw - overlays are BAD for that. Don't use it.
+ //emote.wag_mouth = TRUE //I can't make a wag system.
+ visible_message("[src]'s face splits into a deadly maw.")
+ playsound(src.loc, 'sound/combat/fracture/fracturewet (2).ogg', 50, 1)
if(QINTENT_JUMP)
if(mmb_intent?.type == INTENT_JUMP)
qdel(mmb_intent)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 5e1365e640..04b2a065a5 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -151,3 +151,25 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
rs += "[R.name], [R.volume]"
return rs.Join(" | ")
+
+/datum/reagent/fogblight
+ name = "fogblight"
+ description = "liquid concentrate from fog island's frogs. Used by shinobis."
+ taste_description = ""
+ reagent_state = LIQUID
+ color = "#1f434d"
+ metabolization_rate = 0.2
+
+/datum/reagent/fogblight/on_mob_life(mob/living/carbon/M)
+ switch(current_cycle)
+ if(1 to 10)
+ M.confused += 2
+ M.drowsyness += 2
+ if(10 to 50)
+ M.Sleeping(40, 0)
+ . = 1
+ if(51 to INFINITY)
+ M.Sleeping(40, 0)
+ M.adjustToxLoss((current_cycle - 50)*REM, 0)
+ . = 1
+ ..()
diff --git a/code/modules/roguetown/roguecrafting/items.dm b/code/modules/roguetown/roguecrafting/items.dm
index 55fd543643..108ccd6490 100644
--- a/code/modules/roguetown/roguecrafting/items.dm
+++ b/code/modules/roguetown/roguecrafting/items.dm
@@ -500,3 +500,32 @@
name = "master's guide to literature"
result = list(/obj/item/literary/master)
craftdiff = 6
+
+/datum/crafting_recipe/roguetown/shinobiarrow
+ name = "shinobi arrow(5)"
+ result = list(/obj/item/ammo_casing/caseless/rogue/arrow/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/arrow/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/arrow/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/arrow/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/arrow/poison/fog)
+ reqs = list(/obj/item/ammo_casing/caseless/rogue/arrow = 5,
+ /obj/item/reagent_containers/food/snacks/fogdart = 1)
+ craftdiff = 1
+
+/datum/crafting_recipe/roguetown/shinobibolt
+ name = "sedative bolt(5)"
+ result = list(/obj/item/ammo_casing/caseless/rogue/bolt/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/bolt/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/bolt/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/bolt/poison/fog,
+ /obj/item/ammo_casing/caseless/rogue/bolt/poison/fog)
+ reqs = list(/obj/item/ammo_casing/caseless/rogue/bolt = 5,
+ /obj/item/reagent_containers/food/snacks/fogdart = 1)
+ craftdiff = 1
+
+/datum/crafting_recipe/roguetown/kusaripeasant
+ name = "handmade kusarigama"
+ result = /obj/item/rogueweapon/flail/kusarigama/peasant
+ reqs = list(/obj/item/rogueweapon/sickle/kama = 1,
+ /obj/item/rope/chain = 1)
+ craftdiff = 1
diff --git a/code/modules/roguetown/roguecrafting/leather.dm b/code/modules/roguetown/roguecrafting/leather.dm
index 97aafbca99..ab41d8c7c0 100644
--- a/code/modules/roguetown/roguecrafting/leather.dm
+++ b/code/modules/roguetown/roguecrafting/leather.dm
@@ -23,32 +23,47 @@
result = list(/obj/item/storage/belt/rogue/pouch)
/datum/crafting_recipe/roguetown/leather/gloves
- name = "leather gloves"
+ name = "leather gloves {ip}"
result = /obj/item/clothing/gloves/roguetown/leather
+
/datum/crafting_recipe/roguetown/leather/bracers
- name = "leather bracers"
+ name = "leather bracers {ip}"
result = /obj/item/clothing/wrists/roguetown/bracers/leather
+ req_antikaizoku = TRUE
+
+
+/datum/crafting_recipe/roguetown/leather/pants
+ name = "leather pants {ip}"
+ result = list(/obj/item/clothing/under/roguetown/trou/leather)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/shoes
- name = "leather shoes"
+ name = "leather shoes {ip}"
result = /obj/item/clothing/shoes/roguetown/simpleshoes
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/boots
- name = "leather boots"
+ name = "leather boots {ip}"
result = /obj/item/clothing/shoes/roguetown/boots/leather
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/sandals
- name = "sandals"
+ name = "sandals {ip}"
result = /obj/item/clothing/shoes/roguetown/sandals
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/gladiator
- name = "gladiator sandals"
+ name = "gladiator sandals {ip}"
result = /obj/item/clothing/shoes/roguetown/gladiator
+ reqs = list(/obj/item/natural/hide = 2)
+ sellprice = 17
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/hood
- name = "leather hood"
+ name = "leather hood {ip}"
result = /obj/item/clothing/head/roguetown/roguehood/brown
+ reqs = list(/obj/item/natural/fur = 1)
/datum/crafting_recipe/roguetown/leather/papakha
name = "papakha hat"
@@ -120,17 +135,19 @@
craftdiff = 1
/datum/crafting_recipe/roguetown/leather/heavygloves
- name = "fur-lined gloves"
+ name = "fur-lined gloves {ip}"
result = /obj/item/clothing/gloves/roguetown/angle
reqs = list(/obj/item/natural/hide = 1,
/obj/item/natural/fur = 1)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/helmet
- name = "leather helmet"
+ name = "leather helmet {ip}"
result = /obj/item/clothing/head/roguetown/helmet/leather
reqs = list(/obj/item/natural/hide = 2)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/antlerhood
name = "antler hood"
@@ -140,10 +157,11 @@
craftdiff = 1
/datum/crafting_recipe/roguetown/leather/armor
- name = "leather armor"
+ name = "leather armor {ip}"
result = /obj/item/clothing/suit/roguetown/armor/leather
reqs = list(/obj/item/natural/hide = 2)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/whip
name = "leather whip"
@@ -168,11 +186,12 @@
craftdiff = 2
/datum/crafting_recipe/roguetown/leather/hidearmor
- name = "fur-lined armor"
+ name = "fur-lined armor {ip}"
result = /obj/item/clothing/suit/roguetown/armor/leather/hide
reqs = list(/obj/item/natural/hide = 2,
/obj/item/natural/fur = 1)
craftdiff = 2
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/leather/coif
name = "leather coif"
@@ -180,6 +199,20 @@
reqs = list(/obj/item/natural/hide = 1)
craftdiff = 2
+/datum/crafting_recipe/roguetown/leather/leatherjacket
+ name = "leather jacket {ip}"
+ result = list(/obj/item/clothing/suit/roguetown/armor/leather/jacket)
+ reqs = list(/obj/item/natural/hide = 1)
+ craftdiff = 1
+ req_antikaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/brimmedhat
+ name = "brimmed hat x2 {ip}"
+ result = list(/obj/item/clothing/head/roguetown/brimmed)
+ reqs = list(/obj/item/natural/hide = 1)
+ craftdiff = 1
+ req_antikaizoku = TRUE
+
/datum/crafting_recipe/roguetown/leather/volfmantle
name = "volf mantle"
result = /obj/item/clothing/cloak/volfmantle
@@ -187,3 +220,118 @@
/obj/item/natural/head/volf = 1)
craftdiff = 2
+
+
+//////////////////////////////////////////
+// Fogislander Cultured Crafting Area, //
+//////////////////////////////////////////
+
+
+/datum/crafting_recipe/roguetown/leather/abyssalgloves
+ name = "abyssal leather gloves (x2){fl}"
+ result = list(/obj/item/clothing/gloves/roguetown/leather/abyssal,
+ /obj/item/clothing/gloves/roguetown/leather/abyssal)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/khudagach
+ name = "archery bracers (x2){fl}"
+ result = list(/obj/item/clothing/wrists/roguetown/bracers/leather/khudagach,
+ /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/furtobi
+ name = "leather pants {fl}"
+ result = list(/obj/item/clothing/under/roguetown/trou/leather/fur)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/jikatabi
+ name = "jikatabi (x2){fl}"
+ result = list(/obj/item/clothing/shoes/roguetown/boots/jikatabi,
+ /obj/item/clothing/shoes/roguetown/boots/jikatabi)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/cloudhead
+ name = "cloudhead shoes {fl}"
+ result = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/geta
+ name = "geta sandals {fl}"
+ result = /obj/item/clothing/shoes/roguetown/sandals/geta
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/haori
+ name = "haori jacket {fl}"
+ result = list(/obj/item/clothing/suit/roguetown/armor/leather/jacket/haori)
+ reqs = list(/obj/item/natural/hide = 2)
+ req_kaizoku = TRUE
+
+/*.............. recipes requiring skill 1 ..............*/
+
+/datum/crafting_recipe/roguetown/leather/falcon
+ name = "falconry heavy gloves {fl}"
+ result = /obj/item/clothing/gloves/roguetown/angle/falcon
+ reqs = list(/obj/item/natural/hide = 1,
+ /obj/item/natural/fur = 1)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/malgai
+ name = "malgai helmet {fl}"
+ result = /obj/item/clothing/head/roguetown/helmet/leather/malgai
+ reqs = list(/obj/item/natural/hide = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/kaizokuhat
+ name = "heartfeltean hat {fl}"
+ result = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku
+ reqs = list(/obj/item/natural/hide = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/kaizokuhat/female
+ name = "female heartfeltean hat {fl}"
+ result = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku/female
+ reqs = list(/obj/item/natural/hide = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/abyssalarmor
+ name = "leather lamellar armor {fl}"
+ result = /obj/item/clothing/suit/roguetown/armor/leather/abyssal
+ reqs = list(/obj/item/natural/hide = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/*.............. recipes requiring skill 2 ..............*/
+
+/datum/crafting_recipe/roguetown/leather/dustwalker
+ name = "light cavalry armor {fl}"
+ result = /obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker
+ reqs = list(/obj/item/natural/hide = 2,
+ /obj/item/natural/fur = 1)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/shozoku
+ name = "stealthy body armor {fl}"
+ result = /obj/item/clothing/suit/roguetown/armor/leather/hide/shozoku
+ reqs = list(/obj/item/natural/hide = 2,
+ /obj/item/natural/fur = 1)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/kaizoku
+ name = "heartfeltean vest {fl}"
+ result = /obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku
+ reqs = list(/obj/item/natural/hide = 2)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/leather/arisan
+ name = "cavalry light headgear {fl}"
+ reqs = list(/obj/item/natural/hide = 2,
+ /obj/item/natural/fur = 1)
+ craftdiff = 2
+ req_kaizoku = TRUE
diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm
index 6707c87ea5..8cd8b340fb 100644
--- a/code/modules/roguetown/roguecrafting/sewing.dm
+++ b/code/modules/roguetown/roguecrafting/sewing.dm
@@ -23,9 +23,10 @@
sellprice = 4
/datum/crafting_recipe/roguetown/sewing/rags
- name = "rags"
+ name = "rags {ip}"
result = list(/obj/item/clothing/suit/roguetown/shirt/rags)
reqs = list(/obj/item/natural/cloth = 2)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/burial_shroud
name = "cloth winding sheet"
@@ -37,48 +38,76 @@
reqs = list(/obj/item/natural/cloth = 1)
/datum/crafting_recipe/roguetown/sewing/halfcloak
- name = "cloth half cloak"
+ name = "cloth half cloak {ip}"
result = list(/obj/item/clothing/cloak/half)
reqs = list(/obj/item/natural/cloth = 1,
/obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/apron
- name = "cloth apron"
+ name = "cloth apron {ip}"
result = list(/obj/item/clothing/cloak/apron)
reqs = list(/obj/item/natural/cloth = 1,
/obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/clothgloves
- name = "cloth gloves"
+ name = "cloth gloves {ip}"
result = list(/obj/item/clothing/gloves/roguetown/fingerless)
reqs = list(/obj/item/natural/cloth = 1,
/obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/shortshirt
- name = "cloth short shirt"
+ name = "cloth short shirt {ip}"
result = list(/obj/item/clothing/suit/roguetown/shirt/shortshirt/uncolored)
+ reqs = list(/obj/item/natural/cloth = 1,
+ /obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/clothshirt
- name = "cloth shirt"
+ name = "cloth shirt {ip}"
result = list(/obj/item/clothing/suit/roguetown/shirt/undershirt/uncolored)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/stripedtunic
+ name = "striped tunic {ip}"
+ result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/light/striped)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/clothtights
- name = "cloth tights"
+ name = "cloth tights {ip}"
result = list(/obj/item/clothing/under/roguetown/tights/uncolored)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/headband
name = "cloth headband"
result = list(/obj/item/clothing/head/roguetown/headband)
reqs = list(/obj/item/natural/cloth = 1)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+
+/datum/crafting_recipe/roguetown/sewing/strawhat
+ name = "crude straw hat {ip}"
+ result = list(/obj/item/clothing/head/roguetown/strawhat)
+ reqs = list(/obj/item/natural/fibers = 3)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/knitcap
- name = "knit cap"
+ name = "knit cap {ip}"
result = list(/obj/item/clothing/head/roguetown/knitcap)
reqs = list(/obj/item/natural/cloth = 1,
/obj/item/natural/fibers = 1)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/cmask
- name = "cloth mask"
+ name = "cloth mask {ip}"
result = list(/obj/item/clothing/mask/rogue/shepherd/clothmask)
reqs = list(/obj/item/natural/cloth = 1)
@@ -91,15 +120,12 @@
name = "cloth anklet"
result = list(/obj/item/clothing/shoes/roguetown/boots/clothlinedanklets)
-/datum/crafting_recipe/roguetown/sewing/strawhat
- name = "crude straw hat"
- result = list(/obj/item/clothing/head/roguetown/strawhat)
- reqs = list(/obj/item/natural/fibers = 3)
-
/datum/crafting_recipe/roguetown/sewing/fisherhat
name = "straw fisher hat"
result = list(/obj/item/clothing/head/roguetown/fisherhat)
- reqs = list(/obj/item/natural/fibers = 3)
+ reqs = list(/obj/item/natural/fibers = 1, /obj/item/natural/cloth = 1)
+ tools = list(/obj/item/needle)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/sack
name = "sack hood"
@@ -117,9 +143,11 @@
/*========= SKILL LEVEL: 1 REQUIRED ==========*/
+
/datum/crafting_recipe/roguetown/sewing/stripedtunic
- name = "striped tunic"
+ name = "striped tunic {ip}"
result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/light/striped)
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/pcoif
name = "cloth coif"
@@ -129,25 +157,28 @@
craftdiff = 1
/datum/crafting_recipe/roguetown/sewing/jupon
- name = "jupon"
+ name = "jupon {ip}"
result = list(/obj/item/clothing/cloak/stabard/surcoat)
reqs = list(/obj/item/natural/cloth = 3,
/obj/item/natural/fibers = 1)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/clothtrou
- name = "cloth trousers"
+ name = "cloth trousers {ip}"
result = list(/obj/item/clothing/under/roguetown/trou)
reqs = list(/obj/item/natural/cloth = 2,
/obj/item/natural/fibers = 1)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/lgambeson
- name = "light gambeson"
+ name = "light gambeson {ip}"
result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/light)
reqs = list(/obj/item/natural/cloth = 2,
/obj/item/natural/fibers = 1)
craftdiff = 1
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/sleepingbag
name = "sleepcloth"
@@ -174,26 +205,29 @@
/*========= SKILL LEVEL: 2 REQUIRED ==========*/
/datum/crafting_recipe/roguetown/sewing/gambeson
- name = "gambeson"
+ name = "gambeson {ip}"
result = /obj/item/clothing/suit/roguetown/armor/gambeson
reqs = list(/obj/item/natural/cloth = 4,
/obj/item/natural/fibers = 1)
tools = list(/obj/item/needle)
craftdiff = 2
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/tabard
- name = "tabard"
+ name = "tabard {ip}"
result = list(/obj/item/clothing/cloak/tabard)
reqs = list(/obj/item/natural/cloth = 3,
/obj/item/natural/fibers = 1)
craftdiff = 2
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/stabard
- name = "surcoat"
+ name = "surcoat {ip}"
result = list(/obj/item/clothing/cloak/stabard)
reqs = list(/obj/item/natural/cloth = 3,
/obj/item/natural/fibers = 1)
craftdiff = 2
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/bedsheetpelt
name = "leather bedsheet"
@@ -228,39 +262,52 @@
/*========= SKILL LEVEL: 3 REQUIRED ==========*/
/datum/crafting_recipe/roguetown/sewing/robe
- name = "robes"
+ name = "robes {ip}"
result = list(/obj/item/clothing/suit/roguetown/shirt/robe/plain)
reqs = list(/obj/item/natural/cloth = 3,
/obj/item/natural/fibers = 1)
craftdiff = 3
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/cape
- name = "cape"
+ name = "cape {ip}"
result = list(/obj/item/clothing/cloak/cape)
reqs = list(/obj/item/natural/cloth = 2,
/obj/item/natural/fibers = 1)
craftdiff = 3
+ req_antikaizoku = TRUE
/*========= SKILL LEVEL: 4 REQUIRED ==========*/
/datum/crafting_recipe/roguetown/sewing/fancyhat
- name = "fancy hat"
+ name = "fancy hat {ip}"
result = list(/obj/item/clothing/head/roguetown/fancyhat)
reqs = list(/obj/item/natural/fibers = 1, /obj/item/natural/cloth = 2, /obj/item/natural/feather = 1)
craftdiff = 4
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/fashionablehat
- name = "fashionable hat"
+ name = "fashionable hat {ip}"
result = /obj/item/clothing/head/roguetown/fashionablehat
reqs = list(/obj/item/natural/fibers = 1, /obj/item/natural/cloth = 2, /obj/item/natural/feather = 1)
craftdiff = 4
+ req_antikaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/fancyhat
+ name = "fancy hat {ip}"
+ result = list(/obj/item/clothing/head/roguetown/fancyhat)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 4
+ req_antikaizoku = TRUE
/datum/crafting_recipe/roguetown/sewing/plumedhat
- name = "plumed hat"
+ name = "plumed hat {ip}"
result = list(/obj/item/clothing/head/roguetown/bardhat)
reqs = list(/obj/item/natural/fibers = 1, /obj/item/natural/cloth = 2, /obj/item/natural/feather = 1)
craftdiff = 4
+ req_antikaizoku = TRUE
/*========= ROLE LOCKED RECIPES ==========*/
/datum/crafting_recipe/roguetown/sewing/tunic
@@ -269,3 +316,240 @@
reqs = list(/obj/item/natural/cloth = 2)
always_availible = FALSE
craftdiff = 1
+
+//////////////////////////////////////////
+// Fogislander Cultured Crafting Area, //
+//////////////////////////////////////////
+
+
+/datum/crafting_recipe/roguetown/sewing/yugake
+ name = "yugake gloves {fl}"
+ result = list(/obj/item/clothing/gloves/roguetown/fingerless/yugake)
+ reqs = list(/obj/item/natural/cloth = 1,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/monkgarb
+ name = "monk garbs {fl}"
+ result = list(/obj/item/clothing/suit/roguetown/shirt/rags/monkgarb)
+ reqs = list(/obj/item/natural/cloth = 1,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/kimono
+ name = "kimono {fl}"
+ result = list(/obj/item/clothing/suit/roguetown/shirt/tunic/kimono)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/kamishimo
+ name = "kamishimo upperside {fl}"
+ result = list(/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/hakama
+ name = "hakama {fl}"
+ result = list(/obj/item/clothing/under/roguetown/tights/hakama)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/takuhatsugasa
+ name = "takuhatsugasa hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/takuhatsugasa)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/torioigasa
+ name = "torioigasa hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/tengai/torioigasa)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 2)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/gasa
+ name = "gasa hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/tengai/gasa)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/lillys
+ name = "small lilly {fl}"
+ result = list(/obj/item/clothing/head/roguetown/lilly/small)
+ reqs = list(/obj/item/natural/fibers = 3)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/lillym
+ name = "medium lilly {fl}"
+ result = list(/obj/item/clothing/head/roguetown/lilly/medium)
+ reqs = list(/obj/item/natural/fibers = 4)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/lillyb
+ name = "big lilly {fl}"
+ result = list(/obj/item/clothing/head/roguetown/lilly/big)
+ reqs = list(/obj/item/natural/fibers = 5)
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/eyeband
+ name = "eyeband"
+ result = list(/obj/item/clothing/mask/rogue/kaizoku/eyeband)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+
+/datum/crafting_recipe/roguetown/sewing/tribal
+ name = "tribal garb {fl}"
+ result = list(/obj/item/clothing/under/roguetown/kaizoku/tribal)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ req_kaizoku = TRUE
+
+/*.............. recipes requiring skill 1 ..............*/
+
+/datum/crafting_recipe/roguetown/sewing/tengai
+ name = "tengai hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/tengai)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/roningasa
+ name = "roningasa hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/tengai/roningasa)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/soheicloth
+ name = "sohei headcovering {fl}"
+ result = list(/obj/item/clothing/head/roguetown/soheicloth)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/sandogasa
+ name = "sandogasa hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/tengai/sandogasa)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/mino
+ name = "mino cloak {fl}"
+ result = list(/obj/item/clothing/cloak/raincloak/mino)
+ reqs = list(/obj/item/natural/fibers = 8,
+ /obj/item/natural/fibers = 2)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/tobi
+ name = "tobi trousers {fl}"
+ result = list(/obj/item/clothing/under/roguetown/trou/tobi)
+ reqs = list(/obj/item/natural/cloth = 4,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/hitatare
+ name = "light hitatare {fl}"
+ result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 1
+ req_kaizoku = TRUE
+
+/*.............. recipes requiring skill 2 ..............*/
+
+/datum/crafting_recipe/roguetown/sewing/ruankai
+ name = "ruankai jacque {fl}"
+ result = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai
+ reqs = list(/obj/item/natural/cloth = 4,
+ /obj/item/natural/fibers = 1)
+ tools = list(/obj/item/needle)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/jinbaori
+ name = "jinbaori {fl}"
+ result = list(/obj/item/clothing/cloak/jinbaori)
+ reqs = list(/obj/item/natural/cloth = 3,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/zukin
+ name = "stealthy hood {fl}"
+ result = list(/obj/item/clothing/head/roguetown/shinobi_zukin)
+ reqs = list(/obj/item/natural/cloth = 3,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/zubon
+ name = "stealthy trousers {fl}"
+ result = list(/obj/item/clothing/under/roguetown/trou/leather/shinobizubon)
+ reqs = list(/obj/item/natural/cloth = 3,
+ /obj/item/natural/fibers = 2)
+ craftdiff = 2
+ req_kaizoku = TRUE
+
+/*.............. recipes requiring skill 3 ..............*/
+
+/datum/crafting_recipe/roguetown/sewing/onmyojigood
+ name = "war onmyoji hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/wizhat/onmyoji)
+ reqs = list(/obj/item/natural/cloth = 4,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 3
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/onmyojigoofy
+ name = "onmyoji hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/wizhat/onmyoji/eboshi)
+ reqs = list(/obj/item/natural/cloth = 4,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 3
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/guardiancape
+ name = "guardianship cape {fl}"
+ result = list(/obj/item/clothing/cloak/raincloak/guardiancloak)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 3
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/onmyojigoofy
+ name = "haramaki bellyband {fl}"
+ result = list(/obj/item/clothing/cloak/haramaki)
+ reqs = list(/obj/item/natural/cloth = 4,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 3
+ req_kaizoku = TRUE
+
+/* .............. recipes requiring skill 4 ..............*/
+
+/datum/crafting_recipe/roguetown/sewing/heartfelthat
+ name = "heartfelt hat {fl}"
+ result = list(/obj/item/clothing/head/roguetown/bardhat/bloodhunter)
+ reqs = list(/obj/item/natural/cloth = 2,
+ /obj/item/natural/fibers = 1)
+ craftdiff = 4
+ req_kaizoku = TRUE
+
+/datum/crafting_recipe/roguetown/sewing/odoshi
+ name = "odoshi bodylacing {fl}"
+ result = list(/obj/item/clothing/cloak/haramaki/odoshi)
+ reqs = list(/obj/item/natural/cloth = 5,
+ /obj/item/natural/fibers = 3)
+ craftdiff = 4
+ req_kaizoku = TRUE
diff --git a/code/modules/roguetown/roguecrafting/turfs.dm b/code/modules/roguetown/roguecrafting/turfs.dm
index f29a6db51f..bdf2b92b34 100644
--- a/code/modules/roguetown/roguecrafting/turfs.dm
+++ b/code/modules/roguetown/roguecrafting/turfs.dm
@@ -240,3 +240,37 @@
if(!istype(T, /turf/open/floor/rogue))
return
return ..()
+
+//Abyssariad Walls.
+//Tier 'Plank' Abyssariad wall. Making a rough counterpart later.
+
+/datum/crafting_recipe/roguetown/turfs/woodwall/abyssal
+ name = "wagoya joinwall"
+ result = /turf/closed/wall/mineral/rogue/wood/abyssal
+ reqs = list(/obj/item/natural/plank = 2)
+ skillcraft = /datum/skill/craft/carpentry
+ craftdiff = 1
+
+/datum/crafting_recipe/roguetown/turfs/woodwindow/abyssal
+ name = "wagoya murderhole"
+ result = /turf/closed/wall/mineral/rogue/wood/abyssal/window
+ reqs = list(/obj/item/natural/plank = 2)
+ skillcraft = /datum/skill/craft/carpentry
+ craftdiff = 1
+
+//Abyssariad Walls.
+//Tier 'Stone' Abyssariad wall. Making a Stoneblock counterpart later.
+
+/datum/crafting_recipe/roguetown/turfs/stonewall/abyssal
+ name = "ishigaki wall"
+ result = /turf/closed/wall/mineral/rogue/stone
+ reqs = list(/obj/item/natural/stone = 2)
+ skillcraft = /datum/skill/craft/masonry
+ craftdiff = 1
+
+/datum/crafting_recipe/roguetown/turfs/stonewindow/abyssal
+ name = "ishigaki murderhole"
+ result = /turf/closed/wall/mineral/rogue/stone/window
+ reqs = list(/obj/item/natural/stoneblock = 2)
+ skillcraft = /datum/skill/craft/masonry
+ craftdiff = 1
diff --git a/code/modules/roguetown/roguejobs/alchemist/reagents.dm b/code/modules/roguetown/roguejobs/alchemist/reagents.dm
index b1a3ddace6..65f17cdb78 100644
--- a/code/modules/roguetown/roguejobs/alchemist/reagents.dm
+++ b/code/modules/roguetown/roguejobs/alchemist/reagents.dm
@@ -308,3 +308,43 @@ If you want to expand on poisons theres tons of fun effects TG chemistry has tha
M.adjust_fire_stacks(1)
M.IgniteMob()
return ..()
+
+/datum/reagent/fogblight
+ name = "fogblight"
+ description = "liquid concentrate from fog island's frogs. Used by shinobis."
+ taste_description = ""
+ reagent_state = LIQUID
+ color = "#1f434d"
+ metabolization_rate = 0.2
+
+/datum/reagent/fogblight/on_mob_life(mob/living/carbon/M)
+ switch(current_cycle)
+ if(1 to 10)
+ M.confused += 2
+ M.drowsyness += 2
+ if(10 to 50)
+ M.Sleeping(40, 0)
+ . = 1
+ if(51 to INFINITY)
+ M.Sleeping(40, 0)
+ M.adjustToxLoss((current_cycle - 50)*REM, 0)
+ . = 1
+ ..()
+
+/*--------------\
+| spell reagent |
+\--------------*/
+
+/datum/reagent/medicine/abyssalpurificator
+ name = "abyssal purification"
+ description = "abyssor be with you."
+ reagent_state = LIQUID
+ metabolization_rate = 0.5
+ color = "#8fb9bc"
+
+/datum/reagent/medicine/abyssalpurificator/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ for(var/datum/reagent/target_reagent in affected_mob.reagents.reagent_list)
+ if(istype(target_reagent, /datum/reagent/medicine/abyssalpurificator))
+ continue
+ // Remove 2 units of the reagent per second, scaled by the server's REM and tick rate
+ affected_mob.reagents.remove_reagent(target_reagent.type, 2 * REM * seconds_per_tick)
diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm
index dfba5321b2..dd340fbc6c 100644
--- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm
+++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm
@@ -361,3 +361,370 @@
additional_items = list(/obj/item/ingot/steel,/obj/item/natural/cloth)
created_item = /obj/item/clothing/head/roguetown/helmet/heavy/decorated/bascinet
craftdiff = 2
+ i_type = "Armor"
+
+//Kaizoku Smithing content. I humbly ask for help; A way in which only people with the trait "Kaizoku", being the ones able to make Kaizoku weapons and armor. In another hand,
+//they cannot make most (exceptions; the objects that have no abyssariad alternative) armors and weapons.
+
+//'armor'
+/datum/anvil_recipe/armor/nanbando
+ name = "Barbarian half-plate (3)"
+ recipe_name = "a Nanban-Dou-Sode"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel,/obj/item/ingot/steel)
+ created_item = /obj/item/clothing/suit/roguetown/armor/plate/nanbando
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/nanbandocuirass
+ name = "Barbarian Cuirass"
+ recipe_name = "a Nanban-Dou"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/nanbandofull
+ name = "Barbarian Fullplate (4)"
+ recipe_name = "a Nanban-Do-Gusoku"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel,/obj/item/ingot/steel,/obj/item/ingot/steel)
+ created_item = /obj/item/clothing/suit/roguetown/armor/plate/full/nanbando
+ craftdiff = 4
+
+/datum/anvil_recipe/armor/steeltatami
+ name = "Steel foldeable armor"
+ recipe_name = "a Lamellae Tatami-Do"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami
+ craftdiff = 2
+
+// huh. We can make these uniquely then. Since we can't make the iron chainmail for the european counterparts?... why?
+/datum/anvil_recipe/armor/irontatami
+ name = "Iron foldeable armor"
+ recipe_name = "a Tatami Karuta-Gane"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami
+ craftdiff = 2
+ createmultiple = TRUE
+ createditem_num = 1
+
+/datum/anvil_recipe/armor/kusari
+ name = "Chainmail Robe (2)"
+ recipe_name = "a Kusari-Katabira"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/imirror
+ name = "Iron disk chestplate (3)"
+ recipe_name = "a Iron Mirror Armor"
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/ingot/iron,/obj/item/ingot/iron)
+ created_item = /obj/item/clothing/suit/roguetown/armor/plate/mirror/iron
+ craftdiff = 1
+
+/datum/anvil_recipe/armor/mirror
+ name = "Steel disk chestplate (3)"
+ recipe_name = "a Steel Mirror Armor"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel,/obj/item/ingot/steel)
+ created_item = /obj/item/clothing/suit/roguetown/armor/plate/mirror
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/oyoroi
+ name = "Compact great armor (3) (c)"
+ recipe_name = "a Incomplete O-Yoroi"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel, /obj/item/natural/cloth)
+ created_item = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/oyoroigusoku //costier version. Only really viable if you got what to waste.
+ name = "Full great armor (4) (2c)"
+ recipe_name = "a O-Yoroi Gusoku"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel, /obj/item/ingot/steel, /obj/item/natural/cloth, /obj/item/natural/cloth)
+ created_item = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/sanmaido
+ name = "Three-plate cuirass"
+ recipe_name = "a Sanmai-Do"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/kikko
+ name = "Turtleshell leather armor (2h)"
+ recipe_name = "a Kikko Leather Do"
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/natural/hide, /obj/item/natural/hide)
+ created_item = /obj/item/clothing/suit/roguetown/armor/leather/studded/kikko
+ craftdiff = 1
+//cheaper on iron, but has many sticks. Proper for this armor's context.
+/datum/anvil_recipe/armor/rattanarmor
+ name = "Iron-woven Rattan armor (2) (4s)"
+ recipe_name = "a Rattan Armor"
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/ingot/iron,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick)
+ created_item = /obj/item/clothing/suit/roguetown/armor/chainmail/rattan
+ craftdiff = 1
+
+/datum/anvil_recipe/armor/kikkoarmor //cheaper brigadine with hide.
+ name = "Turtleshell Full Armor (2) (2h)"
+ recipe_name = "a Kikko Gusoku"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel, /obj/item/natural/hide, /obj/item/natural/hide)
+ created_item = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad
+ craftdiff = 3
+
+//'feet'
+/datum/anvil_recipe/armor/kusaritabi
+ name = "Chainmail footwear x2"
+ recipe_name = "a pair of Kusari-Tabi"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi
+ createmultiple = TRUE
+ createditem_num = 1
+
+/datum/anvil_recipe/armor/suneate
+ name = "Plated shin-guards"
+ recipe_name = "some Suneate Footwear"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/shoes/roguetown/boots/armor/suneate
+ craftdiff = 3
+
+//'gloves'
+/datum/anvil_recipe/armor/kikkotekko
+ name = "Turtleshell gauntlets x2"
+ recipe_name = "a pair of Steel Kikko Tekko"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/gloves/roguetown/chain/kikko
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/ikikkotekko
+ name = "Turtleshell gauntlets x2"
+ recipe_name = "a pair of Iron Kikko Tekko"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/gloves/roguetown/chain/iron/kikko
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 0
+
+/datum/anvil_recipe/armor/lamellaetekko
+ name = "Lamellae gauntlets"
+ recipe_name = "some Lamellae Tekko"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/gloves/roguetown/plate/lamellaetekko
+ craftdiff = 3
+
+//'hats'
+/datum/anvil_recipe/armor/hachigane
+ name = "Hachigane x2"
+ recipe_name = "a pair of Hachinage"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane
+ createmultiple = TRUE
+ createditem_num = 1
+
+/datum/anvil_recipe/armor/rattanhelmet
+ name = "Iron Woven Rattan Helmet x2 (3s)"
+ recipe_name = "a pair of Rattan Helmets"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/head/roguetown/helmet/skullcap/rattan
+ additional_items = list(/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick)
+ createmultiple = TRUE
+ createditem_num = 1
+
+/obj/item/clothing/head/roguetown/helmet/visored/abyssalchampion
+/datum/anvil_recipe/armor/abyssalchampion
+ name = "Newfangled Myrmidon Helmet (3)"
+ recipe_name = "a Abyssal Champion Helmet"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel)
+ created_item = (/obj/item/clothing/head/roguetown/helmet/visored/abyssalchampion)
+ craftdiff = 4
+
+/datum/anvil_recipe/armor/helmetbuc
+ name = "Sohei Heavy Headwear"
+ recipe_name = "a Armored sohei cowl"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/head/roguetown/helmet/heavy/bucket/soheidemon)
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/zunari
+ name = "Zamurai's helmet (2)"
+ recipe_name = "a Zunari's Helmet"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = (/obj/item/clothing/head/roguetown/helmet/visored/zunari)
+ craftdiff = 3
+
+/datum/anvil_recipe/armor/zijinguan
+ name = "Plumed Footsoldier helmet x2"
+ recipe_name = "a pair of Zijinguan helmet"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/head/roguetown/helmet/zijinguan
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/jingasa
+ name = "Conical Ashigaru helmet x2"
+ recipe_name = "a pair of Jingasas"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/head/roguetown/helmet/jingasa
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/toseikabuto
+ name = "Tosei-kabuto"
+ recipe_name = "a Tosei Kabuto"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/toseikabutov
+ name = "Visored tosei-kabuto (2)"
+ recipe_name = "a Visored Tosei Kabuto"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = (/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto)
+ craftdiff = 3
+
+//'mask'
+/datum/anvil_recipe/armor/imenpo
+ name = "Iron faceguard"
+ recipe_name = "a Iron Menpo"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo
+ craftdiff = 0
+
+/datum/anvil_recipe/armor/himenpo
+ name = "Iron half-faceguard x2"
+ recipe_name = "a pair of Compact Menpo"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo/half
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 0
+
+/datum/anvil_recipe/armor/smenpo
+ name = "Steel faceguard"
+ recipe_name = "a Steel Menpo"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/half)
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/hsmenpo
+ name = "Steel half-faceguard x2"
+ recipe_name = "a Face Mask"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/steel)
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/itribalfish
+ name = "Iron fishpeople mask x2"
+ recipe_name = "a pair of iron Merkkin masks"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 0
+
+/datum/anvil_recipe/armor/stribalfish
+ name = "Steel fishpeople mask"
+ recipe_name = "a Steel Merkkin Mask"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/steel)
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/ctengu
+ name = "Birdpeople champion mask"
+ recipe_name = "a Skylancer Mask"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu)
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/ckitsune
+ name = "Foxpeople champion mask"
+ recipe_name = "a Changeling Mask"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune)
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/coni
+ name = "Ogrepeople champion mask"
+ recipe_name = "a ogrun Mask"
+ req_bar = /obj/item/ingot/steel
+ created_item = (/obj/item/clothing/mask/rogue/facemask/steel)
+ craftdiff = 2
+
+//'neck'
+/datum/anvil_recipe/armor/shood
+ name = "Karuta hood x2"
+ recipe_name = "a pair of Karuta Zukin"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/ihood
+ name = "Chainmail hood x2"
+ recipe_name = "a pair of Kusari Zukin"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/neck/roguetown/chaincoif/iron/kusari_zukin
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 0
+
+//'pants'
+/datum/anvil_recipe/armor/ihaidate
+ name = "Foldable Thighguards x2"
+ recipe_name = "a pair of Haidate Tatami"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 0
+
+/datum/anvil_recipe/armor/shaidate
+ name = "Plate Thighguards x2"
+ recipe_name = "a pair of Chain Chausses"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/under/roguetown/chainlegs/sendan
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/armor/superhaidate
+ name = "Plated Trousers x2"
+ recipe_name = "a couple of Yoroi-Hakama"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/under/roguetown/platelegs/yoroihakama
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 3
+
+//'wrists'
+/datum/anvil_recipe/armor/kote //Protects more limbs, so it is costier.
+ name = "Armored Sleeve"
+ recipe_name = "a couple of Kote"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/wrists/roguetown/bracers/kote
+ craftdiff = 4
+
+/datum/anvil_recipe/armor/weeper
+ name = "Weeper Bracers x2"
+ recipe_name = "a couple of Weeping Bracers"
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/clothing/wrists/roguetown/bracers/mountainstar
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 3
diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm
index 112d6aa696..aec458af7c 100644
--- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm
+++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm
@@ -547,3 +547,298 @@
req_bar = /obj/item/ingot/steel
created_item = /obj/item/rogueweapon/sword/scimitar/falchion
craftdiff = 2
+
+//Kaizoku Smithing content. I humbly ask for help; A way in which only people with the trait "Kaizoku", being the ones able to make Kaizoku weapons and armor. In another hand,
+//they cannot make most (exceptions; the objects that have no abyssariad alternative) armors and weapons.
+
+/datum/anvil_recipe/weapons/sword_steel
+ name = "Uchigatana zatana"
+ recipe_name = "a Uchigatana"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/sword/uchigatana
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/odachi
+ name = "Odachi zatana (3)"
+ recipe_name = "a Odachi"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel)
+ created_item = /obj/item/rogueweapon/sword/long/greatsword/odachi
+ craftdiff = 4
+
+/datum/anvil_recipe/weapons/tachi
+ name = "Tachi zatana (2)"
+ recipe_name = "a Tachi"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = /obj/item/rogueweapon/sword/long/tachi
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/jiansword
+ name = "Jian sword"
+ recipe_name = "a Jian sword"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/sword/iron/jian
+
+/datum/anvil_recipe/weapons/daosword
+ name = "Dao sword"
+ recipe_name = "a Dao Sword"
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/sword/scimitar/messer/dao
+
+/datum/anvil_recipe/weapons/yuntoudao
+ name = "Yuntoudao"
+ recipe_name = "a willow-shaped sword"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/shortjian
+ name = "Short Jian"
+ recipe_name = "a Short Jian"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/sword/short/jian
+ craftdiff = 1
+
+/datum/anvil_recipe/weapons/wakizashi
+ name = "Wakisashi Zatana"
+ recipe_name = "a Wakizashi"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/sword/short/wakizashi
+ craftdiff = 1
+
+/datum/anvil_recipe/weapons/piandao
+ name = "Piandao"
+ recipe_name = "a Piandao"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/sword/sabre/piandao
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/decpiandao
+ name = "Decorated piandao (+g)"
+ recipe_name = "a Decorated Piandao"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/gold)
+ created_item = /obj/item/rogueweapon/sword/sabre/piandao/dec
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/kanabo
+ name = "Iron Kanabo Warclub (+w)"
+ recipe_name = "a Iron kanabo"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/mace/goden/kanabo
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/tetsubo
+ name = "Steel Tetsubo Warclub (+w)"
+ recipe_name = "a Steel Tetsubo"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/mace/goden/steel/tetsubo
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/iararebo
+ name = "Iron ararebo club (+s)"
+ recipe_name = "a Iron Ararebo Club"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/stick)
+ created_item = /obj/item/rogueweapon/mace/ararebo
+
+/datum/anvil_recipe/weapons/sararebo
+ name = "Steel Ararebo club (2)"
+ recipe_name = "a Steel Ararebo "
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = /obj/item/rogueweapon/mace/steel/ararebo
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/kusarifundo
+ name = "Kusarifundo (+c) (+s)"
+ recipe_name = "a Kusarifundo"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/rope/chain, /obj/item/grown/log/tree/stick)
+ created_item = /obj/item/rogueweapon/flail/sflail/kusarifundo
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/kunai
+ name = "Kunai"
+ recipe_name = "a Kunai"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/huntingknife/kunai
+ craftdiff = 1
+
+/datum/anvil_recipe/weapons/tanto
+ name = "Tanto smallsword x2"
+ recipe_name = "a couple Tantos"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/knife/steel/tanto
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/kaiken
+ name = "Kaiken knife x2"
+ recipe_name = "a couple Daggers"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/knife/kaiken
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/sai //not made of iron. Still Less damage tho.
+ name = "Sai x2"
+ recipe_name = "a couple of Sai"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/knife/hunting/sai
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/yari
+ name = "yari x2 (+w)"
+ recipe_name = "a couple Spears"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/polearm/spear/yari
+ createmultiple = TRUE
+ createditem_num = 1
+
+/datum/anvil_recipe/weapons/katakama
+ name = "Katakama Yari x2 (+w) (+i)"
+ recipe_name = "a couple Spears"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/small, /obj/item/ingot/iron)
+ created_item = /obj/item/rogueweapon/polearm/spear/yari/katakama
+
+/datum/anvil_recipe/weapons/jumonji
+ name = "Jumonji Yari (+w)"
+ recipe_name = "a Jumonji Yari"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/polearm/spear/billhook/jumonji
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/naginata
+ name = "Traditional Naginata (2) (+w)"
+ recipe_name = "a Naginata"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/ingot/iron,/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/polearm/halberd/naginata
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/tsukushi
+ name = "Tsukushi Naginata x2 (2) (+w)"
+ recipe_name = "a couple of Massproduced Naginata"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/ingot/iron,/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/polearm/halberd/naginata/tsukushi
+ craftdiff = 1
+ createmultiple = TRUE
+ createditem_num = 1
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/bisento
+ name = "Bisento (3) (+w)"
+ recipe_name = "a Bisento"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel,/obj/item/grown/log/tree/small,/obj/item/ingot/steel)
+ created_item = /obj/item/rogueweapon/polearm/halberd/bisento
+ craftdiff = 5
+
+/datum/anvil_recipe/weapons/onobattle
+ name = "Ono Battle Axe (2)"
+ recipe_name = "a Ono Battle Axe"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/ingot/steel)
+ created_item = /obj/item/rogueweapon/battle/ono
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/changfu
+ name = "changfu woodcutter (+s)"
+ recipe_name = "an Chang-fu"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/stick)
+ created_item = /obj/item/rogueweapon/woodcut/changfu
+
+//Unique few
+/datum/anvil_recipe/weapons/jitte
+ name = "Jitte Cudgel"
+ recipe_name = "an Jitte"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/mace/cudgel/jitte
+
+/datum/anvil_recipe/weapons/otsuchi
+ name = "Otsuchi warhammer (+l)"
+ recipe_name = "a Otsuchi Warhammer"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/mace/goden/otsuchi
+
+/datum/anvil_recipe/weapons/kusarigama
+ name = "Kusarigama (+c) (+s)"
+ recipe_name = "a Kusarigama"
+ req_bar = /obj/item/ingot/steel
+ additional_items = list(/obj/item/rope/chain, /obj/item/grown/log/tree/stick)
+ created_item = /obj/item/rogueweapon/flail/kusarigama
+
+/datum/anvil_recipe/weapons/mancatcher
+ name = "Mancatchers x2 (+w)"
+ recipe_name = "a couple Mancatchers"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ additional_items = list(/obj/item/grown/log/tree/small)
+ created_item = /obj/item/rogueweapon/polearm/mancatcher
+ createmultiple = TRUE
+ createditem_num = 1
+
+/datum/anvil_recipe/weapons/onothrow
+ name = "Ono throwing axe (2)"
+ recipe_name = "a Ono Throwing Axe"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/steel
+ created_item = /obj/item/rogueweapon/thrown/ono
+ craftdiff = 3
+
+/datum/anvil_recipe/weapons/tetsubishi
+ name = "tetsubishi caltrop (2)"
+ recipe_name = "a Tetsubishi"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/tetsubishi
+ craftdiff = 2
+
+/datum/anvil_recipe/weapons/kama
+ name = "Kama sickle (2)"
+ recipe_name = "a Warsickle"
+ appro_skill = /datum/skill/craft/weaponsmithing
+ req_bar = /obj/item/ingot/iron
+ created_item = /obj/item/rogueweapon/sickle/kama
+ craftdiff = 2
diff --git a/code/modules/roguetown/roguemachine/mail.dm b/code/modules/roguetown/roguemachine/mail.dm
index bf97d6cc35..ec85af1a24 100644
--- a/code/modules/roguetown/roguemachine/mail.dm
+++ b/code/modules/roguetown/roguemachine/mail.dm
@@ -143,6 +143,11 @@
new /obj/item/clothing/neck/roguetown/mercmedal/boltslinger(src.loc)
if(7)
new /obj/item/clothing/neck/roguetown/mercmedal/anthrax(src.loc)
+ if(8)
+ new /obj/item/clothing/neck/roguetown/mercmedal/toweryakko(src.loc)
+ if(9)
+ new /obj/item/clothing/neck/roguetown/mercmedal/kabukimaru(src.loc)
+
if(C.signed == 0)
to_chat(H, "I cannot send an unsigned token.")
return
diff --git a/code/modules/spells/roguetown/acolyte/abyssor.dm b/code/modules/spells/roguetown/acolyte/abyssor.dm
new file mode 100644
index 0000000000..b2fe787fa8
--- /dev/null
+++ b/code/modules/spells/roguetown/acolyte/abyssor.dm
@@ -0,0 +1,353 @@
+/obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal //for now just an abyssal version of the same spell, just with a different sprite. Placeholder.
+ name = "Lesser Miracle"
+ overlay_state = "purification"
+ overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ action_icon_state = "spell0"
+ action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+
+/obj/effect/proc_holder/spell/invoked/icebind
+ name = "Barotrauma Bind" //People faithful to Abyssor will instantly be released from this spell.
+ overlay_state = "waternet"
+ overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ chargedrain = 5
+ releasedrain = 30
+ charge_max = 50 SECONDS
+ range = 8
+ warnie = "aimwarn"
+ movement_interrupt = FALSE
+ sound = 'sound/magic/magic_nulled.ogg'
+ action_icon_state = "spell0"
+ action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ invocation_type = "none"
+ associated_skill = /datum/skill/magic/holy
+ antimagic_allowed = TRUE
+ charge_max = 60 SECONDS
+ req_items = list(/obj/item/clothing/neck/roguetown/psicross/abyssanctum)
+ devotion_cost = 45
+
+/turf/open/proc/apply_ice_turf()
+ var/prev_icon_state = icon_state //that code saves the original attributes of the turf to avoid a black void.
+ icon_state = "ice"
+ density = FALSE
+ MakeSlippery(TURF_WET_PERMAFROST, min_wet_time = 100, wet_time_to_add = 5)
+ spawn(100)
+ if(icon_state == "ice")
+ icon_state = prev_icon_state
+ density = initial(density)
+
+/obj/effect/proc_holder/spell/invoked/icebind/cast(list/targets, mob/living/user)
+ if(!targets.len || !targets[1])
+ to_chat(user, span_warning("Your spell fails to take hold, victimless."))
+ return FALSE
+ var/target = targets[1]
+
+ if(isliving(target))
+ var/mob/living/target_mob = target
+ if(!target_mob.has_status_effect(/datum/status_effect/abyssaltomb))
+ target_mob.apply_status_effect(/datum/status_effect/abyssaltomb)
+ target_mob.visible_message("[target_mob] is sealed within a crystalline abyssal tomb!")
+ else
+ to_chat(user, span_warning("Your target is already immobilized within a frigid tomb from the ocean!"))
+ return TRUE
+
+ if(isturf(target))
+ var/turf/open/T = target
+ if(!isclosedturf(T))
+ T.apply_ice_turf()
+ to_chat(user, "Without a target, the ground becomes victim of the abyssal oppression.")
+ return TRUE
+ else
+ to_chat(user, "There is no space for a proper icespyre or cold to be settled.")
+ return FALSE
+
+ to_chat(user, span_warning("Your spell fails to take hold, victimless."))
+ return FALSE
+
+/datum/status_effect/abyssaltomb/on_apply()
+ tomb = new /obj/structure/abyssaltomb(get_turf(owner)) // Create the ice tomb, THEN move the victim inside
+ tomb.encased_mob = owner
+ if(istype(owner, /mob/living/carbon/human))
+ tomb.buckle_mob(owner, TRUE, check_loc = FALSE)
+ if(owner.patron && owner.patron.type == /datum/patron/divine/abyssor)
+ to_chat(src, "Abyssor follower = no processing..")
+ tomb.processing = FALSE
+ else
+ to_chat(src, "Unbased person that don't follow abyssor, start to purify their ass.")
+ START_PROCESSING(SSobj, tomb) // Processing for non-Abyssor followers
+ owner.forceMove(tomb) // Move the owner inside the tomb
+ tomb.max_integrity = 300
+ tomb.density = TRUE
+ owner.visible_message("[owner] is encased in a crystalline tomb of ice.")
+ return ..()
+
+/datum/status_effect/abyssaltomb/on_remove()
+ if(tomb)
+ tomb.unbuckle_all_mobs() //Avoid Qdelling the mob
+ qdel(tomb)
+ tomb = null
+ return ..()
+
+/obj/structure/abyssaltomb
+ name = "abyssal tomb"
+ desc = "A solid block of ice encasing a victim inside a pocket dimension deep on the ocean. One requires to break the coffin to be released from such depths."
+ icon = 'icons/roguetown/kaizoku/misc/freezesprite.dmi'
+ icon_state = "icespyre"
+ density = TRUE
+ max_integrity = 150
+ buckle_lying = 0
+ buckle_prevents_pull = 1
+ layer = FLY_LAYER
+ var/processing = TRUE
+ var/last_attack
+ var/mob/living/carbon/human/encased_mob
+
+/obj/structure/abyssaltomb/Destroy()
+ for(var/atom/movable/M in contents)
+ M.forceMove(loc)
+ if(encased_mob) // Use the linked mob reference
+ encased_mob.remove_status_effect(/datum/status_effect/abyssaltomb)
+ playsound(src, 'sound/combat/hits/onglass/glassbreak (2).ogg', 50, TRUE)
+ return ..()
+
+/obj/structure/abyssaltomb/process()
+ to_chat(src, "Abyssal Tomb is processing properly.")
+ if(!has_buckled_mobs()) // If there are no mobs buckled, delete the tomb
+ to_chat(src, "No buckled mobs found, deleting tomb.")
+ qdel(src)
+ return
+ for(var/mob/living/L in buckled_mobs)
+ if(!iscarbon(L) || L.buckled != src)
+ to_chat(src, "Invalid buckled mob detected, skipping.")
+ continue
+ if(!last_attack) // Time tracking for damaging the buckled person
+ last_attack = world.time
+ var/barotrauma = 50 // 5 seconds for each
+ if(world.time >= last_attack + barotrauma) // Pressure damage after enough time has passed
+ last_attack = world.time
+ src.visible_message("[src]'s crushing pressure squeezes [L] mercilessly!")
+ L.flash_fullscreen("whiteflash3")
+ L.adjustBruteLoss(rand(10, 30))
+ if(L.stat == DEAD)
+ src.visible_message("[L]'s squeezed body is now released after death.")
+ qdel(src)
+
+/obj/structure/abyssaltomb/user_unbuckle_mob(mob/living/carbon/human/M, mob/living/carbon/human/user)
+ if(obj_broken)
+ ..()
+ return
+
+ if(isliving(user))
+ var/mob/living/L = user
+ var/willpower = CLAMP((L.STAINT * 2 - 10), 1, 99)
+ var/barotrauma_roll = rand(1, 100)
+ to_chat(user, "DEBUG: willpower=[willpower], barotrauma_roll=[barotrauma_roll]; To be released, have more Willpower than Barotrauma")
+
+ if(processing == FALSE)
+ to_chat(M, "[M]'s purified body quickly breaks away from the abyssal tomb.")
+ M.remove_status_effect(/datum/status_effect/abyssaltomb)
+ qdel(src)
+ return
+
+ user.changeNext_move(CLICK_CD_RAPID)
+ if(user != M)
+ if(barotrauma_roll <= willpower) //Freeing someone else.
+ to_chat(user, "Your body warmth releases [M]'s from the pocket dimension.")
+ to_chat(M, "You feel [user]'s warmth as light comes over to your eyes.")
+ M.remove_status_effect(/datum/status_effect/abyssaltomb)
+ if(processing == TRUE)
+ STOP_PROCESSING(SSobj, src)
+ qdel(src)
+ else
+ to_chat(user, "You try to free [M], but you hand ricochets.")
+ to_chat(M, "[user] attempts to free you, but your world spins instead.")
+ M.Stun(40)
+ shake_camera(M, 15, 1)
+ return
+
+ if(barotrauma_roll <= willpower) // Freeing themselves
+ to_chat(M, "You push the pressure towards itself, finally released from its grasp.")
+ src.visible_message("[M] manages to break down the abyssal tomb!")
+ M.remove_status_effect(/datum/status_effect/abyssaltomb)
+ if(processing == TRUE)
+ STOP_PROCESSING(SSobj, src)
+ qdel(src)
+ else
+ to_chat(user, "You struggle to break free of the tomb, but remain trapped.")
+ user.Stun(40)
+ shake_camera(user, 15, 1)
+
+///Purification///
+
+/obj/effect/proc_holder/spell/invoked/projectile/purify
+ name = "Purifying filter"
+ overlay_state = "icespike"
+ overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ action_icon_state = "spell0"
+ action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ releasedrain = 50
+ chargetime = 30
+ range = 7
+ warnie = "sydwarning"
+ movement_interrupt = FALSE
+ projectile_type = /obj/projectile/magic/purify
+ chargedloop = null
+ req_items = list(/obj/item/clothing/neck/roguetown/psicross/abyssanctum)
+ sound = 'sound/magic/magic_nulled.ogg'
+ invocation_type = "none"
+ //invocation = "delivers sharp jabs and a sudden clap, unleashing a freezing shockwave that forms and launches a jagged ice spike."
+
+ associated_skill = /datum/skill/magic/holy
+ antimagic_allowed = TRUE
+ charge_max = 10 SECONDS
+ devotion_cost = -45
+
+/obj/projectile/magic/purify
+ name = "purification"
+ icon_state = "icespikeproj"
+ icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ paralyze = 50
+ damage = 0
+ range = 7
+ hitsound = 'sound/blank.ogg'
+ nondirectional_sprite = TRUE
+ impact_effect_type = /obj/effect/temp_visual/icespikeproj_projectile_impact //See if we can set it to be a projectile if CMODE, and a invocation if !CMODE
+
+/obj/effect/temp_visual/icespikeproj_projectile_impact
+ name = "purifying spike"
+ icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ icon_state = "icespikeproj_break"
+ layer = ABOVE_ALL_MOB_LAYER
+ duration = 3
+
+/obj/projectile/magic/purify/on_hit(atom/target, mob/living/user, blocked = FALSE)
+ ..()
+ var/mob/living/carbon/C = target
+ if(iscarbon(target))
+ if(C.mob_biotypes & MOB_SPIRIT) // Abyssor's purifying filter absolutely destroys demonic essence.
+ C.visible_message("An otherworldly divine freeze encircles [target], filtering out their very existence!", "My breath shallows- my ears rings, my senses overwhelmed with the crushing grip! I'M GOING TO IMPLODE FROM INSIDE OUT! PLEASE MERCY!")
+ C.adjustFireLoss(rand(50, 100)) //Random damage between 50 and 100. Very brutal, and proper for killing demons. Cold damage will come together with it after.
+ C.Knockdown(40) //Purification successful. You will be paralyzed.
+ C.Paralyze(1)
+ C.apply_status_effect(/datum/status_effect/debuff/freezing/severe)
+ C.flash_fullscreen("whiteflash3")
+ return
+ if((C.faction = "orcs") || (C.dna.species?.id == "tiefling") ||(HAS_TRAIT(C, TRAIT_NASTY_EATER ))) // Had to give them these ones because there's a bunch of different goblin IDs. So Trait will have to stay until I care about giving each a respective var.
+ C.visible_message("[target]'s body is distorted by the crushing force of the abyssal waters!", "I feel the suffocating pressure of the deep crushing my lungs!")
+ C.adjustFireLoss(rand(30, 50)) // 30 to 50 damage, less than full demons. More damage comes from freezing.
+ C.Knockdown(20) //Purification successful. You will be paralyzed.
+ C.Paralyze(1) // Creatures with demon essence from Apotheosis war gets the second end of the stick.
+ C.apply_status_effect(/datum/status_effect/debuff/freezing/severe)
+ C.flash_fullscreen("whiteflash3")
+ return
+ if(C.dna.species?.id == "abyssariad"||C.dna.species?.id == "aasimar") //Barely does anything to "Pure" creatures. This proves their 'divinity' and purity ingame.
+ C.visible_message("[target]'s body shivers slightly, yet remains sturdy.", "A cold travel down my spine, yet I feel little to no pain.")
+ C.adjustBruteLoss(rand(5, 15)) // 10 to 15 damage. Don't even bother attacking these. They will not be frozen either.
+ return
+ else //Does not paralyze.
+ C.visible_message("[target]'s body is distorted by the crushing force of the abyssal waters!", "I feel the suffocating pressure of the deep crushing my lungs!")
+ C.adjustFireLoss(rand(20, 35)) //Normal creatures will still suffer the effects of Barotrauma, yet less in terms of damage. Will still freeze.
+ C.apply_status_effect(/datum/status_effect/debuff/freezing)
+ C.flash_fullscreen("whiteflash3")
+ return
+
+////////NOT FINISHED YET//////////
+
+/*
+/obj/effect/proc_holder/spell/invoked/elemental //chooses attackable people by clicking on them.
+ name = "Ice elemental"
+ overlay_state = "waterspirit"
+ overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ releasedrain = 30
+ chargedrain = 4
+ chargetime = 5
+ range = 8
+ warnie = "aimwarn"
+ movement_interrupt = FALSE
+ sound = 'sound/music/kaizoku/spells/martialart_abyssanctum.ogg'
+ action_icon_state = "spell0"
+ action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi'
+ invocation_type = "emote"
+ invocation = "punches and spins, unleashing a surge of freezing energy."
+ associated_skill = /datum/skill/magic/holy
+ antimagic_allowed = FALSE
+ charge_max = 10 SECONDS
+
+
+
+/obj/effect/proc_holder/spell/invoked/icebind/cast(list/targets, mob/living/user)
+ if(!targets.len || !targets[1])
+ to_chat(user, span_warning("Your spell fails to take hold, victimless."))
+ return FALSE
+
+ var/target = targets[1]
+
+ if(isliving(target))
+ var/mob/living/target_mob = target
+ if(!target_mob.has_status_effect(/datum/status_effect/frozentomb))
+ target_mob.apply_status_effect(/datum/status_effect/frozentomb)
+
+
+/obj/effect/proc_holder/spell/invoked/icebind/cast(list/targets, mob/living/user, mob/living/carbon/human/H)
+ if(!targets.len || !targets[1])
+ to_chat(user, span_warning("Your spell fails to take hold, victimless."))
+ return FALSE
+
+ var/mob/living/target = targets[1]
+ if(target.stat < DEAD)
+ to_chat(user, "Nothing happens.")
+ return FALSE
+ if(target != user)
+ target.faction = "enemy" // You're targeted to DIE
+ return TRUE
+
+ if(isturf(target))
+ var/turf/open/T = target
+ if(!isclosedturf(T))
+ new /mob/living/simple_animal/retaliate/purifier(target)
+ to_chat(user, "You create an elemental to do your bidding.")
+ return FALSE
+ else
+ to_chat(user, "You cannot mark someone for purification or create an elemental here.")
+ return FALSE
+
+/mob/living/simple_animal/retaliate/purifier
+ name = "Abyssal Elemental"
+ desc = "A creature which the presence damages "
+ health = 300
+ maxHealth = 300
+ icon = 'icons/roguetown/kaizoku/misc/waterspirit.dmi'
+ icon_state = "waterspirit"
+ mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
+ movement_type = GROUND
+ speak_emote = list("roars")
+ wander = TRUE
+ del_on_death = TRUE
+ deathmessage = "falls to the ground, decaying into glowing particles."
+ deathsound = "bodyfall"
+ footstep_type = FOOTSTEP_MOB_HEAVY
+ turns_per_move = 3
+ STACON = 15
+ STASTR = 11
+ STASPD = 12
+ var/list/currently_affected = list()
+ var/ticks_to_next_process = 3
+
+/mob/living/simple_animal/retaliate/purifier/process()
+ if(stat)
+ return
+ var/list/affected = hearers(7, src)
+ var/to_fire = 5
+ for(var/mob/living/A in affected)
+ if(istype(A, /mob/living/carbon/human/species))
+ if(A.stat != DEAD)
+ A.adjustBruteLoss(rand(2,10))
+ if(!--to_fire)
+ return
+ else if(istype(A, /mob/living/simple_animal/hostile))
+ if(A.stat != DEAD)
+ A.adjustBruteLoss(rand(2,10))
+ if(!--to_fire)
+ return
+
+*/
+//experimental
diff --git a/code/modules/spells/roguetown/acolyte/general.dm b/code/modules/spells/roguetown/acolyte/general.dm
index a176677aba..bcd698ca1a 100644
--- a/code/modules/spells/roguetown/acolyte/general.dm
+++ b/code/modules/spells/roguetown/acolyte/general.dm
@@ -58,6 +58,7 @@
conditional_buff = TRUE
if(/datum/patron/divine/abyssor)
target.visible_message(span_info("A mist of salt-scented vapour settles on [target]!"), span_notice("I'm invigorated by healing vapours!"))
+ target.reagents.add_reagent(/datum/reagent/medicine/abyssalpurificator, 15) //Addictional chemical to remove demonic corruption. That's a system coming to second part of Kaizoku.
// if our target is standing in water, heal a flat amount extra
if (istype(get_turf(target), /turf/open/water))
conditional_buff = TRUE
@@ -310,3 +311,21 @@
user.say("I wouldn't sing your praises even if you forged me to!", forced = "spell")
if(5)
user.say("What manner of blabbering creecher art thou?", forced = "spell")
+ if("abyssariad")
+ switch(pick(1,2,3,4,5,6,7,8))
+ if(1)
+ user.say("Even the sea refuses to swallow a fool like ye!", forced = "spell")
+ if(2)
+ user.say("I'd say ye head be thick as an oni's skull, but different of ye, onis can think.", forced = "spell")
+ if(3)
+ user.say("Is that yer battle stance, or are ye just tryin' not to keel over?", forced = "spell")
+ if(4)
+ user.say("Do the waves weep for yer blade's sad fate, or be it just ye", forced = "spell")
+ if(5)
+ user.say("Yer tongue's sharper than yer blade, but neither does a lick o' damage.", forced = "spell")
+ if(6)
+ user.say("If brains were gold, ye'd be poorer than a sunken wreck.", forced = "spell")
+ if(7)
+ user.say("Ye've the charm of a beached whale, and the smell to match.", forced = "spell")
+ if(8)
+ user.say("Ye fight like a landlubber, and yer wits be even slower!", forced = "spell")
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index 48101e0e24..b92d922747 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -412,3 +412,8 @@
eye_icon_state = "snail_eyes"
icon_state = "snail_eyeballs"
+/obj/item/organ/eyes/rogue/tengu
+ name = "tengu eyes"
+ desc = ""
+ eye_icon_state = "eyes_closed"
+ icon_state = "eyes_closed"
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 6b4284a654..88a04e511a 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -1,3 +1,4 @@
+
/obj/item/organ/tongue
name = "tongue"
desc = ""
@@ -18,7 +19,8 @@
/datum/language/celestial,
/datum/language/hellspeak,
/datum/language/beast,
- /datum/language/orcish
+ /datum/language/orcish,
+ /datum/language/abyssal
))
/obj/item/organ/tongue/Initialize(mapload)
@@ -237,3 +239,15 @@
else
new_message += message[i]
speech_args[SPEECH_MESSAGE] = new_message
+
+/obj/item/organ/tongue/kitsune
+ name = "changeling tongue"
+ desc = "The tongue that inwardly bends the moldable changeling skull into a glasgow smile, or other shapes depending on their branch."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "eldritch"
+ slot = ORGAN_SLOT_TONGUE
+ var/tongue_type = "eldritch"
+ var/can_wag = TRUE
+ var/wagging = FALSE
+ zone = BODY_ZONE_PRECISE_MOUTH
+ slot = ORGAN_SLOT_TONGUE
diff --git a/config/maps.txt b/config/maps.txt
index 1577c9660f..c5b95c219f 100644
--- a/config/maps.txt
+++ b/config/maps.txt
@@ -13,15 +13,11 @@ Format:
votable (is this map votable)
endmap
-map vanderlin
+map dun_manor
default
votable
endmap
map roguetown
- disabled
+ votable
endmap
-
-map dun_manor
- disabled
-endmap
\ No newline at end of file
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/female/fs_kappa.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/female/fs_kappa.dmi
new file mode 100644
index 0000000000..388bc986a8
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/female/fs_kappa.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/female/ft.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/female/ft.dmi
new file mode 100644
index 0000000000..477c09b93a
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/female/ft.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/female/ft_kit.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/female/ft_kit.dmi
new file mode 100644
index 0000000000..7ccf32ad83
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/female/ft_kit.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/female/ftan.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/female/ftan.dmi
new file mode 100644
index 0000000000..bc5588052c
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/female/ftan.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/female/mindflayer.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/female/mindflayer.dmi
new file mode 100644
index 0000000000..fd3e329018
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/female/mindflayer.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/male/mindflayer.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/male/mindflayer.dmi
new file mode 100644
index 0000000000..5682f293bb
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/male/mindflayer.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/male/ms_kappa.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/male/ms_kappa.dmi
new file mode 100644
index 0000000000..f09c13709a
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/male/ms_kappa.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/male/mt_kit.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/male/mt_kit.dmi
new file mode 100644
index 0000000000..972f18c6e1
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/male/mt_kit.dmi differ
diff --git a/icons/roguetown/kaizoku/abyssariad_bodies/male/mtan.dmi b/icons/roguetown/kaizoku/abyssariad_bodies/male/mtan.dmi
new file mode 100644
index 0000000000..c736e03e57
Binary files /dev/null and b/icons/roguetown/kaizoku/abyssariad_bodies/male/mtan.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/accessories.dmi b/icons/roguetown/kaizoku/body_details/accessories.dmi
new file mode 100644
index 0000000000..0ff5cf1ab1
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/accessories.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/attachment.dmi b/icons/roguetown/kaizoku/body_details/attachment.dmi
new file mode 100644
index 0000000000..ac0b668352
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/attachment.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/beards.dmi b/icons/roguetown/kaizoku/body_details/beards.dmi
new file mode 100644
index 0000000000..27874b84e7
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/beards.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/body.dmi b/icons/roguetown/kaizoku/body_details/body.dmi
new file mode 100644
index 0000000000..cf74d73796
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/body.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/hairstyles.dmi b/icons/roguetown/kaizoku/body_details/hairstyles.dmi
new file mode 100644
index 0000000000..115802115a
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/hairstyles.dmi differ
diff --git a/icons/roguetown/kaizoku/body_details/kitsunejaws.dmi b/icons/roguetown/kaizoku/body_details/kitsunejaws.dmi
new file mode 100644
index 0000000000..524bf993bb
Binary files /dev/null and b/icons/roguetown/kaizoku/body_details/kitsunejaws.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/armor.dmi b/icons/roguetown/kaizoku/clothing/armor.dmi
new file mode 100644
index 0000000000..ad409a7f67
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/armor.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/belts.dmi b/icons/roguetown/kaizoku/clothing/belts.dmi
new file mode 100644
index 0000000000..824a69e4a8
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/belts.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/cloaks.dmi b/icons/roguetown/kaizoku/clothing/cloaks.dmi
new file mode 100644
index 0000000000..6d6b89721d
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/cloaks.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/feet.dmi b/icons/roguetown/kaizoku/clothing/feet.dmi
new file mode 100644
index 0000000000..f9457a1f68
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/feet.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/gloves.dmi b/icons/roguetown/kaizoku/clothing/gloves.dmi
new file mode 100644
index 0000000000..5900b19897
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/gloves.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/head.dmi b/icons/roguetown/kaizoku/clothing/head.dmi
new file mode 100644
index 0000000000..74a88f5b39
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/head.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/head64.dmi b/icons/roguetown/kaizoku/clothing/head64.dmi
new file mode 100644
index 0000000000..fd8f4702c2
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/head64.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/masks.dmi b/icons/roguetown/kaizoku/clothing/masks.dmi
new file mode 100644
index 0000000000..db78a8660d
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/masks.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/neck.dmi b/icons/roguetown/kaizoku/clothing/neck.dmi
new file mode 100644
index 0000000000..037215b5be
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/neck.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/pants.dmi b/icons/roguetown/kaizoku/clothing/pants.dmi
new file mode 100644
index 0000000000..630366797b
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/pants.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/shirt.dmi b/icons/roguetown/kaizoku/clothing/shirt.dmi
new file mode 100644
index 0000000000..327a60d9de
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/shirt.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/underwear.dmi b/icons/roguetown/kaizoku/clothing/underwear.dmi
new file mode 100644
index 0000000000..9d3cc946e0
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/underwear.dmi differ
diff --git a/icons/roguetown/kaizoku/clothing/wrists.dmi b/icons/roguetown/kaizoku/clothing/wrists.dmi
new file mode 100644
index 0000000000..6c4ba29047
Binary files /dev/null and b/icons/roguetown/kaizoku/clothing/wrists.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/armor.dmi b/icons/roguetown/kaizoku/clothingicon/armor.dmi
new file mode 100644
index 0000000000..ef658887db
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/armor.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/belts.dmi b/icons/roguetown/kaizoku/clothingicon/belts.dmi
new file mode 100644
index 0000000000..ff40ca25ab
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/belts.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/cloaks.dmi b/icons/roguetown/kaizoku/clothingicon/cloaks.dmi
new file mode 100644
index 0000000000..3d6753882a
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/cloaks.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/feet.dmi b/icons/roguetown/kaizoku/clothingicon/feet.dmi
new file mode 100644
index 0000000000..27562dd607
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/feet.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/gloves.dmi b/icons/roguetown/kaizoku/clothingicon/gloves.dmi
new file mode 100644
index 0000000000..387d9b29af
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/gloves.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/head.dmi b/icons/roguetown/kaizoku/clothingicon/head.dmi
new file mode 100644
index 0000000000..695227349f
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/head.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/masks.dmi b/icons/roguetown/kaizoku/clothingicon/masks.dmi
new file mode 100644
index 0000000000..435e8ed2d6
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/masks.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/neck.dmi b/icons/roguetown/kaizoku/clothingicon/neck.dmi
new file mode 100644
index 0000000000..4f3dc0f388
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/neck.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/pants.dmi b/icons/roguetown/kaizoku/clothingicon/pants.dmi
new file mode 100644
index 0000000000..817e237ae5
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/pants.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/shirt.dmi b/icons/roguetown/kaizoku/clothingicon/shirt.dmi
new file mode 100644
index 0000000000..a5c19110b7
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/shirt.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/underwear.dmi b/icons/roguetown/kaizoku/clothingicon/underwear.dmi
new file mode 100644
index 0000000000..07ecd0e9c5
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/underwear.dmi differ
diff --git a/icons/roguetown/kaizoku/clothingicon/wrists.dmi b/icons/roguetown/kaizoku/clothingicon/wrists.dmi
new file mode 100644
index 0000000000..0534d83180
Binary files /dev/null and b/icons/roguetown/kaizoku/clothingicon/wrists.dmi differ
diff --git a/icons/roguetown/kaizoku/detailed/jinbaori.dmi b/icons/roguetown/kaizoku/detailed/jinbaori.dmi
new file mode 100644
index 0000000000..3feb7c3ad0
Binary files /dev/null and b/icons/roguetown/kaizoku/detailed/jinbaori.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/dismemberment.dmi b/icons/roguetown/kaizoku/helpers/dismemberment.dmi
new file mode 100644
index 0000000000..b21d11030e
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/dismemberment.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/sleeves_armor.dmi b/icons/roguetown/kaizoku/helpers/sleeves_armor.dmi
new file mode 100644
index 0000000000..047925a2bc
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/sleeves_armor.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/sleeves_cloaks.dmi b/icons/roguetown/kaizoku/helpers/sleeves_cloaks.dmi
new file mode 100644
index 0000000000..4f5867e07e
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/sleeves_cloaks.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/sleeves_pants.dmi b/icons/roguetown/kaizoku/helpers/sleeves_pants.dmi
new file mode 100644
index 0000000000..9f96b16230
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/sleeves_pants.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi b/icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi
new file mode 100644
index 0000000000..8245e1b3af
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi differ
diff --git a/icons/roguetown/kaizoku/helpers/stonekeep_merc.dmi b/icons/roguetown/kaizoku/helpers/stonekeep_merc.dmi
new file mode 100644
index 0000000000..8e3d263804
Binary files /dev/null and b/icons/roguetown/kaizoku/helpers/stonekeep_merc.dmi differ
diff --git a/icons/roguetown/kaizoku/items/abyssal.dmi b/icons/roguetown/kaizoku/items/abyssal.dmi
new file mode 100644
index 0000000000..0265af91cb
Binary files /dev/null and b/icons/roguetown/kaizoku/items/abyssal.dmi differ
diff --git a/icons/roguetown/kaizoku/items/crops.dmi b/icons/roguetown/kaizoku/items/crops.dmi
new file mode 100644
index 0000000000..b287a7c019
Binary files /dev/null and b/icons/roguetown/kaizoku/items/crops.dmi differ
diff --git a/icons/roguetown/kaizoku/items/food.dmi b/icons/roguetown/kaizoku/items/food.dmi
new file mode 100644
index 0000000000..e2d43e5f5c
Binary files /dev/null and b/icons/roguetown/kaizoku/items/food.dmi differ
diff --git a/icons/roguetown/kaizoku/items/produce.dmi b/icons/roguetown/kaizoku/items/produce.dmi
new file mode 100644
index 0000000000..2869d920a2
Binary files /dev/null and b/icons/roguetown/kaizoku/items/produce.dmi differ
diff --git a/icons/roguetown/kaizoku/mapset/frontierjustice.dmi b/icons/roguetown/kaizoku/mapset/frontierjustice.dmi
new file mode 100644
index 0000000000..3ac352a8b0
Binary files /dev/null and b/icons/roguetown/kaizoku/mapset/frontierjustice.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/freezesprite.dmi b/icons/roguetown/kaizoku/misc/freezesprite.dmi
new file mode 100644
index 0000000000..462e59e8f7
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/freezesprite.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/lefthand_music.dmi b/icons/roguetown/kaizoku/misc/lefthand_music.dmi
new file mode 100644
index 0000000000..bf42a5fe55
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/lefthand_music.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/music.dmi b/icons/roguetown/kaizoku/misc/music.dmi
new file mode 100644
index 0000000000..449f225d22
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/music.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/righthand_music.dmi b/icons/roguetown/kaizoku/misc/righthand_music.dmi
new file mode 100644
index 0000000000..2b61af6eb5
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/righthand_music.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/screen_alert.dmi b/icons/roguetown/kaizoku/misc/screen_alert.dmi
new file mode 100644
index 0000000000..967e477fb6
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/screen_alert.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/spells.dmi b/icons/roguetown/kaizoku/misc/spells.dmi
new file mode 100644
index 0000000000..6dad3450be
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/spells.dmi differ
diff --git a/icons/roguetown/kaizoku/misc/waterspirit.dmi b/icons/roguetown/kaizoku/misc/waterspirit.dmi
new file mode 100644
index 0000000000..591d060b3d
Binary files /dev/null and b/icons/roguetown/kaizoku/misc/waterspirit.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/emperor.dmi b/icons/roguetown/kaizoku/mobs/emperor.dmi
new file mode 100644
index 0000000000..311671bff9
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/emperor.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/envy.dmi b/icons/roguetown/kaizoku/mobs/envy.dmi
new file mode 100644
index 0000000000..9ba79fa40a
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/envy.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/fogfrog.dmi b/icons/roguetown/kaizoku/mobs/fogfrog.dmi
new file mode 100644
index 0000000000..b3ee3ffc3f
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/fogfrog.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/gluttony.dmi b/icons/roguetown/kaizoku/mobs/gluttony.dmi
new file mode 100644
index 0000000000..6cf54935c5
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/gluttony.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/greed.dmi b/icons/roguetown/kaizoku/mobs/greed.dmi
new file mode 100644
index 0000000000..909439822f
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/greed.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/horse.dmi b/icons/roguetown/kaizoku/mobs/horse.dmi
new file mode 100644
index 0000000000..c217fb1eb5
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/horse.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/lust.dmi b/icons/roguetown/kaizoku/mobs/lust.dmi
new file mode 100644
index 0000000000..93e6e375f0
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/lust.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/pride_ambusher.dmi b/icons/roguetown/kaizoku/mobs/pride_ambusher.dmi
new file mode 100644
index 0000000000..cf74d73796
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/pride_ambusher.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/sloth.dmi b/icons/roguetown/kaizoku/mobs/sloth.dmi
new file mode 100644
index 0000000000..cf74d73796
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/sloth.dmi differ
diff --git a/icons/roguetown/kaizoku/mobs/starvation.dmi b/icons/roguetown/kaizoku/mobs/starvation.dmi
new file mode 100644
index 0000000000..cf74d73796
Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/starvation.dmi differ
diff --git a/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi b/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi
new file mode 100644
index 0000000000..5a1d691864
Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi differ
diff --git a/icons/roguetown/kaizoku/tileset/fire.dmi b/icons/roguetown/kaizoku/tileset/fire.dmi
new file mode 100644
index 0000000000..900573d72c
Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/fire.dmi differ
diff --git a/icons/roguetown/kaizoku/tileset/firealts.dmi b/icons/roguetown/kaizoku/tileset/firealts.dmi
new file mode 100644
index 0000000000..cf74d73796
Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/firealts.dmi differ
diff --git a/icons/roguetown/kaizoku/tileset/tileset.dmi b/icons/roguetown/kaizoku/tileset/tileset.dmi
new file mode 100644
index 0000000000..f85a1b8232
Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/tileset.dmi differ
diff --git a/icons/roguetown/kaizoku/wallset/abyssalstone.dmi b/icons/roguetown/kaizoku/wallset/abyssalstone.dmi
new file mode 100644
index 0000000000..7fd040ba17
Binary files /dev/null and b/icons/roguetown/kaizoku/wallset/abyssalstone.dmi differ
diff --git a/icons/roguetown/kaizoku/wallset/eastern_wood.dmi b/icons/roguetown/kaizoku/wallset/eastern_wood.dmi
new file mode 100644
index 0000000000..0c06212036
Binary files /dev/null and b/icons/roguetown/kaizoku/wallset/eastern_wood.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/32.dmi b/icons/roguetown/kaizoku/weapons/32.dmi
new file mode 100644
index 0000000000..99bdc1ecb8
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/32.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/64.dmi b/icons/roguetown/kaizoku/weapons/64.dmi
new file mode 100644
index 0000000000..d6ffdad179
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/64.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/ammo.dmi b/icons/roguetown/kaizoku/weapons/ammo.dmi
new file mode 100644
index 0000000000..d881a76709
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/ammo.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/bows.dmi b/icons/roguetown/kaizoku/weapons/bows.dmi
new file mode 100644
index 0000000000..2396747c65
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/bows.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/firelance.dmi b/icons/roguetown/kaizoku/weapons/firelance.dmi
new file mode 100644
index 0000000000..e36c1fa8c5
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/firelance.dmi differ
diff --git a/icons/roguetown/kaizoku/weapons/items.dmi b/icons/roguetown/kaizoku/weapons/items.dmi
new file mode 100644
index 0000000000..770da6a7a5
Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/items.dmi differ
diff --git a/icons/roguetown/weapons/32.dmi b/icons/roguetown/weapons/32.dmi
index 29eedb0ca7..a74376db8f 100644
Binary files a/icons/roguetown/weapons/32.dmi and b/icons/roguetown/weapons/32.dmi differ
diff --git a/interface/fonts/languages/abyssal.ttf b/interface/fonts/languages/abyssal.ttf
new file mode 100644
index 0000000000..0b519427fe
Binary files /dev/null and b/interface/fonts/languages/abyssal.ttf differ
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index c4ff039458..7589e1366e 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -132,6 +132,7 @@ h1.alert, h2.alert {color: #c9c1ba;font-family: Pterra, TrueType;}
.undead {font-family: "FriskyVampire", Pterra;}
.orc {font-family: "Thief by The Riddler", Pterra;}
.beast {font-family: "Thief by The Riddler", Pterra;}
+.abyssal {font-family: "Henshin", Pterra;}
.torture {color: #42ff20}
diff --git a/modular/Barding/code/Barding_instruments.dm b/modular/Barding/code/Barding_instruments.dm
index eb1e9c45eb..c06161500a 100644
--- a/modular/Barding/code/Barding_instruments.dm
+++ b/modular/Barding/code/Barding_instruments.dm
@@ -400,3 +400,21 @@
"Song 3" = 'modular/Barding/sound/instruments/drum (3).ogg',
"Snare drum" = 'modular/Barding/sound/instruments/drum (4).ogg',
"Desert Heat" = 'modular/Barding/sound/instruments/drum (5).ogg')
+
+/obj/item/rogue/instrument/shamisen //I know shamisen should be used while sitting/on knees. butt you think bards really need to be SITTING during battle?
+ name = "shamisen"
+ desc = "shamisen, or just 'three-stings' is a abyssariad puckled stringed musical instrument, usually played using a Bachi."
+ icon = 'icons/roguetown/kaizoku/misc/music.dmi'
+ icon_state = "shamisen"
+ lefthand_file = 'icons/roguetown/kaizoku/misc/lefthand_music.dmi'
+ righthand_file = 'icons/roguetown/kaizoku/misc/righthand_music.dmi'
+ song_list = list(
+ "Cursed Apple" = 'sound/music/kaizoku/instrument/shamisen1.ogg', //Credit; "Bad Apple by しゃみお - Shamisen player Shamio"
+ "Fire Dance" = 'sound/music/kaizoku/instrument/shamisen2.ogg', //Credit; "Fire Dance by しゃみお - Shamisen player Shamio"
+ "Lute" = 'sound/music/kaizoku/instrument/shamisen3.ogg', //Credit; "Lute (shamisen) by Museum of Fine Arts, Boston"
+ "Tsugaru Ripple" = 'sound/music/kaizoku/instrument/shamisen4.ogg', //Credit; "Tsugaru Shamisen (using Ripple) by Shamisen Komatsuya"
+ "Tsugaru" = 'sound/music/kaizoku/instrument/shamisen5.ogg', //Credit; "Tsugaru Shamisen by Roger Walch"
+ "Season" = 'sound/music/kaizoku/instrument/shamisen6.ogg', //Credit; "相棒 Season 遊郭編しゃみお - Shamisen player Shamio"
+ "Parade" = 'sound/music/kaizoku/instrument/shamisen7.ogg', //Credit; "「雨天PARADE」三味線オリジナル曲 - しゃみお - Shamisen player Shamio"
+ "Koshiro" = 'sound/music/kaizoku/instrument/shamisen8.ogg' //Credit; “KOSHIRO” -幸四郎- by SENZO"
+ )
diff --git a/modular/Neu_Farming/code/plant_def.dm b/modular/Neu_Farming/code/plant_def.dm
index a52f5fd24b..8d80b66107 100644
--- a/modular/Neu_Farming/code/plant_def.dm
+++ b/modular/Neu_Farming/code/plant_def.dm
@@ -216,6 +216,16 @@
can_grow_underground = TRUE
*/
+/datum/plant_def/rice
+ name = "weeperstears patch"
+ icon_state = "rice"
+ produce_type = /obj/item/reagent_containers/food/snacks/produce/rice
+ produce_amount_min = 4
+ produce_amount_max = 6
+ maturation_nutrition = HUNGRINESS_TINY
+ maturation_time = FAST_GROWING
+
+
#undef FAST_GROWING
#undef VERY_FAST_GROWING
diff --git a/modular/Neu_Farming/code/produce.dm b/modular/Neu_Farming/code/produce.dm
index fe225460e9..40ea6321c3 100644
--- a/modular/Neu_Farming/code/produce.dm
+++ b/modular/Neu_Farming/code/produce.dm
@@ -457,3 +457,26 @@
grind_results = list(/datum/reagent/toxin/amanitin = 6)
*/
+
+/obj/item/reagent_containers/food/snacks/produce/rice
+ seed = /obj/item/neuFarm/seed/rice
+ name = "weeperstears"
+ desc = "Weeperstears, or 'Rice', is the abyssariad's staple food. It is believed that the plants came from the tears of Weeping God."
+ icon_state = "rice"
+ icon = 'icons/roguetown/kaizoku/items/produce.dmi'
+ gender = PLURAL
+ filling_color = "#e0baa0"
+ bitesize_mod = 2
+ foodtype = GRAIN
+ tastes = list("slightly nutty" = 1)
+ can_distill = TRUE
+ distill_reagent = /datum/reagent/consumable/ethanol/sake
+ distill_amt = 24
+ grind_results = list(/datum/reagent/floure = 10) //rice flour
+ dropshrink = 0.9
+ mill_result = /obj/item/reagent_containers/powder/flour
+/obj/item/reagent_containers/food/snacks/produce/rice/examine(mob/user)
+ var/farminglvl = user.mind?.get_skill_level(/datum/skill/labor/farming)
+ . += ..()
+ if(farminglvl >= 0)
+ . += "I can easily tell that these are weeperstears grains."
diff --git a/modular/Neu_Farming/code/seeds.dm b/modular/Neu_Farming/code/seeds.dm
index 6206d30583..17354a35eb 100644
--- a/modular/Neu_Farming/code/seeds.dm
+++ b/modular/Neu_Farming/code/seeds.dm
@@ -146,3 +146,8 @@
seed_identity = "red mushroom spores"
plant_def_type = /datum/plant_def/amanita
*/
+
+
+/obj/item/neuFarm/seed/rice
+ seed_identity = "weeperstears seeds"
+ plant_def_type = /datum/plant_def/rice
diff --git a/modular/Neu_Farming/code/tools.dm b/modular/Neu_Farming/code/tools.dm
index c691157349..a0087f9a48 100644
--- a/modular/Neu_Farming/code/tools.dm
+++ b/modular/Neu_Farming/code/tools.dm
@@ -533,3 +533,16 @@
associated_skill = /datum/skill/combat/polearms
max_blade_int = 50
+/obj/item/rogueweapon/sickle/kama
+ possible_item_intents = list(/datum/intent/axe/cut,/datum/intent/axe/chop,MACE_STRIKE,/datum/intent/flailthresh)
+ name = "kama"
+ desc = "Originally created for the harvesting of rice, the kama has also found popularity as a commoner's weapon thanks to its axe-like design. On occasion, one is combined with a length of chain to make a kusari gama."
+ icon_state = "kama"
+ icon = 'icons/roguetown/kaizoku/weapons/32.dmi'
+ associated_skill = /datum/skill/combat/axesmaces
+ force = 15 // Same damage as Iron Swords with less integrity.
+ force_wielded = 20
+ max_blade_int = 100
+ max_integrity = 200
+ blade_dulling = DULLING_BASHCHOP
+ wdefense = 4
diff --git a/sound/combat/hits/bladed/dragonslayer.ogg b/sound/combat/hits/bladed/dragonslayer.ogg
new file mode 100644
index 0000000000..0fe7316bd7
Binary files /dev/null and b/sound/combat/hits/bladed/dragonslayer.ogg differ
diff --git a/sound/combat/hits/bladed/dragonslayer2.ogg b/sound/combat/hits/bladed/dragonslayer2.ogg
new file mode 100644
index 0000000000..804afb7120
Binary files /dev/null and b/sound/combat/hits/bladed/dragonslayer2.ogg differ
diff --git a/sound/music/credits.txt b/sound/music/credits.txt
index 2f8204cf8f..c12f9aedd4 100644
--- a/sound/music/credits.txt
+++ b/sound/music/credits.txt
@@ -30,3 +30,14 @@ churchnight.ogg: Fear & Hunger 2: Termina - Cathedral Whispers
combat_bandit3.ogg: Manhunt - White Trash
combat_assassin2.ogg: Fear & Hunger 2: Termina - Monologue With The Moon
PIG.ogg: Manhunt - Deliverance
+
+
+combat_changeling.ogg: Okami - Demon Lord Nine Tails.ogg
+combat_stormwarrior.ogg: Sephiroth - A Map of Eden Before the Storms.ogg
+combat_searaider.ogg - Sephiroth - Uthul Khulture.ogg
+combat_oldtides.ogg - Sephiroth - wolf tribes.ogg
+combat_decapitator.ogg: Shadow warrior 2 - Off With Your Head.ogg
+combat_emperor.ogg: shadow warrior 2 - Steel and Carbon.ogg
+combat_traditional.ogg: Tenchu Z - Spinning Lantern.ogg
+combat_navalretainers.ogg: Total_Luck - Tenchu Z.ogg
+combat_kyudo.ogg: Yuyan archers, AVATAR
diff --git a/sound/music/kaizoku/Jigokuraku.ogg b/sound/music/kaizoku/Jigokuraku.ogg
new file mode 100644
index 0000000000..1d694250b2
Binary files /dev/null and b/sound/music/kaizoku/Jigokuraku.ogg differ
diff --git "a/sound/music/kaizoku/areas/Wany\303\205d\303\205 \303\250\302\274\302\252\303\245_\303\251 Aleksis Tristan Shaw.mp3" "b/sound/music/kaizoku/areas/Wany\303\205d\303\205 \303\250\302\274\302\252\303\245_\303\251 Aleksis Tristan Shaw.mp3"
new file mode 100644
index 0000000000..3bdeec2f5c
Binary files /dev/null and "b/sound/music/kaizoku/areas/Wany\303\205d\303\205 \303\250\302\274\302\252\303\245_\303\251 Aleksis Tristan Shaw.mp3" differ
diff --git "a/sound/music/kaizoku/areas/onry\305\215-\346\200\250\351\234\212-aleksis-tristan-shaw-anydownloader.com.mp3" "b/sound/music/kaizoku/areas/onry\305\215-\346\200\250\351\234\212-aleksis-tristan-shaw-anydownloader.com.mp3"
new file mode 100644
index 0000000000..bf374e03c0
Binary files /dev/null and "b/sound/music/kaizoku/areas/onry\305\215-\346\200\250\351\234\212-aleksis-tristan-shaw-anydownloader.com.mp3" differ
diff --git a/sound/music/kaizoku/combat/combat_changeling.ogg b/sound/music/kaizoku/combat/combat_changeling.ogg
new file mode 100644
index 0000000000..50242ca1e8
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_changeling.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_decapitator.ogg b/sound/music/kaizoku/combat/combat_decapitator.ogg
new file mode 100644
index 0000000000..6788581fee
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_decapitator.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_emperor.ogg b/sound/music/kaizoku/combat/combat_emperor.ogg
new file mode 100644
index 0000000000..40a3f7a09b
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_emperor.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_kyudo.ogg b/sound/music/kaizoku/combat/combat_kyudo.ogg
new file mode 100644
index 0000000000..0a1fd32e27
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_kyudo.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_navalretainers.ogg b/sound/music/kaizoku/combat/combat_navalretainers.ogg
new file mode 100644
index 0000000000..01a1a47dfc
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_navalretainers.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_oldtides.ogg b/sound/music/kaizoku/combat/combat_oldtides.ogg
new file mode 100644
index 0000000000..8b612a5817
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_oldtides.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_searaider.ogg b/sound/music/kaizoku/combat/combat_searaider.ogg
new file mode 100644
index 0000000000..01d11b9f79
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_searaider.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_stormwarrior.ogg b/sound/music/kaizoku/combat/combat_stormwarrior.ogg
new file mode 100644
index 0000000000..de259b7be0
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_stormwarrior.ogg differ
diff --git a/sound/music/kaizoku/combat/combat_traditional.ogg b/sound/music/kaizoku/combat/combat_traditional.ogg
new file mode 100644
index 0000000000..6834ba492c
Binary files /dev/null and b/sound/music/kaizoku/combat/combat_traditional.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen1.ogg b/sound/music/kaizoku/instrument/shamisen1.ogg
new file mode 100644
index 0000000000..0cbe7cfd2b
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen1.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen2.ogg b/sound/music/kaizoku/instrument/shamisen2.ogg
new file mode 100644
index 0000000000..82044de7b8
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen2.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen3.ogg b/sound/music/kaizoku/instrument/shamisen3.ogg
new file mode 100644
index 0000000000..f532e7b5c4
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen3.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen4.ogg b/sound/music/kaizoku/instrument/shamisen4.ogg
new file mode 100644
index 0000000000..22b7ae01ef
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen4.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen5.ogg b/sound/music/kaizoku/instrument/shamisen5.ogg
new file mode 100644
index 0000000000..48bd0eaded
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen5.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen6.ogg b/sound/music/kaizoku/instrument/shamisen6.ogg
new file mode 100644
index 0000000000..932bb6dc8f
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen6.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen7.ogg b/sound/music/kaizoku/instrument/shamisen7.ogg
new file mode 100644
index 0000000000..0275d0a9ac
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen7.ogg differ
diff --git a/sound/music/kaizoku/instrument/shamisen8.ogg b/sound/music/kaizoku/instrument/shamisen8.ogg
new file mode 100644
index 0000000000..142d3d757c
Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen8.ogg differ
diff --git a/sound/music/kaizoku/spells/martialart_abyssanctum.ogg b/sound/music/kaizoku/spells/martialart_abyssanctum.ogg
new file mode 100644
index 0000000000..dc9940dc35
Binary files /dev/null and b/sound/music/kaizoku/spells/martialart_abyssanctum.ogg differ
diff --git a/sound/vo/female/abyssariad/DISAPPOINTMENT.ogg b/sound/vo/female/abyssariad/DISAPPOINTMENT.ogg
new file mode 100644
index 0000000000..42b82175ce
Binary files /dev/null and b/sound/vo/female/abyssariad/DISAPPOINTMENT.ogg differ
diff --git a/sound/vo/female/abyssariad/FemaleRage1.ogg b/sound/vo/female/abyssariad/FemaleRage1.ogg
new file mode 100644
index 0000000000..d89546d9c7
Binary files /dev/null and b/sound/vo/female/abyssariad/FemaleRage1.ogg differ
diff --git a/sound/vo/female/abyssariad/ah.ogg b/sound/vo/female/abyssariad/ah.ogg
new file mode 100644
index 0000000000..abe8924406
Binary files /dev/null and b/sound/vo/female/abyssariad/ah.ogg differ
diff --git a/sound/vo/female/abyssariad/ahhh.ogg b/sound/vo/female/abyssariad/ahhh.ogg
new file mode 100644
index 0000000000..3584a81d4c
Binary files /dev/null and b/sound/vo/female/abyssariad/ahhh.ogg differ
diff --git a/sound/vo/female/abyssariad/angry1.ogg b/sound/vo/female/abyssariad/angry1.ogg
new file mode 100644
index 0000000000..df743b4417
Binary files /dev/null and b/sound/vo/female/abyssariad/angry1.ogg differ
diff --git a/sound/vo/female/abyssariad/angry2.ogg b/sound/vo/female/abyssariad/angry2.ogg
new file mode 100644
index 0000000000..f2b8e15c1d
Binary files /dev/null and b/sound/vo/female/abyssariad/angry2.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle1.ogg b/sound/vo/female/abyssariad/chuckle1.ogg
new file mode 100644
index 0000000000..a9a22d315e
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle1.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle2.ogg b/sound/vo/female/abyssariad/chuckle2.ogg
new file mode 100644
index 0000000000..45482f9c40
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle2.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle3.ogg b/sound/vo/female/abyssariad/chuckle3.ogg
new file mode 100644
index 0000000000..c96558f94a
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle3.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle4.ogg b/sound/vo/female/abyssariad/chuckle4.ogg
new file mode 100644
index 0000000000..76d100fd12
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle4.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle5.ogg b/sound/vo/female/abyssariad/chuckle5.ogg
new file mode 100644
index 0000000000..b648f89b0b
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle5.ogg differ
diff --git a/sound/vo/female/abyssariad/chuckle6.ogg b/sound/vo/female/abyssariad/chuckle6.ogg
new file mode 100644
index 0000000000..1c63b707ea
Binary files /dev/null and b/sound/vo/female/abyssariad/chuckle6.ogg differ
diff --git a/sound/vo/female/abyssariad/cry1.ogg b/sound/vo/female/abyssariad/cry1.ogg
new file mode 100644
index 0000000000..097547d07c
Binary files /dev/null and b/sound/vo/female/abyssariad/cry1.ogg differ
diff --git a/sound/vo/female/abyssariad/deathgasp.ogg b/sound/vo/female/abyssariad/deathgasp.ogg
new file mode 100644
index 0000000000..87c363f69f
Binary files /dev/null and b/sound/vo/female/abyssariad/deathgasp.ogg differ
diff --git a/sound/vo/female/abyssariad/deathgasp2.ogg b/sound/vo/female/abyssariad/deathgasp2.ogg
new file mode 100644
index 0000000000..0164342aed
Binary files /dev/null and b/sound/vo/female/abyssariad/deathgasp2.ogg differ
diff --git a/sound/vo/female/abyssariad/deathgasp3.ogg b/sound/vo/female/abyssariad/deathgasp3.ogg
new file mode 100644
index 0000000000..10d51e77d2
Binary files /dev/null and b/sound/vo/female/abyssariad/deathgasp3.ogg differ
diff --git a/sound/vo/female/abyssariad/eh.ogg b/sound/vo/female/abyssariad/eh.ogg
new file mode 100644
index 0000000000..637262bb70
Binary files /dev/null and b/sound/vo/female/abyssariad/eh.ogg differ
diff --git a/sound/vo/female/abyssariad/fatigue.ogg b/sound/vo/female/abyssariad/fatigue.ogg
new file mode 100644
index 0000000000..a97a168ddb
Binary files /dev/null and b/sound/vo/female/abyssariad/fatigue.ogg differ
diff --git a/sound/vo/female/abyssariad/fthroatsing1.ogg b/sound/vo/female/abyssariad/fthroatsing1.ogg
new file mode 100644
index 0000000000..f85056cf10
Binary files /dev/null and b/sound/vo/female/abyssariad/fthroatsing1.ogg differ
diff --git a/sound/vo/female/abyssariad/fthroatsing2.ogg b/sound/vo/female/abyssariad/fthroatsing2.ogg
new file mode 100644
index 0000000000..b549c6f7f1
Binary files /dev/null and b/sound/vo/female/abyssariad/fthroatsing2.ogg differ
diff --git a/sound/vo/female/abyssariad/fthroatsing3.ogg b/sound/vo/female/abyssariad/fthroatsing3.ogg
new file mode 100644
index 0000000000..b4e27e4ca4
Binary files /dev/null and b/sound/vo/female/abyssariad/fthroatsing3.ogg differ
diff --git a/sound/vo/female/abyssariad/fthroatsing4.ogg b/sound/vo/female/abyssariad/fthroatsing4.ogg
new file mode 100644
index 0000000000..12c24c56c6
Binary files /dev/null and b/sound/vo/female/abyssariad/fthroatsing4.ogg differ
diff --git a/sound/vo/female/abyssariad/gaaasp.ogg b/sound/vo/female/abyssariad/gaaasp.ogg
new file mode 100644
index 0000000000..2729258baf
Binary files /dev/null and b/sound/vo/female/abyssariad/gaaasp.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp.ogg b/sound/vo/female/abyssariad/gasp.ogg
new file mode 100644
index 0000000000..95d0dc0aa8
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp1.ogg b/sound/vo/female/abyssariad/gasp1.ogg
new file mode 100644
index 0000000000..e8762fa2f6
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp1.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp2.ogg b/sound/vo/female/abyssariad/gasp2.ogg
new file mode 100644
index 0000000000..c44a5abb27
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp2.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp3.ogg b/sound/vo/female/abyssariad/gasp3.ogg
new file mode 100644
index 0000000000..8404d3b2a0
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp3.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp4.ogg b/sound/vo/female/abyssariad/gasp4.ogg
new file mode 100644
index 0000000000..53554e834b
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp4.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp5.ogg b/sound/vo/female/abyssariad/gasp5.ogg
new file mode 100644
index 0000000000..a80f1dac15
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp5.ogg differ
diff --git a/sound/vo/female/abyssariad/gasp6.ogg b/sound/vo/female/abyssariad/gasp6.ogg
new file mode 100644
index 0000000000..369d168fa7
Binary files /dev/null and b/sound/vo/female/abyssariad/gasp6.ogg differ
diff --git a/sound/vo/female/abyssariad/giggle5.ogg b/sound/vo/female/abyssariad/giggle5.ogg
new file mode 100644
index 0000000000..e03335b7eb
Binary files /dev/null and b/sound/vo/female/abyssariad/giggle5.ogg differ
diff --git a/sound/vo/female/abyssariad/groan.ogg b/sound/vo/female/abyssariad/groan.ogg
new file mode 100644
index 0000000000..f73eea3d63
Binary files /dev/null and b/sound/vo/female/abyssariad/groan.ogg differ
diff --git a/sound/vo/female/abyssariad/grumble1.ogg b/sound/vo/female/abyssariad/grumble1.ogg
new file mode 100644
index 0000000000..152af57a4f
Binary files /dev/null and b/sound/vo/female/abyssariad/grumble1.ogg differ
diff --git a/sound/vo/female/abyssariad/grumble2.ogg b/sound/vo/female/abyssariad/grumble2.ogg
new file mode 100644
index 0000000000..9e1e4a7db2
Binary files /dev/null and b/sound/vo/female/abyssariad/grumble2.ogg differ
diff --git a/sound/vo/female/abyssariad/grumble3.ogg b/sound/vo/female/abyssariad/grumble3.ogg
new file mode 100644
index 0000000000..a773340ff1
Binary files /dev/null and b/sound/vo/female/abyssariad/grumble3.ogg differ
diff --git a/sound/vo/female/abyssariad/grumble4.ogg b/sound/vo/female/abyssariad/grumble4.ogg
new file mode 100644
index 0000000000..9d6abadc51
Binary files /dev/null and b/sound/vo/female/abyssariad/grumble4.ogg differ
diff --git a/sound/vo/female/abyssariad/huh.ogg b/sound/vo/female/abyssariad/huh.ogg
new file mode 100644
index 0000000000..fde7069873
Binary files /dev/null and b/sound/vo/female/abyssariad/huh.ogg differ
diff --git a/sound/vo/female/abyssariad/huh1.ogg b/sound/vo/female/abyssariad/huh1.ogg
new file mode 100644
index 0000000000..6829a95c82
Binary files /dev/null and b/sound/vo/female/abyssariad/huh1.ogg differ
diff --git a/sound/vo/female/abyssariad/huh2.ogg b/sound/vo/female/abyssariad/huh2.ogg
new file mode 100644
index 0000000000..654e242b1d
Binary files /dev/null and b/sound/vo/female/abyssariad/huh2.ogg differ
diff --git a/sound/vo/female/abyssariad/huh3.ogg b/sound/vo/female/abyssariad/huh3.ogg
new file mode 100644
index 0000000000..045cdeef73
Binary files /dev/null and b/sound/vo/female/abyssariad/huh3.ogg differ
diff --git a/sound/vo/female/abyssariad/jump1.ogg b/sound/vo/female/abyssariad/jump1.ogg
new file mode 100644
index 0000000000..4a8861c215
Binary files /dev/null and b/sound/vo/female/abyssariad/jump1.ogg differ
diff --git a/sound/vo/female/abyssariad/jump2.ogg b/sound/vo/female/abyssariad/jump2.ogg
new file mode 100644
index 0000000000..73c84e23c5
Binary files /dev/null and b/sound/vo/female/abyssariad/jump2.ogg differ
diff --git a/sound/vo/female/abyssariad/jump3.ogg b/sound/vo/female/abyssariad/jump3.ogg
new file mode 100644
index 0000000000..4052f9a723
Binary files /dev/null and b/sound/vo/female/abyssariad/jump3.ogg differ
diff --git a/sound/vo/female/abyssariad/jump4.ogg b/sound/vo/female/abyssariad/jump4.ogg
new file mode 100644
index 0000000000..089db4bba5
Binary files /dev/null and b/sound/vo/female/abyssariad/jump4.ogg differ
diff --git a/sound/vo/female/abyssariad/jump5.ogg b/sound/vo/female/abyssariad/jump5.ogg
new file mode 100644
index 0000000000..e3e5c7951c
Binary files /dev/null and b/sound/vo/female/abyssariad/jump5.ogg differ
diff --git a/sound/vo/female/abyssariad/jump6.ogg b/sound/vo/female/abyssariad/jump6.ogg
new file mode 100644
index 0000000000..4dd5993992
Binary files /dev/null and b/sound/vo/female/abyssariad/jump6.ogg differ
diff --git a/sound/vo/female/abyssariad/keh.ogg b/sound/vo/female/abyssariad/keh.ogg
new file mode 100644
index 0000000000..31bc8da259
Binary files /dev/null and b/sound/vo/female/abyssariad/keh.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh(2).ogg b/sound/vo/female/abyssariad/laugh(2).ogg
new file mode 100644
index 0000000000..60c0cb479a
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh(2).ogg differ
diff --git a/sound/vo/female/abyssariad/laugh.ogg b/sound/vo/female/abyssariad/laugh.ogg
new file mode 100644
index 0000000000..bbb5c1d652
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh1.ogg b/sound/vo/female/abyssariad/laugh1.ogg
new file mode 100644
index 0000000000..1a718befa7
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh1.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh2.ogg b/sound/vo/female/abyssariad/laugh2.ogg
new file mode 100644
index 0000000000..d2aa14df06
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh2.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh3.ogg b/sound/vo/female/abyssariad/laugh3.ogg
new file mode 100644
index 0000000000..e0b30a02b7
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh3.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh4.ogg b/sound/vo/female/abyssariad/laugh4.ogg
new file mode 100644
index 0000000000..821be256c8
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh4.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh5.ogg b/sound/vo/female/abyssariad/laugh5.ogg
new file mode 100644
index 0000000000..5cc9ff1b20
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh5.ogg differ
diff --git a/sound/vo/female/abyssariad/laugh6.ogg b/sound/vo/female/abyssariad/laugh6.ogg
new file mode 100644
index 0000000000..a680e4685f
Binary files /dev/null and b/sound/vo/female/abyssariad/laugh6.ogg differ
diff --git a/sound/vo/female/abyssariad/midlyangry.ogg b/sound/vo/female/abyssariad/midlyangry.ogg
new file mode 100644
index 0000000000..239bcef04d
Binary files /dev/null and b/sound/vo/female/abyssariad/midlyangry.ogg differ
diff --git a/sound/vo/female/abyssariad/moan1.ogg b/sound/vo/female/abyssariad/moan1.ogg
new file mode 100644
index 0000000000..f72d41abc4
Binary files /dev/null and b/sound/vo/female/abyssariad/moan1.ogg differ
diff --git a/sound/vo/female/abyssariad/moan2.ogg b/sound/vo/female/abyssariad/moan2.ogg
new file mode 100644
index 0000000000..dc687441c7
Binary files /dev/null and b/sound/vo/female/abyssariad/moan2.ogg differ
diff --git a/sound/vo/female/abyssariad/moan4.ogg b/sound/vo/female/abyssariad/moan4.ogg
new file mode 100644
index 0000000000..1124935683
Binary files /dev/null and b/sound/vo/female/abyssariad/moan4.ogg differ
diff --git a/sound/vo/female/abyssariad/moan5.ogg b/sound/vo/female/abyssariad/moan5.ogg
new file mode 100644
index 0000000000..112ffe8df0
Binary files /dev/null and b/sound/vo/female/abyssariad/moan5.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy1.ogg b/sound/vo/female/abyssariad/moanheavy1.ogg
new file mode 100644
index 0000000000..5a48cad296
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy1.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy10.ogg b/sound/vo/female/abyssariad/moanheavy10.ogg
new file mode 100644
index 0000000000..fb9d4c45ed
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy10.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy11.ogg b/sound/vo/female/abyssariad/moanheavy11.ogg
new file mode 100644
index 0000000000..9c58b305ad
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy11.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy12.ogg b/sound/vo/female/abyssariad/moanheavy12.ogg
new file mode 100644
index 0000000000..8df1282a2b
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy12.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy13.ogg b/sound/vo/female/abyssariad/moanheavy13.ogg
new file mode 100644
index 0000000000..54c1cd8c78
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy13.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy14.ogg b/sound/vo/female/abyssariad/moanheavy14.ogg
new file mode 100644
index 0000000000..575e3b0ad0
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy14.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy15.ogg b/sound/vo/female/abyssariad/moanheavy15.ogg
new file mode 100644
index 0000000000..dab6ad8f20
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy15.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy16.ogg b/sound/vo/female/abyssariad/moanheavy16.ogg
new file mode 100644
index 0000000000..5a48cad296
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy16.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy17.ogg b/sound/vo/female/abyssariad/moanheavy17.ogg
new file mode 100644
index 0000000000..d18c40e0fb
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy17.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy18.ogg b/sound/vo/female/abyssariad/moanheavy18.ogg
new file mode 100644
index 0000000000..ac6c835c01
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy18.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy19.ogg b/sound/vo/female/abyssariad/moanheavy19.ogg
new file mode 100644
index 0000000000..1c7af8e54d
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy19.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy2.ogg b/sound/vo/female/abyssariad/moanheavy2.ogg
new file mode 100644
index 0000000000..a16b2c397a
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy2.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy20.ogg b/sound/vo/female/abyssariad/moanheavy20.ogg
new file mode 100644
index 0000000000..10ed97f43e
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy20.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy21.ogg b/sound/vo/female/abyssariad/moanheavy21.ogg
new file mode 100644
index 0000000000..23853fe645
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy21.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy3.ogg b/sound/vo/female/abyssariad/moanheavy3.ogg
new file mode 100644
index 0000000000..b4d55e6a2f
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy3.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy4.ogg b/sound/vo/female/abyssariad/moanheavy4.ogg
new file mode 100644
index 0000000000..c65aa836f3
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy4.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy5.ogg b/sound/vo/female/abyssariad/moanheavy5.ogg
new file mode 100644
index 0000000000..b708926e6d
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy5.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy6.ogg b/sound/vo/female/abyssariad/moanheavy6.ogg
new file mode 100644
index 0000000000..725faafa89
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy6.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy7.ogg b/sound/vo/female/abyssariad/moanheavy7.ogg
new file mode 100644
index 0000000000..9e9f8b31b6
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy7.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy8.ogg b/sound/vo/female/abyssariad/moanheavy8.ogg
new file mode 100644
index 0000000000..b444b69342
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy8.ogg differ
diff --git a/sound/vo/female/abyssariad/moanheavy9.ogg b/sound/vo/female/abyssariad/moanheavy9.ogg
new file mode 100644
index 0000000000..7056f0b4cc
Binary files /dev/null and b/sound/vo/female/abyssariad/moanheavy9.ogg differ
diff --git a/sound/vo/female/abyssariad/pain1.ogg b/sound/vo/female/abyssariad/pain1.ogg
new file mode 100644
index 0000000000..bd6fd4bc96
Binary files /dev/null and b/sound/vo/female/abyssariad/pain1.ogg differ
diff --git a/sound/vo/female/abyssariad/pain2.ogg b/sound/vo/female/abyssariad/pain2.ogg
new file mode 100644
index 0000000000..311bd1c341
Binary files /dev/null and b/sound/vo/female/abyssariad/pain2.ogg differ
diff --git a/sound/vo/female/abyssariad/pain3.ogg b/sound/vo/female/abyssariad/pain3.ogg
new file mode 100644
index 0000000000..731ec6c927
Binary files /dev/null and b/sound/vo/female/abyssariad/pain3.ogg differ
diff --git a/sound/vo/female/abyssariad/pain4.ogg b/sound/vo/female/abyssariad/pain4.ogg
new file mode 100644
index 0000000000..6ae8e846d0
Binary files /dev/null and b/sound/vo/female/abyssariad/pain4.ogg differ
diff --git a/sound/vo/female/abyssariad/pain5.ogg b/sound/vo/female/abyssariad/pain5.ogg
new file mode 100644
index 0000000000..56bdb93fe9
Binary files /dev/null and b/sound/vo/female/abyssariad/pain5.ogg differ
diff --git a/sound/vo/female/abyssariad/pain6.ogg b/sound/vo/female/abyssariad/pain6.ogg
new file mode 100644
index 0000000000..75c37b80a0
Binary files /dev/null and b/sound/vo/female/abyssariad/pain6.ogg differ
diff --git a/sound/vo/female/abyssariad/paincrit1.ogg b/sound/vo/female/abyssariad/paincrit1.ogg
new file mode 100644
index 0000000000..c4adf3ce9b
Binary files /dev/null and b/sound/vo/female/abyssariad/paincrit1.ogg differ
diff --git a/sound/vo/female/abyssariad/paincrit2.ogg b/sound/vo/female/abyssariad/paincrit2.ogg
new file mode 100644
index 0000000000..673102413e
Binary files /dev/null and b/sound/vo/female/abyssariad/paincrit2.ogg differ
diff --git a/sound/vo/female/abyssariad/paincrit3.ogg b/sound/vo/female/abyssariad/paincrit3.ogg
new file mode 100644
index 0000000000..9f1d3fab35
Binary files /dev/null and b/sound/vo/female/abyssariad/paincrit3.ogg differ
diff --git a/sound/vo/female/abyssariad/paincrit4.ogg b/sound/vo/female/abyssariad/paincrit4.ogg
new file mode 100644
index 0000000000..f81f2acf31
Binary files /dev/null and b/sound/vo/female/abyssariad/paincrit4.ogg differ
diff --git a/sound/vo/female/abyssariad/paincrit5.ogg b/sound/vo/female/abyssariad/paincrit5.ogg
new file mode 100644
index 0000000000..1833e3cd50
Binary files /dev/null and b/sound/vo/female/abyssariad/paincrit5.ogg differ
diff --git a/sound/vo/female/abyssariad/paingasp2.ogg b/sound/vo/female/abyssariad/paingasp2.ogg
new file mode 100644
index 0000000000..675248372e
Binary files /dev/null and b/sound/vo/female/abyssariad/paingasp2.ogg differ
diff --git a/sound/vo/female/abyssariad/painscream1.ogg b/sound/vo/female/abyssariad/painscream1.ogg
new file mode 100644
index 0000000000..4238288a91
Binary files /dev/null and b/sound/vo/female/abyssariad/painscream1.ogg differ
diff --git a/sound/vo/female/abyssariad/painscream2.ogg b/sound/vo/female/abyssariad/painscream2.ogg
new file mode 100644
index 0000000000..18a342c61c
Binary files /dev/null and b/sound/vo/female/abyssariad/painscream2.ogg differ
diff --git a/sound/vo/female/abyssariad/painscream3.ogg b/sound/vo/female/abyssariad/painscream3.ogg
new file mode 100644
index 0000000000..07e0933770
Binary files /dev/null and b/sound/vo/female/abyssariad/painscream3.ogg differ
diff --git a/sound/vo/female/abyssariad/painscream4.ogg b/sound/vo/female/abyssariad/painscream4.ogg
new file mode 100644
index 0000000000..c58d9a7818
Binary files /dev/null and b/sound/vo/female/abyssariad/painscream4.ogg differ
diff --git a/sound/vo/female/abyssariad/rage4.ogg b/sound/vo/female/abyssariad/rage4.ogg
new file mode 100644
index 0000000000..298fe3c3a5
Binary files /dev/null and b/sound/vo/female/abyssariad/rage4.ogg differ
diff --git a/sound/vo/female/abyssariad/rude.ogg b/sound/vo/female/abyssariad/rude.ogg
new file mode 100644
index 0000000000..92a788b776
Binary files /dev/null and b/sound/vo/female/abyssariad/rude.ogg differ
diff --git a/sound/vo/female/abyssariad/rude2.ogg b/sound/vo/female/abyssariad/rude2.ogg
new file mode 100644
index 0000000000..cfc512c332
Binary files /dev/null and b/sound/vo/female/abyssariad/rude2.ogg differ
diff --git a/sound/vo/female/abyssariad/rude3.ogg b/sound/vo/female/abyssariad/rude3.ogg
new file mode 100644
index 0000000000..6f97d051f0
Binary files /dev/null and b/sound/vo/female/abyssariad/rude3.ogg differ
diff --git a/sound/vo/female/abyssariad/scream1.ogg b/sound/vo/female/abyssariad/scream1.ogg
new file mode 100644
index 0000000000..b9eac1d861
Binary files /dev/null and b/sound/vo/female/abyssariad/scream1.ogg differ
diff --git a/sound/vo/female/abyssariad/scream2.ogg b/sound/vo/female/abyssariad/scream2.ogg
new file mode 100644
index 0000000000..a05afe7db2
Binary files /dev/null and b/sound/vo/female/abyssariad/scream2.ogg differ
diff --git a/sound/vo/female/abyssariad/scream3.ogg b/sound/vo/female/abyssariad/scream3.ogg
new file mode 100644
index 0000000000..f3f5cdaa41
Binary files /dev/null and b/sound/vo/female/abyssariad/scream3.ogg differ
diff --git a/sound/vo/female/abyssariad/scream4.ogg b/sound/vo/female/abyssariad/scream4.ogg
new file mode 100644
index 0000000000..aa2434dee8
Binary files /dev/null and b/sound/vo/female/abyssariad/scream4.ogg differ
diff --git a/sound/vo/female/abyssariad/scream5.ogg b/sound/vo/female/abyssariad/scream5.ogg
new file mode 100644
index 0000000000..df7158dd87
Binary files /dev/null and b/sound/vo/female/abyssariad/scream5.ogg differ
diff --git a/sound/vo/female/abyssariad/scream6.ogg b/sound/vo/female/abyssariad/scream6.ogg
new file mode 100644
index 0000000000..a189cc9e4b
Binary files /dev/null and b/sound/vo/female/abyssariad/scream6.ogg differ
diff --git a/sound/vo/female/abyssariad/screamgasp.ogg b/sound/vo/female/abyssariad/screamgasp.ogg
new file mode 100644
index 0000000000..e1038fe83e
Binary files /dev/null and b/sound/vo/female/abyssariad/screamgasp.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan1.ogg b/sound/vo/female/abyssariad/smoan1.ogg
new file mode 100644
index 0000000000..ac6c835c01
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan1.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan10.ogg b/sound/vo/female/abyssariad/smoan10.ogg
new file mode 100644
index 0000000000..696000bd64
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan10.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan2.ogg b/sound/vo/female/abyssariad/smoan2.ogg
new file mode 100644
index 0000000000..fbf2803777
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan2.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan3.ogg b/sound/vo/female/abyssariad/smoan3.ogg
new file mode 100644
index 0000000000..3fe00ccf1a
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan3.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan4.ogg b/sound/vo/female/abyssariad/smoan4.ogg
new file mode 100644
index 0000000000..696000bd64
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan4.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan5.ogg b/sound/vo/female/abyssariad/smoan5.ogg
new file mode 100644
index 0000000000..3a6a2c404f
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan5.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan6.ogg b/sound/vo/female/abyssariad/smoan6.ogg
new file mode 100644
index 0000000000..183536779c
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan6.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan7.ogg b/sound/vo/female/abyssariad/smoan7.ogg
new file mode 100644
index 0000000000..c421b497ad
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan7.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan8.ogg b/sound/vo/female/abyssariad/smoan8.ogg
new file mode 100644
index 0000000000..8581592a82
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan8.ogg differ
diff --git a/sound/vo/female/abyssariad/smoan9.ogg b/sound/vo/female/abyssariad/smoan9.ogg
new file mode 100644
index 0000000000..18419a9160
Binary files /dev/null and b/sound/vo/female/abyssariad/smoan9.ogg differ
diff --git a/sound/vo/female/abyssariad/wawawa.ogg b/sound/vo/female/abyssariad/wawawa.ogg
new file mode 100644
index 0000000000..4293179a04
Binary files /dev/null and b/sound/vo/female/abyssariad/wawawa.ogg differ
diff --git a/sound/vo/general/brazilianmeme.ogg b/sound/vo/general/brazilianmeme.ogg
new file mode 100644
index 0000000000..2cd12cd5e5
Binary files /dev/null and b/sound/vo/general/brazilianmeme.ogg differ
diff --git a/sound/vo/general/tengucall1.ogg b/sound/vo/general/tengucall1.ogg
new file mode 100644
index 0000000000..f84b08ce28
Binary files /dev/null and b/sound/vo/general/tengucall1.ogg differ
diff --git a/sound/vo/general/tengucall10.ogg b/sound/vo/general/tengucall10.ogg
new file mode 100644
index 0000000000..06b6ea85fc
Binary files /dev/null and b/sound/vo/general/tengucall10.ogg differ
diff --git a/sound/vo/general/tengucall12.ogg b/sound/vo/general/tengucall12.ogg
new file mode 100644
index 0000000000..82cddfef28
Binary files /dev/null and b/sound/vo/general/tengucall12.ogg differ
diff --git a/sound/vo/general/tengucall13.ogg b/sound/vo/general/tengucall13.ogg
new file mode 100644
index 0000000000..f4fb82f58a
Binary files /dev/null and b/sound/vo/general/tengucall13.ogg differ
diff --git a/sound/vo/general/tengucall14.ogg b/sound/vo/general/tengucall14.ogg
new file mode 100644
index 0000000000..d6f6facdfd
Binary files /dev/null and b/sound/vo/general/tengucall14.ogg differ
diff --git a/sound/vo/general/tengucall2.ogg b/sound/vo/general/tengucall2.ogg
new file mode 100644
index 0000000000..a5b0f8c58a
Binary files /dev/null and b/sound/vo/general/tengucall2.ogg differ
diff --git a/sound/vo/general/tengucall3.ogg b/sound/vo/general/tengucall3.ogg
new file mode 100644
index 0000000000..ad70d494dd
Binary files /dev/null and b/sound/vo/general/tengucall3.ogg differ
diff --git a/sound/vo/general/tengucall4.ogg b/sound/vo/general/tengucall4.ogg
new file mode 100644
index 0000000000..cdff3981c9
Binary files /dev/null and b/sound/vo/general/tengucall4.ogg differ
diff --git a/sound/vo/general/tengucall5.ogg b/sound/vo/general/tengucall5.ogg
new file mode 100644
index 0000000000..1c43855e93
Binary files /dev/null and b/sound/vo/general/tengucall5.ogg differ
diff --git a/sound/vo/general/tengucall6.ogg b/sound/vo/general/tengucall6.ogg
new file mode 100644
index 0000000000..f03d97b10c
Binary files /dev/null and b/sound/vo/general/tengucall6.ogg differ
diff --git a/sound/vo/general/tengucall7.ogg b/sound/vo/general/tengucall7.ogg
new file mode 100644
index 0000000000..6a4e7a098c
Binary files /dev/null and b/sound/vo/general/tengucall7.ogg differ
diff --git a/sound/vo/general/tengucall8.ogg b/sound/vo/general/tengucall8.ogg
new file mode 100644
index 0000000000..cd1c9d6eba
Binary files /dev/null and b/sound/vo/general/tengucall8.ogg differ
diff --git a/sound/vo/general/tengucall9.ogg b/sound/vo/general/tengucall9.ogg
new file mode 100644
index 0000000000..7e0d4a24ea
Binary files /dev/null and b/sound/vo/general/tengucall9.ogg differ
diff --git a/sound/vo/general/undinecall.ogg b/sound/vo/general/undinecall.ogg
new file mode 100644
index 0000000000..026a378d49
Binary files /dev/null and b/sound/vo/general/undinecall.ogg differ
diff --git a/sound/vo/general/undinecall1.ogg b/sound/vo/general/undinecall1.ogg
new file mode 100644
index 0000000000..20e7482884
Binary files /dev/null and b/sound/vo/general/undinecall1.ogg differ
diff --git a/sound/vo/general/undinecall2.ogg b/sound/vo/general/undinecall2.ogg
new file mode 100644
index 0000000000..61b1ba7c1f
Binary files /dev/null and b/sound/vo/general/undinecall2.ogg differ
diff --git a/sound/vo/general/undinecall3.ogg b/sound/vo/general/undinecall3.ogg
new file mode 100644
index 0000000000..0e9a757e17
Binary files /dev/null and b/sound/vo/general/undinecall3.ogg differ
diff --git a/sound/vo/general/undinecall4.ogg b/sound/vo/general/undinecall4.ogg
new file mode 100644
index 0000000000..b2c3bf4a6e
Binary files /dev/null and b/sound/vo/general/undinecall4.ogg differ
diff --git a/sound/vo/general/undinecall5.ogg b/sound/vo/general/undinecall5.ogg
new file mode 100644
index 0000000000..51a42f2ed2
Binary files /dev/null and b/sound/vo/general/undinecall5.ogg differ
diff --git a/sound/vo/general/undinecall6.ogg b/sound/vo/general/undinecall6.ogg
new file mode 100644
index 0000000000..c30fa44f1a
Binary files /dev/null and b/sound/vo/general/undinecall6.ogg differ
diff --git a/sound/vo/male/abyssariad/attack1.ogg b/sound/vo/male/abyssariad/attack1.ogg
new file mode 100644
index 0000000000..4cfad0f5e2
Binary files /dev/null and b/sound/vo/male/abyssariad/attack1.ogg differ
diff --git a/sound/vo/male/abyssariad/attack2.ogg b/sound/vo/male/abyssariad/attack2.ogg
new file mode 100644
index 0000000000..f01b3ccdf9
Binary files /dev/null and b/sound/vo/male/abyssariad/attack2.ogg differ
diff --git a/sound/vo/male/abyssariad/badbad.ogg b/sound/vo/male/abyssariad/badbad.ogg
new file mode 100644
index 0000000000..cb1c56efc4
Binary files /dev/null and b/sound/vo/male/abyssariad/badbad.ogg differ
diff --git a/sound/vo/male/abyssariad/chuckle(1).ogg b/sound/vo/male/abyssariad/chuckle(1).ogg
new file mode 100644
index 0000000000..e2e9d8e21f
Binary files /dev/null and b/sound/vo/male/abyssariad/chuckle(1).ogg differ
diff --git a/sound/vo/male/abyssariad/chuckle(2).ogg b/sound/vo/male/abyssariad/chuckle(2).ogg
new file mode 100644
index 0000000000..4f436c45d0
Binary files /dev/null and b/sound/vo/male/abyssariad/chuckle(2).ogg differ
diff --git a/sound/vo/male/abyssariad/chuckle(3).ogg b/sound/vo/male/abyssariad/chuckle(3).ogg
new file mode 100644
index 0000000000..93fa78ab62
Binary files /dev/null and b/sound/vo/male/abyssariad/chuckle(3).ogg differ
diff --git a/sound/vo/male/abyssariad/chuckle(4).ogg b/sound/vo/male/abyssariad/chuckle(4).ogg
new file mode 100644
index 0000000000..a26b384053
Binary files /dev/null and b/sound/vo/male/abyssariad/chuckle(4).ogg differ
diff --git a/sound/vo/male/abyssariad/chuckle(5).ogg b/sound/vo/male/abyssariad/chuckle(5).ogg
new file mode 100644
index 0000000000..c863255831
Binary files /dev/null and b/sound/vo/male/abyssariad/chuckle(5).ogg differ
diff --git a/sound/vo/male/abyssariad/cry(1).ogg b/sound/vo/male/abyssariad/cry(1).ogg
new file mode 100644
index 0000000000..732f835074
Binary files /dev/null and b/sound/vo/male/abyssariad/cry(1).ogg differ
diff --git a/sound/vo/male/abyssariad/cry(2).ogg b/sound/vo/male/abyssariad/cry(2).ogg
new file mode 100644
index 0000000000..39b2014ab0
Binary files /dev/null and b/sound/vo/male/abyssariad/cry(2).ogg differ
diff --git a/sound/vo/male/abyssariad/cry(3).ogg b/sound/vo/male/abyssariad/cry(3).ogg
new file mode 100644
index 0000000000..aa28a5ef09
Binary files /dev/null and b/sound/vo/male/abyssariad/cry(3).ogg differ
diff --git a/sound/vo/male/abyssariad/cry(4).ogg b/sound/vo/male/abyssariad/cry(4).ogg
new file mode 100644
index 0000000000..b89db93ce3
Binary files /dev/null and b/sound/vo/male/abyssariad/cry(4).ogg differ
diff --git a/sound/vo/male/abyssariad/gasp(1).ogg b/sound/vo/male/abyssariad/gasp(1).ogg
new file mode 100644
index 0000000000..d047809431
Binary files /dev/null and b/sound/vo/male/abyssariad/gasp(1).ogg differ
diff --git a/sound/vo/male/abyssariad/gasp(2).ogg b/sound/vo/male/abyssariad/gasp(2).ogg
new file mode 100644
index 0000000000..638537f5b9
Binary files /dev/null and b/sound/vo/male/abyssariad/gasp(2).ogg differ
diff --git a/sound/vo/male/abyssariad/gasp(3).ogg b/sound/vo/male/abyssariad/gasp(3).ogg
new file mode 100644
index 0000000000..66658aa627
Binary files /dev/null and b/sound/vo/male/abyssariad/gasp(3).ogg differ
diff --git a/sound/vo/male/abyssariad/halt(1).ogg b/sound/vo/male/abyssariad/halt(1).ogg
new file mode 100644
index 0000000000..ffa5a52455
Binary files /dev/null and b/sound/vo/male/abyssariad/halt(1).ogg differ
diff --git a/sound/vo/male/abyssariad/halt(2).ogg b/sound/vo/male/abyssariad/halt(2).ogg
new file mode 100644
index 0000000000..a29c1ff027
Binary files /dev/null and b/sound/vo/male/abyssariad/halt(2).ogg differ
diff --git a/sound/vo/male/abyssariad/halt(3).ogg b/sound/vo/male/abyssariad/halt(3).ogg
new file mode 100644
index 0000000000..9f099bd9d6
Binary files /dev/null and b/sound/vo/male/abyssariad/halt(3).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(1).ogg b/sound/vo/male/abyssariad/huh(1).ogg
new file mode 100644
index 0000000000..bbe6e11573
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(1).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(2).ogg b/sound/vo/male/abyssariad/huh(2).ogg
new file mode 100644
index 0000000000..f187964f0a
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(2).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(3).ogg b/sound/vo/male/abyssariad/huh(3).ogg
new file mode 100644
index 0000000000..dd31f6e957
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(3).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(4).ogg b/sound/vo/male/abyssariad/huh(4).ogg
new file mode 100644
index 0000000000..4fe0047d02
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(4).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(5).ogg b/sound/vo/male/abyssariad/huh(5).ogg
new file mode 100644
index 0000000000..0ba2060f4b
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(5).ogg differ
diff --git a/sound/vo/male/abyssariad/huh(6).ogg b/sound/vo/male/abyssariad/huh(6).ogg
new file mode 100644
index 0000000000..13b1d14c61
Binary files /dev/null and b/sound/vo/male/abyssariad/huh(6).ogg differ
diff --git a/sound/vo/male/abyssariad/jump(1).ogg b/sound/vo/male/abyssariad/jump(1).ogg
new file mode 100644
index 0000000000..50cb039cc6
Binary files /dev/null and b/sound/vo/male/abyssariad/jump(1).ogg differ
diff --git a/sound/vo/male/abyssariad/jump(2).ogg b/sound/vo/male/abyssariad/jump(2).ogg
new file mode 100644
index 0000000000..c669d333ad
Binary files /dev/null and b/sound/vo/male/abyssariad/jump(2).ogg differ
diff --git a/sound/vo/male/abyssariad/jump(3).ogg b/sound/vo/male/abyssariad/jump(3).ogg
new file mode 100644
index 0000000000..74e844456b
Binary files /dev/null and b/sound/vo/male/abyssariad/jump(3).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(1).ogg b/sound/vo/male/abyssariad/laugh(1).ogg
new file mode 100644
index 0000000000..61511fe37e
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(1).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(10).ogg b/sound/vo/male/abyssariad/laugh(10).ogg
new file mode 100644
index 0000000000..25b7edbd15
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(10).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(2).ogg b/sound/vo/male/abyssariad/laugh(2).ogg
new file mode 100644
index 0000000000..f1ec32a3f1
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(2).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(3).ogg b/sound/vo/male/abyssariad/laugh(3).ogg
new file mode 100644
index 0000000000..da341389ca
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(3).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(4).ogg b/sound/vo/male/abyssariad/laugh(4).ogg
new file mode 100644
index 0000000000..da2f88e914
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(4).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(5).ogg b/sound/vo/male/abyssariad/laugh(5).ogg
new file mode 100644
index 0000000000..5ef17e424e
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(5).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(6).ogg b/sound/vo/male/abyssariad/laugh(6).ogg
new file mode 100644
index 0000000000..2bbb055de1
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(6).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(7).ogg b/sound/vo/male/abyssariad/laugh(7).ogg
new file mode 100644
index 0000000000..6ccf1c07f2
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(7).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(8).ogg b/sound/vo/male/abyssariad/laugh(8).ogg
new file mode 100644
index 0000000000..f52649e5ae
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(8).ogg differ
diff --git a/sound/vo/male/abyssariad/laugh(9).ogg b/sound/vo/male/abyssariad/laugh(9).ogg
new file mode 100644
index 0000000000..6395cc2c4d
Binary files /dev/null and b/sound/vo/male/abyssariad/laugh(9).ogg differ
diff --git a/sound/vo/male/abyssariad/morepain.ogg b/sound/vo/male/abyssariad/morepain.ogg
new file mode 100644
index 0000000000..5fccf3b294
Binary files /dev/null and b/sound/vo/male/abyssariad/morepain.ogg differ
diff --git a/sound/vo/male/abyssariad/morepain2.ogg b/sound/vo/male/abyssariad/morepain2.ogg
new file mode 100644
index 0000000000..68d98fb30a
Binary files /dev/null and b/sound/vo/male/abyssariad/morepain2.ogg differ
diff --git a/sound/vo/male/abyssariad/morepainpain.ogg b/sound/vo/male/abyssariad/morepainpain.ogg
new file mode 100644
index 0000000000..f2d595f252
Binary files /dev/null and b/sound/vo/male/abyssariad/morepainpain.ogg differ
diff --git a/sound/vo/male/abyssariad/mthroatsing1.ogg b/sound/vo/male/abyssariad/mthroatsing1.ogg
new file mode 100644
index 0000000000..7b9de1bff8
Binary files /dev/null and b/sound/vo/male/abyssariad/mthroatsing1.ogg differ
diff --git a/sound/vo/male/abyssariad/mthroatsing2.ogg b/sound/vo/male/abyssariad/mthroatsing2.ogg
new file mode 100644
index 0000000000..5a09a5888f
Binary files /dev/null and b/sound/vo/male/abyssariad/mthroatsing2.ogg differ
diff --git a/sound/vo/male/abyssariad/mthroatsing3.ogg b/sound/vo/male/abyssariad/mthroatsing3.ogg
new file mode 100644
index 0000000000..25a5810cfc
Binary files /dev/null and b/sound/vo/male/abyssariad/mthroatsing3.ogg differ
diff --git a/sound/vo/male/abyssariad/mthroatsing4.ogg b/sound/vo/male/abyssariad/mthroatsing4.ogg
new file mode 100644
index 0000000000..f4eb73b321
Binary files /dev/null and b/sound/vo/male/abyssariad/mthroatsing4.ogg differ
diff --git a/sound/vo/male/abyssariad/mthroatsing5.ogg b/sound/vo/male/abyssariad/mthroatsing5.ogg
new file mode 100644
index 0000000000..5c00203818
Binary files /dev/null and b/sound/vo/male/abyssariad/mthroatsing5.ogg differ
diff --git a/sound/vo/male/abyssariad/nani.ogg b/sound/vo/male/abyssariad/nani.ogg
new file mode 100644
index 0000000000..a1ea6ffb83
Binary files /dev/null and b/sound/vo/male/abyssariad/nani.ogg differ
diff --git a/sound/vo/male/abyssariad/pain(1).ogg b/sound/vo/male/abyssariad/pain(1).ogg
new file mode 100644
index 0000000000..36a0ea55b9
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(1).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(2).ogg b/sound/vo/male/abyssariad/pain(2).ogg
new file mode 100644
index 0000000000..8cf71c8756
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(2).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(3).ogg b/sound/vo/male/abyssariad/pain(3).ogg
new file mode 100644
index 0000000000..bc4e2485f3
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(3).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(4).ogg b/sound/vo/male/abyssariad/pain(4).ogg
new file mode 100644
index 0000000000..7756827c36
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(4).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(5).ogg b/sound/vo/male/abyssariad/pain(5).ogg
new file mode 100644
index 0000000000..3b2f5ca0a0
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(5).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(6).ogg b/sound/vo/male/abyssariad/pain(6).ogg
new file mode 100644
index 0000000000..b6cb50e7ec
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(6).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(7).ogg b/sound/vo/male/abyssariad/pain(7).ogg
new file mode 100644
index 0000000000..2534b6b6e5
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(7).ogg differ
diff --git a/sound/vo/male/abyssariad/pain(8).ogg b/sound/vo/male/abyssariad/pain(8).ogg
new file mode 100644
index 0000000000..880496201f
Binary files /dev/null and b/sound/vo/male/abyssariad/pain(8).ogg differ
diff --git a/sound/vo/male/abyssariad/paincrit(1).ogg b/sound/vo/male/abyssariad/paincrit(1).ogg
new file mode 100644
index 0000000000..5c2d87062a
Binary files /dev/null and b/sound/vo/male/abyssariad/paincrit(1).ogg differ
diff --git a/sound/vo/male/abyssariad/paincrit(2).ogg b/sound/vo/male/abyssariad/paincrit(2).ogg
new file mode 100644
index 0000000000..dcf83504ad
Binary files /dev/null and b/sound/vo/male/abyssariad/paincrit(2).ogg differ
diff --git a/sound/vo/male/abyssariad/paincrit(3).ogg b/sound/vo/male/abyssariad/paincrit(3).ogg
new file mode 100644
index 0000000000..29b476f94d
Binary files /dev/null and b/sound/vo/male/abyssariad/paincrit(3).ogg differ
diff --git a/sound/vo/male/abyssariad/painembed(1).ogg b/sound/vo/male/abyssariad/painembed(1).ogg
new file mode 100644
index 0000000000..fc63914add
Binary files /dev/null and b/sound/vo/male/abyssariad/painembed(1).ogg differ
diff --git a/sound/vo/male/abyssariad/painembed(2).ogg b/sound/vo/male/abyssariad/painembed(2).ogg
new file mode 100644
index 0000000000..78c4d612b7
Binary files /dev/null and b/sound/vo/male/abyssariad/painembed(2).ogg differ
diff --git a/sound/vo/male/abyssariad/painembed(3).ogg b/sound/vo/male/abyssariad/painembed(3).ogg
new file mode 100644
index 0000000000..38024c9ca6
Binary files /dev/null and b/sound/vo/male/abyssariad/painembed(3).ogg differ
diff --git a/sound/vo/male/abyssariad/painembed(4).ogg b/sound/vo/male/abyssariad/painembed(4).ogg
new file mode 100644
index 0000000000..81e392ae77
Binary files /dev/null and b/sound/vo/male/abyssariad/painembed(4).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(1).ogg b/sound/vo/male/abyssariad/paingasp(1).ogg
new file mode 100644
index 0000000000..32140ac0fa
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(1).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(2).ogg b/sound/vo/male/abyssariad/paingasp(2).ogg
new file mode 100644
index 0000000000..72067fe1af
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(2).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(3).ogg b/sound/vo/male/abyssariad/paingasp(3).ogg
new file mode 100644
index 0000000000..146570a7bb
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(3).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(4).ogg b/sound/vo/male/abyssariad/paingasp(4).ogg
new file mode 100644
index 0000000000..6c781d2958
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(4).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(5).ogg b/sound/vo/male/abyssariad/paingasp(5).ogg
new file mode 100644
index 0000000000..34a7282081
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(5).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(6).ogg b/sound/vo/male/abyssariad/paingasp(6).ogg
new file mode 100644
index 0000000000..d167cd39e4
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(6).ogg differ
diff --git a/sound/vo/male/abyssariad/paingasp(7).ogg b/sound/vo/male/abyssariad/paingasp(7).ogg
new file mode 100644
index 0000000000..8fdf18dfe1
Binary files /dev/null and b/sound/vo/male/abyssariad/paingasp(7).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(1).ogg b/sound/vo/male/abyssariad/painscream(1).ogg
new file mode 100644
index 0000000000..8eb3e369b1
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(1).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(2).ogg b/sound/vo/male/abyssariad/painscream(2).ogg
new file mode 100644
index 0000000000..e036b17690
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(2).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(3).ogg b/sound/vo/male/abyssariad/painscream(3).ogg
new file mode 100644
index 0000000000..f250bc5f60
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(3).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(4).ogg b/sound/vo/male/abyssariad/painscream(4).ogg
new file mode 100644
index 0000000000..2627394b9a
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(4).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(5).ogg b/sound/vo/male/abyssariad/painscream(5).ogg
new file mode 100644
index 0000000000..4078087d94
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(5).ogg differ
diff --git a/sound/vo/male/abyssariad/painscream(6).ogg b/sound/vo/male/abyssariad/painscream(6).ogg
new file mode 100644
index 0000000000..4ede9745bd
Binary files /dev/null and b/sound/vo/male/abyssariad/painscream(6).ogg differ
diff --git a/sound/vo/male/abyssariad/rage1.ogg b/sound/vo/male/abyssariad/rage1.ogg
new file mode 100644
index 0000000000..73494753c2
Binary files /dev/null and b/sound/vo/male/abyssariad/rage1.ogg differ
diff --git a/sound/vo/male/abyssariad/rage2.ogg b/sound/vo/male/abyssariad/rage2.ogg
new file mode 100644
index 0000000000..25dbf537f3
Binary files /dev/null and b/sound/vo/male/abyssariad/rage2.ogg differ
diff --git a/sound/vo/male/abyssariad/rage3.ogg b/sound/vo/male/abyssariad/rage3.ogg
new file mode 100644
index 0000000000..091390e67c
Binary files /dev/null and b/sound/vo/male/abyssariad/rage3.ogg differ
diff --git a/sound/vo/male/abyssariad/rage4.ogg b/sound/vo/male/abyssariad/rage4.ogg
new file mode 100644
index 0000000000..99b118f4ee
Binary files /dev/null and b/sound/vo/male/abyssariad/rage4.ogg differ
diff --git a/sound/vo/male/abyssariad/relief().ogg b/sound/vo/male/abyssariad/relief().ogg
new file mode 100644
index 0000000000..8fc7bcf659
Binary files /dev/null and b/sound/vo/male/abyssariad/relief().ogg differ
diff --git a/sound/vo/male/abyssariad/rude.ogg b/sound/vo/male/abyssariad/rude.ogg
new file mode 100644
index 0000000000..64d4028bcd
Binary files /dev/null and b/sound/vo/male/abyssariad/rude.ogg differ
diff --git a/sound/vo/male/abyssariad/rude2.ogg b/sound/vo/male/abyssariad/rude2.ogg
new file mode 100644
index 0000000000..ccc2acc078
Binary files /dev/null and b/sound/vo/male/abyssariad/rude2.ogg differ
diff --git a/sound/vo/male/abyssariad/scream(1).ogg b/sound/vo/male/abyssariad/scream(1).ogg
new file mode 100644
index 0000000000..28c4b06435
Binary files /dev/null and b/sound/vo/male/abyssariad/scream(1).ogg differ
diff --git a/sound/vo/male/abyssariad/scream(2).ogg b/sound/vo/male/abyssariad/scream(2).ogg
new file mode 100644
index 0000000000..73a7c31f37
Binary files /dev/null and b/sound/vo/male/abyssariad/scream(2).ogg differ
diff --git a/sound/vo/male/abyssariad/scream(3).ogg b/sound/vo/male/abyssariad/scream(3).ogg
new file mode 100644
index 0000000000..5db788a17f
Binary files /dev/null and b/sound/vo/male/abyssariad/scream(3).ogg differ
diff --git a/sound/vo/male/abyssariad/temeeeer.ogg b/sound/vo/male/abyssariad/temeeeer.ogg
new file mode 100644
index 0000000000..4b7278111e
Binary files /dev/null and b/sound/vo/male/abyssariad/temeeeer.ogg differ
diff --git a/sound/vo/male/abyssariad/tengusound_rare.ogg b/sound/vo/male/abyssariad/tengusound_rare.ogg
new file mode 100644
index 0000000000..c232f3c876
Binary files /dev/null and b/sound/vo/male/abyssariad/tengusound_rare.ogg differ
diff --git a/sound/vo/male/abyssariad/throatsing1.ogg b/sound/vo/male/abyssariad/throatsing1.ogg
new file mode 100644
index 0000000000..98e53c7c74
Binary files /dev/null and b/sound/vo/male/abyssariad/throatsing1.ogg differ
diff --git a/sound/vo/male/abyssariad/throatsing2.ogg b/sound/vo/male/abyssariad/throatsing2.ogg
new file mode 100644
index 0000000000..c59acc11bb
Binary files /dev/null and b/sound/vo/male/abyssariad/throatsing2.ogg differ
diff --git a/sound/vo/male/abyssariad/throatsing_rare.ogg b/sound/vo/male/abyssariad/throatsing_rare.ogg
new file mode 100644
index 0000000000..5bb960b910
Binary files /dev/null and b/sound/vo/male/abyssariad/throatsing_rare.ogg differ
diff --git a/sound/vo/male/abyssariad/yoooo.ogg b/sound/vo/male/abyssariad/yoooo.ogg
new file mode 100644
index 0000000000..b28694d1a0
Binary files /dev/null and b/sound/vo/male/abyssariad/yoooo.ogg differ
diff --git a/stonekeep.dme b/stonekeep.dme
index b93db4d9ad..6d0f4b8bd5 100644
--- a/stonekeep.dme
+++ b/stonekeep.dme
@@ -1078,6 +1078,7 @@
#include "code\game\objects\structures\fireplace.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\fluff.dm"
+#include "code\game\objects\structures\frontierjustice.dm"
#include "code\game\objects\structures\ghost_role_spawners.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\grille.dm"
@@ -1719,6 +1720,17 @@
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rogue.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\sorceress.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\warrior.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\champion.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\kyudoka.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\marauder.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\mastersohei.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\onmyoji.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\shinobi.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\shrinekeeper.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\sohei.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\wokou.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\yamabushi.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\zamurai.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\bladesinger.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\hoplite.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\longbeard.dm"
@@ -1791,8 +1803,10 @@
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\blackoak.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\boltslinger.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\grenzelhoft.dm"
+#include "code\modules\jobs\job_types\roguetown\other\merc_classes\kabukimono.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\marauder.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\steppesman.dm"
+#include "code\modules\jobs\job_types\roguetown\other\merc_classes\toweryakko.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\underdweller.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\valorian.dm"
#include "code\modules\jobs\job_types\roguetown\other\merc_classes\zybantine.dm"
@@ -1839,6 +1853,7 @@
#include "code\modules\language\slime.dm"
#include "code\modules\language\swarmer.dm"
#include "code\modules\language\xenocommon.dm"
+#include "code\modules\language\roguetown\abyssal.dm"
#include "code\modules\language\roguetown\beast.dm"
#include "code\modules\language\roguetown\cat.dm"
#include "code\modules\language\roguetown\dwarf.dm"
@@ -1999,6 +2014,7 @@
#include "code\modules\mob\living\carbon\human\npc\bum.dm"
#include "code\modules\mob\living\carbon\human\npc\goblin.dm"
#include "code\modules\mob\living\carbon\human\npc\orc.dm"
+#include "code\modules\mob\living\carbon\human\npc\raider.dm"
#include "code\modules\mob\living\carbon\human\npc\skeleton.dm"
#include "code\modules\mob\living\carbon\human\npc\stonekeep_carbons.dm"
#include "code\modules\mob\living\carbon\human\npc\zizombies.dm"
@@ -2023,6 +2039,11 @@
#include "code\modules\mob\living\carbon\human\species_types\vampire.dm"
#include "code\modules\mob\living\carbon\human\species_types\zombies.dm"
#include "code\modules\mob\living\carbon\human\species_types\roguetown\roguetown_species.dm"
+#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\_abyssariad.dm"
+#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\changeling.dm"
+#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\ogrun.dm"
+#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\skylancer.dm"
+#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\undine.dm"
#include "code\modules\mob\living\carbon\human\species_types\roguetown\dwarf\_dwarf.dm"
#include "code\modules\mob\living\carbon\human\species_types\roguetown\dwarf\dwarfm.dm"
#include "code\modules\mob\living\carbon\human\species_types\roguetown\elf\_elf.dm"
@@ -2037,9 +2058,11 @@
#include "code\modules\mob\living\carbon\human\species_types\roguetown\other\werewolf.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\genfemale.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\genmale.dm"
+#include "code\modules\mob\living\carbon\human\voicepacks\female\abyssariad.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\female\assassin.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\female\dwarf.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\female\elf.dm"
+#include "code\modules\mob\living\carbon\human\voicepacks\male\abyssariad.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\male\assassin.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\male\dwarf.dm"
#include "code\modules\mob\living\carbon\human\voicepacks\male\elf.dm"
@@ -2154,6 +2177,7 @@
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm"
#include "code\modules\mob\living\simple_animal\hostile\roguetown\crow.dm"
+#include "code\modules\mob\living\simple_animal\hostile\roguetown\fogfrog.dm"
#include "code\modules\mob\living\simple_animal\hostile\roguetown\haunt.dm"
#include "code\modules\mob\living\simple_animal\hostile\roguetown\smallrat.dm"
#include "code\modules\mob\living\simple_animal\hostile\roguetown\werewolf\update_icons.dm"
@@ -2181,6 +2205,7 @@
#include "code\modules\mob\living\simple_animal\rogue\farm\cow.dm"
#include "code\modules\mob\living\simple_animal\rogue\farm\goat.dm"
#include "code\modules\mob\living\simple_animal\rogue\farm\trufflepig.dm"
+#include "code\modules\mob\living\simple_animal\rogue\game\horse.dm"
#include "code\modules\mob\living\simple_animal\rogue\game\saiga.dm"
#include "code\modules\mob\living\simple_animal\slime\death.dm"
#include "code\modules\mob\living\simple_animal\slime\emote.dm"
@@ -2495,6 +2520,7 @@
#include "code\modules\spells\roguetown\priest.dm"
#include "code\modules\spells\roguetown\spider.dm"
#include "code\modules\spells\roguetown\wizard.dm"
+#include "code\modules\spells\roguetown\acolyte\abyssor.dm"
#include "code\modules\spells\roguetown\acolyte\astrata.dm"
#include "code\modules\spells\roguetown\acolyte\dendor.dm"
#include "code\modules\spells\roguetown\acolyte\eora.dm"
diff --git a/strings/abyssal_replacement.json b/strings/abyssal_replacement.json
new file mode 100644
index 0000000000..684bf8dc96
--- /dev/null
+++ b/strings/abyssal_replacement.json
@@ -0,0 +1,168 @@
+{
+
+ "abyssal": {
+ "what?": "nani?",
+ "'s ": "-no ",
+ " evil": "aku",
+ "bye": "mata ne",
+ "good bye": "sayonara",
+ "see you later": "jaa ne",
+ "captain ": "kyaputen ",
+ "enemy ": "rival",
+ "friend ": "ally",
+ "hi ": "yo ",
+ "hi.": "yo. ",
+ "hi!": "yo! ",
+ "aloha": "yo",
+ "hey ": "yo ",
+ "heya ": "yo ",
+ "howdy ": "yo ",
+ "assassin ": "shinobi ",
+ "tattoo ": "irezumi ",
+ "tatoo ": "irezumi ",
+ "tato ": "irezumi ",
+ "tattooed ": "irezumed ",
+ "hello": "konnichiwa",
+ "shalom ": "konnichiwa",
+ "greetings": "aisatsu",
+ "greeting": "aisatsu",
+ "spaghetti": "udon",
+ "tortellini": "udon",
+ "penne": "udon",
+ "noodles": "udon",
+ "very sorry": "sumimasen",
+ "excuse": "sumimasen",
+ "excuse me": "sumimasen",
+ "spice": "tempura",
+ "spicy": "tempure",
+ "gangster": "yakuza",
+ "gang member": "yakuza",
+ "scum": "saitei",
+ "cat": "neko",
+ "church": "shrine",
+ "liquor": "rinka",
+ "master": "sensei",
+ "teacher": "sensei",
+ "devil": "deviru",
+ "foreigner": "gaikokujin",
+ "outsider": "gaikokujin",
+ "mythril": "hihi'irokane",
+ "amazing": "sugoi",
+ "incredible": "sugoi",
+ "I'm glad": "ureshiii",
+ "I'm sorry": "gomen nasai",
+ "sorry": "gomen",
+ " graggar ": "floating starhead demon",
+ " zizo ": "majin in blue-cone",
+ "lamia ": "nure-onna",
+ "headless ": "rokurokubi",
+ "mermaid": "ningyo",
+ "banshee": "yurei",
+ "kraken": "umibozu",
+ "chimera": "nue",
+ "succubus": "jorogumo",
+ "novice": "new rice",
+ "cringe": "hiku",
+ "mattress": "futon",
+ "bed": "futon",
+ "divine wind": "kamikaze",
+ "self-destructive": "kamikaze",
+ "foolhardy": "kamikaze",
+ "robe": "kimono",
+ "paper folding": "origami",
+ "paper fold": "origami",
+ "god": "kami",
+ "roger": "ryoukai",
+ "got it": "ryoukai",
+ "ww": "grass is growing",
+ "www": "grass is growing",
+ "ROFL": "grass is growing",
+ "rolf": "grass is growing",
+ "lol": "grass is growing",
+ "trolled": "merked",
+ "pranked": "merked",
+ "prank": "merk",
+ "pain": "itai",
+ "painful": "itai",
+ "barbarian": "yabanjin",
+ "savage": "yabanjin",
+ "beggar": "burakumin",
+ "non-person": "burakumin",
+ "mentally ill": "menhera",
+ "brain-fried": "menhera",
+ "brainfried": "menhera",
+ "mind-controlled": "menhera",
+ "mindcontrolled": "menhera",
+ "psychopath": "menhera",
+ "sociopath": "menhera",
+ "fragger": "menhera",
+ "poem": "haiku",
+ "cyborg": "abyssal automata",
+ "robot": "abyssal automata",
+ "automation": "abyssal automata",
+ "golem": "abyssal automata",
+ "animatronic": "abyssal automata",
+ "mecha": "abyssal automata",
+ "droid": "abyssal automata",
+ "bot ": "abyssal automata",
+ "bionic": "abyssal automata",
+ "psydon": "weeper",
+ "jesus": "kami",
+ "christ": "kami",
+ "the earth": "abyssor's spine",
+ "werewolf": "dendorblight",
+ "opium": "ozium",
+ "cocaine": "moondust",
+ "magic": "qigong",
+ "mana": "qi",
+ "penis": "phallus",
+ "lantern": "lightbeacon",
+ "zizoid": "blightspawn",
+ "vibing": "deraging",
+ "freak": "deviant",
+ "weirdo": "misfit",
+ "yokai": "abyssariad ",
+ "youkai": "abyssariad ",
+ "ayakashi": "abyssariad ",
+ "mononoke": "abyssariad ",
+ "mamono": "abyssariad ",
+ "abyssriad": "abyssariad ",
+ "abyssaryad": "abyssariad ",
+ "abissariad": "abyssariad ",
+ "japanese": "abyssariad ",
+ "mongol": "abyssariad ",
+ "chinese": "abyssariad ",
+ "tibetian": "abyssariad ",
+ "korean": "abyssariad ",
+ "samurai": "zamurai",
+ "cocksucker": "jawsexer",
+ "cocksucking": "jawsexxing",
+ "katana": "zatana",
+
+ "dakimakura": "Dishonor. I'm not going to say that.",
+ "nyah ": "Dishonor. I'm not going to say that.",
+ "nya ": "Dishonor. I'm not going to say that.",
+ "uwu ": "Dishonor. I'm not going to say that.",
+ "owo ": "Dishonor. I'm not going to say that.",
+ "otaku ": "heartfelt",
+ "nanbanjin": "heartfelt",
+ "anime": "cutout paper animation",
+ "gaijin": "whaler",
+ "guizi": "whaler",
+ "laowai": "whaler",
+
+ "desu": "it is",
+ "hentai": "pervert",
+ "kawaii": "cute",
+ "kawai": "cute",
+ "idiot": "bakatare",
+ "baka": "bakatare",
+ "banzai": "long live the heavenly emperor",
+ "tenno heika": "long live the heavenly emperor",
+
+ "changeling": "kitsune",
+ "denmorian": "tengu",
+ "ogrun": "oni",
+ "undine": "kappa"
+ }
+}
diff --git a/strings/names/abyssariad/abyssnorlast.txt b/strings/names/abyssariad/abyssnorlast.txt
new file mode 100644
index 0000000000..63b851d8fe
--- /dev/null
+++ b/strings/names/abyssariad/abyssnorlast.txt
@@ -0,0 +1,92 @@
+of the Abe Clan
+of the Adachi Clan
+of the Arai Clan
+of the Arakawa Clan
+of the Asano Clan
+of the Chiba Clan
+of the Date Clan
+of the Endo Clan
+of the Fukushima Clan
+of the Furuya Clan
+of the Gotou Clan
+of the Hamada Clan
+of the Hasegawa Clan
+of the Hata Clan
+of the Hattori Clan
+of the Higashi Clan
+of the Hirano Clan
+of the Honda Clan
+of the Hosokawa Clan
+of the Iguchi Clan
+of the Imai Clan
+of the Inoue Clan
+of the Ishioka Clan
+of the Ito Clan
+of the Iwata Clan
+of the Kadokawa Clan
+of the Kai Clan
+of the Kaneko Clan
+of the Kano Clan
+of the Katayama Clan
+of the Kinoshita Clan
+of the Kitagawa Clan
+of the Kitano Clan
+of the Kiyohara Clan
+of the Kojima Clan
+of the Kondo Clan
+of the Kurihara Clan
+of the Maekawa Clan
+of the Makino Clan
+of the Maruyama Clan
+of the Matsushita Clan
+of the Minami Clan
+of the Miura Clan
+of the Mochizuki Clan
+of the Nagai Clan
+of the Nagasaki Clan
+of the Nakajima Clan
+of the Nakamoto Clan
+of the Nakatani Clan
+of the Nishida Clan
+of the Noguchi Clan
+of the Nomura Clan
+of the Obata Clan
+of the Oda Clan
+of the Ogura Clan
+of the Okubo Clan
+of the Omura Clan
+of the Onishi Clan
+of the Ota Clan
+of the Ozawa Clan
+of the Sakaguchi Clan
+of the Sakurai Clan
+of the Sawada Clan
+of the Shibata Clan
+of the Shibasaki Clan
+of the Shima Clan
+of the Shimada Clan
+of the Sugawara Clan
+of the Takamura Clan
+of the Tamura Clan
+of the Tani Clan
+of the Terada Clan
+of the Toda Clan
+of the Tokuda Clan
+of the Toyama Clan
+of the Tsuchiya Clan
+of the Uchida Clan
+of the Ueda Clan
+of the Ueno Clan
+of the Uno Clan
+of the Usui Clan
+of the Wada Clan
+of the Wakabayashi Clan
+of the Wakimoto Clan
+of the Yagi Clan
+of the Yamada Clan
+of the Yamashiro Clan
+of the Yasuda Clan
+of the Yokoyama Clan
+of the Yoshimoto Clan
+of the Yoshimura Clan
+of the Yoshino Clan
diff --git a/strings/names/abyssariad/abyssnorm.txt b/strings/names/abyssariad/abyssnorm.txt
new file mode 100644
index 0000000000..fb403a3db2
--- /dev/null
+++ b/strings/names/abyssariad/abyssnorm.txt
@@ -0,0 +1,88 @@
+Akira
+Daichi
+Haruto
+Hiroshi
+Ichiro
+Jiro
+Kaito
+Kazuki
+Kenji
+Koichi
+Kousuke
+Makoto
+Masaru
+Naoki
+Ren
+Riku
+Ryo
+Ryota
+Satoshi
+Shigeru
+Sora
+Susumu
+Takashi
+Takumi
+Taro
+Tatsuya
+Tomoya
+Toru
+Yasuhiro
+Yoshiro
+Yuki
+Yusuke
+Yuuta
+Aki
+Atsushi
+Daisuke
+Eiji
+Fumio
+Genji
+Hideo
+Hideki
+Hiroto
+Hisashi
+Isamu
+Itsuki
+Junnosuke
+Katsuo
+Kazuya
+Keisuke
+Ken
+Kenta
+Kiyoshi
+Kouta
+Masahiro
+Masayuki
+Minoru
+Mitsuo
+Nao
+Noboru
+Osamu
+Reiji
+Ryohei
+Ryunosuke
+Saburo
+Seiji
+Shigeo
+Shinji
+Shinya
+Shun
+Shunpei
+Taichi
+Takao
+Takeo
+Tamotsu
+Tatsuhiro
+Teruo
+Tetsuo
+Tomohiro
+Toshio
+Tsuyoshi
+Wataru
+Yasuo
+Yoshihiro
+Yoshinori
+Yuu
+Yuichiro
+Yuto
+Zen
diff --git a/strings/names/abyssariad/onif.txt b/strings/names/abyssariad/onif.txt
new file mode 100644
index 0000000000..3a7025e6e5
--- /dev/null
+++ b/strings/names/abyssariad/onif.txt
@@ -0,0 +1,50 @@
+Jiguur
+Temulun
+Sarantuya
+Samga
+Alagh
+Yid
+Sorkhaghtani
+Oyuunchimeg
+Sechen
+Khadagan
+Solongo
+Oyuunchimeg
+Yesugen
+Odtsetseg
+Altantsetseg
+Narantsetseg
+Dokuz
+Khatum
+Yisugei
+Qatun
+Khojin
+Maral
+Narantuyaa
+Narantsetseg
+Gorbeljin
+Nomolun
+Silugukhan
+Qatakhan
+Bayarma
+Alagh
+Abagai
+Ghoa
+Cota
+Oghul
+Sarantsatsral
+Botokhui Targhun
+Narangerel
+Cirina
+Khongordzol
+Sarantuya
+Orbei
+Sarantsatsr
+Checheyigen
+Hogelun
+Dokuz Khatum
+Sayinaral
+Enebish
+Altan
+Dagasi
+Oyuun
diff --git a/strings/names/abyssariad/onim.txt b/strings/names/abyssariad/onim.txt
new file mode 100644
index 0000000000..6995da24a9
--- /dev/null
+++ b/strings/names/abyssariad/onim.txt
@@ -0,0 +1,50 @@
+Kokochu
+Bogorchu
+Tseren
+Hooshal
+Sechegur
+Erke
+Jubkhan
+Xorxoi
+Khurchakhus
+Xartsaga
+Emlig
+Dayir
+Esenaij
+Caikhatu
+Nekunaisi
+Tomor
+Togh
+Sacha
+Belgunutei
+Gulug
+Bogarji
+Idughadai
+Asugbal
+Khoriubechi
+Delger
+Yesugei
+Baiju
+Delger
+Huslen
+Khadagan
+Ong
+Otgonbayar
+Ogodei
+Mergen
+Timurolie
+Durraimur
+Buyirugh
+Tabudai
+Baiju
+Khudus
+Okin
+Barkhagh
+Megujin
+Gugun
+Ajinai
+Yul
+Ashighemur
+Khorghosun
+Temur
+Khadan
diff --git a/strings/rt/ashigaruaggrolines.txt b/strings/rt/ashigaruaggrolines.txt
new file mode 100644
index 0000000000..2b2e03cc50
--- /dev/null
+++ b/strings/rt/ashigaruaggrolines.txt
@@ -0,0 +1,21 @@
+Unsheath your weapon, mainlander.
+Your fate is sealed, fool!
+This will be your end!
+Die by my blade!
+No mercy for the unworthy.
+Your soul is mine to consume. You think the underslut will save you?
+The abyss hungers for you!
+You won’t leave here alive!
+Taste the edge of my blade!
+The ground shall swallow you whole!
+I will send your soul to the abyss!
+A warrior dies with honor, but you will die forgotten!
+Defend yourself or perish!
+This land is not yours assume authority!
+Prepare for your reckoning. You shall be unmade!
+I shall twist your mind until you beg for oblivion!
+In the name of Abyssor, I claim victory!
+Honor and Glory, for the abyss!
+With your fall, your soul will be mine!
+This battlefield is my home, you are not welcomed.
+I will make your pity gods tremble at the clash of my steel.
diff --git a/strings/rt/ashigarulines.txt b/strings/rt/ashigarulines.txt
new file mode 100644
index 0000000000..6265ba6bbf
--- /dev/null
+++ b/strings/rt/ashigarulines.txt
@@ -0,0 +1,27 @@
+I wonder… do you dream of things you cannot comprehend?
+Honor is not earned on the battlefield, but here I am to prove otherwise.
+The field of battle is my home already. I don't care if we have been exiled.
+Albeit my ancestors never fought in these lands, their spirits guide my blade nonetheless.
+Victory or defeat, these are nothing. Only honor endures after death.
+The taste of blood, it still lingers...
+The battle calls.
+We are the shield against Graggar… yet they let incompetent gods to tell the tales. The nine gods must be destroyed.
+I have trained my entire immortal life for this moment, yet it feels so fleeting.
+The sun rises... on another day of strife.
+Ah yes... The wind whispers of battle once more.
+The silent cries.
+Only one god did not falter. Why do you even dare becoming a slave to the others?
+The only true remaining god is Abyssor. Anything else is finite mana and mere lingering of mad men.
+I'd like to invite one to a dance of swords... Wait- N-Not you, bakatare!
+Why die with honor if I can just kill an whaler WITH honor? Followers of Ravox are strange at best.
+Aahh.. What a nice dawn. The ocean reverses its tides, and it sings as deep as the abyss...
+You know what is funny? Interspecies relationships. These reformists are freeks for that heartfelt whistle.
+By the fucking abyss, this island is horrid.
+Can you feel it? mana is dying, yet these whales does nothing to recycle it.
+Mmwhm... I wonder why elven soul tastes better than humen ones, when the humen soul is supposedly perfected?
+Wait. It is Town on Rockhill, just rockhill, stonekeep? Enigmakeep? ALL OF WHAT!?
+Emperor... stop talking to me in my dreams. I DON'T GUCKING CARE!!! LIAR! TRAITOR!!!
+The reformists will fall. Their little alliance is nothing.
+I will weave my own destiny under my lord.
+Aahh... Abyssor, I beg you... give light to your son.
+Elven souls... I must taste it again...
diff --git a/strings/rt/names/abyssariad/abyssnorf.txt b/strings/rt/names/abyssariad/abyssnorf.txt
new file mode 100644
index 0000000000..b9222e0507
--- /dev/null
+++ b/strings/rt/names/abyssariad/abyssnorf.txt
@@ -0,0 +1,90 @@
+Aiko
+Akemi
+Asami
+Ayaka
+Ayame
+Chie
+Chika
+Emiko
+Eriko
+Etsuko
+Hana
+Haruka
+Hikari
+Hikaru
+Hina
+Hiroko
+Hitomi
+Honoka
+Izumi
+Junko
+Kaede
+Kana
+Kanako
+Kaori
+Kasumi
+Kazumi
+Keiko
+Kiko
+Kimiko
+Kiyoko
+Kumiko
+Madoka
+Mai
+Maki
+Mami
+Mana
+Mami
+Mari
+Mariko
+Mayu
+Mayumi
+Megumi
+Mika
+Miki
+Minako
+Mio
+Misaki
+Mitsuko
+Miyako
+Miyu
+Mizuki
+Momoko
+Nanami
+Naomi
+Natsuki
+Natsumi
+Nozomi
+Rei
+Reiko
+Rika
+Riko
+Rina
+Risa
+Sachiko
+Saki
+Sakura
+Sanae
+Satomi
+Sayaka
+Setsuko
+Shizuka
+Shizuko
+Sumiko
+Suzume
+Takako
+Tamiko
+Tomoko
+Tomomi
+Umeko
+Wakana
+Yoko
+Yui
+Yuka
+Yukari
+Yuki
+Yuko
+Yumiko
+Yuriko
+Yuu
+Yuuna
diff --git a/strings/rt/names/abyssariad/abyssnorlast.txt b/strings/rt/names/abyssariad/abyssnorlast.txt
new file mode 100644
index 0000000000..63b851d8fe
--- /dev/null
+++ b/strings/rt/names/abyssariad/abyssnorlast.txt
@@ -0,0 +1,92 @@
+of the Abe Clan
+of the Adachi Clan
+of the Arai Clan
+of the Arakawa Clan
+of the Asano Clan
+of the Chiba Clan
+of the Date Clan
+of the Endo Clan
+of the Fukushima Clan
+of the Furuya Clan
+of the Gotou Clan
+of the Hamada Clan
+of the Hasegawa Clan
+of the Hata Clan
+of the Hattori Clan
+of the Higashi Clan
+of the Hirano Clan
+of the Honda Clan
+of the Hosokawa Clan
+of the Iguchi Clan
+of the Imai Clan
+of the Inoue Clan
+of the Ishioka Clan
+of the Ito Clan
+of the Iwata Clan
+of the Kadokawa Clan
+of the Kai Clan
+of the Kaneko Clan
+of the Kano Clan
+of the Katayama Clan
+of the Kinoshita Clan
+of the Kitagawa Clan
+of the Kitano Clan
+of the Kiyohara Clan
+of the Kojima Clan
+of the Kondo Clan
+of the Kurihara Clan
+of the Maekawa Clan
+of the Makino Clan
+of the Maruyama Clan
+of the Matsushita Clan
+of the Minami Clan
+of the Miura Clan
+of the Mochizuki Clan
+of the Nagai Clan
+of the Nagasaki Clan
+of the Nakajima Clan
+of the Nakamoto Clan
+of the Nakatani Clan
+of the Nishida Clan
+of the Noguchi Clan
+of the Nomura Clan
+of the Obata Clan
+of the Oda Clan
+of the Ogura Clan
+of the Okubo Clan
+of the Omura Clan
+of the Onishi Clan
+of the Ota Clan
+of the Ozawa Clan
+of the Sakaguchi Clan
+of the Sakurai Clan
+of the Sawada Clan
+of the Shibata Clan
+of the Shibasaki Clan
+of the Shima Clan
+of the Shimada Clan
+of the Sugawara Clan
+of the Takamura Clan
+of the Tamura Clan
+of the Tani Clan
+of the Terada Clan
+of the Toda Clan
+of the Tokuda Clan
+of the Toyama Clan
+of the Tsuchiya Clan
+of the Uchida Clan
+of the Ueda Clan
+of the Ueno Clan
+of the Uno Clan
+of the Usui Clan
+of the Wada Clan
+of the Wakabayashi Clan
+of the Wakimoto Clan
+of the Yagi Clan
+of the Yamada Clan
+of the Yamashiro Clan
+of the Yasuda Clan
+of the Yokoyama Clan
+of the Yoshimoto Clan
+of the Yoshimura Clan
+of the Yoshino Clan
diff --git a/strings/rt/names/abyssariad/abyssnorm.txt b/strings/rt/names/abyssariad/abyssnorm.txt
new file mode 100644
index 0000000000..fb403a3db2
--- /dev/null
+++ b/strings/rt/names/abyssariad/abyssnorm.txt
@@ -0,0 +1,88 @@
+Akira
+Daichi
+Haruto
+Hiroshi
+Ichiro
+Jiro
+Kaito
+Kazuki
+Kenji
+Koichi
+Kousuke
+Makoto
+Masaru
+Naoki
+Ren
+Riku
+Ryo
+Ryota
+Satoshi
+Shigeru
+Sora
+Susumu
+Takashi
+Takumi
+Taro
+Tatsuya
+Tomoya
+Toru
+Yasuhiro
+Yoshiro
+Yuki
+Yusuke
+Yuuta
+Aki
+Atsushi
+Daisuke
+Eiji
+Fumio
+Genji
+Hideo
+Hideki
+Hiroto
+Hisashi
+Isamu
+Itsuki
+Junnosuke
+Katsuo
+Kazuya
+Keisuke
+Ken
+Kenta
+Kiyoshi
+Kouta
+Masahiro
+Masayuki
+Minoru
+Mitsuo
+Nao
+Noboru
+Osamu
+Reiji
+Ryohei
+Ryunosuke
+Saburo
+Seiji
+Shigeo
+Shinji
+Shinya
+Shun
+Shunpei
+Taichi
+Takao
+Takeo
+Tamotsu
+Tatsuhiro
+Teruo
+Tetsuo
+Tomohiro
+Toshio
+Tsuyoshi
+Wataru
+Yasuo
+Yoshihiro
+Yoshinori
+Yuu
+Yuichiro
+Yuto
+Zen
diff --git a/strings/rt/names/abyssariad/onif.txt b/strings/rt/names/abyssariad/onif.txt
new file mode 100644
index 0000000000..3a7025e6e5
--- /dev/null
+++ b/strings/rt/names/abyssariad/onif.txt
@@ -0,0 +1,50 @@
+Jiguur
+Temulun
+Sarantuya
+Samga
+Alagh
+Yid
+Sorkhaghtani
+Oyuunchimeg
+Sechen
+Khadagan
+Solongo
+Oyuunchimeg
+Yesugen
+Odtsetseg
+Altantsetseg
+Narantsetseg
+Dokuz
+Khatum
+Yisugei
+Qatun
+Khojin
+Maral
+Narantuyaa
+Narantsetseg
+Gorbeljin
+Nomolun
+Silugukhan
+Qatakhan
+Bayarma
+Alagh
+Abagai
+Ghoa
+Cota
+Oghul
+Sarantsatsral
+Botokhui Targhun
+Narangerel
+Cirina
+Khongordzol
+Sarantuya
+Orbei
+Sarantsatsr
+Checheyigen
+Hogelun
+Dokuz Khatum
+Sayinaral
+Enebish
+Altan
+Dagasi
+Oyuun
diff --git a/strings/rt/names/abyssariad/onim.txt b/strings/rt/names/abyssariad/onim.txt
new file mode 100644
index 0000000000..6995da24a9
--- /dev/null
+++ b/strings/rt/names/abyssariad/onim.txt
@@ -0,0 +1,50 @@
+Kokochu
+Bogorchu
+Tseren
+Hooshal
+Sechegur
+Erke
+Jubkhan
+Xorxoi
+Khurchakhus
+Xartsaga
+Emlig
+Dayir
+Esenaij
+Caikhatu
+Nekunaisi
+Tomor
+Togh
+Sacha
+Belgunutei
+Gulug
+Bogarji
+Idughadai
+Asugbal
+Khoriubechi
+Delger
+Yesugei
+Baiju
+Delger
+Huslen
+Khadagan
+Ong
+Otgonbayar
+Ogodei
+Mergen
+Timurolie
+Durraimur
+Buyirugh
+Tabudai
+Baiju
+Khudus
+Okin
+Barkhagh
+Megujin
+Gugun
+Ajinai
+Yul
+Ashighemur
+Khorghosun
+Temur
+Khadan