diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 8498f16bc8..ef2c50d25d 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -113,6 +113,16 @@ #define RANDOM_PEASANT_DYES pick(CLOTHING_BARK_BROWN , CLOTHING_PEASANT_BROWN, CLOTHING_MUD_BROWN , CLOTHING_BOG_GREEN , CLOTHING_SPRING_GREEN , CLOTHING_PEAR_YELLOW ) #define RANDOM_NOBLE_DYES pick( CLOTHING_DARK_INK, CLOTHING_PLUM_PURPLE, CLOTHING_SALMON, CLOTHING_RED_OCHRE, CLOTHING_YELLOW_OCHRE, CLOTHING_MAROON, CLOTHING_RUSSET, CLOTHING_MUSTARD_YELLOW, CLOTHING_FOREST_GREEN, CLOTHING_SKY_BLUE) +#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" + #define CLOTHING_COLOR_NAMES list("Ash Grey","Chalk White","Cream","White","Dark Ink","Plum Purple","Salmon","Blood Red", "Maroon","Red Ochre","Russet","Chestnut","Mustard Yellow","Yellow Ochre","Forest Green","Sky Blue","Teal", "Royal Black","Soot Black","Winestain Red","Royal Red","Royal Majenta","Fyritius Orange","Bark Brown","Peasant Brown","Mud Brown","Pear Yellow","Spring Green","Bog Green","Royal Teal","Berry Blue", "Royal Blue", "Royal Purple","Dunked in Water" ) /proc/clothing_color2hex(input) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 0e55d96e77..bd1f23411d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -142,6 +142,7 @@ #define POLEARM_BASH /datum/intent/polearm/bash #define POLEARM_SWING /datum/intent/polearm/bash/swing #define SPEAR_CUT /datum/intent/polearm/cut +#define MANCATCHER /datum/intent/polearm/thrust/mancatcher #define POLEARM_THRUST /datum/intent/polearm/thrust #define SPEAR_POKE /datum/intent/polearm/thrust/poke 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..91580c040e 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -98,6 +98,12 @@ GLOBAL_LIST_INIT(our_forest_sex, typecacheof(list( #define ishalfelf(A) (is_species(A, /datum/species/human/halfelf)) #define istiefling(A) (is_species(A, /datum/species/tieberian)) +//RT Kaizoku Species +#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 isdenmorian(A) (is_species(A, /datum/species/abyssariad/denmorian)) + //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..97ac3c47bd 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -60,6 +60,7 @@ #define MOB_EPIC 1 << 7 //megafauna #define MOB_REPTILE 1 << 8 #define MOB_SPIRIT 1 << 9 +#define MOB_APOTHEOSIS 1 << 10 //Because someone made a load of Goblin IDs, so I required this. //Organ defines for carbon mobs #define ORGAN_ORGANIC 1 @@ -466,3 +467,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" + +//DENMORIAN 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" + diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm index 3822810fb8..b461f43694 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", "Denmorian", "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..e6ee27c91e 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -66,6 +66,7 @@ #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..97ad6bdc2c 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -45,6 +45,7 @@ #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" @@ -111,7 +112,8 @@ GLOBAL_LIST_INIT(roguetraits, list( TRAIT_SHOCKIMMUNE = "I am immune to electrical shocks.", 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_MOB_FIRE_IMMUNE = span_info("I am not easily burned by flames.") )) // trait accessor defines diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index e4473b9cae..3c18f93027 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -193,7 +193,8 @@ GLOBAL_LIST_INIT(bitfields, list( "MOB_BEAST" = MOB_BEAST, "MOB_EPIC" = MOB_EPIC, "MOB_REPTILE" = MOB_REPTILE, - "MOB_SPIRIT" = MOB_SPIRIT + "MOB_SPIRIT" = MOB_SPIRIT, + "MOB_APOTHEOSIS" = MOB_APOTHEOSIS ), "fovangle" = list ( "FOV_DEFAULT" = FOV_DEFAULT, diff --git a/code/controllers/subsystem/rogue/devotion.dm b/code/controllers/subsystem/rogue/devotion.dm index b621d6dbdd..97346bf473 100644 --- a/code/controllers/subsystem/rogue/devotion.dm +++ b/code/controllers/subsystem/rogue/devotion.dm @@ -160,3 +160,16 @@ to_chat(src, "I gained [prayersesh] devotion!") return to_chat(src, "I gained [prayersesh] devotion!") + +/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..f2437388e7 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", + "Denmorian", + "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..e946b5fbc2 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -23,6 +23,8 @@ var/wallcraft = FALSE var/craftdiff = 1 var/sellprice = 0 + var/req_kaizoku = FALSE + var/req_antikaizoku = FALSE //crafting diff, every diff removes 25% chance to craft /* /datum/crafting_recipe/example diff --git a/code/datums/gods/faiths/abyssanctum.dm b/code/datums/gods/faiths/abyssanctum.dm new file mode 100644 index 0000000000..9a4b2e8b1d --- /dev/null +++ b/code/datums/gods/faiths/abyssanctum.dm @@ -0,0 +1,11 @@ +/* Experimental for later. +/datum/faith/goodabyssanctum //non-antagonistic + name = "Abyssanctum" //Reformulated abyssanctum, considered 'the true' abyssanctum since it is the one settled by the heavenly emperor to be so. + desc = "The faith that bridges Fog Island and Heartfelt. May Abyssor's boudless depth cleanse our souls, the one whom hold shred of Weeper's divinity, the key of the world, the tears." + godhead = /datum/patron/goodabyssanctum/abyssor + +/datum/faith/evilabyssanctum //Antagonistic + name = "Traditional Abyssanctum" + desc = "The faith of wild raiders of the oceans, fractured abyssariads whom believes no god is worthy of worship but Abyssor and the Weeper. May Abyssor's eternal gaze shield the souls of the fallen kin." + godhead = /datum/patron/evilabyssanctum/abyssor +*/ diff --git a/code/datums/gods/patrons/abyssanctum.dm b/code/datums/gods/patrons/abyssanctum.dm new file mode 100644 index 0000000000..61d9f23672 --- /dev/null +++ b/code/datums/gods/patrons/abyssanctum.dm @@ -0,0 +1,48 @@ +/* Experimental for later. +/datum/patron/goodabyssanctum + name = null + associated_faith = /datum/faith/goodabyssanctum + t0 = /obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal + +/datum/patron/evilabyssanctum + name = null + associated_faith = /datum/faith/evilabyssanctum + t0 = /obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal + +/datum/patron/goodabyssanctum/abyssor + name = "Abyssanctum" + domain = "Force of Seas and Storms" + desc = "The World-Whale, the sovereign of the seas and storms." + 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 //Unfinished + t2 = /obj/effect/proc_holder/spell/invoked/icebind //Unfinished + t3 = null +// t3 = /obj/effect/proc_holder/spell/invoked/elemental //Not finished. + confess_lines = list( + "THIS SUFFERING IS WITHOUT PURPOSE! I AM ONE OF YOU! HALT YOUR WRATH!", + "I AM NO FOE! RELEASE ME FROM THIS TORMENT!", + "YOU THINK THE WEEPER AND ABYSSOR IS NOT WATCHING YOUR FAIL?! I'M ONE OF YOU!", + "THIS STRIKE BETRAYS OUR SHARED PATH! THIS PAIN IS A SACRILEGE, I AM OF YOUR CREED!", + ) + +/datum/patron/evilabyssanctum/abyssor + name = "Traditional Abyssanctum" + domain = "Force of Seas and Storms" + desc = "The World-Whale, the sovereign of the seas and storms." + 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 //Unfinished + t2 = /obj/effect/proc_holder/spell/invoked/icebind //Unfinished + t3 = null +// t3 = /obj/effect/proc_holder/spell/invoked/elemental //Not finished. + confess_lines = list( + "YOU PRAISE GODS OF THIEVING, THE DIVINE THRONE WAS STOLEN!", + "YOU DARE TURN AGAINST THE SACRED? DIE A WHALER'S DEATH!", + "HERETIC! YOU'LL PAY FOR YOUR BLASPHEMY WITH BLOOD! BE CAST INTO THE WAVES!", + ) +*/ diff --git a/code/datums/gods/patrons/divine_pantheon.dm b/code/datums/gods/patrons/divine_pantheon.dm index fb0bbeba65..4efa7e0155 100644 --- a/code/datums/gods/patrons/divine_pantheon.dm +++ b/code/datums/gods/patrons/divine_pantheon.dm @@ -47,6 +47,11 @@ 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..d922f14172 100644 --- a/code/datums/status_effects/rogue/debuff.dm +++ b/code/datums/status_effects/rogue/debuff.dm @@ -405,3 +405,102 @@ 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.") + +/datum/status_effect/debuff/freezing/tick() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.adjustOxyLoss(-6, 0) // Allows breathing underwater + if(prob(50)) + C.adjustFireLoss(2) + C.Jitter(3) + +// 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..2e95d88cda 100644 --- a/code/game/objects/items/rogueitems/bombs.dm +++ b/code/game/objects/items/rogueitems/bombs.dm @@ -79,3 +79,171 @@ 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 + +/* + // I did not find the trigger for cutting tool. So this is commented out for now. Use 'cloth' to recover the fuse. +/obj/item/zhentianlei/attackby(obj/item/tool/cutting/C, mob/user) + if(fuze > 30) + fuze = 30 + to_chat(user, "You shorten the fuse of the [name].") + playsound(src.loc, 'sound/items/fusecut.ogg', 100) + else + fuze = 0 + to_chat(user, "You shorten the fuse even more, turning it into a booby trap!") + playsound(src.loc, 'sound/items/fusecut.ogg', 100) + return TRUE +*/ diff --git a/code/game/objects/items/rogueweapons/melee/axes.dm b/code/game/objects/items/rogueweapons/melee/axes.dm index 10a673bbbe..7128b492b9 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 = 50 + 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..aeab73a679 100644 --- a/code/game/objects/items/rogueweapons/melee/blunt.dm +++ b/code/game/objects/items/rogueweapons/melee/blunt.dm @@ -271,7 +271,7 @@ slot_flags = ITEM_SLOT_BACK smeltresult = /obj/item/ash resistance_flags = FLAMMABLE // Weapon made mostly of wood - minstr = 10 + minstr = 0 parrysound = "parrywood" max_integrity = 300 wbalance = EASY_TO_DODGE @@ -394,3 +394,147 @@ 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" + 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" + 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..b84f3fb950 100644 --- a/code/game/objects/items/rogueweapons/melee/flail.dm +++ b/code/game/objects/items/rogueweapons/melee/flail.dm @@ -138,3 +138,161 @@ +/obj/item/rogueweapon/flail/towner + force = 15//starting gear for peasant militias + possible_item_intents = list(/datum/intent/mace/strike/wood) + name = "Wooden flail" + desc = "During peacetime these flails are used to thresh wheat. During wartime - to chase off marauders." + icon_state = "peasantflail" + icon = 'icons/roguetown/weapons/32.dmi' + sharpness = IS_BLUNT + //dropshrink = 0.75 + wlength = WLENGTH_NORMAL + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_HIP + associated_skill = /datum/skill/combat/whipsflails + smeltresult = /obj/item/rogueore/coal //is mostly wood + pickup_sound = 'sound/foley/equip/equip_armor_chain.ogg' + drop_sound = 'sound/foley/dropsound/wooden_drop.ogg' + equip_sound = 'sound/foley/equip/equip_armor_chain.ogg' + swingsound = BLUNTWOOSH_MED + can_parry = FALSE // You can't parry with this, it'd be awkward to tangle chains, use a shield + max_integrity = 200 + throwforce = 5 + wdefense = 0 + minstr = 5 + sellprice = 10 + +/obj/item/rogueweapon/flail/militia + force = 20//same as the iron flails since is the same with different flavour + possible_item_intents = list(/datum/intent/flail/strike, /datum/intent/flail/strike/smash) + name = "Militia flail" + desc = "A lucky hit from such a flail can squash a cheap helmet along with the wearer's skull." + icon_state = "militiaflail" + icon = 'icons/roguetown/weapons/32.dmi' + +/////////////////////////////////////////////////////////////////// +// 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..1b0141c074 100644 --- a/code/game/objects/items/rogueweapons/melee/knives.dm +++ b/code/game/objects/items/rogueweapons/melee/knives.dm @@ -386,3 +386,44 @@ 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/huntingknife/idagger/steel/tanto + name = "tanto" + icon_state = "tanto" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + 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." + +/obj/item/rogueweapon/huntingknife/idagger/steel/kaiken + name = "kaiken" + desc = "The weapon laws in colonized Abyssariad islands, with high humen of elven population, forbade non-warriors from carrying blades in public, so abyssariad colonists made weapons such as this." + icon_state = "kaiken" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + possible_item_intents = list(/datum/intent/dagger/thrust,/datum/intent/dagger/cut,/datum/intent/dagger/thrust/pick) + w_class = WEIGHT_CLASS_TINY + +/obj/item/rogueweapon/huntingknife/idagger/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..283dba2fd6 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,408 @@ 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 = 15 + force_wielded = 25 + 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..0e9bf9a3dd 100644 --- a/code/game/objects/items/rogueweapons/melee/special.dm +++ b/code/game/objects/items/rogueweapons/melee/special.dm @@ -196,3 +196,105 @@ 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..a9c5ef50d3 100644 --- a/code/game/objects/items/rogueweapons/melee/swords.dm +++ b/code/game/objects/items/rogueweapons/melee/swords.dm @@ -856,5 +856,200 @@ dropshrink = 0.75 smeltresult = /obj/item/ingot/copper sellprice = 25//lets make the two bars worth it + sellprice = 25//lets make the two bars worth it + + +// Hoplite Kophesh +/obj/item/rogueweapon/sword/khopesh + name = "ancient khopesh" + desc = "A bronze weapon of war from the era of Apotheosis. This blade is older than a few elven generations, but has been very well-maintained and still keeps a good edge." + force = 22 // Unique weapon from rare job, slightly more force than most one-handers + possible_item_intents = list(/datum/intent/sword/cut, /datum/intent/sword/chop, /datum/intent/sword/strike) + gripped_intents = null + icon = 'icons/roguetown/weapons/64.dmi' + icon_state = "khopesh" + item_state = "khopesh" + inhand_x_dimension = 64 + inhand_y_dimension = 64 + pixel_y = -16 + pixel_x = -16 + dropshrink = 0.75 + bigboy = TRUE // WHY DOES THIS FUCKING VARIABLE CONTROL WHETHER THE BLOOD OVERLAY WORKS ON 64x64 WEAPONS + slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP + smeltresult = null // No bronze ingots yet + max_blade_int = 300 + max_integrity = 300 + minstr = 10 // Even though it's technically one-handed, you gotta have some muscle to wield this thing + wdefense = 3 // Lower than average sword defense (meant to pair with a shield) + wbalance = -1 // Likely weighted towards the blade, for deep cuts and chops + sellprice = 200 // A noble collector would love to get his/her hands on one of these blades + +/obj/item/rogueweapon/sword/scimitar + slot_flags = ITEM_SLOT_HIP + force = 20 + force_wielded = 25 + possible_item_intents = list(/datum/intent/sword/cut, /datum/intent/sword/thrust) + gripped_intents = list(/datum/intent/sword/cut, /datum/intent/sword/thrust) + name = "scimitar" + desc = "A Zybantu design for swords, these curved blades are a common sight in the lands of the Ziggurat." + icon_state = "scimitar" + icon = 'icons/roguetown/weapons/32.dmi' + +/////////////////////////////////////////////////////////////////// +// 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" + desc = "A simple, double-edged iron straight sword of abyssariad design used in martial arts." + icon_state = "jian" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + +/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 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..a29d529f04 100644 --- a/code/game/objects/items/rogueweapons/ranged/ammo.dm +++ b/code/game/objects/items/rogueweapons/ranged/ammo.dm @@ -471,3 +471,91 @@ #undef ARROW_PENETRATION #undef BOLT_PENETRATION #undef BULLET_PENETRATION + + +//// Kaizoku Edition //// + +/obj/projectile/bullet/reusable/arrow/poison/fog + name = "fog arrow" + desc = "An arrow with it's tip drenched in a powerful sedactive." + 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 sedactive." + 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) diff --git a/code/game/objects/items/rogueweapons/ranged/bows.dm b/code/game/objects/items/rogueweapons/ranged/bows.dm index b2acff092c..94edeb5627 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..57266fc8ab 100644 --- a/code/game/objects/items/rogueweapons/shields.dm +++ b/code/game/objects/items/rogueweapons/shields.dm @@ -292,3 +292,90 @@ 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/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/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/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/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/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/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/modules/antagonists/roguetown/villain/bandit.dm b/code/modules/antagonists/roguetown/villain/bandit.dm index 73c6e76f59..82cbd3ccee 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/huntingknife/idagger/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/client/preferences_customizers.dm b/code/modules/client/preferences_customizers.dm index 8009ce53ae..6b04219edd 100644 --- a/code/modules/client/preferences_customizers.dm +++ b/code/modules/client/preferences_customizers.dm @@ -203,7 +203,7 @@ return entry.eye_color else return "FFFFFF" - + /datum/preferences/proc/get_chest_color() var/list/zone_list = body_markings[BODY_ZONE_CHEST] if(!zone_list) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 36717a9659..11418db846 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -328,13 +328,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["eye_color"] >> eye_color S["voice_color"] >> voice_color S["skin_tone"] >> skin_tone - S["hairstyle_name"] >> hairstyle + S["hairstyle_name"] >> hairstyle S["facial_style_name"] >> facial_hairstyle S["underwear"] >> underwear S["underwear_color"] >> underwear_color S["undershirt"] >> undershirt S["accessory"] >> accessory - S["detail"] >> detail + S["detail"] >> detail S["socks"] >> socks S["backpack"] >> backpack S["jumpsuit_style"] >> jumpsuit_style diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index c583192070..56ef2fc08d 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." + 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) color = CLOTHING_BLOOD_RED 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" @@ -553,12 +572,6 @@ allowing for more movement than full plate but still giving good protection. Not as durable as maille." icon_state = "coat_of_plates" blocksound = PLATEHIT - sellprice = VALUE_SNOWFLAKE_STEEL - - armor = ARMOR_MAILLE_GOOD - - - //.................................................................................................................................. /*---------------\ @@ -763,8 +776,6 @@ body_parts_covered = COVERAGE_ALL_BUT_ARMS - - //.................................................................................................................................. /*-----------------\ | Antagonist Armor | @@ -867,3 +878,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/cloaks.dm b/code/modules/clothing/rogueclothes/cloaks.dm index 5d4fa00166..84a181bb92 100644 --- a/code/modules/clothing/rogueclothes/cloaks.dm +++ b/code/modules/clothing/rogueclothes/cloaks.dm @@ -1068,3 +1068,400 @@ add_overlay(mutable_appearance('icons/roguetown/clothing/cloaks.dmi', "clasp")) ..() +//................ Silk Pantaloons ............... // +/obj/item/clothing/under/roguetown/pantaloons + name = "silk pantaloons" + icon_state = "pantaloons" + item_state = "pantaloons" + color = CLOTHING_WET + r_sleeve_status = SLEEVE_NOMOD + l_sleeve_status = SLEEVE_NOMOD + adjustable = FALSE + +/obj/item/clothing/under/roguetown/pantaloons/random/Initialize() + color = RANDOM_NOBLE_DYES + ..() + +/////////////////////////////////////////////////////////////////// +// 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/clothing/rogueclothes/feet.dm b/code/modules/clothing/rogueclothes/feet.dm index eaf8594079..e4d275c623 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,102 @@ 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..af8154707f 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,90 @@ allowed_race = list("human") allowed_sex = list(MALE) + break_sound = 'sound/foley/breaksound.ogg' + drop_sound = 'sound/foley/dropsound/armor_drop.ogg' + +/obj/item/clothing/gloves/roguetown/leather/feld + name = "feldsher's gloves" + desc = "Improved grip for wielding the tools of the trade." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + icon_state = "feldgloves" + item_state = "feldgloves" + +/obj/item/clothing/gloves/roguetown/leather/phys + name = "physicker's gloves" + desc = "Improved grip for wielding disembowled organs." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + icon_state = "surggloves" + item_state = "surggloves" + +/////////////////////////////////////////////////////////////////// +// 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..f92e1ff166 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 denmorians, \ + 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..e892b59ec0 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 = "ironhalfmenpo" + 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 somen" + icon_state = "steelmenpo" + 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 menpo" + icon_state = "steelmenpo" + 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 = "ironmenpo_tribal" + 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 = "steelmenpo_tribal" + 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 Denmorian 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..962ca0f577 100644 --- a/code/modules/clothing/rogueclothes/shirts.dm +++ b/code/modules/clothing/rogueclothes/shirts.dm @@ -422,3 +422,183 @@ 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/jobs/job_types/roguetown/adventurer/types/_advclass.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm index 17497221ad..63fa834d91 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", + "Denmorian", + "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..09f1687ca0 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", + "Denmorian", + "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/kaizoku/champion.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/champion.dm new file mode 100644 index 0000000000..4397dc34c8 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/champion.dm @@ -0,0 +1,155 @@ +/////////////////////////////////////////////////////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 + "Denmorian", // 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 == "Denmorian") + 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/kaizoku/kyudoka.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/kyudoka.dm new file mode 100644 index 0000000000..e96bb2a9e3 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/kaizoku/marauder.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/marauder.dm new file mode 100644 index 0000000000..151063a877 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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/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/kaizoku/mastersohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/mastersohei.dm new file mode 100644 index 0000000000..72c28245c5 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/kaizoku/onmyoji.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/onmyoji.dm new file mode 100644 index 0000000000..3c9fa4544e --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/kaizoku/shinobi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/shinobi.dm new file mode 100644 index 0000000000..e053d659e6 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/shinobi.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/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", + "Denmorian", + "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 + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja + + 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/huntingknife/idagger/sai + beltl = /obj/item/rogueweapon/huntingknife/idagger/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 + if(prob(50)) + beltl = /obj/item/rogueweapon/huntingknife/idagger/steel/tanto + else + beltl = /obj/item/rogueweapon/huntingknife/idagger/steel/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/kaizoku/shrinekeeper.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/shrinekeeper.dm new file mode 100644 index 0000000000..6a4d6174da --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/kaizoku/sohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/sohei.dm new file mode 100644 index 0000000000..bbfa215302 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/huntingknife/idagger/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/kaizoku/wokou.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/wokou.dm new file mode 100644 index 0000000000..8974430d7f --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/rattan + head = /obj/item/clothing/head/roguetown/helmet/skullcap/rattan + backl = /obj/item/storage/backpack/rogue/satchel + backr = /obj/item/rogueweapon/shield/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/huntingknife/idagger/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/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/kaizoku/yamabushi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/yamabushi.dm new file mode 100644 index 0000000000..86bb19b7ef --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/kaizoku/zamurai.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/zamurai.dm new file mode 100644 index 0000000000..08c7fdd44e --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/kaizoku/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", + "Denmorian", + "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/mage.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm index 6be9a68834..ce97d1e71f 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm @@ -46,6 +46,7 @@ H.mind.adjust_spellpoints(7) H.mind.AddSpell(new /obj/effect/proc_holder/spell/self/learnspell) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/touch/prestidigitation) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/icebind) //testing, remove soon. H.change_stat("strength", -2) H.change_stat("intelligence", 3) 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..fbee343cbd 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" ) 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..da930d4296 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. + "Denmorian", + "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..af07b3ddd9 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", + "Denmorian", + "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..02cb991819 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", + "Denmorian", + "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..acdb06d9ee 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", + "Denmorian", + "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..d8257ddf66 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", + "Denmorian", + "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/huntingknife/idagger/steel/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..36d615b0fb 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..a472b7e928 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", + "Denmorian", + "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..0f40e30eaf 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", + "Denmorian", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/hunter @@ -70,7 +74,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Denmorian", + "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..004b4f8aa9 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", + "Denmorian", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/fishermaster diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/merchant.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/merchant.dm index a0a42114db..3cfeb8a813 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/merchant.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/merchant.dm @@ -7,7 +7,8 @@ "Humen", "Elf", "Half-Elf", - "Aasimar" + "Aasimar", + "Denmorian" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role. ) outfit = /datum/outfit/job/roguetown/adventurer/merchant category_tags = list(CTAG_PILGRIM) 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..c222b7e355 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", + "Denmorian", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/weaver category_tags = list(CTAG_PILGRIM) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/woodcutter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/woodcutter.dm index 8a90f34686..f143cb6785 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/woodcutter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/woodcutter.dm @@ -8,7 +8,6 @@ "Tiefling", "Dwarf", "Aasimar" - ) outfit = /datum/outfit/job/roguetown/adventurer/woodcutter category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) diff --git a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm index 7e5d10d5a1..85b200726d 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. + "Denmorian", + "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..680fd9a877 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", + "Denmorian", + "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..b77c80e27e 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", + "Denmorian", + "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/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/huntingknife/idagger/steel/kaiken + 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/huntingknife/idagger/steel/kaiken + 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..68656ee236 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. + "Denmorian", + "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/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..9c252ed43f 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. + "Denmorian", + "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/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/magician.dm b/code/modules/jobs/job_types/roguetown/nobility/magician.dm index 94e63fb454..36c0d69854 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/magician.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/magician.dm @@ -10,7 +10,7 @@ "Humen", "Elf", "Half-Elf", - "Dwarf" + "Dwarf", ) allowed_ages = list(AGE_MIDDLEAGED, AGE_OLD) allowed_sexes = list(MALE, FEMALE) diff --git a/code/modules/jobs/job_types/roguetown/nobility/merchant.dm b/code/modules/jobs/job_types/roguetown/nobility/merchant.dm index 1df2652a05..cda23a8f13 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", + "Denmorian" //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/nobility/steward.dm b/code/modules/jobs/job_types/roguetown/nobility/steward.dm index c128a14eec..1a221ae8fc 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/steward.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/steward.dm @@ -10,7 +10,8 @@ "Humen", "Elf", "Half-Elf", - "Dwarf" + "Dwarf", + "Denmorian" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role. ) allowed_sexes = list(MALE, FEMALE) display_order = JDO_STEWARD diff --git a/code/modules/jobs/job_types/roguetown/other/deathknight.dm b/code/modules/jobs/job_types/roguetown/other/deathknight.dm index 77d2e68b26..add04f6c5b 100644 --- a/code/modules/jobs/job_types/roguetown/other/deathknight.dm +++ b/code/modules/jobs/job_types/roguetown/other/deathknight.dm @@ -13,7 +13,11 @@ "Half-Elf", "Dwarf", "Tiefling", - "Dark Elf" + "Dark Elf", + "Changeling", + "Denmorian", + "Ogrun", + "Undine" ) tutorial = "" diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/blackoak.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/blackoak.dm index e4127ee894..e95a059649 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/blackoak.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/blackoak.dm @@ -4,7 +4,7 @@ allowed_sexes = list(MALE, FEMALE) allowed_races = list( "Half-Elf", - "Elf", + "Elf" ) outfit = /datum/outfit/job/roguetown/mercenary/blackoak category_tags = list(CTAG_MERCENARY) 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..ccc5a6c47c 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", + "Denmorian", + "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..eff7c35bfe --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/kabukimono.dm @@ -0,0 +1,61 @@ +// 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", + "Denmorian", + "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) + +//color for Kabukimonos; color = "#9b874f" 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..d7b5ee6132 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", + "Denmorian", + "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..43be0adfc0 --- /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", + "Denmorian", + "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..55e102c57c 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", + "Denmorian", + "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, \ @@ -23,7 +27,7 @@ display_order = JDO_MERCENARY bypass_lastclass = TRUE give_bank_account = 3 - min_pq = 2 + min_pq = 0 outfit = null outfit_female = null advclass_cat_rolls = list(CTAG_MERCENARY = 20) diff --git a/code/modules/jobs/job_types/roguetown/other/skeleton.dm b/code/modules/jobs/job_types/roguetown/other/skeleton.dm index 28687d3309..06ebeec831 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", + "Denmorian", + "Ogrun", + "Undine" ) tutorial = "" diff --git a/code/modules/jobs/job_types/roguetown/other/tester.dm b/code/modules/jobs/job_types/roguetown/other/tester.dm index 9c05c3a817..ef2c4c5438 100644 --- a/code/modules/jobs/job_types/roguetown/other/tester.dm +++ b/code/modules/jobs/job_types/roguetown/other/tester.dm @@ -18,7 +18,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Denmorian", + "Ogrun", + "Undine" ) tutorial = "" outfit = /datum/outfit/job/roguetown/tester diff --git a/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm b/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm index 7c848f648d..688b19a459 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 diff --git a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm index ccc9209f7b..5b2e8994f5 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", + "Denmorian", + "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..f435b03586 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", + "Denmorian", + "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..aa8c39bd4b 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", + "Denmorian", + "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..6f7e76ddc9 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", + "Denmorian", + "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." @@ -70,3 +74,27 @@ belt = /obj/item/storage/belt/rogue/leather/rope beltr = /obj/item/roguekey/soilson beltl = /obj/item/rogueweapon/knife/villager + + 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 + 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 diff --git a/code/modules/jobs/job_types/roguetown/roguetown.dm b/code/modules/jobs/job_types/roguetown/roguetown.dm index 9fcd63a63a..21dd75376f 100644 --- a/code/modules/jobs/job_types/roguetown/roguetown.dm +++ b/code/modules/jobs/job_types/roguetown/roguetown.dm @@ -63,10 +63,34 @@ 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 + 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 == "Denmorian") + H.verbs |= /mob/proc/birdcall + if(H.dna.species.name == "Undine") + 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/serfs/mason.dm b/code/modules/jobs/job_types/roguetown/serfs/mason.dm index cc78a3f85d..390e4cdfcf 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/mason.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/mason.dm @@ -11,6 +11,9 @@ "Elf", "Half-Elf", "Dwarf", + "Aasimar", + "Tiefling", + "Dark Elf", "Aasimar" ) allowed_sexes = list(MALE, FEMALE) diff --git a/code/modules/jobs/job_types/roguetown/temple/acolyte.dm b/code/modules/jobs/job_types/roguetown/temple/acolyte.dm index d372aabb55..c701ceba9b 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", + "Denmorian", + "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 @@ -95,3 +106,4 @@ C.holder_mob = H H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray) C.grant_spells(H) + 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..d8fecb5bb9 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -211,6 +211,7 @@ gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/heroic name = "Heroic" icon_state = "heroic" @@ -271,6 +272,7 @@ gender = MALE specuse = list("human") + /datum/sprite_accessory/hair/nomadic_humtief name = "Nomadic" icon_state = "nomadic" @@ -284,6 +286,7 @@ under_layer = TRUE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/princely name = "Princely" icon_state = "princely" @@ -296,12 +299,14 @@ gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/romantic name = "Romantic" icon_state = "romantic" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/scribe name = "Scribe" icon_state = "scribe" @@ -321,6 +326,7 @@ gender = MALE specuse = list("human", "dwarf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/son_elf name = "Sonne" icon_state = "son_elf" @@ -357,30 +363,35 @@ gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/tied_long name = "Tied long" icon_state = "tiedlong" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/tied_sidecut name = "Tied sidecut" icon_state = "tsidecut" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/trimmed name = "Trimmed" icon_state = "trimmed" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/warrior name = "Warrior" icon_state = "warrior" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/wildside name = "Wild sidecut" icon_state = "wildside" @@ -436,12 +447,14 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/bob name = "Bob" icon_state = "bob_f" gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/curlyshort name = "Curly Short" icon_state = "curly_f" @@ -502,12 +515,14 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/maiden name = "Maiden" icon_state = "maiden_f" gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/majestic_dwarf_F name = "Majestiq" icon_state = "majestic_dwarf" @@ -526,12 +541,14 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/mysterious_elf name = "Mysterious" icon_state = "mysterious_elf" // modified hime_long gender = FEMALE specuse = list("elf") + /datum/sprite_accessory/hair/mystery name = "Mystery" icon_state = "mystery_f" // modified hime_long @@ -568,12 +585,14 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/queen name = "Queenly" icon_state = "queenly_f" gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/shrine name = "Shrinekeeper" icon_state = "shrine_f" @@ -598,12 +617,14 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/tied_pony name = "Tied ponytail" icon_state = "tied_f" gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/tiedup name = "Tied up" icon_state = "tiedup_f" @@ -616,12 +637,50 @@ gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/hair/wisp name = "Wisp" icon_state = "wisp_f" gender = FEMALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") +//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") ////////////////////////////// // UNISEX Hair Definitions // @@ -697,23 +756,29 @@ 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" @@ -721,84 +786,167 @@ gender = MALE specuse = list("dwarf") + /datum/sprite_accessory/facial_hair/manly name = "Drinker" icon_state = "facial_manly" gender = MALE specuse = list("human", "dwarf", "elf", "tiefling") + /datum/sprite_accessory/facial_hair/fullbeard name = "Full Beard" icon_state = "facial_fullbeard" gender = MALE specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") + /datum/sprite_accessory/facial_hair/cousin 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") + /datum/sprite_accessory/facial_hair/pipe name = "Pipesmoker" icon_state = "facial_pipe" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/facial_hair/viking name = "Raider" icon_state = "facial_viking" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/facial_hair/ranger name = "Ranger" icon_state = "facial_dwarf" gender = MALE specuse = list("human", "dwarf", "elf", "tiefling") + /datum/sprite_accessory/facial_hair/vandyke name = "Rumata" icon_state = "facial_vandyke" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /datum/sprite_accessory/facial_hair/burns name = "Sideburns" icon_state = "facial_burns" gender = MALE specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + /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") + +//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") + /////////////////////////// // Accessory Definitions // /////////////////////////// @@ -984,6 +1132,34 @@ color_src = HAIR use_static = FALSE +//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" + /////////////////////////// // Underwear Definitions // /////////////////////////// @@ -1021,7 +1197,7 @@ 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" @@ -1030,6 +1206,23 @@ specuse = ALL_RACES_LIST 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 +1675,97 @@ /datum/sprite_accessory/moth_markings/moonfly name = "Moon Fly" icon_state = "moonfly" + +//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/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index e0e380edb8..491417d47a 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -203,5 +203,3 @@ if(isturf(loc)) var/turf/T = loc T.Entered(src) - -//Ayy lmao 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..d2cd13f3b5 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -134,6 +134,13 @@ // 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/goblin.dm b/code/modules/mob/living/carbon/human/npc/goblin.dm index 2c472d2c01..1d5e623b99 100644 --- a/code/modules/mob/living/carbon/human/npc/goblin.dm +++ b/code/modules/mob/living/carbon/human/npc/goblin.dm @@ -10,6 +10,7 @@ rot_type = /datum/component/rot/corpse/goblin var/gob_outfit = /datum/outfit/job/roguetown/npc/goblin ambushable = FALSE + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_APOTHEOSIS //I had to give this to Goblins since they have many IDs. base_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, /datum/intent/unarmed/claw) a_intent = INTENT_HELP possible_mmb_intents = list(INTENT_STEAL, INTENT_JUMP, INTENT_KICK, INTENT_BITE) 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..e361e1eeb9 --- /dev/null +++ b/code/modules/mob/living/carbon/human/npc/raider.dm @@ -0,0 +1,273 @@ +// Important. These guys are only suitable for events and film-making. Unless you have an ocean-based map, don't make them spawnable naturally. + +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, "Denmorian" = 1, "Ogrun" = 1) + var/type = pickweight(racetypes) + switch(type) + if("Changeling") + set_species(/datum/species/abyssariad/changeling) + if("Denmorian") + set_species(/datum/species/abyssariad/denmorian) + 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/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/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/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/pre_equip) + +/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/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/human/humen.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/human/humen.dm index 2e180be6f6..80c7951d20 100644 --- a/code/modules/mob/living/carbon/human/species_types/roguetown/human/humen.dm +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/human/humen.dm @@ -57,7 +57,7 @@ /datum/customizer/organ/eyes/humanoid, /datum/customizer/bodypart_feature/hair/head/humanoid, /datum/customizer/bodypart_feature/hair/facial/humanoid, - /datum/customizer/bodypart_feature/accessory, + /datum/customizer/bodypart_feature/accessory ) body_markings = list( /datum/body_marking/tonage, diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/_abyssariad.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/_abyssariad.dm new file mode 100644 index 0000000000..46718faa7b --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/_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) + C.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(C, TRAIT_KAIZOKU, TRAIT_GENERIC) //Cultural Trait. Must not be considered a 'buff' or 'debuff'. + +/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." + +//Lists the users family. Unsure where to put this other than here. +/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/kaizoku/changeling.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/changeling.dm new file mode 100644 index 0000000000..f3c746e85f --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/changeling.dm @@ -0,0 +1,198 @@ + + /*==============* + * * + * 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/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) + ADD_TRAIT(C, TRAIT_KAIZOKU, TRAIT_GENERIC) //Cultural Trait. Must not be considered a 'buff' or 'debuff'. + +/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"))]" + +/datum/species/abyssariad/changeling/get_accent(mob/living/carbon/human/H) + return strings("abyssal_replacement.json", "abyssal") + +// 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/kaizoku/denmorian.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/denmorian.dm new file mode 100644 index 0000000000..9a1ed724c0 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/denmorian.dm @@ -0,0 +1,157 @@ + /*==============* + * * + * Denmorian * + * * + *===============*/ + +// ( Not done yet. But hopefully temporary flying. ) +// ( Not done yet, but hopefully easily breakable bones. ) + +/mob/living/carbon/human/species/abyssariad/denmorian + race = /datum/species/abyssariad/denmorian + +/datum/species/abyssariad/denmorian + name = "Denmorian" + 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/denmorian/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/denmorian/check_roundstart_eligible() + return TRUE + +/datum/species/abyssariad/denmorian/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) + ADD_TRAIT(C, TRAIT_KAIZOKU, TRAIT_GENERIC) //Cultural Trait. Must not be considered a 'buff' or 'debuff'. + +/datum/species/abyssariad/denmorian/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/denmorian/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/denmorian/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/denmorian/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/kaizoku/ogrun.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/ogrun.dm new file mode 100644 index 0000000000..baf93439f0 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/ogrun.dm @@ -0,0 +1,163 @@ + /*==============* + * * + * 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/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) + ADD_TRAIT(C, TRAIT_KAIZOKU, TRAIT_GENERIC) //Cultural Trait. Must not be considered a 'buff' or 'debuff'. + + +/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/kaizoku/undine.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/undine.dm new file mode 100644 index 0000000000..fe5144cedd --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/kaizoku/undine.dm @@ -0,0 +1,219 @@ + /*==============* + * * + * 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") + +/datum/species/elf/undine/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/abyssal) + C.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(C, TRAIT_KAIZOKU, TRAIT_GENERIC) //Cultural Trait. Must not be considered a 'buff' or 'debuff'. + +/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..179b9b2b53 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,9 @@ 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..5d06ba13d4 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 denmorian 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..cbbe2140b2 100644 --- a/code/modules/mob/living/roguetownprocs.dm +++ b/code/modules/mob/living/roguetownprocs.dm @@ -158,9 +158,12 @@ if(offhand) if(offhand.can_parry) offhand_defense += (H.mind ? (H.mind.get_skill_level(offhand.associated_skill) * PARRY_SKILL_WEIGHT) : 20) - offhand_defense += (offhand.wdefense * WEAPON_DEFENSE_WEIGHT) if(istype(offhand, /obj/item/rogueweapon/shield)) force_shield = TRUE + if(istype(offhand, /obj/item/rogueweapon/huntingknife/idagger/sai) && istype(mainhand, /obj/item/rogueweapon/huntingknife/idagger/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..db3e79e107 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/roguetown/fogfrog.dm @@ -0,0 +1,139 @@ +/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/creacher/orcs.dm b/code/modules/mob/living/simple_animal/rogue/creacher/orcs.dm index 0aa7d34c97..05876f38aa 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/orcs.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/orcs.dm @@ -6,7 +6,7 @@ icon_living = "savageorc" icon_dead = "savageorc_dead" gender = MALE - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_APOTHEOSIS robust_searching = 1 speak_chance = 5 turns_per_move = 1 diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm b/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm index c78c61203a..cda7b983df 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/troll.dm @@ -6,6 +6,7 @@ icon_living = "Troll2" icon_dead = "Troll2d" pixel_x = -16 + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_APOTHEOSIS faction = list("orcs") footstep_type = FOOTSTEP_MOB_HEAVY diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm b/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm index 177fa37ecb..2694d6577f 100644 --- a/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm +++ b/code/modules/mob/living/simple_animal/rogue/creacher/trollbog.dm @@ -6,6 +6,7 @@ icon_living = "Troll" icon_dead = "Trolld" pixel_x = -16 + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_APOTHEOSIS faction = list("orcs") footstep_type = FOOTSTEP_MOB_HEAVY 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..f373f7317d 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -9,6 +9,7 @@ #define FEMALE_MOOBEAST_HEALTH 100 #define MALE_MOOBEAST_HEALTH 150 +#define HORSE_UNGENDERED_HEALTH 200 #define FEMALE_GOTE_HEALTH 80 #define MALE_GOTE_HEALTH 120 #define CALF_HEALTH 20 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/roguejobs/alchemist/reagents.dm b/code/modules/roguetown/roguejobs/alchemist/reagents.dm index b1a3ddace6..1d10e75d24 100644 --- a/code/modules/roguetown/roguejobs/alchemist/reagents.dm +++ b/code/modules/roguetown/roguejobs/alchemist/reagents.dm @@ -308,3 +308,21 @@ If you want to expand on poisons theres tons of fun effects TG chemistry has tha M.adjust_fire_stacks(1) M.IgniteMob() return ..() + +/*--------------\ +| 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..440ec22536 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm @@ -361,3 +361,372 @@ 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 + +/obj/item/clothing/suit/roguetown/armor/rattan //cheaper on iron, but has many sticks. Proper for this armor's context. +/datum/anvil_recipe/armor/iplate + 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/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 Denmorian 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..1acbebc6ca 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm @@ -547,3 +547,299 @@ 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/huntingknife/idagger/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/steel + created_item = /obj/item/rogueweapon/huntingknife/idagger/steel/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/huntingknife/idagger/steel + 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..d908af160d --- /dev/null +++ b/code/modules/spells/roguetown/acolyte/abyssor.dm @@ -0,0 +1,368 @@ +/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/music/kaizoku/spells/martialart_abyssanctum.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/music/kaizoku/spells/martialart_abyssanctum.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.mob_biotypes & MOB_APOTHEOSIS) || (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 + +/obj/effect/proc_holder/spell/invoked/tester + name = "tester" + overlay_state = "lesserheal" + releasedrain = 30 + chargedrain = 0 + chargetime = 0 + range = 7 + warnie = "sydwarning" + movement_interrupt = FALSE + sound = 'sound/magic/heal.ogg' + invocation_type = "none" + associated_skill = /datum/skill/magic/holy + antimagic_allowed = TRUE + charge_max = 10 SECONDS 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..ca669a76a1 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_tengu" + icon_state = "eyeball" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 6b4284a654..15b76ad173 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -18,7 +18,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 +238,16 @@ 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/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 71c06b5215..518531537d 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index e09a012f17..39a2127092 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ 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..1466423741 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..0982992cf2 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..5ac30a1233 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..1b79d0480d 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..e26c5c3598 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..09f13a8479 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..a4b1941589 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/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/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..91455bad75 Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/tileset.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..0111f6b78b 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..5a2e0e0a8d 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/mob/bodies/m/mm.dmi b/icons/roguetown/mob/bodies/m/mm.dmi index e01586358e..257186e398 100644 Binary files a/icons/roguetown/mob/bodies/m/mm.dmi and b/icons/roguetown/mob/bodies/m/mm.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..eff57cc7aa 100644 --- a/modular/Neu_Farming/code/plant_def.dm +++ b/modular/Neu_Farming/code/plant_def.dm @@ -163,6 +163,15 @@ maturation_nutrition = HUNGRINESS_TINY maturation_time = FAST_GROWING +/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 + //................ Flowers ............................... /datum/plant_def/sunflower name = "sunflowers" diff --git a/modular/Neu_Farming/code/produce.dm b/modular/Neu_Farming/code/produce.dm index fe225460e9..f09c849b27 100644 --- a/modular/Neu_Farming/code/produce.dm +++ b/modular/Neu_Farming/code/produce.dm @@ -439,6 +439,29 @@ rotprocess = null dust_result = /obj/item/reagent_containers/powder/ozium +/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." + /* /obj/item/reagent_containers/food/snacks/produce/garlic name = "garlic" diff --git a/modular/Neu_Farming/code/seeds.dm b/modular/Neu_Farming/code/seeds.dm index 6206d30583..0ca93fc974 100644 --- a/modular/Neu_Farming/code/seeds.dm +++ b/modular/Neu_Farming/code/seeds.dm @@ -146,3 +146,7 @@ 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/modular/Neu_Farming/icons/crops.dmi b/modular/Neu_Farming/icons/crops.dmi index 390f406cd2..84527481f9 100644 Binary files a/modular/Neu_Farming/icons/crops.dmi and b/modular/Neu_Farming/icons/crops.dmi differ diff --git a/modular/Neu_Farming/icons/produce.dmi b/modular/Neu_Farming/icons/produce.dmi index ee00faee63..102328b145 100644 Binary files a/modular/Neu_Farming/icons/produce.dmi and b/modular/Neu_Farming/icons/produce.dmi differ diff --git a/quicksave.dmi b/quicksave.dmi new file mode 100644 index 0000000000..55e43ecaf1 Binary files /dev/null and b/quicksave.dmi differ 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/magic/glass-hit.ogg b/sound/magic/glass-hit.ogg new file mode 100644 index 0000000000..089f3c98bd Binary files /dev/null and b/sound/magic/glass-hit.ogg differ diff --git a/sound/music/credits.txt b/sound/music/credits.txt index 2f8204cf8f..5b3945442a 100644 --- a/sound/music/credits.txt +++ b/sound/music/credits.txt @@ -30,3 +30,13 @@ 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 (Instrumental Version) [TubeRipper.cc].ogg b/sound/music/kaizoku/Jigokuraku (Instrumental Version) [TubeRipper.cc].ogg new file mode 100644 index 0000000000..1d694250b2 Binary files /dev/null and b/sound/music/kaizoku/Jigokuraku (Instrumental Version) [TubeRipper.cc].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..960c91f576 100644 --- a/stonekeep.dme +++ b/stonekeep.dme @@ -7,7 +7,9 @@ #define DEBUG // END_PREFERENCES // BEGIN_INCLUDE -#include "_maps\_basemap.dm" +#include "_maps\roguetest.dm" +#include "_maps\map_files\generic\CentCom.dmm" +#include "_maps\map_files\roguetest\roguetest.dmm" #include "_maps\templates\bog_shack_small.dm" #include "_maps\templates\sk_dungeons.dm" #include "code\__byond_version_compat.dm" @@ -638,10 +640,12 @@ #include "code\datums\elements\snail_crawl.dm" #include "code\datums\gods\_faith.dm" #include "code\datums\gods\_patron.dm" +#include "code\datums\gods\faiths\abyssanctum.dm" #include "code\datums\gods\faiths\atheism.dm" #include "code\datums\gods\faiths\divine_pantheon.dm" #include "code\datums\gods\faiths\forgotten.dm" #include "code\datums\gods\faiths\inhumen_pantheon.dm" +#include "code\datums\gods\patrons\abyssanctum.dm" #include "code\datums\gods\patrons\atheism.dm" #include "code\datums\gods\patrons\divine_pantheon.dm" #include "code\datums\gods\patrons\forgotten.dm" @@ -1725,6 +1729,17 @@ #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\paladin.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\swordmaster.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\vaquero.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\champion.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\kyudoka.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\marauder.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\mastersohei.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\onmyoji.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\shinobi.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\shrinekeeper.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\sohei.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\wokou.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\yamabushi.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\kaizoku\zamurai.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rare\assassin.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rare\freelancer.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rare\heartfelt.dm" @@ -1791,8 +1806,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 +1856,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 +2017,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" @@ -2031,15 +2050,22 @@ #include "code\modules\mob\living\carbon\human\species_types\roguetown\elf\elfw.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\human\_human.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\human\humen.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\kaizoku\_abyssariad.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\kaizoku\changeling.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\kaizoku\denmorian.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\kaizoku\ogrun.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\kaizoku\undine.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\other\aasimar.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\other\halfelf.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\other\tiefling.dm" #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 +2180,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 +2208,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 +2523,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/grenzelhoft_replacement.json b/strings/grenzelhoft_replacement.json index 38ecdb2a0a..d97d9b5d99 100644 --- a/strings/grenzelhoft_replacement.json +++ b/strings/grenzelhoft_replacement.json @@ -74,6 +74,10 @@ "necromancer": "nekromant", "demon": "dämon", "vampire": "vampir", - "goblin": "kobold" + "goblin": "kobold", + "changeling": "reynard", + "denmorian": "harpy", + "ogrun": "ogre", + "undine": "nereid" } } diff --git a/strings/rt/Abyssal_Tide.json b/strings/rt/Abyssal_Tide.json new file mode 100644 index 0000000000..1251b28840 --- /dev/null +++ b/strings/rt/Abyssal_Tide.json @@ -0,0 +1,25 @@ +{ + "Contents": [ + "

||DIGNITY IN VICTORY AND DEFEAT (勝利と敗北の尊厳)

", + "

\"Victory and Defeat are two respectful sides of the same blade, but only those who yields allows the blade to turn inward to themselves.\"

", + "

Abyssariads respect fallen enemies, unless demonic in nature. In defeat, they never submit; as retreat is prioritized over surrender. The ultimate disgrace that warrants self-disembowelment is surrender. This isn't the case for sparring, as the competitors are always equals, even in victory or defeat. (Nice reminder there's always a natural hierarchy, and it isn't defined by whom wins a battle against whom)

", + "

||SPURN THE CORRUPT AND WICKED (腐敗と邪悪を拒絶せよ)

", + "

\"Stay vigilant against the twisted mockeries of demonic taint. One must purge the defilers and their ilk as warriors of purity.\"

", + "

Abyssariads are dedicated in maintaining purity through vigilance against demonic corruption, and are often at odds with Tieflings - and direct conflict with goblins, orcs, demons and zizo cultists, considered distortions of nature.

", + "

||RESIST TEMPTATION OF THE DEMON (鬼の誘惑に抗え)

", + "

\"Reject demonic lure, as their corruption lead only to ruin. They may promise many, but all that is delivered is nothing but a noose that tightens each sin.\"

", + "

One must be dedicated to resist demonic influence and sin, the ultimate spiritual degradation disguised as desires, whispers and intrusive thoughts, the disease that endangers the heart's willpower. Demonic wiles attacks the frail-minded to set them on the path of perversion, so discipline and meditation anchors the world in light.

", + "

||RESPECT THE TOOLS OF LABOR (尊重工具)

", + "

\"A weapon might defend a life, but the plow is what sustains it. You must not withdraw what your victims requires for survival - as if they meet death, will be one less to supply the kin.\"

", + "

Sustainability is a necessity, and overtaking in raids is a grave offense. Raids are disrupting by nature, yet the tools that sustain lives are sacred - taking a farmer's tool or a blacksmith's hammer is dishonorable, as it often lead to indirect murder of those who depends on these tools. Armor, weapons and luxuries are fair game, and stealing from the rich is a bonus.

", + "

||COMBATANTS WEIGH THEIR CHOICES

", + "

\"Enemies who hold their blade with killing intention has chosen their path. Enemies who, chosen their path, will be dispatched and exposed in failure. Enemies who yield, shall receive mercy. Make them fear, make the men reward us at their doorstep as tamed animals. For the day as Iron is sacrificed on their sandy beaches, will be the day the raided will suffer no more.\"

", + "

In raiding, the combatants will be annihilated. The unarmed civilians and combatants who yield shall never be killed, allow them to fear and be tamed, to source goods, to know angst and qualm. Visible signs of Abyssor worship on coastline must be avoided - as those are not only signs of our previous presence and low quantity of good, but fearing men. Let it die down, and do it again. To be the divine punishment Abyssor is thought to be about to keep the cog running for eternity.

", + "

||PRESERVATION OF WISDOM (知恵の保存)

", + "

\"Culture is not merely an inheritance; It is a flame that must be kept alive. Through us, what is lost to them, becomes the light that guides our future, as to see the errors of their ways allows us to learn on their behalf.\"

", + "

Abyssariads believe in preserving knowledge. They saw empires break and new ones brew, and plenitude of wisdom lost. The preservation of arts against the vanishing of time is an Abyssariad's sacred duty, gathering ancient texts, technologies and forgotten arts and integrating it into their societies. This mentality kept their Bronze-age foundations even after millennials of years.

", + "

||THE PATH OF THE BLADE (刃の道)

", + "

\"A blade guided by justice cuts cleanly; justified in war and law. Yet personal vendettas are the realm of cowards, where the heart invites ruin as a demonic gateway of Wraith.\"

", + "

Abyssariads allows some assassination to be honorful when it is done for warfare and under the ways of justice. However, it must never be done for personal revenge or cruelty— as those of the latter comes only as lawful duels under the Abyssal Tide. To assassinate for reasons unmentioned not only taints the soul - such as revenge - but leads to demonic allure of Wraith, and thus, unhonorful, to suffer disembowelment. A grave crime.

" + ] + } diff --git a/strings/rt/Lore_Primer.json b/strings/rt/Lore_Primer.json deleted file mode 100644 index 8a3c6d962d..0000000000 --- a/strings/rt/Lore_Primer.json +++ /dev/null @@ -1,215 +0,0 @@ -{"Contents":[" -

||AREAS OF THE WORLD

-

Grimoria - The world Stonekeep takes place in.

-


- -

" Isle Kingdom of Enigma - The Isle on which the game takes place. The center of the world "

-


- -

Castle Stonekeep - A keep on the island of Engima. Where the ‘Stonekeep’ map takes place.

-

Town of Rockhill - A once bustling trade center, colloquially known as Roguetown, now degraded due to neglect and troubled fortune, run by the Mayor.

-

Mire of the Bogswamp - A fertile and jungle-like area of the isle, overgrown and suffering an invasion of beespiders, waiting to be reclaimed by the ordained Warden of the Terrorbog.

-

Shire of Murderwood - Ancestral Forest bearing many glades, overrun by villains, knaves, and other lawlessness, waiting to be reclaimed by the honorific, Huntmaster of the Murderwoods.

-

Vigil of Mt. Decap - A jagged mountain filled with ores, treasures, and lava. Likewise a cacophony of horrid goblins, beasts, and other misfortunes. Awaiting the return of its appointed Hetman.

-

Coast of Kingsfield - A vast plain north of the Isle, ending with various docks that carry returning townsfolk to their homeland.

-


- -

Grenzelhoft - Imperialist Faction to the East, known as the Black Empire

-

Zybantu - Ziggurat to the West, the birthplace of the Mercator Guild.

-

Valoria - Freestates to the South of Grenzelhoft. Known for their crafting guilds and wine.

-

Dwarven Federations - Scattered confederacies around Grimoria, the largest being to the West of Zybantu in the frigid mountains. Homeplace of the Dwarves.

-

Psy Forests - Ancestral forests scattered around Grimoria, great and terrible trees. Ancient homes of the elves. The largest of which is North of Zybantu and the Crimsonlands.

-

Heartfelt - Neighboring Island prized for its serene nature, fertility, and rich lands. Now razed by raiders of various banners including Grenzelhoft, Zybantu, pirates, and other inscrupulous bands.

-

The Barrows - Ritual Ground of The Unnamed Zizonian Warlock, now a deadland of ruin and decay.

-


- - -

|| MAJOR EVENTS KNOWN TO ENIGMA

-


- -

The Weeping - The Forgotten Gods last known appearance, he sobs and vows an oath to return and make the world right. He departed into the realm of Zizo Hell to rectify reality, leaving the Pantheon as the stewards of his plane.

-

The Bloody Apotheosis - The Great Ancient War between the Forces of Zizo & the Gods. They were brought on by the will of a great Zizonian Warlock, a champion who sacrificed themselves, acting as a bridge to Zizo’s Hell realm in an attempt to undo the Pantheon and unchain their master. After their victory, the Gods returned to squabbling and constant in-fighting.

-

The Golden Yils - Decades of strong economic and cultural expansion in Zybantu. Followed by expansion into the Crimson lands and trade with the Dwarves. Unification of kingdoms, enclaves, tribes, and more underneath the Grenzelhoft Banner. Valoria rises in the south establishing trade relations across the globe. Many foundations of empires come into being.

-

The Black Dae - The Day Grenzelhoft forces began the revolt from their previous lords. They earned their freedom through a violent and bloody rebellion. The Mansa of Zybantu earns the condemnation of the Pantheon, severing an entire landmass from their favor, followed by great catastrophes and a period of rebuilding.

-

The Mist War - The first known battle between the Zybantians and Grenzelhofters on the northern side of Engima. Both sides' fleets nearly destroyed one another in the coastal battle. The land battle came to a draw. Too many losses on both sides by the overwhelming number of beasts. Said to have been the reason the Isle has become so infested with monsters, leading to a 100-year stalemate, with various proxy battles, until today.

-


- - - -

|| FACTIONS OF GRIMORIA

-


-

Major Powers

-


-

GRENZELHOFT IMPERIATE

-

The Grand Empire, The Black Banners, Empire of the Trident

-

An Imperialist state carved across the Eastern Continent through political upheaval and military action.

-

The Grenzelhofts proudly assimilate all those who come under their heel into their Empire, integrating national identities into their fold and destroying them with their own. Bearing the largest armies in the world, which come under vast scrutiny and disgust as they become increasingly desperate to upkeep.

-

The Grenzelhoftian cannot remember a time when the Empire was not at war, and many have served within its military forces to escape the intense poverty of its lower-class.

-

Exhibiting a strong sense of pride, mainly towards their own nationality, those outside its realms have likely good reason to escape the encroaching iron grip of house Grenz.

-


- -

ZYBANTU ZIGGURAT

-

The Dune Lands, Empire of the Sand, Merchants of the Pasha

-

The Zybantian Empire is a conglomeration of many smaller states within the Western Deserts of their home continent. Protected by the massive, frigid mountain range to the deep west from the frozen winds of the Unknown Continent: the Zybantu Ziggurat is known for its extremely favorable climate to the production of many commodity goods within the world, leading to their rise as a nationalized identity.

-

While life within Zybantu is commonly dictated by the local lordships' control over their fiefdom, the Zybantians have recently found a resurgence of economic growth after the near destruction of the culture by Grenzelhoftian influence. A reawakening that has seen the near complete autonomy of the state by that of the powerful Merchants Guild, which funds nearly every aspect of the Mansa Padashas wishes.

-


- -

VALORIAN RUPUBLIAS

-

Land of Abominable Coin-Lords, The Blood Baros & The Totod Order

-

Valoria is known for its comfortable climate and fertility. The Valorian Republics consist of several rivaling or collaborating nation-states. A remnant of the Valorian Kingdom of centuries past. This new aristocracy of Bajorai gained power from influential crafting guilds, temples, and towers devoted to the Grand Duke’s Patron of Noc.

-

The collapse of the Kingdom is rumored by the increasing demands of the rulers known as the “Blood Baros” for their practice of blood sacrifice to fuel their magic, which has attracted the invading crusaders of the Totod Order to rampage and purify the abomination-ridden settlements and countryside.

-


- -

Minor Powers

-


- -

DWARVEN CONFEDERACY

-

The Great Throngs, The Braided Confederacy, Malums Prodigy

-

Usually in the mountains of continents all over Grimoria. The political aspects stem from federations bearing unique dwarven clans, leaderships, industries, and cultures. Unified by a homogenous racial identity.

-


- -

ELVEN ENCLAVES

-

Keepers of Grimoria, Retreats of the Ancient Age, Forgotten Fallen Fae

-

The declining population has led Elves to retreat to compact and isolated communities. They defend their remaining homes in natural wonders around Grimoria to the death and without mercy. Subdivided into distinct cultures such as Wood, Snow, Dark, Sand, Mountain, Sea, and countless more.

-


- -

ORK & GOBLIN THRONES

-

Crusaders of Graggar, Graggarspawn, Heirs of Grimoria

-

Sprung up fortresses and towns established via nomadic means, with origins from the Crimsonlands, taking advantage of natural resources and nearby settlements to raid, conquer, and move on to more promising targets. An ever-moving snowball that expands in size and occasionally experiences great losses, followed by a steady regrowth.

-


- - - - -

" || MYTHOS OF GRIMORIA "

-


-

" Deities of The Mortal Races "

-


-

THE FORGOTTEN GOD

-

Founder of Grimoria - The Great Hero

-

Worshipped primarily by the Grenzelhoft Sect of the Pantheon, the fabled father of the Gods and creator of the world. Bearing many names, All-Father, Creator, Hero, The True Warrior, Liberator, The Chosen One, Binder of Mana, Destroyer of He Who Shall Not Be Named, The Anti-Z, and countless more honorifics. While not worshipped as reverently as in the mainland, various pilgrims on Enigma follow the Grenzelhoftian creed, which includes a declaration of belief and hope for the true leader of the Gods to return and restore greatness, prosperity, and peace as he once promised.

-


- -

" ASTRATA "

-

Goddess of Order - The Sun Queen

-

Leader of the divine Pantheon and ancient steward of the mortal races. Prideful to a fault, she demands absolute obedience from her mortal followers, bringing cleansing to Grimoria and everlasting order to the world of mortals.

-

Astatan Priests are known to call upon purifying flames, steel the resolve of their allies and even call upon the wrath of the sun herself against those who would fall against order.

-

Astrata's doctrine shows mercy only in the form of justice swiftly delivered by the blade's edge. To this end, despite the Pantheon's distance in recent times, she still grants many blessings and boons to her worshippers and will gladly punish those who break her law. She despises chaos, diabolism, betrayal, and sloth.

-


- -

" NOC "

-

God of Knowledge - The Moon Prince

-

Born twin of Astrata. Noc is the God of All Knowledge, spending most of his time learning the many secrets of his father's creation after being beaten by his sister for the right to the sun.

-

He made the moon to spite her and created nite so that man would give him equal prayer. His feud with his sister is well known and a popular tale is that when the twins were born, the two fought over the domain of the Sun with Astrata winning and Noc turning sour and resentful towards the mortal races that worship her.

-

The Faithful of Noc tend to be those of scholars and take much pride in learning and teaching. He looks poorly upon those who would shame the studies and remain ignorant of the world. Those who walk the moonlit path to transmute the Unknown into Knowledge, seek enlightenment in the unseen. Resentment is to be harnessed and transformed into a thirst for knowledge.

-


- -

Forces of Grimoria

- -

" Necra "

-

Force of Death and Decay

-

Never falling dormant like her kin, Necra has always watched over the mortal races and the ends of their lives. Her carriageman walks all souls who pass from the mortal coil to that of the Shoahlands.

-

She is uncaring to mortal existence, seeking only that her charge is complete.

-

Necrites tend to show extreme reverence for the dead, for it is believed that the dead should walk into the afterlife prepared for the voyage. They also tend to take kindly to those who soothe the last moments of the dying, for souls travel easier when unburned by stronger emotions.

-

Necra's doctrine is one of detachment and apathy. Good and evil, chaos and order are as meaningful as grains of sand in a desert compared to the inevitable. She sees the ultimate end of any, be mortal or divine, and ushers them to the Shoahlands. Many seek her out as a way to purify their souls, abandoning worldly possessions to become the notorious cult of Gravediggers that cling to graveyards like churches. Necrites despise undeath, seeing it as the highest form of heresy to the faith.

-

She has no care for you, nothing can escape the Spiral of Decay no matter how hard they try.

-


- -

" Dendor "

-

Force of Nature and Beasts

-

One of the primordial Forces of Grimoria, now a silent yet mad agent of spiteful revenge of nature towards the hands of mortals.

-

Once, mortals and beasts spoke the same tongue and the land was harmonious: until the Mortals took from Dendor the seeds of life and began to control the environment around them. They destroyed the forests, polluting the rivers, and forgetting the natural world around them for that of industry. He reached a fever pitch when Malum gifted industry to the mortals and Dendor became increasingly forgotten.

-

Driven to insanity, Dendor spun his beard into a noose and hung himself atop a grand wise tree, only saved by the command of Astrata and the actions of Necra, who brought her brother back from the brink of death. Reborn in the image of the only beings that still gave him praise: his form was brought to an unholy apotheosis: that of a beastly and terrible thing.

-

Dendor swore an oath of silence to destroy the civilizations of all mortals, and this holy task was given to the first Monsters, of whom the Dragons swore the bloodiest oath to their Father's will. Dendor has been silent and his trees are poisoned with evil. None are sure if the world will survive his Winter, as this force grows quieter and more unresponsive to his acolytes.

-

A territorial force, civilization intruding on the wilds, and despoilers of nature are quick to earn his ire.

-


- -

" Abyssor "

-

Force of Seas and Storms

-

The World Whale, one of three natural forces within the lands- Brother to Necra and Dendor, and a fickle being. Abyssor commands the tumultuous seas and oceans, bringing storms and bestowing tranquility with equal capriciousness. Mariners revere his power and whisper tales of his might, seeking his blessing for favorable winds and fearing his anger.

-

Honor the tides, respect the storm’s fury, and adapt to the ever-changing currents and the ebb and flow of fortune. Seek solace in the calm waters and reverence in the fury of storms to receive safe passage across his domains and prosper in their endeavors as traders or fishermen.

-

Abyssor dooms you to the depths if you attempt to tame the seas and oceans. Fear and hubris alone send many sailors of the sea and skies to an early grave.

-


- - -

Saints of Grimoria

- -

" Malum "

-

Saint of Toil, Value, and Craft

-

The first mortal to achieve ascendence: Malum is a tenacious saint who looks to the mortal races, especially that of the dwarves, his creation; with pride in their work. The All-Father of Flame and Industry, he smiles upon those who earn the sweat upon their brow, those who work honest days until their muscles are sore, and those who bear the burden of wishing to refine their craft even beyond. Malumites call upon their God’s will to soothe metal and summon bounties of resources from Grimoria itself.

-

Malumites tend to show great love for craftsmanship and hard labor. Something that Malum rewards by soothing their soreness and whispering ideas into their minds. Malum loathes those who are slothlike and lazy, personally ensuring that any half-assed machine is sure to fail. He finds those who take credit for others' work infuriating.

-

Malum recycles your soul if you commit suicide, intentionally create shoddy works, or cheat.

-


- -

" Ravox "

-

Saint of Warfare, Struggle, and Strife

-

Little is known of Ravox before his fame as a ravager, when mortal he brought the sword to the land, waging bloody jihad against those who threatened his order. He would, in time, gain a large following of warriors from his accomplishments. His companions noted his apathetic and depressed demeanor, seeking only the next battle and victory that would impassion him. - His struggle for divinity was earned with blood and strife, culminating in his duel with the demon Graggar during the Apotheosis God-War.

-

When the Cursed Star shone and the Demon Lord Graggar manifested his avatar on the mortal plane, Ravox banished him back to the darkness, earning ascension to the Pantheon as a Saint granted by the demand of Astrata. Gragger ensured a vow of revenge, plaguing the world with Orcs and Goblins, hellbent on avenging their fallen father, forging an eternal rivalry between the two entities. - Ravox’s warband became the first monks of their vanished leader, teaching his principles of venerating the art of war, the humenity, and mercy of honorable duels and combat. Within struggle lies the true test of one's worth and the eternal quest for victory in the crucible of battle.

-


- -

" Eora "

-

Saint of Love, Life, and Beauty

-

Wife of Ravox, Eora has origins both as one of the New Gods, born of man's desires for connection, and that of a Primordial God, as the desire to reproduce has always existed. Whatever the case is, Eora’s legend starts as a humen concubine, taken in by Ravox and sheltered away as his most prized possession. Becoming Ravox’s wife, Ravox allowed her to stand as the Goddess of all things related to the creation of life, love, and the beauty of its existence upon her ascension to the Pantheon. Though respected as a Saint, many people see her with a certain stain of impurity.

-

Eoran Dogma preaches to find beauty and love in all things, caring and protecting life at all costs, living pleasurable lives, and seeking hedonistic thrills. From bath wenches, family makers, diplomats, and stewards, those who pursue unity and salvation by pleasing others and themselves.

-

Eora can be described as aloof and bearing an all-encompassing love to even her enemies; she forbids cruelty, celibacy, marring or destroying beauty except to protect life and love.

-


- -

" Pestra "

-

Saint of Disease, Alchemy & Prophecies

-

The Hag Mother Pestra was mortal once, an old solitary crone with the intuition to see the threads of fate and prophecy. Through her gift, she engineered her ascension to godhood via concoctions and medicine that teetered the realm of healing and miracles, now in legend referred to as the Panacea which saw her vanish without a trace.

- Her relentless curiosity included experimentation and teaching rural communities how to treat their wounds and dead independently of temple healers. Despite losing Astrata's favor, Pestra gained renown as a skilled healer, mastering the understanding of the mortal body. She traveled widely, empowering villages to self-sufficiency while pursuing greater knowledge to strengthen her own. - Today, she is revered as The Hag Mother, patron of impoverished women, surgeons, necromancers, doctors, witches, and other warlocks. - To bear illness is to bear testament. The disease is not a curse but a sign of Pestra's touch. Through disease can the faithful be tested and through suffering can their spirits be honed. Only by embracing affliction the cure to one's ill fate is found. - Pestra casts pestilence down on those “curing” abnormalities without understanding its place in fate's design, disregard for the misfortunate, and those seeking approval of society.

-


- -

" Xylix "

-

Saint of Deceit, Misfortune & Creativity

-

Likely not to exist and is the figment of mortals creating a name to attribute their misfortunes to, some creatures worship him, and he has taken a position as a minor saint with little real following. Many artists, writers, and bards pray to Xylix in desperation. True followers are rare.

-

The tale goes that a mere mortal with a penchant for schemes and devilish pranks, Xylix weaved webs of intrigue intricate enough to outwit the mortal and the divine. Through his tricks, he sowed chaos among the ranks of the Pantheon. When the hour of his punishment arrived, Xylix revealed his magnum opus, stealing sparks of divinity itself and ascending to Sainthood before vanishing from his confinement.

-

Followers of Xylix embrace deception and mischief; for in cunning lies the greatest spark of creativity. Revel in unpredictability and misfortune, for that is how the seeds of innovation are sown. Let your every word be a jest, your acts a performance, and your every step a dance to hear Xylix's laughter echo in the cosmos.

-

Xylix boos at boredom, predictability, routine, and monotony, he showers you with foul luck for it.

-


- - - -

|| RACES OF GRIMORIA

-


-

" Humen: "

-

The ultimate creation of the Forgotten God, his chosen people promised to inherit the world. A propagating race bearing various complexions, shapes, and foreshortened lifespans compared to the other races of Grimoria.

-


- -

" Elf: "

-

The first race of Grimoria is characterized by lengthened age, low fertility, and magical aptitude. Previously immortal, now mortal as punishment by the Forgotten God for their crimes against the other races in their pre-historic days.

-


- -

" Dark Elf: "

-

The failed cure to the troubles of the elves. Hoping to escape judgment, a great experiment was attempted millennia ago rumored to involve a great necromancer of Pestra, spiders, and other tall tales. The catastrophe afflicted at random, staining purple skin and other abominations.

-


- -

" Dwarf: "

-

Mostly inhabit the mountains of the Dwarven Federations, a stout, muscular people with naturally hairy complexions and booming fertility. Kinship ties, pride in labor, and horrendous mood swings. Legend to be the product of Malum, the crafting God, to be loyal friends of humenity.

-


- -

" Orcs & Goblins: (graggarspawn) "

-

Creations of sentient life by Gragger’s daemonic influence, crude mockery of the mortal races. Matured quickly by an uncaring world, the civilized ones have made impressionable leaps of technological and cultural progress that centralize warfare and have cemented their place as mortal beings. Tusked fangs, cut-throat cunningness, aggression, and usually pigmented green skin. They seek to avenge their demon father and themselves by becoming the new masters of Grimoria and championing their savior as the one true God.

-


- -

" Aasimar: "

-

Offspring created using mysterious means by the Goddess Astrata, to serve as soldiers in the Apotheosis God-War. They quickly earned the scorn of the mortal races they fought alongside for their callous and brash decisions, leading to many deaths of those they were assigned to protect. They were abandoned by Astrata after the war concluded, now characterized as ignorant, innocent and stubborn. Even long after the Apotheosis, surviving Aasimar still tend to be shunned for their dullness to the world, headstrong personalities, and violent legacy.

-


- -

" Tiefling: "

-

Descendants of the ancestral offspring that started the union between a mortal and a Zizonian demon. Ostracized due to an odd lisp, horns, and other outlandish features. Often sought out and harvested for mystical organs and to power daemonic relics via soul binding. Their ancestors fought for the side of Zizo & Graggar during the Apotheosis God-War, and have since been absorbed into the world as mortal beings, with apprehension.

-


- -"]} - - - - - - - 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 diff --git a/strings/rt/text.json b/strings/rt/text.json new file mode 100644 index 0000000000..d5ddc608b3 --- /dev/null +++ b/strings/rt/text.json @@ -0,0 +1,25 @@ +{ + "Contents": [ + "

||DIGNITY IN VICTORY AND DEFEAT (勝利と敗北の尊厳)

", + "

\"Victory and Defeat are two respectful sides of the same blade, but only those who yields allows the blade to turn inward to themselves.\"

", + "

Abyssariads respect fallen enemies, unless demonic in nature. In defeat, they never submit; as retreat is prioritized over surrender. The ultimate disgrace that warrants self-disembowelment is surrender. This isn't the case for sparring, as the competitors are always equals, even in victory or defeat. (Nice reminder there's always a natural hierarchy, and it isn't defined by whom wins a battle against whom)

", + "

||SPURN THE CORRUPT AND WICKED (腐敗と邪悪を拒絶せよ)

", + "

\"Stay vigilant against the twisted mockeries of demonic taint. One must purge the defilers and their ilk as warriors of purity.\"

", + "

Abyssariads are dedicated in maintaining purity through vigilance against demonic corruption, and are often at odds with Tieflings - and direct conflict with goblins, orcs, demons and zizo cultists, considered distortions of nature.

", + "

||RESIST TEMPTATION OF THE DEMON (鬼の誘惑に抗え)

", + "

\"Reject demonic lure, as their corruption lead only to ruin. They may promise many, but all that is delivered is nothing but a noose that tightens each sin.\"

", + "

One must be dedicated to resist demonic influence and sin, the ultimate spiritual degradation disguised as desires, whispers and intrusive thoughts, the disease that endangers the heart's willpower. Demonic wiles attacks the frail-minded to set them on the path of perversion, so discipline and meditation anchors the world in light.

", + "

||RESPECT THE TOOLS OF LABOR (尊重工具)

", + "

\"A weapon might defend a life, but the plow is what sustains it. You must not withdraw what your victims requires for survival - as if they meet death, will be one less to supply the kin.\"

", + "

Sustainability is a necessity, and overtaking in raids is a grave offense. Raids are disrupting by nature, yet the tools that sustain lives are sacred - taking a farmer's tool or a blacksmith's hammer is dishonorable, as it often lead to indirect murder of those who depends on these tools. Armor, weapons and luxuries are fair game, and stealing from the rich is a bonus.

", + "

||COMBATANTS WEIGH THEIR CHOICES

", + "

\"Enemies who hold their blade with killing intention has chosen their path. Enemies who, chosen their path, will be dispatched and exposed in failure. Enemies who yield, shall receive mercy. Make them fear, make the men reward us at their doorstep as tamed animals. For the day as Iron is sacrificed on their sandy beaches, will be the day the raided will suffer no more.\"

", + "

In raiding, the combatants will be annihilated. The unarmed civilians and combatants who yield shall never be killed, allow them to fear and be tamed, to source goods, to know angst and qualm. Visible signs of Abyssor worship on coastline must be avoided - as those are not only signs of our previous presence and low quantity of good, but fearing men. Let it die down, and do it again. To be the divine punishment Abyssor is thought to be about to keep the cog running for eternity.

", + "

||PRESERVATION OF WISDOM (知恵の保存)

", + "

\"Culture is not merely an inheritance; It is a flame that must be kept alive. Through us, what is lost to them, becomes the light that guides our future, as to see the errors of their ways allows us to learn on their behalf.\"

", + "

Abyssariads believe in preserving knowledge. They saw empires break and new ones brew, and plenitude of wisdom lost. The preservation of arts against the vanishing of time is an Abyssariad's sacred duty, gathering ancient texts, technologies and forgotten arts and integrating it into their societies. This mentality kept their Bronze-age foundations even after millennials of years.

", + "

||THE PATH OF THE BLADE (刃の道)

", + "

\"A blade guided by justice cuts cleanly; justified in war and law. Yet personal vendettas are the realm of cowards, where the heart invites ruin as a demonic gateway of Wraith.\"

", + "

Abyssariads allows some assassination to be honorful when it is done for warfare and under the ways of justice. However, it must never be done for personal revenge or cruelty— as those of the latter comes only as lawful duels under the Abyssal Tide. To assassinate for reasons unmentioned not only taints the soul - such as revenge - but leads to demonic allure of Wraith, and thus, unhonorful, to suffer disembowelment. A grave crime.

" + ] +} diff --git a/strings/steppe_replacement.json b/strings/steppe_replacement.json index af158b4a64..ac75e5d496 100644 --- a/strings/steppe_replacement.json +++ b/strings/steppe_replacement.json @@ -10,6 +10,10 @@ "th": "t", "sh": "zh", "hello": "saim bainoo", - "goodbye": "bayarlaa" + "goodbye": "bayarlaa", + "changeling": "kitsune", + "denmorian": "tengu", + "ogrun": "oni", + "undine": "kappa" } }