diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4626a5b5451..d30c63b9615 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -14,7 +14,7 @@ body: label: Checks description: Verify that all of the following is true. options: - - label: I have searched the bug with a few keywords, and I confirm this bug was not yet reported. + - label: I have searched the bug with a few keywords, and I confirm this bug has not yet been reported. required: true - type: dropdown @@ -25,7 +25,9 @@ body: description: Where did the bug happen? options: - Dun Manor - - DakkaTown + - Stonehamlet + - Warmongers + - DakkaTown (OBSOLETE) validations: required: true @@ -61,7 +63,7 @@ body: id: staffdetails attributes: label: Staff ckey - description: If you talked with a staff member to have the bug resolved in-round please add their ckey here. + description: If you talked with a staff member to have the bug resolved in-round, please add their ckey here. placeholder: Staff ckey validations: required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fa829358bcc..f0a74e4c69b 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: true contact_links: - name: StoneKeep Discord Server - url: https://discord.gg/stonekeep + url: https://discord.gg/qwwYV6dbcg about: For help with running the game, or joining the server, join our Discord server. diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 8b827a78ba9..c596e345dc5 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -69,6 +69,10 @@ jobs: with: path: $HOME/spaceman_dmm/$SPACEMAN_DMM_VERSION key: ${{ runner.os }}-spacemandmm-${{ env.SPACEMAN_DMM_VERSION }} + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4.2.0 + with: + dotnet-version: 9.x - name: Install OpenDream uses: robinraju/release-downloader@v1.9 with: @@ -163,4 +167,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: deploy - path: deploy \ No newline at end of file + path: deploy diff --git a/README.md b/README.md index f50363c4bbd..3b1983125fa 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ | Website | Link | |---------------------------|------------------------------------------------| -| Discord | [https://discord.gg/stonekeep](https://discord.gg/stonekeep) | +| Discord | [https://discord.gg/qwwYV6dbcg](https://discord.gg/qwwYV6dbcg) | | Code | [https://github.com/Darkrp-community/OpenKeep](https://github.com/Darkrp-community/OpenKeep) | -| Wiki | Under Construction | +| Wiki (Under Construction) | [https://wiki.stonekeep.xyz](https://wiki.stonekeep.xyz) | ## LICENSE diff --git a/_maps/map_files/stonehamlet/stonehamlet.dmm b/_maps/map_files/stonehamlet/stonehamlet.dmm index e42f3df1f82..727688acc7a 100644 --- a/_maps/map_files/stonehamlet/stonehamlet.dmm +++ b/_maps/map_files/stonehamlet/stonehamlet.dmm @@ -222,7 +222,7 @@ /obj/structure/chair/bench/ancientlog, /obj/structure/flora/roguegrass, /turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/area/rogue/outdoors/exposed/town/hamlet) "alY" = ( /obj/structure/fluff/walldeco/feldshersign{ pixel_x = 32; @@ -272,15 +272,12 @@ /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) "aqt" = ( -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/obj/structure/fluff/railing/border, -/turf/open/floor/rogue/rooftop/green{ - dir = 8 +/obj/structure/chair/wood/rogue{ + dir = 1; + icon_state = "chair2" }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "aqI" = ( /obj/structure/table/wood{ dir = 9; @@ -367,6 +364,11 @@ }, /turf/open/floor/rogue/wood/saiga, /area/rogue/indoors/shelter/town/dwarf) +"atK" = ( +/obj/structure/bed/rogue/inn/double, +/obj/item/bedsheet/rogue/fabric_double, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "aux" = ( /turf/closed/wall/mineral/rogue/roofwall/outercorner{ dir = 1 @@ -550,6 +552,10 @@ /obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) +"aBZ" = ( +/obj/machinery/light/rogue/wallfire/candle/weak/l, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town) "aCn" = ( /obj/structure/fluff/statue/gargoyle, /turf/open/floor/rogue/cobble, @@ -685,6 +691,13 @@ /obj/effect/landmark/start/steward, /turf/open/floor/rogue/ruinedwood/chevron, /area/rogue/indoors/town) +"aJc" = ( +/obj/structure/fluff/railing/border{ + dir = 4 + }, +/obj/machinery/light/rogue/wallfire/candle/weak/l, +/turf/open/floor/rogue/ruinedwood/spiral, +/area/rogue/indoors/town) "aJg" = ( /obj/structure/flora/roguegrass, /obj/structure/flora/rock/pile, @@ -693,7 +706,7 @@ pixel_y = 8 }, /turf/open/floor/rogue/grass, -/area/rogue/outdoors/exposed/town/hamlet) +/area/rogue/outdoors/rtfield/hamlet) "aJh" = ( /obj/structure/fluff/railing/border{ dir = 4; @@ -933,6 +946,12 @@ /obj/item/reagent_containers/powder/salt, /turf/open/floor/rogue/concrete, /area/rogue/indoors/town/magician) +"aXb" = ( +/obj/structure/closet/crate/roguecloset, +/obj/item/broom, +/obj/item/natural/cloth, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "aXe" = ( /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/rogue/tile/checker, @@ -1054,11 +1073,11 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) "bbX" = ( -/obj/effect/decal/cleanable/blood_neu/tracks{ - dir = 1 +/obj/structure/fluff/customsign{ + desc = "Welcome to the new district of Breswyl." }, /turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/area/rogue/outdoors/exposed/town/hamlet) "bci" = ( /obj/effect/decal/cleanable/blood_neu/random, /turf/open/floor/rogue/wood/nosmooth, @@ -1201,6 +1220,10 @@ }, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/outlaw) +"bjw" = ( +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "bjR" = ( /turf/closed/wall/mineral/rogue/pipe{ dir = 8; @@ -1329,13 +1352,9 @@ }, /area/rogue/indoors/town) "bsB" = ( -/obj/structure/mineral_door/wood/deadbolt{ - dir = 8; - icon_state = "wooddir"; - locked = 1 - }, -/turf/open/floor/rogue/dirt/road, -/area/rogue/indoors/town/garrison) +/obj/effect/decal/turfedge_neu/alt, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "bsE" = ( /obj/structure/rack/rogue, /obj/item/rogueweapon/hoe/neu, @@ -1347,6 +1366,13 @@ /obj/item/rogueweapon/polearm/spear/billhook/neu, /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/garrison) +"bsZ" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = -1; + pixel_x = -32 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "btB" = ( /turf/closed/wall/mineral/rogue/stone/window, /area/rogue/indoors/town/manor{ @@ -2114,7 +2140,6 @@ /area/rogue/outdoors/rtfield/hamlet) "cdd" = ( /obj/structure/chair/stool/rogue, -/obj/effect/landmark/start/mercenary, /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/tavern/saiga) "cdi" = ( @@ -2200,8 +2225,15 @@ /turf/open/floor/rogue/tile/masonic/single, /area/rogue/indoors/town/magician) "chx" = ( -/obj/structure/chair/stool/rogue, -/turf/open/floor/rogue/dirt, +/obj/structure/table/wood/counter{ + dir = 4 + }, +/obj/item/reagent_containers/powder/flour, +/obj/item/reagent_containers/powder/flour{ + pixel_x = 4; + pixel_y = 10 + }, +/turf/open/floor/rogue/cobble/alt, /area/rogue/indoors) "cio" = ( /obj/structure/flora/roguegrass, @@ -2233,6 +2265,10 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"cjt" = ( +/obj/machinery/light/rogue/wallfire/candle, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "cjz" = ( /obj/structure/closet/dirthole/closed, /obj/structure/flora/roguegrass, @@ -2400,6 +2436,13 @@ }, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"cvN" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "cvO" = ( /obj/structure/flora/roguegrass, /obj/item/roguebin, @@ -2487,9 +2530,14 @@ /turf/open/water/swamp, /area/rogue/outdoors/rtfield/hamlet/unsafe) "cAR" = ( -/obj/structure/closet/crate/drawer/random, -/turf/open/floor/rogue/carpet/green, -/area/rogue/indoors/town/tavern/saiga) +/obj/structure/table/wood/plain/alt, +/obj/item/reagent_containers/glass/cup/wooden, +/obj/structure/fluff/walldeco/rpainting/crown{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "cBj" = ( /obj/structure/fluff/statue/femalestatue{ density = 1; @@ -2508,6 +2556,13 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"cBN" = ( +/obj/structure/mineral_door/wood{ + name = "house III"; + lockid = "house3" + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "cCc" = ( /obj/structure/bed/rogue/wool, /turf/open/floor/rogue/wood/saiga, @@ -2703,6 +2758,15 @@ /obj/structure/roguewindow/solid, /turf/open/floor/rogue/woodturned/nosmooth, /area/rogue/indoors/town/shop) +"cLL" = ( +/obj/effect/decal/shadow_floor, +/obj/structure/table/wood/nice/decorated_alt, +/obj/item/candle/yellow/lit/infinite/strong{ + pixel_x = 5; + pixel_y = 2 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town/tavern/saiga) "cLS" = ( /obj/machinery/light/rogue/torchholder/c, /turf/open/floor/rogue/cobble/mossy/alt, @@ -2908,18 +2972,9 @@ /turf/closed/wall/mineral/rogue/stone/moss, /area/rogue/outdoors/exposed/under/basement) "cZj" = ( -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/obj/structure/fluff/railing/border{ - dir = 9; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/obj/item/roguebin/water/gross, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "cZq" = ( /obj/structure/chair/stool/rogue, /obj/effect/decal/shadow_floor{ @@ -3027,6 +3082,11 @@ }, /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/garrison) +"dfE" = ( +/obj/machinery/light/rogue/torchholder/cold, +/obj/structure/flora/roguegrass, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "dfU" = ( /obj/effect/decal/turfedge_neu/rockalt_edge{ dir = 1 @@ -3188,6 +3248,14 @@ /obj/structure/bars, /turf/open/water/sewer, /area/rogue/under/town/basement) +"dpt" = ( +/obj/structure/mineral_door/wood/fancywood{ + name = "mercenary guild"; + locked = 1; + lockid = "mercenary" + }, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town) "dpv" = ( /obj/structure/flora/roguetree, /obj/structure/flora/roguegrass, @@ -3196,6 +3264,13 @@ }, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"dqs" = ( +/obj/structure/roguemachine/scomm{ + pixel_y = 31; + pixel_x = 0 + }, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "drr" = ( /obj/machinery/light/rogue/wallfire/candle, /obj/effect/decal/shadow_floor{ @@ -3251,9 +3326,9 @@ /turf/open/floor/rogue/twig, /area/rogue/indoors/shelter/bog) "dsO" = ( -/obj/structure/handcart, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/closet/crate/chest/neu, +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "dsW" = ( /obj/structure/mineral_door/wood/donjon{ dir = 1; @@ -3429,6 +3504,11 @@ /obj/structure/fluff/clodpile, /turf/open/water/sewer, /area/rogue/under/town/sewer) +"dBl" = ( +/obj/structure/table/wood/plain_alt, +/obj/item/reagent_containers/glass/cup/wooden, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "dBF" = ( /obj/structure/bars/pipe, /turf/open/floor/rogue/rooftop/green{ @@ -3449,10 +3529,11 @@ /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/tavern/saiga) "dDA" = ( -/obj/structure/fermenting_barrel, -/obj/effect/decal/cleanable/dirt/cobweb, -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/obj/machinery/light/rogue/torchholder/l{ + dir = 8 + }, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "dDV" = ( /obj/structure/fluff/walldeco/bath/five{ pixel_x = -29 @@ -3488,6 +3569,7 @@ dir = 1; icon_state = "border" }, +/obj/machinery/simple_dye_bin, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) "dEH" = ( @@ -3501,6 +3583,14 @@ }, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) +"dEV" = ( +/obj/structure/fluff/railing/border, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "dFd" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/rogue/naturalstone, @@ -3509,14 +3599,16 @@ /obj/effect/decal/turfedge_neu{ dir = 5 }, +/obj/machinery/simple_dye_bin, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) "dFG" = ( -/obj/structure/mineral_door/bars{ - locked = 1; - lockid = "butcher" +/obj/structure/closet/crate/roguecloset{ + pixel_x = 0; + pixel_y = 14 }, -/turf/open/floor/rogue/dirt, +/obj/item/roguekey/apartments/apartment1, +/turf/open/floor/rogue/wood/nosmooth/saiga, /area/rogue/indoors/town) "dFW" = ( /obj/structure/roguemachine/scomm{ @@ -3650,6 +3742,15 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"dOM" = ( +/obj/structure/chair/wood/rogue/chair3{ + dir = 4 + }, +/obj/effect/landmark/start/mercenary{ + dir = 4 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "dOQ" = ( /obj/structure/bars/pipe{ dir = 1; @@ -3733,16 +3834,23 @@ /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/shop) "dTD" = ( -/obj/structure/bars/cemetery, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/obj/machinery/light/rogue/hearth{ + pixel_x = 1; + pixel_y = 10 + }, +/obj/item/cooking/pan, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "dTE" = ( /obj/structure/fluff/walldeco/med3{ pixel_y = -32 }, /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) +"dTS" = ( +/obj/effect/decal/turfedge_neu/road, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "dTX" = ( /obj/structure/lever/wall{ dir = 8; @@ -3793,13 +3901,15 @@ name = "vulf cave" }) "dVw" = ( -/obj/structure/table/wood/plain, -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/obj/structure/table/wood/reinforced_alt, +/obj/structure/bars{ + icon_state = "barsbent"; + layer = 2.81 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors/town) "dVD" = ( -/obj/item/natural/cloth, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/rogue/dirt/road, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "dVU" = ( /obj/effect/decal/cleanable/blood_neu/random, @@ -3898,6 +4008,13 @@ }, /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/outdoors/town/roofs) +"dZC" = ( +/obj/structure/roguewindow/openclose{ + dir = 8; + icon_state = "woodwindowdir" + }, +/turf/closed/wall/mineral/rogue/decowood, +/area/rogue/indoors/town) "eai" = ( /obj/machinery/light/rogue/hearth, /turf/open/floor/rogue/cobblerock_alt, @@ -3921,10 +4038,10 @@ /turf/open/floor/rogue/naturalstone, /area/rogue/under/town/sewer) "ebb" = ( -/obj/structure/chair/stool/rogue, -/obj/effect/landmark/start/vagrant, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/bed/rogue/inn/double, +/obj/item/bedsheet/rogue/fabric_double, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "ebw" = ( /obj/structure/table/wood/large/corner_new{ dir = 8 @@ -4069,10 +4186,10 @@ /turf/open/floor/rogue/naturalstone, /area/rogue/under/town/basement) "ehQ" = ( -/obj/structure/chair/stool/rogue, -/obj/item/storage/belt/rogue/leather/rope, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/dirt/road, +/obj/structure/chair/wood/rogue/chair3{ + dir = 1 + }, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "ehS" = ( /obj/structure/fluff/statue/knightalt/r, @@ -4305,9 +4422,8 @@ first_time_text = "STONEHILL CASTLE" }) "erc" = ( -/obj/structure/fermenting_barrel, -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "ert" = ( /obj/effect/spawner/roguemap/treeorbush, /turf/open/floor/rogue/dirt/road, @@ -4482,11 +4598,8 @@ /turf/open/floor/rogue/sandstone/temple, /area/rogue/indoors/town/church/chapel) "ezr" = ( -/obj/effect/decal/turfedge_neu/mossy{ - dir = 6 - }, -/obj/effect/decal/turfedge_neu/mossy_small, -/turf/open/floor/rogue/dirt/road, +/obj/structure/chair/wood/rogue, +/turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town/tavern/saiga) "ezz" = ( /obj/structure/stairs/stone, @@ -4668,11 +4781,12 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "eED" = ( -/obj/effect/decal/cleanable/dirt/cobweb{ - dir = 4 +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" }, -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town) "eEL" = ( /obj/structure/mineral_door/wood/fancywood{ lockid = "priest"; @@ -4794,15 +4908,13 @@ /turf/open/floor/rogue/tile/masonic/inverted, /area/rogue/indoors/town/magician) "eMo" = ( -/obj/structure/flora/roguegrass, -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 +/obj/structure/mineral_door/wood{ + locked = 1; + lockid = "roomi"; + name = "Duchess suite" }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "eMv" = ( /obj/effect/decal/turfedge_neu/road{ dir = 8 @@ -4885,13 +4997,12 @@ }, /area/rogue/outdoors/town/roofs) "ePk" = ( -/obj/effect/decal/turfedge_neu{ - dir = 1; - icon_state = "borderfall" +/obj/structure/fluff/railing/border{ + dir = 6; + icon_state = "border" }, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/exposed/town/hamlet) +/turf/open/floor/rogue/ruinedwood/spiral, +/area/rogue/indoors/town) "ePp" = ( /obj/structure/rack/rogue, /obj/item/reagent_containers/glass/bottle/rogue/healthpot, @@ -4908,15 +5019,11 @@ /turf/open/floor/rogue/sandstone/shaded, /area/rogue/indoors/town/church/chapel) "ePF" = ( -/obj/structure/table/wood/nice/decorated_alt, -/obj/item/candle/yellow/lit/infinite/strong{ - pixel_x = 5; - pixel_y = 2 - }, -/obj/effect/decal/shadow_floor{ - dir = 4 +/obj/structure/closet/crate/drawer/random{ + pixel_x = 1; + pixel_y = 6 }, -/turf/open/floor/rogue/ruinedwood/spiralfade, +/turf/open/floor/rogue/carpet/green, /area/rogue/indoors/town/tavern/saiga) "eQe" = ( /turf/open/floor/rogue/blocks, @@ -5117,15 +5224,13 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/plague_district) "eZF" = ( -/obj/structure/fluff/railing/border, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/obj/structure/roguewindow/solid, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors/town/tavern/saiga) "faa" = ( -/obj/structure/rack/rogue, /obj/item/rogueweapon/mace/woodclub/train_sword, /obj/item/rogueweapon/mace/woodclub/train_sword, +/obj/structure/rack/rogue, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) "fai" = ( @@ -5212,11 +5317,11 @@ /turf/open/floor/rogue/cobblerock_alt, /area/rogue/indoors/town) "fdZ" = ( -/obj/effect/decal/cleanable/dirt/cobweb{ - icon_state = "cobweb2" +/obj/effect/decal/turfedge_neu/alt{ + dir = 8 }, -/turf/open/floor/rogue/dirt, -/area/rogue/indoors) +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "fen" = ( /obj/structure/flora/rock/pile, /turf/open/floor/rogue/ruinedwood/spiral, @@ -5287,6 +5392,9 @@ ambush_mobs = list(/mob/living/simple_animal/hostile/retaliate/rogue/wolf = 50, /mob/living/carbon/human/species/human/northern/bum/ambush = 30) }) "fhi" = ( +/obj/structure/rack/rogue, +/obj/item/rogueweapon/mace/woodclub, +/obj/item/rogueweapon/mace/woodclub, /obj/structure/roguemachine/scomm, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) @@ -5311,6 +5419,13 @@ /obj/structure/roguemachine/stockpile, /turf/open/floor/rogue/blocks, /area/rogue/outdoors/town) +"fhS" = ( +/obj/structure/chair/stool/rogue{ + pixel_x = 1; + pixel_y = 10 + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "fio" = ( /obj/machinery/light/rogue/wallfire/candle/r, /turf/open/floor/rogue/hexstone, @@ -5321,6 +5436,10 @@ /obj/machinery/light/rogue/firebowl/church, /turf/open/floor/rogue/concrete, /area/rogue/indoors/town/dwarfin) +"fji" = ( +/obj/machinery/light/rogue/wallfire/candle/weak/l, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "fjH" = ( /turf/open/transparent/openspace, /area/rogue/outdoors/exposed/under/sewer) @@ -5506,13 +5625,14 @@ /turf/open/floor/carpet/red, /area/rogue/indoors/town/bath/redhouse) "fqW" = ( -/obj/structure/roguewindow/openclose{ - dir = 8; - icon_state = "woodwindowdir" +/obj/effect/decal/shadow_floor{ + dir = 8 }, -/obj/structure/barricade/wooden/rogue/crude, -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/obj/machinery/light/rogue/wallfire{ + pixel_x = -32 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town/tavern/saiga) "fqY" = ( /obj/structure/stairs/stone{ dir = 8 @@ -5582,14 +5702,9 @@ /turf/closed/wall/mineral/rogue/decowood, /area/rogue/outdoors/rtfield/plague_district) "ftR" = ( -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/obj/structure/chair/wood/rogue, +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "ftW" = ( /obj/effect/decal/shadow_floor{ dir = 4 @@ -5680,15 +5795,12 @@ first_time_text = "STONEHILL CASTLE" }) "fxC" = ( -/obj/structure/fluff/railing/border, -/obj/structure/fluff/railing/border{ - dir = 6; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 +/obj/structure/ladder{ + pixel_x = 0; + pixel_y = 14 }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "fyl" = ( /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) @@ -5755,8 +5867,12 @@ /turf/open/floor/rogue/sandstone/temple, /area/rogue/indoors/town/church) "fDs" = ( -/turf/closed/wall/mineral/rogue/decowood, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/fluff/railing/border, +/obj/effect/decal/cleanable/dirt/cobweb{ + dir = 1 + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "fDx" = ( /obj/structure/bars/pipe, /turf/closed/wall/mineral/rogue/wooddark/horizontal, @@ -5942,7 +6058,7 @@ dir = 1 }, /turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/area/rogue/outdoors/exposed/town/hamlet) "fOo" = ( /obj/effect/decal/turfedge_neu{ dir = 9 @@ -5962,12 +6078,12 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "fQB" = ( -/obj/effect/decal/turfedge_neu{ - dir = 1; - icon_state = "borderfall" +/obj/structure/roguewindow/openclose{ + dir = 8; + icon_state = "woodwindowdir" }, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/exposed/town/hamlet) +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "fQM" = ( /obj/effect/spawner/roguemap/treeorbush, /turf/open/floor/rogue/dirt/road, @@ -5987,6 +6103,13 @@ /obj/machinery/light/rogue/wallfire/candle/l, /turf/open/floor/rogue/herringbone, /area/rogue/under/town/basement) +"fSG" = ( +/obj/structure/fluff/walldeco/rpainting/crown{ + pixel_x = 0; + pixel_y = 31 + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "fSP" = ( /obj/structure/mineral_door/wood/donjon{ lockid = "walls" @@ -6005,15 +6128,12 @@ /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/magician) "fTp" = ( -/obj/structure/stairs{ - dir = 1 - }, -/obj/machinery/light/rogue/torchholder{ - dir = 4; - icon_state = "torchwall1" +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 }, -/turf/open/transparent/openspace, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "fTO" = ( /obj/effect/spawner/roguemap/tree, /obj/effect/spawner/roguemap/tree, @@ -6042,8 +6162,10 @@ /turf/open/floor/rogue/wood/saiga, /area/rogue/indoors/town/garrison) "fVh" = ( -/turf/closed/wall/mineral/rogue/stonebrick, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/flora/rock/pile, +/obj/structure/flora/roguegrass, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "fVn" = ( /obj/structure/rack/rogue/shelf/notdense{ pixel_x = 32; @@ -6074,6 +6196,14 @@ icon_state = "chess" }, /area/rogue/indoors/town) +"fWg" = ( +/obj/structure/chair/wood/rogue/chair3, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 0; + pixel_x = -33 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "fWk" = ( /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/manorgarri) @@ -6143,9 +6273,8 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/indoors) "fZg" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/exposed/town/hamlet) +/turf/closed/wall/mineral/rogue/wooddark/window, +/area/rogue/outdoors) "fZx" = ( /obj/structure/flora/roguegrass/water, /turf/open/water/swamp/deep, @@ -6167,6 +6296,15 @@ }, /turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town/tavern/saiga) +"gbd" = ( +/obj/structure/closet/crate/chest/crate{ + pixel_x = 0; + pixel_y = 9 + }, +/obj/item/roguekey/mercenary, +/obj/item/roguekey/mercenary, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town) "gbg" = ( /obj/structure/table/wood/reinf_long{ dir = 1 @@ -6355,8 +6493,8 @@ /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) "gkO" = ( -/turf/open/water/swamp, -/area/rogue/indoors) +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "gkW" = ( /obj/structure/flora/roguegrass, /obj/structure/flora/rogueflower/ppflowers, @@ -6581,6 +6719,13 @@ /obj/effect/spawner/roguemap/treeorbush, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/rtfield/plague_district) +"gyK" = ( +/obj/effect/decal/turfedge_neu/alt{ + pixel_x = 0; + pixel_y = -8 + }, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "gzu" = ( /obj/structure/flora/roguegrass, /obj/effect/decal/remains/saiga, @@ -6767,9 +6912,12 @@ /turf/open/floor/rogue/tile/masonic/single, /area/rogue/indoors/town/dwarfin) "gGu" = ( -/obj/effect/decal/cleanable/blood_neu/random, -/obj/item/reagent_containers/food/snacks/rogue/meat/steak, -/turf/open/floor/rogue/dirt, +/obj/structure/chair/stool/rogue, +/obj/structure/fluff/walldeco/rpainting/forest{ + pixel_x = 1; + pixel_y = 32 + }, +/turf/open/floor/rogue/wood/saiga, /area/rogue/indoors) "gGy" = ( /obj/structure/table/wood/nice/decorated, @@ -6897,15 +7045,8 @@ }, /area/rogue/indoors/town/magician) "gNu" = ( -/obj/structure/fluff/railing/border{ - dir = 4; - icon_state = "border" - }, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/turf/closed/wall/mineral/rogue/wooddark, +/area/rogue/outdoors) "gNJ" = ( /obj/structure/flora/roguegrass, /obj/effect/decal/turfedge_neu{ @@ -6926,6 +7067,10 @@ /obj/item/rogueweapon/sword/short/iron, /turf/open/floor/rogue/concrete, /area/rogue/indoors/town/dwarfin) +"gQz" = ( +/obj/structure/roguewindow/solid, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "gQA" = ( /obj/effect/decal/turfedge_neu/mossy_small{ dir = 1 @@ -6933,14 +7078,12 @@ /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/manorgarri) "gQS" = ( -/obj/item/candle/yellow/lit/infinite/strong{ - pixel_x = 0; - pixel_y = 32 - }, -/obj/effect/decal/turfedge_neu/mossy{ - dir = 5 +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 28; + pixel_x = 0 }, -/turf/open/floor/rogue/dirt/road, +/obj/structure/chair/bench/coucha/r, +/turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town/tavern/saiga) "gQU" = ( /obj/structure/table/wood/plain_alt, @@ -7075,6 +7218,13 @@ /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/bath/redhouse) +"gZE" = ( +/obj/effect/decal/shadow_floor, +/obj/structure/chair/wood/rogue{ + dir = 4 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town/tavern/saiga) "haC" = ( /obj/structure/fluff/nest, /turf/open/floor/rogue/dirt/road, @@ -7154,20 +7304,21 @@ /turf/open/floor/rogue/cobblerock, /area/rogue/outdoors/exposed/town/hamlet) "hes" = ( -/obj/structure/toilet, -/turf/open/floor/rogue/dirt/road, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = -32 + }, +/turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town/tavern/saiga) "heB" = ( /obj/structure/roguemachine/steward, /turf/open/floor/rogue/ruinedwood/chevron, /area/rogue/indoors/town) "heD" = ( -/obj/structure/chair/stool/rogue, -/obj/effect/landmark/start/mercenary{ - dir = 4 +/obj/effect/decal/turfedge_neu/road{ + dir = 1 }, -/turf/open/floor/rogue/cobble/alt, -/area/rogue/indoors/town/tavern/saiga) +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "heG" = ( /obj/effect/decal/cleanable/blood_neu/tracks{ dir = 4 @@ -7455,6 +7606,13 @@ /obj/structure/fluff/walldeco/vinez, /turf/closed/wall/mineral/rogue/wooddark, /area/rogue/outdoors/rtfield/plague_district) +"hxP" = ( +/obj/structure/roguewindow/openclose{ + dir = 4; + icon_state = "woodwindowdir" + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "hyn" = ( /turf/closed/wall/mineral/rogue/decostone/chimney, /area/rogue/indoors/town) @@ -7488,14 +7646,15 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/boggish) "hzg" = ( -/obj/structure/fluff/railing/border{ - dir = 5; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/obj/structure/table/wood/plain/alt, +/obj/item/candle/yellow/lit/infinite/strong, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) +"hzh" = ( +/obj/structure/table/wood/plain_alt, +/obj/item/book/rogue/vownecrapage, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "hzq" = ( /obj/structure/closet/crate/roguecloset/dark, /turf/open/floor/rogue/ruinedwood/spiralfade, @@ -7604,9 +7763,12 @@ /turf/open/water/cleanshallow, /area/rogue/outdoors/exposed/under/basement) "hDV" = ( -/obj/structure/mineral_door/bars, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/exposed/town/hamlet) +/obj/structure/fluff/railing/border{ + dir = 8; + icon_state = "border" + }, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors/town/tavern/saiga) "hDX" = ( /obj/item/reagent_containers/glass/bottle/ethanol, /obj/structure/rack/rogue/shelf/biggest{ @@ -7675,11 +7837,11 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/hamlet) "hHu" = ( -/obj/structure/roguetent, -/obj/effect/decal/cleanable/blood_neu/tracks{ - dir = 1 +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 1; + pixel_x = -32 }, -/turf/open/floor/rogue/grass, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "hIc" = ( /obj/structure/fluff/railing/wood{ @@ -7690,12 +7852,17 @@ /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/outdoors/exposed/church) "hIe" = ( -/obj/structure/closet/crate/chest/wicker, -/turf/open/floor/rogue/dirt/road, +/obj/structure/mineral_door/wood/deadbolt, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "hIX" = ( -/obj/effect/decal/cleanable/blood/puddle, -/turf/open/floor/rogue/dirt/road, +/obj/structure/table/wood/plain_alt, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/obj/item/reagent_containers/glass/cup/wooden, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "hJg" = ( /obj/structure/fluff/walldeco/vinez, @@ -7889,16 +8056,24 @@ /turf/open/floor/rogue/dirt, /area/rogue/outdoors/rtfield/hamlet) "hQC" = ( -/obj/machinery/light/rogue/torchholder{ - dir = 8; - icon_state = "torchwall1" +/obj/structure/table/wood/counter/end{ + dir = 8 }, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/exposed/town/hamlet) +/obj/item/reagent_containers/powder/flour, +/obj/item/reagent_containers/powder/flour{ + pixel_x = -6; + pixel_y = 11 + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "hQQ" = ( -/obj/structure/flora/roguegrass, -/turf/closed/wall/mineral/rogue/stonebrick, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/bed/rogue/inn, +/obj/item/bedsheet/rogue/cloth, +/obj/effect/landmark/start/mercenary{ + dir = 8 + }, +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "hQT" = ( /obj/structure/chair/stool/rogue, /obj/effect/decal/shadow_floor{ @@ -7945,11 +8120,23 @@ /obj/structure/flora/roguegrass, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/dwarf) +"hSz" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 30; + pixel_x = 0 + }, +/obj/structure/rack/rogue/shelf/biggest, +/obj/item/storage/roguebag, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "hTa" = ( -/obj/structure/flora/roguegrass, -/obj/structure/fermenting_barrel/random/water, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/exposed/town/hamlet) +/obj/machinery/light/rogue/hearth{ + pixel_x = 0; + pixel_y = 5 + }, +/obj/item/cooking/pan, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "hTy" = ( /obj/structure/flora/roguegrass, /obj/structure/roguerock, @@ -8202,13 +8389,9 @@ /turf/open/floor/rogue/sandstone/temple, /area/rogue/indoors/town/church) "ihX" = ( -/obj/structure/fluff/railing/border{ - dir = 4; - icon_state = "border" - }, -/obj/structure/flora/roguetree/burnt, -/turf/open/transparent/openspace, -/area/rogue/outdoors) +/obj/structure/roguewindow/openclose, +/turf/closed, +/area/rogue/indoors/town/tavern/saiga) "iim" = ( /obj/structure/winch{ dir = 1; @@ -8286,10 +8469,11 @@ /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) "imW" = ( -/obj/effect/decal/shadow_floor{ - dir = 4 +/obj/structure/fluff/walldeco/rpainting/forest{ + pixel_x = 31; + pixel_y = -1 }, -/turf/open/floor/rogue/ruinedwood/spiralfade, +/turf/open/floor/rogue/carpet/green, /area/rogue/indoors/town/tavern/saiga) "inx" = ( /obj/item/reagent_containers/food/snacks/produce/onion, @@ -8396,6 +8580,16 @@ /obj/item/reagent_containers/glass/bottle/rogue/wine, /turf/open/floor/rogue/cobble, /area/rogue/outdoors/exposed/under/basement) +"iqK" = ( +/obj/structure/fluff/railing/border{ + dir = 9; + icon_state = "border" + }, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = -32 + }, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors/town/tavern/saiga) "iqN" = ( /obj/structure/mineral_door/wood/deadbolt{ dir = 4; @@ -8476,6 +8670,10 @@ /obj/structure/flora/roguegrass, /turf/open/floor/rogue/grass, /area/rogue/outdoors/mountains) +"itU" = ( +/obj/effect/spawner/roguemap/treeorstump, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "iuE" = ( /obj/structure/flora/roguegrass, /obj/structure/fluff/statue/gargoyle/moss, @@ -8494,10 +8692,14 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) "ivG" = ( -/obj/structure/flora/roguetree/burnt, +/obj/machinery/light/rogue/torchholder/cold, +/obj/effect/decal/turfedge_neu/alt{ + dir = 9 + }, +/obj/structure/roguerock, /obj/structure/flora/roguegrass, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/rtfield/hamlet) +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "ivL" = ( /obj/structure/fluff/railing/border{ dir = 4; @@ -8611,8 +8813,11 @@ /turf/open/floor/rogue/cobble, /area/rogue/outdoors/exposed/magiciantower) "iyr" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/rogue/dirt/road, +/obj/structure/stairs{ + dir = 1; + icon_state = "stairs" + }, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "iyB" = ( /obj/structure/roguetent/preopen, @@ -8817,11 +9022,11 @@ first_time_text = "STONEHILL CASTLE" }) "iIc" = ( -/obj/effect/landmark/start/vagrant{ +/obj/machinery/light/rogue/torchholder{ dir = 8; - icon_state = "arrow" + icon_state = "torchwall1" }, -/turf/open/floor/rogue/dirt, +/turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "iId" = ( /turf/open/floor/rogue/cobblerock_alt, @@ -8842,8 +9047,8 @@ }, /area/rogue/outdoors/town/roofs) "iJO" = ( -/obj/structure/roguetent, -/turf/open/floor/rogue/dirt, +/obj/structure/roguewindow/solid, +/turf/open/floor/rogue/cobble/alt, /area/rogue/indoors) "iJP" = ( /obj/effect/decal/cleanable/blood/gibs/limb, @@ -8895,19 +9100,9 @@ /turf/open/floor/rogue/wood/nosmooth/saiga, /area/rogue/indoors/town) "iMX" = ( -/obj/structure/fluff/railing/border{ - dir = 4; - icon_state = "border" - }, -/obj/structure/fluff/railing/border{ - dir = 1; - icon_state = "border" - }, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 - }, -/area/rogue/outdoors/town/roofs) +/obj/structure/table/wood/plain_alt, +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "iNk" = ( /obj/structure/mineral_door/wood{ locked = 1; @@ -9023,12 +9218,33 @@ "iVM" = ( /turf/open/water/cleanshallow, /area/rogue/outdoors/rtfield/hamlet) +"iVS" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 10 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) +"iVZ" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 0; + pixel_x = -32 + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "iWf" = ( /obj/effect/decal/turfedge_neu{ dir = 5 }, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/rtfield/hamlet) +"iWg" = ( +/obj/structure/mineral_door/wood/fancywood{ + name = "mercenary guild"; + locked = 1; + lockid = "mercenary" + }, +/turf/open/floor/rogue/ruinedwood/spiral, +/area/rogue/indoors/town) "iWG" = ( /obj/structure/flora/rock/pile, /obj/effect/decal/turfedge_neu/road{ @@ -9203,11 +9419,11 @@ first_time_text = "STONEHILL CASTLE" }) "jeY" = ( -/obj/effect/landmark/start/vagrant{ - dir = 1; - icon_state = "arrow" +/obj/effect/decal/turfedge_neu/road{ + dir = 1 }, -/turf/open/floor/rogue/dirt/road, +/obj/machinery/light/rogue/torchholder/cold, +/turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "jfx" = ( /obj/structure/chair/stool/rogue, @@ -9520,6 +9736,13 @@ }, /turf/open/floor/rogue/cobblerock_alt, /area/rogue/indoors/town) +"jwH" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 30; + pixel_x = 0 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "jwS" = ( /obj/structure/roguewindow/openclose{ dir = 1; @@ -9705,12 +9928,13 @@ /turf/closed/wall/mineral/rogue/decostone/cand, /area/rogue/indoors) "jEV" = ( -/obj/structure/mineral_door/wood/deadbolt{ - name = "privy" - }, /obj/effect/decal/turfedge_neu/alt{ dir = 10 }, +/obj/structure/mineral_door/wood/window{ + lockid = "tavern"; + name = "lounge" + }, /turf/open/floor/rogue/cobble/mossy/alt, /area/rogue/indoors/town/tavern/saiga) "jFd" = ( @@ -9983,12 +10207,16 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/outlaw) "jRc" = ( -/obj/structure/fluff/railing/border, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 +/obj/structure/fluff/railing/border{ + dir = 10; + icon_state = "border" }, -/area/rogue/outdoors/town/roofs) +/obj/structure/fluff/wallclock{ + pixel_y = 29; + pixel_x = 0 + }, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors/town/tavern/saiga) "jRf" = ( /obj/effect/decal/cleanable/blood/old, /obj/structure/flora/roguegrass, @@ -10205,6 +10433,11 @@ }, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) +"kaz" = ( +/obj/machinery/light/rogue/hearth, +/obj/item/cooking/pan, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "kbl" = ( /turf/open/floor/rogue/carpet/lord/right, /area/rogue/indoors/town/manor{ @@ -10788,10 +11021,12 @@ /area/rogue/outdoors/mountains) "kGN" = ( /obj/structure/bed/rogue/shit, -/obj/effect/decal/cleanable/dirt/cobweb, -/obj/item/kitchen/spoon, +/obj/effect/landmark/start/vagrant{ + dir = 1; + icon_state = "arrow" + }, /turf/open/floor/rogue/dirt/road, -/area/rogue/indoors) +/area/rogue/indoors/town) "kGQ" = ( /obj/structure/flora/roguegrass, /obj/structure/fluff/customsign{ @@ -10872,6 +11107,13 @@ }, /turf/open/floor/rogue/ruinedwood/chevron, /area/rogue/indoors/town/bath/redhouse) +"kMz" = ( +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "kNj" = ( /turf/closed/wall/mineral/rogue/wooddark/vertical, /area/rogue/indoors/shelter/mountains) @@ -10890,6 +11132,10 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"kPl" = ( +/obj/structure/flora/roguegrass/bush/wall/tall, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "kPs" = ( /obj/structure/bed/rogue/wool, /obj/item/bedsheet/rogue/fabric, @@ -10947,6 +11193,10 @@ }, /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) +"kQS" = ( +/obj/structure/fluff/railing/border, +/turf/open/floor/rogue/ruinedwood/spiral, +/area/rogue/indoors/town) "kRc" = ( /obj/effect/decal/turfedge_neu/road{ dir = 1 @@ -11098,6 +11348,14 @@ }, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"lar" = ( +/obj/structure/bed/rogue/shit, +/obj/effect/landmark/start/vagrant{ + dir = 1; + icon_state = "arrow" + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/indoors) "lay" = ( /obj/effect/spawner/roguemap/tree, /obj/structure/flora/rock/pile, @@ -11225,7 +11483,9 @@ /turf/open/floor/rogue/dirt, /area/rogue/under/catacombs) "lfn" = ( -/obj/effect/decal/shadow_floor, +/obj/effect/decal/shadow_floor/corner{ + dir = 4 + }, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/tavern/saiga) "lfQ" = ( @@ -11336,6 +11596,13 @@ /obj/item/reagent_containers/glass/bottle/formaldehyde, /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/magician) +"lkn" = ( +/obj/structure/roguewindow/openclose{ + dir = 4; + icon_state = "woodwindowdir" + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "lkC" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 10 @@ -11536,6 +11803,13 @@ }, /turf/open/transparent/openspace, /area/rogue/outdoors) +"lxA" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 0; + pixel_x = -32 + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "lxO" = ( /turf/open/floor/rogue/cobble/alt, /area/rogue/under/town/sewer) @@ -11603,6 +11877,10 @@ /obj/effect/decal/cleanable/blood_neu/random, /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) +"lBk" = ( +/obj/machinery/light/rogue/wallfire/candle/weak/l, +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "lBv" = ( /turf/open/floor/rogue/rooftop{ dir = 4 @@ -11666,11 +11944,10 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "lFu" = ( -/obj/structure/toilet, -/obj/effect/decal/turfedge_neu/mossy{ - dir = 6 +/turf/open/floor/rogue/woodturned/saiga{ + pixel_x = 0; + pixel_y = 0 }, -/turf/open/floor/rogue/dirt/road, /area/rogue/indoors/town/tavern/saiga) "lFC" = ( /obj/structure/flora/rock/pile, @@ -11714,11 +11991,8 @@ first_time_text = "Rockhamlet" }) "lGx" = ( -/obj/effect/decal/cleanable/blood_neu/tracks{ - dir = 9 - }, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/rtfield/hamlet) +/turf/closed/wall/mineral/rogue/decowood, +/area/rogue/outdoors/exposed/town/hamlet) "lGN" = ( /obj/structure/closet/crate/chest/crate, /turf/open/floor/rogue/wood/saiga, @@ -11879,8 +12153,7 @@ /turf/open/water/cleanshallow, /area/rogue/indoors/town/church/chapel) "lNk" = ( -/obj/item/reagent_containers/glass/bowl, -/turf/open/floor/rogue/dirt/road, +/turf/closed/wall/mineral/rogue/wooddark/horizontal, /area/rogue/indoors) "lNO" = ( /obj/structure/fluff/walldeco/med2{ @@ -11902,9 +12175,12 @@ }, /area/rogue/outdoors/town/roofs) "lNY" = ( -/obj/structure/chair/bench/ancientlog, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/obj/machinery/light/rogue/hearth{ + fueluse = 1 + }, +/obj/item/cooking/pan, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "lOm" = ( /obj/item/rogueore/copper, /obj/item/rogueore/copper, @@ -11990,6 +12266,11 @@ "lRz" = ( /turf/closed/wall/mineral/rogue/roofwall/outercorner, /area/rogue/indoors/town) +"lRE" = ( +/obj/structure/flora/roguegrass, +/obj/structure/flora/roguegrass, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/rtfield/hamlet) "lRL" = ( /obj/effect/sunlight, /turf/open/floor/rogue/rooftop/green, @@ -12248,6 +12529,14 @@ }, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) +"mha" = ( +/obj/structure/flora/roguegrass, +/obj/effect/decal/turfedge_neu/road{ + dir = 9 + }, +/obj/machinery/light/rogue/torchholder/cold, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/rtfield/hamlet) "mhc" = ( /obj/structure/closet/crate/chest/neu_fancy, /obj/item/paper/scroll, @@ -12308,6 +12597,15 @@ /obj/machinery/light/rogue/wallfire/candle, /turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town) +"mlj" = ( +/obj/structure/bed/rogue/inn, +/obj/item/bedsheet/rogue/cloth, +/obj/effect/landmark/start/mercenary{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/cobweb, +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "mln" = ( /obj/structure/closet/crate/chest/neu, /turf/open/floor/rogue/oak, @@ -12352,9 +12650,9 @@ /turf/open/floor/carpet/royalblack, /area/rogue/under/town/basement) "mmT" = ( -/obj/structure/flora/roguegrass/thorn_bush, -/turf/closed/wall/mineral/rogue/decowood, -/area/rogue/indoors) +/obj/structure/chair/bench/ancientlog, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "mnd" = ( /obj/structure/fluff/railing/border{ dir = 1; @@ -12513,6 +12811,17 @@ }, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/shop) +"mvQ" = ( +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" + }, +/turf/open/transparent/openspace, +/area/rogue/indoors/town) +"mvV" = ( +/obj/structure/chair/stool/rogue, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "mwG" = ( /obj/structure/roguemachine/scomm/r, /turf/open/floor/rogue/church, @@ -12552,6 +12861,15 @@ "myP" = ( /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/tavern/saiga) +"myU" = ( +/obj/structure/closet/crate/drawer, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/obj/item/roguekey/houses/house4, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "mzh" = ( /turf/closed/wall/mineral/rogue/stone/moss, /area/rogue/indoors/town/dwarfin) @@ -12563,6 +12881,14 @@ /obj/structure/table/wood/plain_alt, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/tavern/saiga) +"mzO" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 9; + pixel_x = 0; + pixel_y = -2 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "mAN" = ( /obj/structure/table/wood{ dir = 10; @@ -12579,13 +12905,9 @@ /turf/open/floor/rogue/church, /area/rogue/indoors/town/church/chapel) "mAQ" = ( -/obj/item/chair/stool/bar/rogue, -/obj/effect/landmark/start/vagrant{ - dir = 4; - icon_state = "arrow" - }, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/roguewindow/solid, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "mBr" = ( /turf/open/floor/rogue/metal, /area/rogue/indoors/town) @@ -12850,19 +13172,15 @@ /turf/open/floor/rogue/ruinedwood/chevron, /area/rogue/indoors/town/bath/redhouse) "mPQ" = ( -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/obj/structure/fluff/railing/border, -/obj/structure/fluff/railing/border{ - dir = 10; - icon_state = "border" +/obj/structure/chair/wood/rogue{ + dir = 1; + icon_state = "chair2" }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 +/obj/effect/decal/turfedge_neu/alt{ + dir = 5 }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "mQa" = ( /obj/structure/fluff/walldeco/bsmith{ dir = 1; @@ -12946,6 +13264,10 @@ /obj/structure/flora/rock/pile, /turf/open/floor/rogue/naturalstone, /area/rogue/under/town/sewer) +"mTt" = ( +/obj/structure/bed/rogue/shit, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "mTy" = ( /turf/open/floor/rogue/dirt/road, /area/rogue/under/town/caverogue{ @@ -13073,9 +13395,23 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/mountains) "mYL" = ( -/obj/structure/bars/cemetery, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/closet/crate/drawer, +/obj/item/roguekey/houses/house1, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) +"mYT" = ( +/obj/structure/fluff/railing/border{ + dir = 8; + icon_state = "border" + }, +/obj/structure/fluff/railing/border{ + dir = 1; + icon_state = "border" + }, +/turf/open/floor/rogue/rooftop/green{ + dir = 4 + }, +/area/rogue/outdoors/town/roofs) "mZW" = ( /obj/structure/fluff/statue/gargoyle, /turf/open/floor/rogue/blocks, @@ -13707,19 +14043,21 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/mountains) "nDW" = ( -/obj/machinery/light/rogue/campfire{ - on = 1 +/obj/structure/fluff/walldeco/rpainting/forest{ + pixel_x = -1; + pixel_y = 31 }, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/chair/wood/rogue/chair3, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "nEL" = ( /obj/structure/fermenting_barrel/water, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/bath/redhouse) "nFQ" = ( -/obj/structure/rack/rogue, -/obj/item/rogueweapon/mace/woodclub, -/obj/item/rogueweapon/mace/woodclub, +/obj/structure/flora/roguegrass, +/obj/machinery/light/rogue/firebowl/stump, +/obj/structure/flora/roguegrass, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) "nFY" = ( @@ -13921,6 +14259,13 @@ dir = 8 }, /area/rogue/outdoors/exposed/manorgarri) +"nRs" = ( +/obj/structure/roguewindow/openclose{ + dir = 1; + icon_state = "woodwindowdir" + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "nRE" = ( /obj/machinery/light/rogue/wallfire{ pixel_x = -32 @@ -13964,12 +14309,25 @@ first_time_text = "STONEHILL CASTLE" }) "nTe" = ( -/turf/open/floor/rogue/cobblerock, -/area/rogue/indoors/town/garrison) +/obj/structure/fluff/railing/border, +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" + }, +/turf/open/floor/rogue/ruinedwood/spiral, +/area/rogue/outdoors/town/roofs) "nTh" = ( /obj/structure/fluff/statue/small, /turf/open/floor/rogue/tile/kitchen, /area/rogue/indoors/town/vault) +"nTw" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 5; + pixel_x = 0; + pixel_y = -1 + }, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "nTz" = ( /obj/effect/decal/turfedge_neu/mossy{ dir = 8 @@ -14057,6 +14415,13 @@ /area/rogue/under/town/caverogue{ first_time_text = "DEEP MINESHAFT" }) +"nYb" = ( +/obj/structure/mineral_door/wood{ + name = "house IV"; + lockid = "house4" + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "nYt" = ( /obj/item/chair/stool/bar/rogue, /obj/effect/decal/cleanable/dirt/dust, @@ -14098,6 +14463,15 @@ /obj/structure/roguetent/preopen, /turf/open/floor/rogue/church, /area/rogue/under/town/basement) +"obx" = ( +/obj/structure/fluff/railing/border{ + dir = 1; + icon_state = "border" + }, +/turf/open/floor/rogue/rooftop/green{ + dir = 4 + }, +/area/rogue/outdoors/town/roofs) "obC" = ( /obj/structure/ladder/earth, /obj/structure/toilet, @@ -14118,6 +14492,7 @@ dir = 1; icon_state = "borderfall" }, +/obj/structure/handcart, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) "ocJ" = ( @@ -14188,6 +14563,15 @@ }, /turf/closed/wall/mineral/rogue/stonebrick/reddish, /area/rogue/indoors/town/bath/redhouse) +"ofL" = ( +/obj/structure/fluff/railing/border{ + dir = 6; + icon_state = "border" + }, +/turf/open/floor/rogue/rooftop{ + dir = 4 + }, +/area/rogue/outdoors/town/roofs) "ogl" = ( /turf/closed/wall/mineral/rogue/wooddark/window, /area/rogue/indoors/town/garrison) @@ -14249,6 +14633,15 @@ }, /turf/open/floor/rogue/wood/saiga, /area/rogue/outdoors/exposed/under/basement) +"ojc" = ( +/obj/structure/fermenting_barrel/water, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 30; + pixel_x = 0 + }, +/obj/effect/decal/cleanable/dirt/cobweb, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "ojm" = ( /obj/item/reagent_containers/food/snacks/butter, /obj/item/reagent_containers/food/snacks/butter, @@ -14305,6 +14698,13 @@ }, /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/indoors/town/shop) +"okV" = ( +/obj/structure/stairs{ + dir = 8; + icon_state = "stairs" + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "olb" = ( /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/hexstone, @@ -14491,9 +14891,6 @@ "osa" = ( /obj/structure/chair/stool/rogue, /obj/structure/fluff/railing/border, -/obj/effect/landmark/start/mercenary{ - dir = 4 - }, /turf/open/floor/rogue/cobble/mossy/alt, /area/rogue/indoors/town/tavern/saiga) "osA" = ( @@ -14513,6 +14910,10 @@ /obj/item/flashlight/flare/torch/lantern, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave/abandoned_mine) +"ouc" = ( +/obj/machinery/light/rogue/oven/south, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "ouq" = ( /obj/structure/table/wood/reinforced_alt{ dir = 8 @@ -14629,6 +15030,12 @@ /obj/structure/flora/roguegrass/thorn_bush, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) +"ozu" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 6 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "ozE" = ( /obj/structure/fluff/walldeco/stone{ pixel_x = 0; @@ -14657,13 +15064,10 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "oAo" = ( -/obj/structure/fluff/railing/stonehedge{ - dir = 1 - }, -/obj/structure/flora/rock/pile, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/grass, -/area/rogue/outdoors/exposed/town/hamlet) +/obj/structure/closet/crate/drawer, +/obj/item/roguekey/houses/house3, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "oAJ" = ( /obj/effect/spawner/roguemap/tree, /obj/structure/flora/roguegrass, @@ -14808,18 +15212,12 @@ first_time_text = "STONEHILL CASTLE" }) "oFq" = ( -/obj/structure/fluff/railing/border{ - dir = 8; - icon_state = "border" - }, -/obj/structure/fluff/railing/border{ - dir = 10; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 4 +/obj/structure/chair/wood/rogue, +/obj/effect/decal/turfedge_neu/alt{ + dir = 6 }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "oFv" = ( /obj/effect/decal/turfedge_neu{ dir = 6 @@ -15062,6 +15460,13 @@ /obj/structure/flora/rock/pile, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) +"oPc" = ( +/obj/structure/mineral_door/wood/deadbolt{ + dir = 8; + icon_state = "wooddir" + }, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "oPf" = ( /obj/effect/decal/turfedge_neu/rockalt_corners{ dir = 1 @@ -15209,6 +15614,14 @@ /obj/item/rope/chain, /turf/open/floor/rogue/wood/saiga, /area/rogue/indoors/town/garrison) +"oUR" = ( +/obj/structure/table/wood/nice/decorated_alt, +/obj/item/candle/yellow/lit/infinite/strong{ + pixel_x = 5; + pixel_y = 2 + }, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "oVe" = ( /obj/structure/table/wood/large/corner_new{ dir = 9 @@ -15424,7 +15837,7 @@ dir = 10 }, /turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/area/rogue/outdoors/exposed/town/hamlet) "pdG" = ( /obj/structure/flora/roguegrass, /obj/structure/flora/rock/pile, @@ -15442,6 +15855,17 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"peS" = ( +/obj/structure/stairs{ + dir = 8; + icon_state = "stairs" + }, +/obj/structure/fluff/railing/border{ + dir = 6; + icon_state = "border" + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "peW" = ( /obj/machinery/light/rogue/forge, /turf/open/floor/rogue/concrete, @@ -15534,6 +15958,14 @@ ambush_mobs = list(/mob/living/simple_animal/hostile/retaliate/rogue/bigrat = 30, /mob/living/carbon/human/species/skeleton/npc/ambush = 10); first_time_text = "CATACOMBS" }) +"pjk" = ( +/turf/closed/wall/mineral/rogue/stone/moss, +/area/rogue/indoors) +"pjT" = ( +/obj/machinery/light/rogue/firebowl/stump, +/obj/structure/flora/roguegrass, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "pjU" = ( /turf/closed/wall/mineral/rogue/wooddark/slitted, /area/rogue/indoors/town) @@ -16072,6 +16504,10 @@ /obj/item/restraints/legcuffs/beartrap/armed/camouflage, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/boggish) +"pHx" = ( +/obj/structure/bearpelt, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "pHH" = ( /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/spooky) @@ -16133,6 +16569,10 @@ /obj/structure/flora/roguegrass, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/woodish) +"pLJ" = ( +/obj/structure/fluff/wallclock, +/turf/open/floor/rogue/twig, +/area/rogue/indoors/town) "pLO" = ( /obj/structure/roguemachine/musicbox, /turf/open/floor/rogue/tile/masonic/inverted, @@ -16306,6 +16746,10 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"pVC" = ( +/obj/structure/roguewindow/solid, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "pVK" = ( /obj/structure/roguemachine/scomm/r, /turf/open/floor/rogue/cobble/mossy/alt, @@ -16317,6 +16761,11 @@ /obj/item/grown/log/tree/small, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/town/hamlet) +"pWa" = ( +/obj/structure/closet/crate/roguecloset, +/obj/item/roguekey/houses/house2, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "pXe" = ( /obj/structure/mineral_door/swing_door{ keylock = 1; @@ -16503,6 +16952,10 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"qfy" = ( +/obj/effect/spawner/roguemap/treeorstump, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "qfT" = ( /turf/open/floor/rogue/naturalstone, /area/rogue) @@ -16576,9 +17029,12 @@ }, /area/rogue/outdoors/town/roofs) "qiW" = ( -/obj/structure/bed/rogue/shit, -/obj/item/rogueweapon/axe/stone, -/turf/open/floor/rogue/dirt/road, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/obj/effect/decal/cleanable/dirt/cobweb, +/turf/open/floor/rogue/wood/saiga, /area/rogue/indoors) "qjp" = ( /obj/structure/closet/crate/chest/old_crate, @@ -16632,15 +17088,12 @@ /turf/open/water/swamp/deep, /area/rogue/outdoors/rtfield/hamlet) "qlr" = ( -/obj/structure/fluff/railing/border, -/obj/structure/fluff/railing/border{ - dir = 10; - icon_state = "border" - }, -/obj/machinery/light/rogue/torchholder{ - pixel_y = 26 +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" }, -/turf/open/floor/rogue/ruinedwood/spiral, +/obj/structure/fluff/railing/border, +/turf/open/transparent/openspace, /area/rogue/outdoors/town/roofs) "qls" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -17039,6 +17492,13 @@ /obj/structure/flora/roguegrass, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"qIq" = ( +/obj/structure/rack/rogue/shelf/biggest, +/obj/item/storage/roguebag, +/obj/item/reagent_containers/glass/cup/wooden, +/obj/item/reagent_containers/glass/cup/wooden, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "qIX" = ( /obj/structure/table/wood{ dir = 1; @@ -17186,13 +17646,12 @@ /turf/open/floor/rogue/cobblerock_alt, /area/rogue/indoors/town) "qNw" = ( -/obj/structure/table/wood{ - dir = 10; - icon_state = "tablewood2" +/obj/structure/mineral_door/wood{ + name = "house I"; + lockid = "house1" }, -/obj/structure/flora/roguegrass, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "qNz" = ( /obj/structure/fluff/walldeco/masonflag{ pixel_y = 32 @@ -17408,6 +17867,13 @@ }, /turf/open/floor/rogue/concrete, /area/rogue/indoors/town/dwarfin) +"qWu" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "stairs" + }, +/turf/open/transparent/openspace, +/area/rogue/indoors) "qXp" = ( /obj/effect/sunlight, /turf/open/water/river{ @@ -17543,6 +18009,14 @@ }, /turf/open/floor/rogue/dirt/road, /area/rogue/indoors/shelter/rtfield) +"ret" = ( +/obj/structure/well, +/obj/effect/decal/turfedge_neu/alt, +/obj/effect/decal/turfedge_neu/alt{ + dir = 4 + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "rgi" = ( /obj/effect/decal/remains/human/old, /turf/open/water/swamp, @@ -17675,6 +18149,11 @@ }, /turf/open/floor/rogue/rooftop, /area/rogue/outdoors/exposed/manorgarri) +"rjz" = ( +/obj/structure/table/wood/plain_alt, +/obj/item/toy/cards/deck, +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "rkd" = ( /turf/closed/wall/mineral/rogue/wooddark, /area/rogue/indoors/shelter/mountains) @@ -17710,6 +18189,10 @@ }, /turf/open/floor/rogue/dirt, /area/rogue/indoors/town/cell) +"rmk" = ( +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "rmr" = ( /obj/effect/spawner/roguemap/tree, /obj/structure/flora/roguegrass, @@ -18017,8 +18500,11 @@ /turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors/shelter/rtfield) "rCi" = ( -/obj/machinery/light/rogue/torchholder/cold, -/turf/open/floor/rogue/dirt/road, +/obj/structure/mineral_door/wood{ + name = "house II"; + lockid = "house2" + }, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "rCn" = ( /obj/structure/fluff/railing/stonehedge{ @@ -18317,6 +18803,17 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"rQz" = ( +/obj/structure/fluff/railing/border{ + dir = 1; + icon_state = "border" + }, +/obj/structure/stairs{ + dir = 8; + icon_state = "stairs" + }, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "rQE" = ( /obj/effect/spawner/roguemap/tree, /obj/effect/spawner/roguemap/tree, @@ -18347,6 +18844,14 @@ "rSm" = ( /turf/closed/wall/mineral/rogue/wooddark/slitted, /area/rogue/indoors/town/tavern/saiga) +"rSx" = ( +/obj/structure/table/wood/plain_alt, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 1; + pixel_x = -32 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "rSL" = ( /obj/structure/fluff/railing/wood, /turf/open/floor/rogue/dirt, @@ -18430,6 +18935,12 @@ /area/rogue/under/town/caverogue{ first_time_text = "DEEP MINESHAFT" }) +"rYq" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 4 + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "rYx" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/rogue/dirt/road, @@ -18574,6 +19085,10 @@ /obj/structure/flora/roguetree/burnt, /turf/open/floor/rogue/grass, /area/rogue/outdoors/exposed/manorgarri) +"siB" = ( +/obj/structure/bed/rogue/wool, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "siF" = ( /obj/structure/fluff/statue/gargoyle, /turf/open/transparent/openspace, @@ -18635,6 +19150,22 @@ }, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"skJ" = ( +/obj/machinery/light/rogue/torchholder{ + dir = 4; + icon_state = "torchwall1" + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) +"slb" = ( +/obj/effect/decal/turfedge_neu{ + dir = 9 + }, +/obj/machinery/light/rogue/torchholder/l{ + dir = 8 + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "sll" = ( /obj/structure/mineral_door/wood/fancywood{ lockid = "manor"; @@ -19258,6 +19789,12 @@ }, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/plague_district) +"sTo" = ( +/obj/structure/fluff/walldeco/customflag{ + pixel_x = -32 + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "sTM" = ( /obj/structure/flora/roguetree, /obj/structure/flora/roguegrass, @@ -19301,6 +19838,13 @@ /obj/item/flashlight/flare/torch, /turf/open/floor/rogue/concrete, /area/rogue/outdoors/exposed/under/basement) +"sVF" = ( +/obj/structure/roguemachine/scomm/l{ + pixel_x = 1; + pixel_y = 32 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "sVQ" = ( /obj/structure/fluff/railing/border{ dir = 5; @@ -19333,6 +19877,17 @@ /obj/structure/fluff/statue/small, /turf/open/floor/carpet/red, /area/rogue/outdoors/exposed/under/basement) +"sYc" = ( +/obj/structure/chair/wood/rogue, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/obj/effect/decal/turfedge_neu/alt{ + dir = 10 + }, +/turf/open/floor/rogue/cobble/mossy/alt, +/area/rogue/indoors/town/tavern/saiga) "sYq" = ( /obj/effect/landmark/start/weaponsmith{ dir = 4 @@ -19464,9 +20019,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/under/basement) "tem" = ( -/obj/item/cooking/platter, -/obj/structure/table/wood/plain/alt, -/turf/open/floor/rogue/dirt/road, +/turf/open/floor/rogue/cobble/alt, /area/rogue/indoors) "teu" = ( /obj/structure/fluff/statue/knightalt, @@ -19604,11 +20157,8 @@ /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) "tma" = ( -/obj/effect/decal/turfedge_neu/mossy_small, -/obj/effect/decal/turfedge_neu/mossy{ - dir = 9 - }, -/turf/open/floor/rogue/dirt/road, +/obj/structure/chair/bench/coucha, +/turf/open/floor/rogue/woodturned/saiga, /area/rogue/indoors/town/tavern/saiga) "tmk" = ( /obj/structure/closet/crate/drawer, @@ -20196,6 +20746,13 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"tRA" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_x = 0; + pixel_y = -26 + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "tRE" = ( /obj/item/reagent_containers/glass/cup/skull, /turf/open/floor/rogue/naturalstone, @@ -20246,9 +20803,12 @@ }, /area/rogue/outdoors) "tTP" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/rogue/dirt/road, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/fluff/railing/border{ + dir = 5; + icon_state = "border" + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "tUl" = ( /obj/structure/closet/crate/roguecloset/dark{ name = "tobacco storage" @@ -20295,9 +20855,13 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield/hamlet) "tVv" = ( -/obj/structure/flora/roguegrass, -/turf/closed/wall/mineral/rogue/wooddark, -/area/rogue/indoors) +/obj/structure/rack/rogue/shelf/biggest, +/obj/item/natural/feather, +/obj/item/paper/scroll, +/obj/item/paper/scroll, +/obj/item/paper/scroll, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "tVK" = ( /obj/structure/table/wood/large/corner_alt{ dir = 6 @@ -20330,6 +20894,15 @@ }, /turf/open/floor/rogue/cobble/alt, /area/rogue/indoors/town/dwarfin) +"tXa" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 5; + pixel_x = 0; + pixel_y = -1 + }, +/obj/structure/flora/roguegrass, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "tXg" = ( /obj/structure/table/wood/plain_alt, /obj/item/paper/scroll{ @@ -20399,9 +20972,6 @@ /area/rogue/outdoors/exposed/town/hamlet) "tZZ" = ( /obj/structure/chair/stool/rogue, -/obj/effect/landmark/start/mercenary{ - dir = 1 - }, /obj/machinery/light/rogue/wallfire/candle{ pixel_y = -32 }, @@ -20439,9 +21009,10 @@ /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue) "ubZ" = ( -/obj/structure/bed/rogue/shit, -/obj/effect/decal/cleanable/dirt/cobweb, -/turf/open/floor/rogue/dirt/road, +/obj/effect/decal/turfedge_neu/alt_small{ + dir = 1 + }, +/turf/closed/wall/mineral/rogue/decowood, /area/rogue/indoors) "uck" = ( /obj/structure/rack/rogue, @@ -20587,6 +21158,14 @@ }, /turf/open/floor/rogue/naturalstone, /area/rogue/under/town/basement) +"uiy" = ( +/obj/structure/bed/rogue/shit, +/obj/effect/landmark/start/vagrant{ + dir = 1; + icon_state = "arrow" + }, +/turf/open/floor/rogue/dirt, +/area/rogue/indoors) "uiE" = ( /obj/structure/closet/crate/roguecloset, /obj/item/roguekey/tailor, @@ -20914,12 +21493,14 @@ /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/under/basement) "uwR" = ( -/obj/item/bedsheet/rogue/fabric_double, -/obj/structure/bed/rogue/inn/double, -/obj/machinery/light/rogue/wallfire{ - pixel_x = -32 +/obj/effect/decal/shadow_floor{ + dir = 8 }, -/turf/open/floor/rogue/carpet/green, +/obj/structure/fluff/clock{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/tavern/saiga) "uxm" = ( /obj/structure/closet/crate/chest/neu, @@ -21030,6 +21611,16 @@ "uBP" = ( /turf/closed/wall/mineral/rogue/pipe, /area/rogue/outdoors) +"uBT" = ( +/obj/effect/decal/turfedge_neu/road{ + dir = 10 + }, +/obj/effect/decal/turfedge_neu/alt{ + dir = 4 + }, +/obj/item/reagent_containers/glass/bucket/wooden/alter, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "uCa" = ( /turf/closed/wall/mineral/rogue/wooddark/end{ dir = 8; @@ -21172,6 +21763,14 @@ /obj/structure/fluff/psycross/copper, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) +"uHf" = ( +/obj/structure/fluff/railing/border{ + dir = 8; + icon_state = "border" + }, +/obj/structure/fermenting_barrel, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "uHG" = ( /obj/structure/flora/roguegrass, /turf/open/floor/rogue/dirt/road, @@ -21229,12 +21828,15 @@ /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/bath/redhouse) "uKw" = ( -/obj/structure/toilet, -/obj/effect/decal/turfedge_neu/mossy{ - dir = 10 +/obj/structure/table/wood/counter/end{ + dir = 4 }, -/turf/open/floor/rogue/dirt/road, -/area/rogue/indoors/town/tavern/saiga) +/obj/structure/fluff/millstone{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "uKz" = ( /obj/structure/closet/crate/roguecloset, /obj/effect/spawner/roguemap/cheapinnroomencounter, @@ -21576,10 +22178,6 @@ /area/rogue/outdoors/rtfield/hamlet) "uYS" = ( /obj/structure/fluff/walldeco/rpainting/crown, -/obj/structure/rack/rogue/shelf/notdense{ - pixel_x = 32; - pixel_y = -6 - }, /turf/closed/wall/mineral/rogue/decowood, /area/rogue/indoors/town/tavern/saiga) "uYT" = ( @@ -21661,6 +22259,13 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"vdi" = ( +/obj/structure/flora/roguegrass, +/obj/effect/decal/turfedge_neu/road{ + dir = 1 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "vdK" = ( /obj/structure/mineral_door/bars{ locked = 1; @@ -21897,10 +22502,20 @@ /turf/open/floor/rogue/twig, /area/rogue/indoors/town/church) "voW" = ( -/obj/structure/mineral_door/wood/deadbolt{ - dir = 1 +/obj/structure/fluff/railing/border{ + dir = 1; + icon_state = "border" }, -/turf/open/floor/rogue/grass, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) +"vpy" = ( +/obj/structure/bed/rogue/inn/double, +/obj/item/bedsheet/rogue/fabric_double, +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = 32; + pixel_x = 0 + }, +/turf/open/floor/rogue/wood/nosmooth, /area/rogue/indoors) "vpV" = ( /obj/structure/fluff/railing/border{ @@ -21957,6 +22572,13 @@ "vud" = ( /turf/open/floor/carpet/purple, /area/rogue/indoors/town/tailor) +"vut" = ( +/obj/structure/fluff/railing/border{ + dir = 10; + icon_state = "border" + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "vuw" = ( /obj/structure/rack/rogue, /obj/item/clothing/glasses/blindfold/white{ @@ -21995,9 +22617,19 @@ /obj/structure/handcart, /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/exposed/town/hamlet) +"vwt" = ( +/obj/structure/fluff/walldeco/innsign/trophy, +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town) "vwC" = ( /turf/open/water/cleanshallow, /area/rogue/indoors/town/church/chapel) +"vwJ" = ( +/obj/effect/decal/turfedge_neu/alt_small{ + dir = 8 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "vwS" = ( /obj/structure/rack/rogue, /turf/open/floor/rogue/tile/kitchen, @@ -22256,6 +22888,15 @@ }, /turf/open/floor/rogue/wood/nosmooth/saiga, /area/rogue/indoors/town/tavern/saiga) +"vIp" = ( +/obj/structure/flora/roguegrass, +/obj/machinery/light/rogue/torchholder/cold{ + dir = 4; + pixel_x = -1; + pixel_y = -2 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "vIt" = ( /obj/item/grown/log/tree/small, /obj/item/grown/log/tree/small, @@ -22324,6 +22965,12 @@ /obj/effect/spawner/roguemap/tree, /turf/open/floor/rogue/grass, /area/rogue/outdoors/rtfield/hamlet) +"vKA" = ( +/obj/effect/decal/turfedge_neu/alt_small{ + dir = 1 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "vKI" = ( /obj/structure/table/vtable, /obj/item/toy/cards/deck, @@ -22351,10 +22998,12 @@ /turf/open/floor/rogue/wood/saiga, /area/rogue/indoors/town/garrison) "vOf" = ( -/obj/item/clothing/shoes/roguetown/boots/leather, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/rtfield/hamlet) +/obj/structure/stairs{ + dir = 4; + icon_state = "stairs" + }, +/turf/open/floor/rogue/wood/saiga, +/area/rogue/indoors) "vOo" = ( /obj/item/roguebin/water/gross, /obj/structure/mirror/fancy{ @@ -22374,6 +23023,10 @@ /obj/structure/flora/roguegrass, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/under/basement) +"vQc" = ( +/obj/structure/closet/crate/chest/crate, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "vQh" = ( /obj/structure/flora/roguegrass/water/reeds, /turf/open/water/swamp, @@ -22444,9 +23097,14 @@ /turf/open/floor/rogue/tile/masonic/single, /area/rogue/indoors/town/magician) "vVI" = ( -/obj/structure/flora/roguegrass/bush_meagre, -/turf/open/floor/rogue/dirt, -/area/rogue/outdoors/exposed/town/hamlet) +/obj/structure/fluff/railing/border{ + dir = 8; + icon_state = "border" + }, +/turf/open/floor/rogue/rooftop/green{ + dir = 4 + }, +/area/rogue/outdoors/town/roofs) "vVY" = ( /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/woodturned/saiga, @@ -22604,6 +23262,13 @@ /area/rogue/indoors/town/manor{ first_time_text = "STONEHILL CASTLE" }) +"wbn" = ( +/obj/effect/decal/turfedge_neu/alt{ + dir = 4 + }, +/obj/machinery/simple_dye_bin, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "wbA" = ( /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/woodturned/saiga, @@ -22627,6 +23292,13 @@ /obj/machinery/light/rogue/firebowl/stump, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) +"wcr" = ( +/obj/structure/fermenting_barrel{ + pixel_x = 0; + pixel_y = 8 + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "wcw" = ( /obj/structure/stairs{ dir = 4; @@ -22814,6 +23486,12 @@ }, /turf/open/floor/rogue/grass/peril, /area/rogue/outdoors/rtfield/hamlet) +"wjY" = ( +/obj/structure/table/wood/plain, +/obj/item/reagent_containers/glass/cup/wooden, +/obj/item/roguekey/mercenary, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "wkj" = ( /obj/structure/chair/wood/rogue/fancy{ dir = 1 @@ -22888,6 +23566,13 @@ "woM" = ( /turf/open/transparent/openspace, /area/rogue/indoors/shelter/town/dwarf) +"woZ" = ( +/obj/structure/mineral_door/wood{ + lockid = "apartment1"; + name = "apartment I" + }, +/turf/open/floor/rogue/wood/nosmooth/saiga, +/area/rogue/indoors/town) "wpE" = ( /obj/structure/mineral_door/bars{ locked = 1; @@ -22990,6 +23675,12 @@ ambush_mobs = list(/mob/living/simple_animal/hostile/retaliate/rogue/wolf = 50); name = "vulf cave" }) +"wwf" = ( +/obj/structure/table/wood/plain_alt, +/obj/item/paper, +/obj/item/natural/feather, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "wwn" = ( /obj/structure/table/wood/large/corner_new{ dir = 5 @@ -23211,6 +23902,7 @@ /obj/structure/chair/wood/rogue{ dir = 8 }, +/obj/effect/decal/shadow_floor, /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/indoors/town/tavern/saiga) "wIH" = ( @@ -23219,6 +23911,16 @@ }, /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/dwarfin) +"wJb" = ( +/obj/structure/table/wood/counter{ + dir = 4 + }, +/obj/structure/fluff/millstone{ + pixel_x = 6; + pixel_y = 2 + }, +/turf/open/floor/rogue/cobble/alt, +/area/rogue/indoors) "wJc" = ( /turf/closed/wall/mineral/rogue/wooddark/end{ dir = 1; @@ -23263,6 +23965,10 @@ "wLo" = ( /obj/structure/bed/rogue/shit, /obj/item/rogueweapon/knife/stone, +/obj/effect/landmark/start/vagrant{ + dir = 4; + icon_state = "arrow" + }, /turf/open/floor/rogue/dirt/road, /area/rogue/indoors) "wLM" = ( @@ -23400,6 +24106,14 @@ }, /turf/open/floor/rogue/concrete, /area/rogue/indoors/town/dwarfin) +"wRg" = ( +/obj/machinery/light/rogue/torchholder/cold{ + dir = 4; + pixel_x = -1; + pixel_y = -2 + }, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "wRi" = ( /obj/structure/mineral_door/bars{ locked = 1; @@ -23479,11 +24193,12 @@ /turf/open/floor/rogue/ruinedwood/spiralfade, /area/rogue/outdoors/exposed/under/basement) "wUd" = ( -/obj/structure/mineral_door/wood/deadbolt{ - dir = 8; - icon_state = "wooddir" +/obj/structure/fluff/railing/border{ + dir = 4 }, -/turf/open/floor/rogue/dirt, +/obj/structure/fermenting_barrel, +/obj/effect/decal/cleanable/dirt/cobweb, +/turf/open/floor/rogue/wood/saiga, /area/rogue/indoors) "wUf" = ( /obj/structure/roguemachine/mail, @@ -23504,6 +24219,14 @@ /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/twig, /area/rogue/indoors/town/tavern/saiga) +"wVA" = ( +/obj/structure/flora/roguegrass, +/obj/structure/mineral_door/bars{ + locked = 1; + lockid = "manor" + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "wVF" = ( /obj/structure/bars/pipe, /turf/closed/wall/mineral/rogue/decostone/fluffstone/reddish, @@ -23526,6 +24249,14 @@ }, /turf/open/transparent/openspace, /area/rogue/outdoors) +"wWH" = ( +/obj/structure/mineral_door/wood/fancywood{ + name = "mercenary guild"; + locked = 1; + lockid = "mercenary" + }, +/turf/open/floor/rogue/ruinedwood/spiralfade, +/area/rogue/indoors/town) "wXm" = ( /obj/structure/flora/rock/pile, /turf/open/water/river{ @@ -23886,11 +24617,13 @@ /turf/open/floor/rogue/cobble/alt, /area/rogue/under/town/basement) "xpT" = ( -/obj/effect/decal/cleanable/blood/tracks{ +/obj/machinery/light/rogue/torchholder/cold, +/obj/effect/decal/turfedge_neu/alt{ dir = 10 }, +/obj/structure/flora/roguegrass, /turf/open/floor/rogue/grass, -/area/rogue/outdoors/rtfield/hamlet) +/area/rogue/outdoors/exposed/town/hamlet) "xpU" = ( /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood_neu/random, @@ -24014,13 +24747,9 @@ }, /area/rogue/indoors) "xuV" = ( -/obj/structure/chair/wood/rogue{ - dir = 8 - }, -/obj/effect/decal/shadow_floor{ - dir = 4 - }, -/turf/open/floor/rogue/ruinedwood/spiralfade, +/obj/structure/bed/rogue/inn/double, +/obj/item/bedsheet/rogue/fabric_double, +/turf/open/floor/rogue/carpet/green, /area/rogue/indoors/town/tavern/saiga) "xvb" = ( /turf/closed/wall/mineral/rogue/stonebrick, @@ -24106,6 +24835,12 @@ }, /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/magician) +"xyg" = ( +/obj/structure/flora/roguegrass, +/obj/machinery/light/rogue/torchholder/cold, +/obj/structure/fluff/statue/gargoyle/candles, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/exposed/town/hamlet) "xyA" = ( /obj/structure/table/wood{ dir = 10; @@ -24304,6 +25039,13 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave/abandoned_mine) +"xII" = ( +/obj/effect/decal/turfedge_neu/road, +/obj/machinery/light/rogue/firebowl/stump{ + pixel_y = 8 + }, +/turf/open/floor/rogue/grass, +/area/rogue/outdoors/rtfield/hamlet) "xIT" = ( /obj/structure/fluff/clock, /turf/open/floor/rogue/herringbone, @@ -24393,6 +25135,13 @@ }, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) +"xNh" = ( +/obj/machinery/light/rogue/torchholder{ + dir = 8; + icon_state = "torchwall1" + }, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "xNU" = ( /obj/structure/fluff/railing/stonehedge{ dir = 8; @@ -24426,6 +25175,10 @@ /obj/structure/bars, /turf/closed/mineral/rogue, /area/rogue/under/cave) +"xPf" = ( +/obj/structure/flora/roguegrass/bush/wall/tall, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/exposed/town/hamlet) "xPp" = ( /obj/machinery/light/rogue/firebowl/standing, /turf/open/floor/rogue/grass, @@ -24466,8 +25219,13 @@ /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/magician) "xQc" = ( -/obj/structure/flora/roguegrass, -/obj/structure/flora/roguetree/burnt, +/obj/machinery/light/rogue/wallfire/candle/weak{ + pixel_y = -17 + }, +/obj/structure/flora/roguegrass/bush{ + pixel_x = 1; + pixel_y = 7 + }, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/exposed/town/hamlet) "xQe" = ( @@ -24541,6 +25299,11 @@ "xSd" = ( /turf/closed/wall/mineral/rogue/craftstone, /area/rogue/outdoors/exposed/under/basement) +"xTq" = ( +/obj/structure/flora/roguegrass, +/obj/effect/spawner/roguemap/treeorstump, +/turf/open/floor/rogue/dirt/road, +/area/rogue/outdoors/exposed/town/hamlet) "xTr" = ( /turf/open/transparent/openspace, /area/rogue/indoors/town/tavern) @@ -24600,14 +25363,12 @@ /turf/open/floor/rogue/tile/bath, /area/rogue/indoors/town/bath/redhouse) "xWm" = ( -/obj/structure/fluff/railing/border{ - dir = 10; - icon_state = "border" - }, -/turf/open/floor/rogue/rooftop/green{ - dir = 8 +/obj/structure/flora/roguegrass/bush{ + pixel_x = 1; + pixel_y = 7 }, -/area/rogue/outdoors/town/roofs) +/turf/open/floor/rogue/woodturned/saiga, +/area/rogue/indoors/town/tavern/saiga) "xWC" = ( /obj/structure/flora/roguegrass, /turf/open/floor/rogue/dirt/road, @@ -24756,6 +25517,13 @@ "ydO" = ( /turf/open/floor/rogue/rooftop/green, /area/rogue/outdoors/town/roofs) +"ydU" = ( +/obj/structure/roguewindow/openclose{ + dir = 8; + icon_state = "woodwindowdir" + }, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors) "yee" = ( /obj/structure/stairs/stone, /turf/open/floor/rogue/dirt/road, @@ -57555,14 +58323,14 @@ hQx uJn hZX hZX -mDZ -mDZ -fyl -fyl -fyl -fyl -fyl -fyl +czT +czT +pjU +pjU +pjU +pjU +pjU +pjU pjU faa dZq @@ -57749,16 +58517,16 @@ hZX hZX hZX hZX -mDZ -mDZ -pjU -pjU -pjU -pjU -pjU -pjU -pjU -nFQ +czT +wjY +fji +pHx +wWH +khl +aBZ +khl +dpt +wAB wAB wAB wAB @@ -57944,14 +58712,14 @@ hZX hZX mDZ czT -fyl -tFN -dDA -nTe -nTe -nTe +tVv +erc +erc +ePz +vwt +khl eED -mbn +tFN wYZ dZq dZq @@ -58139,13 +58907,13 @@ czT czT czT czT -qer -erc -nTe -nTe -nTe -dVw -mbn +sVF +dOM +ePz +gbd +khl +tFN +tFN uxt uxt uxt @@ -58333,13 +59101,13 @@ ePz pkV pkV czT -mbn -mbn -bsB -rAW -fqW -mbn -mbn +tFN +dVw +ePz +ePz +dpt +tFN +tFN wAB wAB dZq @@ -58527,7 +59295,7 @@ iId aUb pkV czT -dZq +sTo dZq dZq wAB @@ -61080,7 +61848,7 @@ pKw pLb yin xHC -ttP +kGN pLb czT xoR @@ -61300,7 +62068,7 @@ kZt kZt kZt bZQ -tMa +wbn pfh dZq dZq @@ -62286,7 +63054,7 @@ dZq dZq dZq dZq -bsm +dZq bsm bsm bsm @@ -62480,7 +63248,7 @@ xkE oII xkE vWP -uJn +oII skw hQx uJn @@ -62674,7 +63442,7 @@ dZq dZq dZq dZq -hQx +wAB bsm bsm bsm @@ -62862,14 +63630,14 @@ lXE dEn mbu aJg -xkE -xkE -vWP -xkE -vWP -vWP fyl -hQx +fyl +mDZ +fyl +fyl +fyl +fyl +fyl jxi cUw jRP @@ -63006,7 +63774,7 @@ myP nxX nfd myP -heD +cdd vhT pSa tSI @@ -63055,15 +63823,15 @@ gqx xkE xkE xkE -oAo -xkE -hDi -gcU -ndb -gcU -hDi +qIo +fyl +fyl +fyl +fyl +oHv +fyl gFp -bsm +fyl fyl fyl fyl @@ -63249,15 +64017,15 @@ edO tzw xkE xkE -oAo -xkE -gcU -bvw -cke -cke -gcU -mDZ -bsm +qIo +fyl +fyl +fyl +fyl +fyl +fyl +fyl +fyl fyl fyl fyl @@ -63443,13 +64211,13 @@ xkE xkE pVX xkE -vWP -xkE -gcU -cke -cke -cke -gcU +mDZ +fyl +oHv +fyl +fyl +gFp +fyl fyl fyl gFp @@ -63637,15 +64405,7 @@ vWP xkE xkE oUl -xkE -xkE -gcU -hIe -cke -hPR -gcU fyl -hQx fyl fyl fyl @@ -63654,6 +64414,14 @@ fyl fyl fyl oHv +fyl +fyl +oHv +fyl +fyl +fyl +fyl +oHv oHv fyl fyl @@ -63785,7 +64553,7 @@ myP rqW wBy jEV -ezr +tos hes pSa dZq @@ -63831,15 +64599,15 @@ xkE dZq vWP xkE -cEy -xkE -hDi -gcU -wUd -gcU -hDi -mDZ -bsm +ouU +fyl +fyl +oHv +fyl +fyl +oHv +fyl +fyl fyl fyl fyl @@ -63980,7 +64748,7 @@ osa wOM uYS tma -uKw +tos pSa wAB cpM @@ -64367,8 +65135,8 @@ xab pSa pSa pSa -pSa -pSa +dqs +rQz rSm sQV cpM @@ -64385,9 +65153,9 @@ hZX hZX hZX hZX -fVh -hQQ -hQQ +nzY +hCy +hCy nzY sxt cmB @@ -64560,10 +65328,10 @@ lYm xwl fmG fGl -cvO -xkE -xkE -xkE +jRc +hDV +iqK +rSm wAB vcz cpM @@ -64577,11 +65345,11 @@ fyl hQx hZX hZX -uJn -uJn -mDZ -mDZ -mDZ +oII +oII +vWP +vWP +vWP hCy jBZ qtH @@ -64754,10 +65522,10 @@ tos gas nAt fGl -xkE -xkE -xkE -xkE +oFq +rjz +mPQ +pSa xkE bHN dZq @@ -64775,7 +65543,7 @@ hDi gcU gcU hDi -aLP +mmT nzY slK ezz @@ -64948,15 +65716,15 @@ tos tos xIU fGl -xkE -xkE -xkE -xkE -wAB -xkE -xkE +ftR +iMX +aqt +pSa wAB xkE +mzO +fGK +iVS dZq wAB wAB @@ -64969,7 +65737,7 @@ wLo cke cke gcU -nOu +vJb nzY tOb jSb @@ -65142,28 +65910,28 @@ fEa vTl sJk sAY -xkE -xkE -xkE -xkE +sYc +iMX +aqt +pSa wAB aSg -wAB -dZq -xkE -xkE +gyK +ret +bsB xkE wAB +wAB czT fyl hZX hZX gcU -bsm -bsm +dZq +dZq cke gcU -mDZ +vWP uxt lop sxt @@ -65190,7 +65958,7 @@ gcU wiL xkE izp -fyl +iIc fyl fyl fyl @@ -65336,37 +66104,37 @@ egz cTv rSm rSm -fZg -xkE +pSa +eZF +pSa +rSm dZq wAB +nTw +uBT +ozu +xkE dZq wAB -wAB -aSg -xkE -xkE -xkE -czT czT fyl hZX hZX hDi gcU -hQx -hQx +wAB +wAB +hDi +vWP +pjk +gcU +lNk +lNk +gcU +hDi +gcU +gcU hDi -mDZ -rvj -uxt -uxt -uxt -hCy -uxt -uxt -uxt -xFM rvj vWP wAB @@ -65380,11 +66148,11 @@ qDr rng msG msG -gcU -ePk -dZq -mDZ -fyl +hDi +oTL +xqm +oTL +hDi fyl fyl fyl @@ -65524,48 +66292,48 @@ fwO vWg dZq dZq -fwO +slb vWg dxL heN dZq -hDV -wAB dZq +dDA +dZq +sQV wAB wAB wAB wAB +dDA +cZj wAB -wAB -xkE -xkE -vWP +oII +xPf czT fyl -fyl hZX hZX -uJn -dHw -mDZ -hQx -bsm -bsm -bsm -lNY -hQx -bsm -bsm -bsm -hQx -bsm -hQx -uJn -hQx -hQx -bsm -mEv +oII +oUl +vWP +wAB +dZq +dZq +gcU +gcU +nDW +rSx +ehQ +jEO +ouc +qIq +gcU +oII +wAB +wAB +dZq +oOX xkE hDi gcU @@ -65574,11 +66342,11 @@ gcU gwL eai gwL -hDi -fQB -dZq -fyl -fyl +gcU +wsP +wsP +wsP +gcU fyl oHv fyl @@ -65731,35 +66499,35 @@ ahG ahG hXw dZq -wAB -hQC -oII -hTa czT -fyl +dZd +gQz +dZd +dZd +czT fyl hZX hZX alS -mDZ -fyl -fyl -bsm -hDi -gcU -gcU -hDi -hQx -hDi +vWP +xkE +xkE +dZq +dZq gcU -lSo +okV +dVD +dVD +dVD +vKA +tem +tem gcU -hDi -fyl -pnA -bsm -bsm -ocQ +xkE +vdi +dZq +dZq +fVh xkE xkE pZz @@ -65768,11 +66536,11 @@ nnd rzl rzl rzl -mDZ -fyl -fyl -pVa -fyl +gcU +uck +jVr +wsP +gcU fyl fyl fyl @@ -65925,11 +66693,11 @@ tcZ fIp wVF dZq -wAB -czT -ePz -ePz -ePz +dZd +fxC +uKw +hQC +hTa czT fyl hZX @@ -65938,21 +66706,21 @@ hDi gcU gcU hDi -fyl -lmG -cke -cke -gcU -bsm +uxt +wVA gcU +jwH +dVD +dVD +vQc ubZ -cke +fTp tem -wEq -mDZ -kRc -bsm -bsm +gcU +nFQ +oZl +dZq +dZq pdD xkE xkE @@ -65962,11 +66730,11 @@ xkE xkE xkE xkE -hQx -fyl -fyl -xtZ -fyl +hDi +gcU +gcU +gcU +hDi fyl fyl oHv @@ -66118,9 +66886,9 @@ vMY geB sFL wVF -vVI wAB -pLb +woZ +iLY iLY iLY iLY @@ -66129,31 +66897,31 @@ fyl hZX hZX gcU -kGN +gcU iyr -voW +gcU xpT -mmT -bsm -qAe -iJO -bsm +dZq +hDi +mAQ +qNw +mAQ +lNk gcU -cke -cke +wJb chx -mmT -fyl -kRc -bsm -bsm -hQx -pxU -xkE -wAB +gcU +bbX +oZl dZq dZq wAB +xTq +xkE +wAB +xNh +qfy +wAB dZq vWP mDZ @@ -66313,11 +67081,11 @@ aFy sFL wVF xQc -wAB +dZd dFG iLY iLY -iLY +tRA pLb fyl hZX @@ -66325,31 +67093,31 @@ hZX gcU hIX dVD -gcU -ksW -wEq -bGy -bsm -gcU -bsm +nYb +sfQ +dZq +wRg +tXa +rYq +pfh +dZq hDi -gcU iJO -gcU -tVv -mDZ -kQr -bsm -bsm -lmb -gFp -fyl -fyl -hDi -oTL -xqm -oTL +iJO hDi +xyg +lRv +dZq +dZq +pms +lGx +pVC +lGx +pms +xkE +xkE +xkE +xkE fyl fyl fyl @@ -66509,43 +67277,43 @@ wVF czT czT pLb -iLY -iLY -iLY +bpv +cAR +fhS pLb fyl hZX hZX -hDi gcU -gcU -hDi -hQx -tVv -gcU -gcU -hDi +mvV +dVD mAQ -hQx -mDZ -lmG -lMr -uJn -fyl -lmG -bsm -bsm -gGN +qsl +dZq +dZq +dZq +dZq +dZq +wAB +vIp +pxU +pxU +oII +dZq +pxU +dZq +dZq +lGx +skJ +dZq +dZq +lGx +xkE +xkE +xkE +xkE fyl mDZ -mDZ -gcU -wsP -wsP -wsP -gcU -dsO -mDZ gFp fyl gFp @@ -66710,34 +67478,34 @@ czT fyl hZX hZX -uJn -dTD -vJm -mDZ -fyl -hQx -bsm -fyl -ebb -nDW -jeY -hDi gcU +dTD +rmk gcU -hDi -mDZ -kRc -bsm -hQx -lmb -fyl -fyl -mDZ -gcU -uck -jVr -wsP -gcU +vJb +wAB +dZq +pjT +wAB +dZq +dZq +mgZ +fdZ +mGt +dZq +pxU +heD +dZq +wAB +lGx +dZq +dZq +dZq +lGx +xkE +xkE +xkE +xkE mDZ fyl fyl @@ -66908,30 +67676,30 @@ hDi gcU gcU hDi -fyl -bsm -tTP -bsm -bsm -iIc -hQx -gcU -rCi -bGy -gcU -mDZ -kRc -bsm -bsm -lmb -fyl -fyl -mDZ +ivG +fdZ +mGt +dZq +dZq hDi -gcU -gcU -gcU +lNk +mAQ +rCi +mAQ +lNk hDi +oZl +dZq +dZq +lGx +bjw +dZq +mTt +lGx +xkE +xkE +xkE +xkE mDZ gFp fyl @@ -67100,32 +67868,32 @@ hZX hZX gcU qiW -lVz -gcU -fyl +msG +lNk +mAQ +cBN hDi -evu -gcU +dZq +dZq gcU -hDi -bsm +ojc +dVD +dVD +dVD +dBl gcU -cke -cke -gmh -fyl -fyl -bsm -bsm -lmb -fyl -fyl -gFp -mDZ -mDZ -gFp -mDZ -mDZ +xkE +dZq +dZq +pms +lGx +oPc +lGx +pms +vWP +itU +vWP +vWP fyl fyl fyl @@ -67294,32 +68062,32 @@ hZX uJn gcU vOf -lGx +msG hHu -bbX +dVD +dVD gcU -pNI -cke -hPR +dZq +dZq gcU -bsm gcU -fdZ -cke -lSo -mDZ +vwJ +hDi +jwH +mvV +gcU fOm -hQx -bsm -gGN -fyl -fyl -fyl -fyl -fyl -fyl -fyl -fyl +wAB +dZq +dTS +dZq +dZq +xkE +xkE +xkE +xkE +xkE +xkE fyl fyl fyl @@ -67486,26 +68254,26 @@ iIw iIw iIw mDZ -gkO -qNw -gGu gcU -fyl gcU -ivG -ehQ -lNk +gGu +dBl +mvV +kaz gcU -hQx -hDi +dZq +dZq gcU +hSz +tem +gcU +dVD +dVD gcU -hDi -hwt bsm hQx bsm -gGN +xII fyl gFp fyl @@ -67681,21 +68449,21 @@ iIw iIw mDZ hDi -mYL +gcU +lNk +lNk +lNk gcU hDi -mDZ -hDi +dfE +dZq gcU -lSo +lNY +tem +gcU +pWa +atK gcU -hDi -hQx -bsm -hQx -hQx -hQx -hQx kRc hQx bsm @@ -67881,16 +68649,16 @@ mDZ mDZ mDZ fyl -mDZ -vJm -hQx -bsm +xzq +lRE hDi gcU gcU +gcU +gcU hDi -fyl -kRc +hDi +jeY hQx bsm lmb @@ -68663,7 +69431,7 @@ hQx gcU oko cke -hPR +lar gcU fyl jbh @@ -68850,7 +69618,7 @@ iIw iIw iIw mDZ -fDs +gcU hDi mDZ uJn @@ -69438,7 +70206,7 @@ oHv gcU cke cke -bGy +uiy gcU mDZ mDZ @@ -69828,7 +70596,7 @@ wEq lSo gcU hDi -kQr +mha hQx bsm bsm @@ -82202,7 +82970,7 @@ hZX hZX hZX oGx -bvj +nTe hZX hZX hZX @@ -82388,15 +83156,15 @@ hZX hZX hZX hZX -hZX -hZX -oGx -fbL -oGx -fbL -oGx -fbL -bvj +czT +czT +czT +czT +czT +czT +czT +czT +ePz hZX hZX hZX @@ -82582,15 +83350,15 @@ hZX hZX hZX hZX -hZX -oGx -qxN -qxN -qxN -qxN -qxN -qxN -bvj +czT +mlj +dsO +lBk +gkO +iWg +ePk +aJc +ePz hZX hZX hZX @@ -82776,15 +83544,15 @@ hZX hZX hZX hZX -fbL -fbL -qlr -eMo -eMo -ftR -ftR -ftR -mPQ +czT +pLJ +gkO +gkO +gkO +ePz +kQS +qZV +ePz hZX hZX hZX @@ -82970,15 +83738,15 @@ hZX hZX hZX hZX -vzv -heO -bvj -eqM -sIe -sIe -sIe -sIe -eZF +pLb +hQQ +dsO +hQQ +dsO +ePz +riE +mvQ +ePz hZX hZX hZX @@ -83165,14 +83933,14 @@ ePz ePz ePz czT -cZj -oFq -sIe -sIe -sIe -sIe -sIe -fxC +ePz +owy +ePz +owy +ePz +owy +ePz +ePz hZX hZX hZX @@ -87453,10 +88221,10 @@ xLU xLU xLU xLU -xLU -xLU -hZX -hZX +xhQ +eOQ +tXA +rxy hZX hZX hZX @@ -87648,9 +88416,9 @@ pSa pSa pSa rSm -ydO -hZX -hZX +kPl +xWm +mRM xLU eVI xLU @@ -87842,9 +88610,9 @@ shu shu shu pSa -ydO -hZX -hZX +ezr +tos +mRM xLU pjU dZd @@ -87890,11 +88658,11 @@ hZX hZX hZX hZX -krS -krS -tmw -tmw -tmw +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -88035,10 +88803,10 @@ hJB shu shu shu -pSa -ydO -hZX -hZX +ihX +oUR +tos +mRM xLU dZd cjO @@ -88084,11 +88852,11 @@ hZX hZX hZX hZX -krS -krS -krS -tmw -tmw +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -88230,9 +88998,9 @@ shu shu shu pSa -ydO -hZX -hZX +ezr +tos +mRM sIe dZd khl @@ -88278,11 +89046,11 @@ hZX hZX hZX hZX -krS -krS -tmw -tmw -tmw +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -88424,7 +89192,7 @@ shu shu shu rSm -pSa +eMo pSa pSa pSa @@ -88472,11 +89240,11 @@ hZX hZX hZX hZX -krS -krS -krS -tmw -tmw +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -88618,9 +89386,9 @@ shu shu shu pSa -cAR +vHi uwR -qOG +fqW lfn pSa dZd @@ -88666,11 +89434,11 @@ hZX hZX hZX hZX -krS -krS -tmw -tmw -tmw +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -88815,7 +89583,7 @@ pSa qpX qOG qOG -lfn +gZE pSa cjO nRE @@ -89009,7 +89777,7 @@ pSa ewN qOG qOG -lfn +cLL pSa khl khl @@ -90191,15 +90959,15 @@ hZX hZX gAV hZX -mZW -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +hDi +gcU +hxP +gcU +hDi +gcU +gcU +gcU +hDi pha hZX hZX @@ -90385,15 +91153,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -eoL -hZX -hZX -hZX -hZX -hZX +gcU +peS +dVD +bsZ +gcU +aXb +fWg +hzh +gcU hZX hZX hZX @@ -90564,10 +91332,10 @@ xLU xLU ydO hZX -hZX -hZX -hZX -pVp +pjU +dZd +dZd +pjU qxN fbL hZX @@ -90578,16 +91346,16 @@ hZX hZX hZX hZX -tmw -tmw -tmw -tmw hZX -gAV -gAV -gAV -gAV -gAV +gcU +dEV +dVD +dVD +hIe +dVD +dVD +dVD +gcU hZX hZX hZX @@ -90757,31 +91525,31 @@ qTS mMx mgH ydO -hZX -hZX -xLU -xLU -phY +pjU +ePz +fxC +iLY +dZd qxN qxN oGx hZX hZX -nhf -nhf -nhf -nhf -hZX +hDi +gcU +gcU +hDi hZX -tmw -tmw -tmw hZX -gAV -gAV -gAV -gAV -gAV +gcU +fDs +wwf +ehQ +gcU +wcr +dVD +dVD +gcU hZX hZX hZX @@ -90951,31 +91719,31 @@ xtl xtl qTS ydO -hZX -hZX -xLU -xLU -xWm -aqt +dZd +cjt +iLY +bpv +dZd +qxN qxN fbL hZX hZX -nhf -nhf -nhf -nhf -hZX -tmw -hZX +gcU +qWu +iVZ +gcU hZX -tmw hZX -gAV -jmK -gAV -jmK -gAV +hDi +lNk +ydU +lNk +hDi +wwJ +vpy +mYL +gcU hZX hZX hZX @@ -91145,44 +91913,44 @@ xtl xtl qTS ydO -ihX -tXA -eOQ +dZd +siB +iLY hzg -xLU -jRc +dZd +qxN qxN oGx hZX hZX -gAV -gAV -gAV -gAV +gcU +vut +uHf +gcU hZX -tmw -rst hZX -tmw hZX -jmK -jmK -jmK -gAV -gAV hZX hZX hZX hZX +hDi +ydU +ydU +hDi +hZX +hZX +hZX +hZX +krS +krS +krS +tmw +tmw hZX hZX hZX hZX -nhf -nhf -nhf -nhf -nhf hZX hZX hZX @@ -91339,25 +92107,21 @@ qTS mMx uPR qxN -qxN -qxN -qxN -iMX -gNu +pjU +dZd +dZC +dZd +pjU fbL dmX fbL hZX hZX -gAV -pZn -gAV -gAV +gcU +fSG +msG +nRs hZX -tmw -tmw -rst -tmw hZX hZX hZX @@ -91372,11 +92136,15 @@ hZX hZX hZX hZX -nhf -nhf -nhf -nhf -nhf +krS +krS +tmw +tmw +tmw +hZX +hZX +hZX +hZX hZX hZX hZX @@ -91500,107 +92268,107 @@ hZX hZX hZX hZX -gfN -fCr -iFi -iFi -pdp -gfN -pdp -pdp -pdp -pdp -pdp -jwS -khA -svq -tXA -tXA -tXA -tXA -tXA -tXA -xEM -htm -kYM -qPT -xMw -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qwa -oGx -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -tmw -tmw -tmw -rst -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -gAV -gAV -gAV -gAV -gAV -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +gfN +fCr +iFi +iFi +pdp +gfN +pdp +pdp +pdp +pdp +pdp +jwS +khA +svq +tXA +tXA +tXA +tXA +tXA +tXA +xEM +htm +kYM +qPT +xMw +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qwa +oGx +hZX +hZX +gcU +myU +ebb +gcU +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +krS +krS +krS +tmw +tmw +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -91737,20 +92505,29 @@ oGx fbL hZX hZX -tmw -tmw -tmw -tmw +hDi +gcU +gcU +hDi eoL hZX hZX hZX hZX +nhf +nhf +nhf +nhf +nhf +nhf +nhf hZX hZX +hZX +krS +krS tmw tmw -rst tmw hZX hZX @@ -91760,15 +92537,6 @@ hZX hZX hZX hZX -gAV -gAV -gAV -gAV -gAV -hZX -hZX -hZX -hZX hZX hZX hZX @@ -91931,30 +92699,30 @@ hZX hZX hZX hZX -tmw -rst -eDh -tmw -hZX -gAV -gAV -gAV -gAV -gAV -hZX -tmw -tmw -tmw -rst -hZX -hZX -hZX -hZX +gcU +wUd +tTP +lNk +gcU +lkn +hDi hZX hZX +nhf +nhf +nhf +nhf +nhf +nhf +nhf hZX hZX hZX +krS +krS +krS +tmw +tmw hZX hZX hZX @@ -92125,22 +92893,22 @@ hZX hZX hZX hZX -rst -hZX -hZX -tmw -hZX -gAV -jmK -gAV -gAV -gAV +gcU +cvN +voW +msG +lxA +msG +gcU hZX -tmw -tmw -tmw -rst hZX +nhf +nhf +nhf +nhf +nhf +nhf +nhf hZX hZX hZX @@ -92280,81 +93048,81 @@ hZX hZX hZX hZX -vzv -qwa -qxN -qxN -qxN -qxN -qxN -qxN -qxN -qxN -oGx -vvy -vvy -hZX -hZX -pzV -xEM -fFI -qlB -qlB -rpQ -hMd -fqp -htm -kAp -kAp -fYq -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -rst -tmw -hZX -hZX -hZX -jmK -gAV -gAV -hZX -tmw -tmw -tmw -tmw -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +vzv +qwa +qxN +qxN +qxN +qxN +qxN +qxN +qxN +qxN +oGx +vvy +vvy +hZX +hZX +pzV +xEM +fFI +qlB +qlB +rpQ +hMd +fqp +htm +kAp +kAp +fYq +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +gcU +kMz +msG +msG +oAo +ebb +gcU +hZX +hZX +gAV +gAV +gAV +gAV +gAV +gAV +gAV +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -92513,22 +93281,22 @@ hZX hZX hZX hZX -rst +hDi +gcU +gcU +fQB +gcU +gcU +hDi hZX -tmw -tmw hZX gAV gAV gAV gAV gAV -hZX -hZX -hZX -hZX -hZX -hZX +gAV +gAV hZX hZX hZX @@ -92716,13 +93484,13 @@ hZX hZX hZX hZX -hZX -hZX -tmw -tmw -tmw -tmw -hZX +gAV +gAV +gAV +gAV +gAV +gAV +gAV hZX hZX hZX @@ -93683,7 +94451,7 @@ hZX hZX hZX hZX -hZX +gAV jmK hZX hZX @@ -107221,15 +107989,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +gNu +gNu +fZg +gNu +fZg +gNu +fZg +gNu +qlr hZX hZX hZX @@ -107415,15 +108183,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +gNu +gNu +qxN +qxN +qxN +qxN +qxN +qxN +bvj hZX hZX hZX @@ -107610,14 +108378,14 @@ hZX hZX hZX fbL -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +gNu +qxN +mYT +vVI +vVI +vVI +vVI +vVI hZX hZX hZX @@ -107803,15 +108571,15 @@ oGx fbL oGx fbL -fTp -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +vzv +dZv +qxN +obx +sIe +sIe +sIe +sIe +sIe hZX hZX hZX @@ -107998,14 +108766,14 @@ qxN qxN qxN qxN -edB -hZX -hZX -hZX -hZX -hZX -hZX -hZX +qxN +qxN +obx +sIe +sIe +sIe +sIe +sIe hZX hZX hZX @@ -108192,9 +108960,9 @@ sPk mMY mMY mMY -edB -hZX hZX +rEp +edB hZX hZX hZX @@ -109419,12 +110187,12 @@ hZX hZX hZX hZX -nhf -nhf -nhf -nhf -nhf -nhf +hZX +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -109613,12 +110381,12 @@ hZX hZX hZX hZX -nhf -nhf -nhf -nhf -nhf -nhf +hZX +hZX +hZX +hZX +hZX +hZX hZX hZX hZX @@ -109807,12 +110575,12 @@ hZX hZX hZX hZX -pZn -krS -krS -krS -krS -krS +nhf +nhf +nhf +nhf +nhf +nhf hZX hZX hZX @@ -110001,12 +110769,12 @@ hZX hZX hZX hZX -gAV -gAV nhf -gAV nhf -gAV +nhf +nhf +nhf +nhf hZX hZX hZX @@ -110195,12 +110963,12 @@ hZX hZX hZX hZX -gAV -gAV -gAV -gAV -gAV -gAV +pZn +krS +krS +krS +krS +krS hZX hZX hZX @@ -110389,12 +111157,12 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX +gAV +gAV +nhf +gAV +nhf +gAV hZX hZX hZX @@ -110583,12 +111351,12 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX +gAV +gAV +gAV +gAV +gAV +gAV hZX hZX hZX @@ -115024,15 +115792,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +iPk +iPk +iPk +iPk +iPk +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115218,15 +115986,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +iPk +iPk +iPk +iPk +iPk +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115396,6 +116164,11 @@ hZX hZX hZX hZX +act +act +act +act +act hZX hZX hZX @@ -115407,20 +116180,15 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tcu +tcu +tcu +tcu +tcu +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115590,31 +116358,31 @@ xLU xLU xLU hZX +act +act +act +act +act hZX hZX hZX hZX hZX +tcu +tcu +hvS +hvS hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tTf +tTf +tTf +tTf +tTf +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115784,31 +116552,31 @@ tPK tPK xLU hZX +act +act +act +act +act hZX hZX hZX hZX hZX +tcu +tcu +hvS +hvS hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tTf +tTf +tTf +tTf +tTf +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115978,16 +116746,20 @@ tPK tPK xLU hZX -hZX -hZX -hZX -hZX -hZX +wcF +wcF +wcF +wcF +wcF khA tXA rxy hZX hZX +tcu +tcu +hvS +hvS hZX hZX hZX @@ -115995,14 +116767,10 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tcu +tcu +hvS +hvS hZX hZX hZX @@ -116172,20 +116940,20 @@ ydO ydO ydO hZX -hZX -hZX -hZX -hZX -khA +wcF +wcF +wcF +wcF +ofL fbL ndi fbL hZX hZX -hZX -hZX -hZX -hZX +tcu +tcu +hvS +hvS hZX hZX hZX @@ -116376,10 +117144,10 @@ qwa oGx hZX hZX -hZX -hZX -hZX -hZX +tcu +tcu +hvS +hvS hZX hZX hZX @@ -116570,10 +117338,10 @@ oGx fbL hZX hZX -hZX -hZX -hZX -hZX +tcu +tcu +hvS +hvS hZX hZX hZX @@ -116764,13 +117532,13 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +iPk +iPk +iPk +iPk +iPk +iPk +iPk hZX hZX hZX @@ -116958,13 +117726,13 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +iPk +iPk +iPk +iPk +iPk +iPk +iPk hZX hZX hZX @@ -117152,13 +117920,13 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tTf +tTf +tTf +tTf +tTf +tTf +tTf hZX hZX hZX @@ -117346,13 +118114,13 @@ hZX hZX hZX hZX -hZX -hZX -hZX -hZX -hZX -hZX -hZX +tTf +tTf +tTf +tTf +tTf +tTf +tTf hZX hZX hZX diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 8498f16bc8a..bca29bd657f 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -182,3 +182,15 @@ if("Dunked in water") return CLOTHING_WET + +//Kaizoku Assets. + +#define CLOTHING_RONIN "#861e1e" +#define CLOTHING_EIDOLON "#613a3f" +#define CLOTHING_TOWERYAKKO "#804d97" +#define CLOTHING_KABUKIMONO "#9b874f" + +#define CLOTHING_THUNDER "#be8b48" +#define CLOTHING_STORM "#1a2677" +#define CLOTHING_OCEAN "#56928a" +#define CLOTHING_ISLAND "#bd3541" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 0e55d96e771..6b3deae9b61 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -328,3 +328,7 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default. #define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs. #define BULLET_ACT_MISS "MISS" + +//Kaizoku Assets. + +#define MANCATCHER /datum/intent/polearm/thrust/mancatcher diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index a717ba2a834..9630a13cfd0 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -54,6 +54,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define ADMIN_SPAWNED_1 (1<<13) /// should not get harmed if this gets caught by an explosion? #define PREVENT_CONTENTS_EXPLOSION_1 (1<<14) +/// Is the thing currently spinning? +#define IS_SPINNING_1 (1<<15) //turf-only flags #define NOJAUNT_1 (1<<0) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index bcdab799e96..833b4f59298 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 33b9d61f188..19dab661b68 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -97,6 +97,10 @@ GLOBAL_LIST_INIT(our_forest_sex, typecacheof(list( #define issnowelf(A) (is_species(A, /datum/species/elf/snow)) #define ishalfelf(A) (is_species(A, /datum/species/human/halfelf)) #define istiefling(A) (is_species(A, /datum/species/tieberian)) +#define isabyssariad(A) (is_species(A, /datum/species/abyssariad)) +#define ischangeling(A) (is_species(A, /datum/species/abyssariad/changeling)) +#define isogrun(A) (is_species(A, /datum/species/abyssariad/ogrun)) +#define isskylancer(A) (is_species(A, /datum/species/abyssariad/skylancer)) //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index eec8f310074..8132bb002d2 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -419,6 +419,8 @@ #define SKIN_COLOR_COASTAL_ELF "e2b9a3" #define SKIN_COLOR_WOOD_ELF "c9a893" #define SKIN_COLOR_SEA_ELF "ba9882" +#define SKIN_COLOR_JUNGLE_ELF "ac8369" +#define SKIN_COLOR_SAVANNAH_ELF "9c6f52" #define SKIN_COLOR_SAND_ELF "5d4c41" //HUMEN SKIN TONES @@ -466,3 +468,41 @@ //SPECIAL SKIN TONES #define SKIN_COLOR_ROT "878f79" + +//DEFAULT ABYSSARIAD SKIN TONES +#define SKIN_COLOR_OATHBOUND_MUQIAN "ffe0d1" +#define SKIN_COLOR_OATHBOUND_KAIZOKU "fcccb3" +#define SKIN_COLOR_OATHBOUND_SHUHEN "edc6b3" +#define SKIN_COLOR_OATHBOUND_LINYOU "e2b9a3" +#define SKIN_COLOR_OATHBOUND_DUSTWALKER "d9a284" +#define SKIN_COLOR_WARPCASTER_MUQIAN "c9a893" +#define SKIN_COLOR_WARPCASTER_KAIZOKU "ba9882" +#define SKIN_COLOR_WARPCASTER_SHUHEN "99745d" +#define SKIN_COLOR_WARPCASTER_LINYOU "745441" +#define SKIN_COLOR_WARPCASTER_DUSTWALKER "302017" + +//SKYLANCER UNIQUE SKIN TONE +#define SKIN_COLOR_PEPPERSBLOW "771111" + +//OGRE SKIN TONES +#define SKIN_COLOR_DEFIANCE "bb5155" //RED DEFAULT +#define SKIN_COLOR_DEFIANCE_SANGUINE "771111" +#define SKIN_COLOR_STABILITY "6a9479" +#define SKIN_COLOR_STABILITY_INTELLECT "286940" +#define SKIN_COLOR_SERENITY "65a9ad" +#define SKIN_COLOR_SERENITY_PEACE "5958a3" +#define SKIN_COLOR_AUDACY "aa8e3a" +#define SKIN_COLOR_AUDACY_MYSTERY "635834" +#define SKIN_COLOR_BLANK_PURIFICATED "d8e1e2" + + +//UNDINE SKIN TONES +#define SKIN_COLOR_SWAMPCLAN "728400" //GREEN DEFAULT +#define SKIN_COLOR_JUNGLECLAN "7a5e1b" +#define SKIN_COLOR_LEAFCLAN "5ea889" +#define SKIN_COLOR_BOGCLAN "1b7a5e" +#define SKIN_COLOR_FORESTCLAN "5FB098" +#define SKIN_COLOR_SHADOWCLAN "60609e" +#define SKIN_COLOR_FIREBLOOMCLAN "E26846" +#define SKIN_COLOR_ABYSSALCLAN "a198b8" +s diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm index 276d6e20758..48840e403ba 100644 --- a/code/__DEFINES/roguetown.dm +++ b/code/__DEFINES/roguetown.dm @@ -1,10 +1,10 @@ //used in various places -#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie") +#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie", "abyssariad") -#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf","Tiefling", "Aasimar") +#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf","Tiefling", "Aasimar", "Changeling", "Skylancer", "Ogrun", "Undine") -#define ALL_TEMPLE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/pestra, /datum/patron/divine/malum, /datum/patron/divine/necra, /datum/patron/divine/dendor) -#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) +#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, /datum/patron/divine/necra, /datum/patron/divine/dendor, /datum/patron/divine/abyssor) +#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, /datum/patron/divine/abyssor) #define ALL_TEMPLAR_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/malum) #define PLATEHIT "plate" @@ -113,6 +113,7 @@ GLOBAL_LIST_EMPTY(job_respawn_delays) #define CTAG_GARRISON "CAT_GARRISON" #define CTAG_ADEPT "CAT_ADEPT" // Used for Adept class selection #define CTAG_CONSORT "CAT_CONSORT" // Consort classes +#define CTAG_HAND "CAT_HAND" // Hand classes /* String category tags diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 2f2d218d61a..37c39e9a438 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -66,6 +66,8 @@ #define SPAN_DELF "delf" #define SPAN_HELL "hellspeak" #define SPAN_BEAST "beast" +#define SPAN_ABYSSAL "abyssal" + //bitflag #defines for return value of the radio() proc. #define ITALICS 1 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 2ece2389850..fa78094a07a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -45,6 +45,8 @@ #define TRAIT_SHOCKIMMUNE "Shock Immunity" #define TRAIT_LONGSTRIDER "Longstrider" #define TRAIT_MOB_FIRE_IMMUNE "Fire Immune" // Not actual full immunity but reduces effect of fire_act() +#define TRAIT_KAIZOKU "Foglander Cultured" + #define TRAIT_BASHDOORS "bashdoors" #define TRAIT_NOMOOD "no_mood" @@ -112,6 +114,7 @@ GLOBAL_LIST_INIT(roguetraits, list( TRAIT_INTRAINING = "I'm going to be a knight someday! I can use training dummies more effectively than others.", TRAIT_MALUMFIRE = "My hands are blessed by Malum to forge items of superb quality.", TRAIT_MOB_FIRE_IMMUNE = span_info("I am not easily burned by flames."), + TRAIT_KAIZOKU = "Whether by birth or by learning, I've inherited the Islander ways instead of Imperial culture.", )) // trait accessor defines diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 58e07cbfe25..cfebc081cc0 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -49,9 +49,9 @@ GLOBAL_VAR(command_name) GLOB.station_name = newname #ifdef ROGUEWORLD - world.name = "ROGUEWORLD (18+)" + world.name = "STONEKEEP (18+)" #else - world.name = "ROGUETOWN (18+)" + world.name = "STONEKEEP (18+)" #endif #ifdef TESTSERVER world.name = "ROGUETOWN (TESTING)" diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 961f9235cb5..bf699e35101 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -274,11 +274,14 @@ SUBSYSTEM_DEF(mapping) ++space_levels_so_far add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE) +/* // Deprecated tg code, we don't have lavaland, thus we don't load it. // load mining if(config.minetype == "lavaland") LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND) else if (!isnull(config.minetype)) INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!") + */ + #endif if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen diff --git a/code/controllers/subsystem/rogue/devotion.dm b/code/controllers/subsystem/rogue/devotion.dm index 7b66375ef4d..f3852fa274e 100644 --- a/code/controllers/subsystem/rogue/devotion.dm +++ b/code/controllers/subsystem/rogue/devotion.dm @@ -173,3 +173,18 @@ to_chat(src, "I gained [prayersesh] devotion!") return to_chat(src, "I gained [prayersesh] devotion!") + +//kaizoku asset + +/datum/devotion/cleric_holder/proc/grant_spells_sohei(mob/living/carbon/human/H) + if(!H || !H.mind) + return + + var/datum/patron/A = H.patron + var/list/spelllist = list(/obj/effect/proc_holder/spell/invoked/icebind, A.t0) + for(var/spell_type in spelllist) + if(!spell_type || H.mind.has_spell(spell_type)) + continue + H.mind.AddSpell(new spell_type) + level = CLERIC_T0 + max_devotion = 150 diff --git a/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm b/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm index 73e1001a041..bb2ea816b1a 100644 --- a/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm +++ b/code/controllers/subsystem/rogue/triumphs/triumph_buy_datums/character/pick_any_class.dm @@ -38,7 +38,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) maximum_possible_slots = 0 @@ -60,6 +64,8 @@ continue if(CTAG_CONSORT in CHECKS.category_tags) continue + if(CTAG_HAND in CHECKS.category_tags) + continue possible_classes += CHECKS var/datum/advclass/C = input(H.client, "What is my class?", "Adventure") as null|anything in possible_classes diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index feae317bc58..575a194fa44 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_imperial) //Requires Imperial or 'else' 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(R.req_islander) //Requires Fog-island/Heartfell 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(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 9fdf8658aa9..f66a410b0d7 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -24,6 +24,8 @@ var/craftdiff = 1 var/sellprice = 0 //crafting diff, every diff removes 25% chance to craft + var/req_imperial = FALSE + var/req_islander = FALSE /* /datum/crafting_recipe/example name = "" diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 991b69763b8..0108aa1b124 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -56,8 +56,8 @@ if(M != user) mobsadjacent += M if(mobsadjacent.len) - chosenmob = input("[key] who?") in mobsadjacent - if(chosenmob) + chosenmob = input("[key] who?") as null|anything in mobsadjacent + if(istype(chosenmob)) if(user.Adjacent(chosenmob)) params = chosenmob.name adjacentaction(user, chosenmob) diff --git a/code/datums/gods/patrons/divine_pantheon.dm b/code/datums/gods/patrons/divine_pantheon.dm index d68675bac53..c0d5afa0339 100644 --- a/code/datums/gods/patrons/divine_pantheon.dm +++ b/code/datums/gods/patrons/divine_pantheon.dm @@ -47,6 +47,12 @@ flaws= "Reckless, Stubborn, Destructive" worshippers = "Sailors of the Sea and Sky, Horrid Sea-Creachers, Fog Islanders" sins = "Fear, Hubris, Trying to Tame the Seas" + t0 = /obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal + t1 = /obj/effect/proc_holder/spell/invoked/projectile/purify + t2 = /obj/effect/proc_holder/spell/invoked/icebind + t3 = null + // t3 = /obj/effect/proc_holder/spell/invoked/elemental //Not finished. + /datum/patron/divine/necra name = "Necra" diff --git a/code/datums/particle_weathers/_base.dm b/code/datums/particle_weathers/_base.dm index 3ba1d8fad29..619a5e25828 100644 --- a/code/datums/particle_weathers/_base.dm +++ b/code/datums/particle_weathers/_base.dm @@ -315,6 +315,9 @@ if(!obj_turf) return + if(!obj_turf.outdoor_effect) + return + if(obj_turf.outdoor_effect?.weatherproof) return diff --git a/code/datums/status_effects/rogue/debuff.dm b/code/datums/status_effects/rogue/debuff.dm index 1d6fb8ee40d..4bf87ce4646 100644 --- a/code/datums/status_effects/rogue/debuff.dm +++ b/code/datums/status_effects/rogue/debuff.dm @@ -405,3 +405,93 @@ name = "Chilled" desc = "I can barely feel my limbs!" icon_state = "chilled" + + +//////////////////////Kaizoku stuff////////////////// + +//frozentomb + +/datum/status_effect/abyssaltomb //Abyssor-followers should instantly break away from this coffin. + id = "abyssor_frozen" + status_type = STATUS_EFFECT_UNIQUE + duration = -1 + examine_text = "You've been frozen within an abyssal tomb." + alert_type = /atom/movable/screen/alert/status_effect/frozen + var/obj/structure/abyssaltomb/tomb + var/attempts = 0 // special feature that increases difficulty with each failed struggle attempt against the ice coffin. Or that's what I intended for it to be. + +/atom/movable/screen/alert/status_effect/frozen + name = "Abyssal Submission" + desc = "Imprisoned by frozen tides, beneath the deep blue." + icon_state = "intomb" + icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi' + +//Normal Freeze + +/atom/movable/screen/alert/status_effect/debuff/freezing //the abyss is cold. + name = "Abyssal Frostnip" + desc = "Frost-bitten and touched by the ancient god, seeping through time and existence. The god feels, spreads and carves your skin.\n" //that's abyssor. + icon_state = "freezing" + icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi' + +/atom/movable/screen/alert/status_effect/debuff/freezing/severe //the abyss is VERY cold. + name = "Abyssal Frostbite" + desc = "It carries his touch, the cold for those who trespassed his domain. Ice crystals carves patterns upon where he gazes, the stare is on you.\n" //that's abyssor. + icon_state = "freezing_severe" + icon = 'icons/roguetown/kaizoku/misc/screen_alert.dmi' + +/datum/status_effect/debuff/freezing + id = "freezing" + alert_type = /atom/movable/screen/alert/status_effect/debuff/freezing + duration = 30 SECONDS + effectedstats = list("speed" = -3, "endurance" = -2) + +/datum/status_effect/debuff/freezing/tick() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.adjustOxyLoss(-6, 0) //it will actually allow you to breath underwater. + if(prob(50)) + C.adjustFireLoss(2) + C.Jitter(3) + +/datum/status_effect/debuff/freezing/on_apply() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + to_chat(C, "The frigid spike manifests supernatural cold within me.") + +/datum/status_effect/debuff/freezing/on_remove() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.remove_status_effect(/datum/status_effect/debuff/freezing) + to_chat(C, "I feel the suffocating cold vanishing, as body warmth returns to me.") +// severe freezing + +/datum/status_effect/debuff/freezing + id = "freezing" + alert_type = /atom/movable/screen/alert/status_effect/debuff/freezing/severe + duration = 30 SECONDS + effectedstats = list("speed" = -5, "endurance" = -4, "strength" = -2) + +/datum/status_effect/debuff/freezing/severe/on_apply() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + if(C.has_status_effect(/datum/status_effect/debuff/freezing)) + C.remove_status_effect(/datum/status_effect/debuff/freezing) + to_chat(C, "The biting cold intensified. Cold, abyssal tendrils roams and invades the surface of my skin.") + else + to_chat(C, "Torturous, carving frost upon my core! It reaches down into my spine in soul-rending agony!") + return ..() + +/datum/status_effect/debuff/freezing/severe/on_remove() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.apply_status_effect(/datum/status_effect/debuff/freezing)// Allows transition from severe freezing to normal freezing. Your body is warming up. + to_chat(C, "The excruciating icy tendrils retreats, leaving behind a bone-chilling cold weighting upon my muscles.") + +/datum/status_effect/debuff/freezing/severe/tick() + if(iscarbon(owner)) + var/mob/living/carbon/C = owner + C.adjustOxyLoss(-6, 0) // Same underwater breathing + if(prob(50)) + C.adjustFireLoss(4) + C.Jitter(3) diff --git a/code/datums/stress/negative_events.dm b/code/datums/stress/negative_events.dm index 407f958255c..b4f9c22c481 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/area/roguetownareas.dm b/code/game/area/roguetownareas.dm index 46c82c49fa0..5b111b92383 100644 --- a/code/game/area/roguetownareas.dm +++ b/code/game/area/roguetownareas.dm @@ -54,15 +54,15 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town spookysounds = SPOOKY_CROWS spookynight = SPOOKY_GEN droning_sound = 'sound/music/area/townstreets.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' droning_sound_night = 'sound/music/area/sleeping.ogg' converted_type = /area/rogue/indoors/shelter /area/rogue/indoors/shelter icon_state = "shelter" - droning_sound = 'sound/music/area/townstreets.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' /area/rogue/outdoors/mountains name = "mountains" @@ -71,17 +71,17 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientnight = AMB_MOUNTAIN spookysounds = SPOOKY_GEN spookynight = SPOOKY_GEN - droning_sound = 'sound/music/area/townstreets.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' soundenv = 17 converted_type = /area/rogue/indoors/shelter/mountains /area/rogue/indoors/shelter/mountains icon_state = "mountains" - droning_sound = 'sound/music/area/townstreets.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' /area/rogue/outdoors/mountains/deception name = "deception" @@ -189,9 +189,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientnight = AMB_FORESTNIGHT spookysounds = SPOOKY_CROWS spookynight = SPOOKY_FOREST - droning_sound = 'sound/music/area/forest.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/forestnight.ogg' + droning_sound = 'sound/ambience/kaizoku/Sibilant.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Penumbra.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sibilant_night.ogg' soundenv = 15 ambush_times = list("night","dawn","dusk","day") ambush_types = list( @@ -206,9 +206,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/indoors/shelter/woods icon_state = "woods" - droning_sound = 'sound/music/area/forest.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/forestnight.ogg' + droning_sound = 'sound/ambience/kaizoku/Sussurus.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sibilant_night.ogg' /area/rogue/outdoors/woods_safe name = "woods" @@ -244,9 +244,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientnight = AMB_RIVERNIGHT spookysounds = SPOOKY_FROG spookynight = SPOOKY_FOREST - droning_sound = 'sound/music/area/forest.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/forestnight.ogg' + droning_sound = 'sound/ambience/kaizoku/Abyssanctum.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/kaizoku.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Abyssariad.ogg' converted_type = /area/rogue/indoors/shelter/woods /area/rogue/outdoors/bog @@ -282,9 +282,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town icon_state = "beach" ambientsounds = AMB_BEACH ambientnight = AMB_BEACH - droning_sound = 'sound/music/area/townstreets.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound = 'sound/ambience/kaizoku/Oceansanct.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Town_in_Rogue.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Defenestration.ogg' //// UNDER AREAS (no indoor rain sound usually) @@ -293,18 +293,18 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/under name = "basement" icon_state = "under" - droning_sound = 'sound/music/area/towngen.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound = 'sound/ambience/kaizoku/Oceansanct.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Town_in_Rogue.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Defenestration.ogg' soundenv = 8 plane = INDOOR_PLANE converted_type = /area/rogue/outdoors/exposed /area/rogue/outdoors/exposed icon_state = "exposed" - droning_sound = 'sound/music/area/towngen.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound = 'sound/ambience/kaizoku/Oceansanct.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Town_in_Rogue.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Defenestration.ogg' /area/rogue/under/cave name = "cave" @@ -313,9 +313,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientnight = AMB_GENCAVE spookysounds = SPOOKY_CAVE spookynight = SPOOKY_CAVE - droning_sound = 'sound/music/area/caves.ogg' - droning_sound_dusk = null - droning_sound_night = null + droning_sound = 'sound/ambience/kaizoku/Torment.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Bucolic.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Nebula.ogg' ambush_times = list("night","dawn","dusk","day") ambush_types = list( /turf/open/floor/rogue/dirt) @@ -328,9 +328,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/outdoors/caves icon_state = "caves" - droning_sound = 'sound/music/area/caves.ogg' - droning_sound_dusk = null - droning_sound_night = null + droning_sound = 'sound/ambience/kaizoku/Torment.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Bucolic.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Nebula.ogg' /area/rogue/under/town/caverogue/saltmine name = "salt mine" @@ -345,8 +345,8 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town spookysounds = SPOOKY_CAVE spookynight = SPOOKY_CAVE droning_sound = 'sound/music/area/caves.ogg' - droning_sound_dusk = null - droning_sound_night = null + droning_sound_dusk = 'sound/ambience/kaizoku/Bucolic.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Nebula.ogg' ambush_times = list("night","dawn","dusk","day") ambush_types = list( /turf/open/floor/rogue/dirt) @@ -385,8 +385,8 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town spookysounds = SPOOKY_CAVE spookynight = SPOOKY_CAVE droning_sound = 'sound/music/area/caves.ogg' - droning_sound_dusk = null - droning_sound_night = null + droning_sound_dusk = 'sound/ambience/kaizoku/Bucolic.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Nebula.ogg' ambush_times = list("night","dawn","dusk","day") ambush_types = list( /turf/open/water/swamp) @@ -473,9 +473,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/indoors/town name = "indoors" icon_state = "blueold" - droning_sound = 'sound/music/area/indoor.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' converted_type = /area/rogue/outdoors/exposed/town /area/rogue/outdoors/exposed/town @@ -486,16 +486,16 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/outdoors/exposed/town/hamlet icon_state = "town" - droning_sound = 'sound/music/area/towngen.ogg' + droning_sound = 'sound/ambience/kaizoku/Oceansanct.ogg' droning_sound_dusk = null first_time_text = "STONEHILL HAMLET" /area/rogue/indoors/town/manor name = "Manor" icon_state = "manor" - droning_sound = list('sound/music/area/manor.ogg', 'sound/music/area/manor2.ogg') - droning_sound_dusk = null - droning_sound_night = null + droning_sound = 'sound/music/area/manor.ogg' + droning_sound_dusk = 'sound/music/area/manor2.ogg' + droning_sound_night = 'sound/music/area/manor2.ogg' converted_type = /area/rogue/outdoors/exposed/manorgarri first_time_text = "THE BLACKWINE MANOR" @@ -601,15 +601,15 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town name = "church" icon_state = "church" droning_sound = 'sound/music/area/church.ogg' - droning_sound_dusk = null - droning_sound_night = 'sound/music/area/churchnight.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Syzygy.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Resplendent.ogg' converted_type = /area/rogue/outdoors/exposed/church /area/rogue/outdoors/exposed/church icon_state = "church" droning_sound = 'sound/music/area/church.ogg' - droning_sound_dusk = null - droning_sound_night = 'sound/music/area/churchnight.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Syzygy.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Resplendent.ogg' /area/rogue/indoors/town/church/chapel icon_state = "chapel" @@ -668,33 +668,33 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientsounds = AMB_BEACH ambientnight = AMB_BEACH droning_sound = 'sound/music/area/townstreets.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/night.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' + droning_sound_night = 'sound/music/area/sleeping.ogg' /area/rogue/outdoors/coast name = "the coast" ambientsounds = AMB_BEACH ambientnight = AMB_BEACH droning_sound = 'sound/music/area/sargoth.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Defenestration.ogg' ///// OUTDOORS AREAS (again, for some reason) /area/rogue/outdoors/town name = "outdoors" icon_state = "town" - droning_sound = 'sound/music/area/townstreets.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' -// droning_sound_night = 'sound/music/area/night.ogg' Too much guitar honestly + droning_sound = 'sound/ambience/kaizoku/Rogue_in_town.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Town_in_Rogue.ogg' converted_type = /area/rogue/indoors/shelter/town first_time_text = "THE TOWN OF BLACKWINE" /area/rogue/indoors/shelter/town icon_state = "town" - droning_sound = 'sound/music/area/townstreets.ogg' + droning_sound = 'sound/ambience/kaizoku/Oceansanct.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Defenestration.ogg' /area/rogue/outdoors/town/sargoth name = "outdoors" @@ -782,14 +782,14 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town ambientnight = AMB_GENCAVE spookysounds = SPOOKY_CAVE spookynight = SPOOKY_CAVE - droning_sound = 'sound/music/area/caves.ogg' + droning_sound = 'sound/ambience/kaizoku/Bucolic.ogg' droning_sound_dusk = null droning_sound_night = null converted_type = /area/rogue/outdoors/exposed/under/caves /area/rogue/outdoors/exposed/under/caves icon_state = "caves" - droning_sound = 'sound/music/area/caves.ogg' + droning_sound = 'sound/ambience/kaizoku/Nebula.ogg' droning_sound_dusk = null droning_sound_night = null @@ -818,9 +818,9 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town /area/rogue/underworld name = "underworld" icon_state = "underworld" - droning_sound = 'sound/music/area/underworlddrone.ogg' + droning_sound = ('sound/ambience/kaizoku/Petrichor.ogg') droning_sound_dusk = null - droning_sound_night = null + droning_sound_night = ('sound/ambience/kaizoku/Petrichor_night.ogg') first_time_text = "The Forest of Repentence" @@ -831,18 +831,18 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town name = "sophia's cry" ambientsounds = AMB_BEACH ambientnight = AMB_BEACH - droning_sound = 'sound/music/area/townstreets.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' // Players are penalized for entering the Guild Gaptain's quarters (FAFO) /area/rogue/outdoors/beach/boat/captain name = "guild captain" ambientsounds = AMB_BEACH ambientnight = AMB_BEACH - droning_sound = 'sound/music/area/townstreets.ogg' - droning_sound_dusk = 'sound/music/area/septimus.ogg' - droning_sound_night = 'sound/music/area/sleeping.ogg' + droning_sound = 'sound/ambience/kaizoku/Zephyr.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/Diaspora.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Sanctumocean.ogg' /area/rogue/indoors/town/theatre name = "theatre" @@ -886,3 +886,11 @@ GLOBAL_LIST_INIT(roguetown_areas_typecache, typecacheof(/area/rogue/indoors/town name = "lair (Inhumen)" droning_sound = 'sound/music/area/decap.ogg' first_time_text = "THE DEEP BOG" + +/area/rogue/under/town/kaizoku + name = "kaizoku isle" + icon_state = "town" + droning_sound = 'sound/ambience/kaizoku/Abyssanctum.ogg' + droning_sound_dusk = 'sound/ambience/kaizoku/kaizoku.ogg' + droning_sound_night = 'sound/ambience/kaizoku/Abyssariad.ogg' + diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 4a46a0fc452..6bb123bd727 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 c445701325b..62fc08b5f86 100644 --- a/code/game/objects/items/rogueitems/bombs.dm +++ b/code/game/objects/items/rogueitems/bombs.dm @@ -79,3 +79,176 @@ 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/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(src) + +/obj/item/grenade/smoke_bomb/poison + name = "abyssariad poisonbomb" + desc = "Ceramic sphere containing toxic composts from within, awaiting to be released." + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "poison_bomb" + item_state = "poison_bomb" + slot_flags = ITEM_SLOT_BELT + +/obj/item/grenade/smoke_bomb/poison/attack_self(mob/user) + user.visible_message("[user]'s hand breaks the ceramic of the [src], engulfing themselves on poisonous smoke.", "I squeeze [src] down to release the inner compounds- like an IDIOT. RUN AWAY!") + prime() + +/obj/item/grenade/smoke_bomb/poison/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + ..() + prime() + +/obj/item/grenade/smoke_bomb/poison/prime() + update_mob() + playsound(src, 'sound/blank.ogg', 50, TRUE, -3) + var/datum/effect_system/smoke_spread/bad/stupid/smoke = new + smoke.set_up(4, src) + smoke.start() + qdel(smoke) + qdel(src) + +/obj/item/zhentianlei + name = "thunder crash bomb" + desc = "a bomb made out of cast iron and ceramic, now filled with gunpowder to the brim. Usually, it takes five second before the fire on the fuse reaches the gunpowder." + icon_state = "zhentianlei" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + w_class = WEIGHT_CLASS_NORMAL + throwforce = 0 + throw_speed = 0.5 + slot_flags = ITEM_SLOT_HIP + + var/lit = FALSE + var/active = FALSE + var/fuze = 50 // about five seconds + var/turf/ignited_turf = null + var/obj/item/ignited_by = null + var/initial_icon_state = "zhentianlei" + var/active_icon_state = "zhentianlei_rewinded" + var/prob2fail = 23 // chance of failure + +/obj/item/zhentianlei/spark_act() + ignite() + +/obj/item/zhentianlei/fire_act() + ignite() + +/obj/item/zhentianlei/ex_act() + if(!QDELETED(src)) + lit = TRUE + trigger_explosion(TRUE) + +/obj/item/zhentianlei/New() + ..() + icon_state = initial_icon_state + +/obj/item/zhentianlei/proc/ignite(atom/igniter = null) + if(!lit) + START_PROCESSING(SSfastprocess, src) // Start the processing for the fuse + icon_state = active_icon_state + lit = TRUE + active = TRUE + ignited_by = igniter + playsound(src.loc, 'sound/items/firelight.ogg', 100) + to_chat(src.loc, "The [name] starts to fizzle!") + if(ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_hands() + +/obj/item/zhentianlei/proc/stop_ignition() + if(lit) + lit = FALSE + active = FALSE + STOP_PROCESSING(SSfastprocess, src) + icon_state = initial_icon_state + ignited_by = null + playsound(src.loc, 'sound/items/firesnuff.ogg', 100) + to_chat(src.loc, "\The [name] has been snuffed out.") + if(ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_hands() + +/obj/item/zhentianlei/proc/trigger_explosion(skipprob = FALSE) + STOP_PROCESSING(SSfastprocess, src) // Stop the processing for the fuse + var/turf/T = get_turf(src) + if(T) + if(lit && active) + var/prob_fail = prob2fail + if(ignited_by && istype(ignited_by, /obj/item)) + var/obj/item/igniter = ignited_by + if(igniter.vars["prob2fail"]) + prob_fail = igniter.vars["prob2fail"] + if(!skipprob && prob(prob_fail)) + stop_ignition() + else + explosion(T, light_impact_range = 2, flame_range = 4, smoke = TRUE, soundin = pick('sound/misc/explode/bottlebomb (1).ogg','sound/misc/explode/bottlebomb (2).ogg')) + else + if(prob(prob2fail)) + stop_ignition() + else + playsound(T, 'sound/items/firesnuff.ogg', 100) + new /obj/item/shard (T) + qdel(src) + +/obj/item/zhentianlei/proc/is_flammable(atom/target) + if(isturf(target)) + return (target.vars["flags"] & FLAMMABLE) != 0 + return FALSE + +/obj/item/zhentianlei/process() + if(active && lit) + fuze -= 1 + if(fuze <= 0) + trigger_explosion(TRUE) + else if(active && !lit) + stop_ignition() + +/obj/item/zhentianlei/examine(mob/user) + var/inspect_text = ..() + if(active) + inspect_text += "The fuse is burning!" + else + inspect_text += "The fuse is not lit." + return inspect_text + +/obj/item/zhentianlei/attackby(obj/item/C, mob/living/user) + if(C.sharpness >= 1) + if(fuze > 30) + fuze = 30 + to_chat(user, "You shorten [src]'s fuse.") + playsound(src.loc, 'sound/items/sharpen_short2.ogg', 100) + if(fuze == 0) + to_chat(user, "The fuse is too small to be cut.") + return + else + fuze = 0 + to_chat(user, "You shorten [src]'s fuse, turning it into a booby trap!") + playsound(src.loc, 'sound/items/sharpen_short2.ogg', 100) + return + if(istype(C, /obj/item/natural/cloth)) + if(fuze < 30) + fuze = 30 + to_chat(user, "You fully increase the [src]'s fuse with the cloth.") + else + return diff --git a/code/game/objects/items/rogueweapons/melee/axes.dm b/code/game/objects/items/rogueweapons/melee/axes.dm index 10a673bbbe5..bb0225e95ad 100644 --- a/code/game/objects/items/rogueweapons/melee/axes.dm +++ b/code/game/objects/items/rogueweapons/melee/axes.dm @@ -158,7 +158,7 @@ drop_sound = 'sound/foley/dropsound/armor_drop.ogg' axe_cut = 18 - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY minstr = 6 sellprice = 20 @@ -331,3 +331,84 @@ +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/rogueweapon/battle/ono + slot_flags = ITEM_SLOT_HIP + force = 15 + force_wielded = 25 + possible_item_intents = list(/datum/intent/axe/cut) + name = "nagai ono" + desc = "A battleaxe of Abyssariad design with a longer handle and shorter blade than its Humen counterpart. The increased leverage, reduced weight, and smaller striking area give it greater use against armor, while the longer handle makes it easier to parry with." + icon_state = "ono" + max_blade_int = 500 + smeltresult = /obj/item/ingot/steel + gripped_intents = list(/datum/intent/axe/cut,/datum/intent/axe/battleaxe/chop/ono) + parrysound = list('sound/combat/parry/wood/parrywood (1).ogg', 'sound/combat/parry/wood/parrywood (2).ogg', 'sound/combat/parry/wood/parrywood (3).ogg') + swingsound = BLADEWOOSH_MED + associated_skill = /datum/skill/combat/axesmaces + minstr = 8 + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + max_blade_int = 200 + max_integrity = 300 + wdefense = 6 + +/obj/item/rogueweapon/battle/getonmobprop(tag) + if(tag) + switch(tag) + if("gen") + return list("shrink" = 0.6,"sx" = -12,"sy" = -10,"nx" = 12,"ny" = -10,"wx" = -8,"wy" = -7,"ex" = 3,"ey" = -9,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 90,"sturn" = -90,"wturn" = -90,"eturn" = 90,"nflip" = 0,"sflip" = 8,"wflip" = 8,"eflip" = 0) + if("wielded") + return list("shrink" = 0.6,"sx" = -12,"sy" = 3,"nx" = 12,"ny" = 2,"wx" = -8,"wy" = 2,"ex" = 4,"ey" = 2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 8,"wflip" = 8,"eflip" = 0) + if("onbelt") + return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0) + return ..() + +/obj/item/rogueweapon/thrown/ono + slot_flags = ITEM_SLOT_HIP + force = 15 + possible_item_intents = list(/datum/intent/axe/cut, /datum/intent/axe/chop) //Added chop because the throwing Ono is still suitable for woodcutting. It's a hatchet. + name = "nage ono" + desc = "A well-balanced, short-handled Abyssariad axe designed for throwing. Traditionally used as a hunting weapon as an alternative to archery, as bow wood is scarce on the Fog Isles." + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "throwing_ono" + max_blade_int = 500 + smeltresult = /obj/item/ash + parrysound = list('sound/combat/parry/wood/parrywood (1).ogg', 'sound/combat/parry/wood/parrywood (2).ogg', 'sound/combat/parry/wood/parrywood (3).ogg') + swingsound = BLADEWOOSH_MED + wlength = WLENGTH_SHORT + associated_skill = /datum/skill/combat/axesmaces + minstr = 6 + max_blade_int = 200 + max_integrity = 300 + wdefense = 3 + throwforce = 40 + axe_cut = 5 //You'd be surprised to know that the axe head design for throwing is the same one for cutting wood, but lighter. + embedding = list("embedded_pain_multiplier" = 3, "embed_chance" = 20, "embedded_fall_chance" = 60) + +/obj/item/rogueweapon/woodcut/changfu + name = "iron changfu" + desc = "The tool of justice, hardwork and destruction, all in one." + icon_state = "changfu" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + wdefense = 4 //Battle designed. + axe_cut = 3 //Not as viable for cutting as the other one, less than a hatchet in fact. + +/datum/intent/axe/battleaxe/chop/ono //because actual battle axes don't have stupid large blades. + name = "chop" + icon_state = "inchop" + blade_class = BCLASS_CHOP + attack_verb = list("chops", "hacks") + animname = "chop" + hitsound = list('sound/combat/hits/bladed/genchop (1).ogg', 'sound/combat/hits/bladed/genchop (2).ogg', 'sound/combat/hits/bladed/genchop (3).ogg') + penfactor = AP_HEAVYAXE_STAB + swingdelay = 1 + misscost = 10 diff --git a/code/game/objects/items/rogueweapons/melee/blunt.dm b/code/game/objects/items/rogueweapons/melee/blunt.dm index a0ff373d0c9..381152ad184 100644 --- a/code/game/objects/items/rogueweapons/melee/blunt.dm +++ b/code/game/objects/items/rogueweapons/melee/blunt.dm @@ -165,7 +165,7 @@ smeltresult = /obj/item/ash minstr = 2 sellprice = 5 - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY /obj/item/rogueweapon/mace/woodclub/Initialize(mapload) . = ..() @@ -199,7 +199,7 @@ minstr = 2 wbalance = HARD_TO_DODGE sellprice = 15 - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY /obj/item/rogueweapon/mace/cudgel/getonmobprop(tag) . = ..() @@ -378,7 +378,7 @@ minstr = 5 smeltresult = /obj/item/ingot/copper sellprice = 10 - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY //................ Copper goden ............... // /obj/item/rogueweapon/mace/goden/copper @@ -394,3 +394,153 @@ max_integrity = 150 minstr = 10 sellprice = 35 + +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/rogueweapon/mace/goden/otsuchi + force = 10 + force_wielded = 25 + possible_item_intents = list(/datum/intent/mace/strike) + gripped_intents = list(/datum/intent/mace/strike/heavy, /datum/intent/mace/smash/heavy) + name = "otsuchi" + desc = "A wooden greathammer of Abyssariad make, heavy enough to give any warrior pause. Often used by Yamabushi warriors." + icon_state = "otsuchi" + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + sharpness = IS_BLUNT + wlength = WLENGTH_GREAT + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + associated_skill = /datum/skill/combat/axesmaces + smeltresult = /obj/item/ash + swingsound = BLUNTWOOSH_HUGE + max_integrity = 250 + minstr = 10 + wdefense = 3 + pixel_y = -16 + pixel_x = -16 + inhand_x_dimension = 64 + inhand_y_dimension = 64 + bigboy = TRUE + gripsprite = TRUE + +/obj/item/rogueweapon/mace/goden/kanabo + name = "kanabo" + desc = "A heavy two handed club, reinforced with an iron sleeve. Most commonly seen in the hands of Onis and Yamabushis." + icon_state = "kanabo" + possible_item_intents = list(/datum/intent/mace/strike/heavy) + gripped_intents = list(/datum/intent/mace/smash/heavy) //Can't spear people, but can make them bleed due to spikes. + sharpness = IS_SHARP + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + parrysound = "parrywood" + swingsound = BLUNTWOOSH_MED + pixel_y = -16 + pixel_x = -16 + inhand_x_dimension = 64 + inhand_y_dimension = 64 + bigboy = TRUE + gripsprite = TRUE + slowdown = 1 + +/obj/item/rogueweapon/mace/goden/kanabo/dustcurse/dropped() + . = ..() + name = "Dustcurse kanabo" + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players. + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/mace/goden/steel/tetsubo + name = "tetsubo" + desc = "A heavier variant of the kanabo, fitted with a steel sleeve bearing menacing spikes and favored by Ogrun Warlords. Requires immense strength to use, but hits like a raging bull." + icon_state = "tetsubo" + possible_item_intents = list(/datum/intent/mace/strike/heavy) + gripped_intents = list(/datum/intent/mace/smash/heavy) //Can't spear people, but can make them bleed due to spikes. + sharpness = IS_SHARP + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + pixel_y = -16 + pixel_x = -16 + inhand_x_dimension = 64 + inhand_y_dimension = 64 + +/obj/item/rogueweapon/mace/goden/steel/tetsubo/dustcurse/dropped() + . = ..() + name = "Dustcurse tetsubo" + minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players. + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/mace/ararebo + name = "ararebo" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "ararebo" + desc = "A large, iron-capped club used by Abyssariads as a armor-breaking tool. Most suitable to breach Grezenholftean cuirass while still holding a shield in the off-hand." + +/obj/item/rogueweapon/mace/ararebo/dustcurse/dropped() + . = ..() + name = "Dustcurse ararebo" + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/mace/ararebo/obsidian + name = "obsidian club" + icon_state = "obsidian_club" + desc = "A large, wooden club with sharp flakes of obsidian embedded into it. Its appearance is similar to a flanged mace, but it inflicts deep cuts." + max_integrity = 150 + wlength = WLENGTH_SHORT + w_class = WEIGHT_CLASS_NORMAL + sharpness = IS_SHARP + wbalance = -1 + minstr = 0 + wdefense = 3 + +/obj/item/rogueweapon/mace/steel/ararebo + name = "steel ararebo" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "sararebo" + desc = "A large, steel-capped club used by Abyssariads as a armor-breaking tool. Most suitable to breach Grezenholftean cuirass while still holding a shield in the off-hand." + +/obj/item/rogueweapon/mace/steel/ararebo/dustcurse/dropped() + . = ..() + name = "Dustcurse steel ararebo" + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/mace/cudgel/rungu + force = 15 + force_wielded = 20 + name = "rungu club" + desc = "A more well defined, chiseled and ashed wooden club that can be throw at enemies. Used by Undine warriors." + icon_state = "rungu" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + wbalance = 0 + wdefense = 1 + wlength = WLENGTH_NORMAL + w_class = WEIGHT_CLASS_NORMAL + max_integrity = 150 + possible_item_intents = list(/datum/intent/mace/strike/wood) + gripped_intents = list(/datum/intent/mace/strike/wood, /datum/intent/mace/smash/wood) + smeltresult = /obj/item/ash + minstr = 0 + throwforce = 25 + +/obj/item/rogueweapon/mace/cudgel/jitte + name = "jitte" + desc = "An abyssariad Ashigaru guard weapon. The hook along the shaft allows the club to arrest a blade that has been parried, increasing the defensive utility of a otherwise simple baton." + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "jitte" + wdefense = 4 diff --git a/code/game/objects/items/rogueweapons/melee/flail.dm b/code/game/objects/items/rogueweapons/melee/flail.dm index 0aa82f5a203..c52d7285877 100644 --- a/code/game/objects/items/rogueweapons/melee/flail.dm +++ b/code/game/objects/items/rogueweapons/melee/flail.dm @@ -135,6 +135,128 @@ if("onbelt") return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0) +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// +/datum/intent/flail/strike/ranged/smash + name = "smash" + chargetime = 5 + no_early_release = TRUE + penfactor = 80 + recovery = 10 + damfactor = 1.2 + chargedloop = /datum/looping_sound/flailswing + keep_looping = TRUE + icon_state = "insmash" + blade_class = BCLASS_SMASH + attack_verb = list("smashes") + hitsound = list('sound/combat/hits/blunt/flailhit.ogg') + misscost = 10 + +/datum/intent/flail/strike/ranged + name = "strike" + blade_class = BCLASS_BLUNT + attack_verb = list("strikes", "hits") + hitsound = list('sound/combat/hits/blunt/flailhit.ogg') + swingdelay = 5 + penfactor = 5 + icon_state = "instrike" + misscost = 5 + reach = 2 + recovery = 10 + chargedloop = /datum/looping_sound/flailswing + keep_looping = TRUE + chargetime = 10 + no_early_release = TRUE + +/datum/intent/flail/cut + name = "cut" + blade_class = BCLASS_CUT + attack_verb = list("cuts", "slashes") + hitsound = list('sound/combat/hits/blunt/flailhit.ogg') + swingdelay = 5 + penfactor = AP_SPEAR_POKE + icon_state = "incut" + misscost = 5 + reach = 2 + recovery = 10 + chargedloop = /datum/looping_sound/flailswing + keep_looping = TRUE + chargetime = 5 + no_early_release = TRUE +/datum/intent/flail/cut/chop + name = "chop" + chargetime = 5 + no_early_release = TRUE + penfactor = AP_FLAIL_SMASH + recovery = 10 + damfactor = 1.2 + chargedloop = /datum/looping_sound/flailswing + keep_looping = TRUE + icon_state = "inchop" + blade_class = BCLASS_CHOP + attack_verb = list("chops") + hitsound = list('sound/combat/hits/blunt/flailhit.ogg') + misscost = 10 + chargetime = 10 +/datum/intent/flail/strike/smash + name = "smash" + chargetime = 5 + no_early_release = TRUE + penfactor = 80 + recovery = 10 + damfactor = 1.2 + chargedloop = /datum/looping_sound/flailswing + keep_looping = TRUE + icon_state = "insmash" + blade_class = BCLASS_SMASH + attack_verb = list("smashes") + hitsound = list('sound/combat/hits/blunt/flailhit.ogg') + misscost = 5 + +/obj/item/rogueweapon/flail/sflail/kusarifundo + name = "kusari fundo" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + desc = "A pair of heavy steel weights connected by a long chain. Originally a self-defense weapon during the Blood Apotheosis when iron was running low - so lead balls were used as weight." + icon_state = "kusarifundo" + +/obj/item/rogueweapon/flail/nunchaku + force = 20 + w_class = WEIGHT_CLASS_SMALL + name = "nunchaku" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + desc = "A pair of wooden rods linked by a short chain, designed for concealment and often used by Abyssariad Plowmen- for where swords was only on the hands of the Zamurai caste." + icon_state = "nunchaku" + +/obj/item/rogueweapon/flail/kusarigama + force = DAMAGE_NORMAL_FLAIL + possible_item_intents = list(/datum/intent/flail/strike/ranged, /datum/intent/flail/strike/ranged/smash, /datum/intent/flail/cut, /datum/intent/flail/cut/chop) + name = "kusarigama" + desc = "A handle with a sickle-like blade, featuring a chain that ends in a spiked ball. Versatile weapon adapted to defeat sword-wielding foes." + icon_state = "kusarigama" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + sharpness = IS_SHARP + wlength = WLENGTH_NORMAL + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_HIP + blade_dulling = DULLING_BASHCHOP + associated_skill = /datum/skill/combat/whipsflails + smeltresult = /obj/item/ingot/steel + parrysound = list('sound/combat/parry/parrygen.ogg') + swingsound = BLUNTWOOSH_MED + +/obj/item/rogueweapon/flail/kusarigama/peasant + force = DAMAGE_WEAK_FLAIL + name = "handmade kusarigama" + desc = "A handle with a sickle-like blade and a chain with spiked ball, quickly assembled from an actual plowmen's sickle - it is clearly homemade." + icon_state = "kusarigama_homemade" + smeltresult = /obj/item/ingot/iron diff --git a/code/game/objects/items/rogueweapons/melee/knives.dm b/code/game/objects/items/rogueweapons/melee/knives.dm index bacc260a1b2..9c24fdfcdfd 100644 --- a/code/game/objects/items/rogueweapons/melee/knives.dm +++ b/code/game/objects/items/rogueweapons/melee/knives.dm @@ -20,7 +20,7 @@ pickup_sound = 'sound/foley/equip/swordsmall2.ogg' equip_sound = 'sound/foley/dropsound/holster_sword.ogg' drop_sound = 'sound/foley/dropsound/blade_drop.ogg' - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY wbalance = HARD_TO_DODGE smeltresult = /obj/item/ingot/steel sharpness = IS_SHARP @@ -109,7 +109,7 @@ icon_state = "huntingknife" max_blade_int = 140 max_integrity = INTEGRITY_STRONG - wdefense = MEDIOCHRE_PARRY + wdefense = MEDIOCRE_PARRY wbalance = HARD_TO_DODGE smeltresult = /obj/item/ingot/steel sellprice = 30 @@ -174,7 +174,7 @@ //................ Steel Dagger ............... // /obj/item/rogueweapon/knife/dagger/steel - force = DAMAGE_DAGGER+2 + force = DAMAGE_GOOD_DAGGER name = "steel dagger" desc = "A dagger made of refined steel." icon_state = "sdagger" @@ -351,7 +351,7 @@ //................ Stone Knife ............... // /obj/item/rogueweapon/knife/stone - force = DAMAGE_KNIFE + force = DAMAGE_WEAK_KNIFE throwforce = DAMAGE_KNIFE possible_item_intents = list(/datum/intent/dagger/cut,/datum/intent/dagger/chop) name = "stone knife" @@ -371,6 +371,8 @@ name = "villager knife" desc = "The loyal companion of simple peasants, for cutting hard bread and carving wood." icon_state = "villagernife" + force = DAMAGE_WEAK_KNIFE + smeltresult = null // Enough of this exploit. Three can be crafted or more ordered, so no smelting them. /obj/item/rogueweapon/knife/copper possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/thrust) @@ -385,4 +387,58 @@ smeltresult = /obj/item/ash sellprice = 10 +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +// Parent Kaizoku knife, for all intents and purposes of checks for seppuku and such. +/obj/item/rogueweapon/knife/kaizoku + name = "parent Kaizoku knife" + desc = "You should not see be seeing this. Yell at coders or mappers for fucking up." + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/thrust) // None of them have chop + smeltresult = null // As every dagger craftable by pairs made of good metal + + +/obj/item/rogueweapon/knife/kaizoku/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_state = "kunai" + force = DAMAGE_WEAK_KNIFE + wbalance = VERY_HARD_TO_DODGE + +/obj/item/rogueweapon/knife/kaizoku/kaiken + name = "iron kaiken" + desc = "The weapon laws in colonized Abyssariad islands, with high humen or elven population, forbade non-warriors from carrying blades in public, so abyssariad colonists made weapons such as this." + icon_state = "kaiken" + force = DAMAGE_DAGGER + max_integrity = INTEGRITY_STRONG + sellprice = 15 + +/obj/item/rogueweapon/knife/kaizoku/tanto + name = "steel tanto" + desc = "Initially a companion blade to the tachi in a zamurai's daisho, the tanto was later replaced by the wakizashi with the shift to infantry tactics after the Bloody Apotheosis." + icon_state = "tanto" + force = DAMAGE_GOOD_DAGGER + max_integrity = INTEGRITY_STRONGER + w_class = WEIGHT_CLASS_NORMAL + wdefense = AVERAGE_PARRY + wbalance = VERY_HARD_TO_DODGE + sellprice = 20 +/obj/item/rogueweapon/knife/kaizoku/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_state = "sai" + w_class = WEIGHT_CLASS_NORMAL + force = DAMAGE_KNIFE+1 + max_integrity = INTEGRITY_STRONG + smeltresult = null + wdefense = 5 + wbalance = VERY_HARD_TO_DODGE diff --git a/code/game/objects/items/rogueweapons/melee/polearms.dm b/code/game/objects/items/rogueweapons/melee/polearms.dm index d4e7406be27..561a5c36eaf 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,403 @@ 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" + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + +/obj/item/rogueweapon/polearm/halberd/bardiche/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/bardiche/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/bardiche/naginata/tsukushi //make two instead of only one + name = "tsukushi naginata" + desc = "A cheaper, easier to construct iron Naginata with a blade held by its guard instead of its tang. Likely developed from a scythe, the blade is easily found on poor, wandering monks." + force_wielded = DAMAGE_SPEAR_WIELD+3 + icon_state = "surplusnaginata" + smeltresult = /obj/item/ingot/iron + dropshrink = 0.8 + wdefense = 4 + slot_flags = ITEM_SLOT_BACK + +/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/music/kaizoku/spells/firelance_cooking.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. + playsound(src.loc, 'sound/music/kaizoku/spells/firelance.ogg', 100) + 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/guillotine.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 49965f015d1..b961e89c50a 100644 --- a/code/game/objects/items/rogueweapons/melee/special.dm +++ b/code/game/objects/items/rogueweapons/melee/special.dm @@ -196,3 +196,104 @@ charge = 0 update_icon() playsound(src, pick('sound/items/stunmace_toggle (1).ogg','sound/items/stunmace_toggle (2).ogg','sound/items/stunmace_toggle (3).ogg'), 100, TRUE) + +/obj/item/rogueweapon/tetsubishi //I humbly request someone to cook the 'jump' not causing damage. + name = "tetsubishi" + desc = "a sharp spike object used to slow down pursuer, often used by abyssariad shinobis, it has been massproduced and shipped to Heartfell." + icon_state = "tetsubishi" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + force = 5 + throwforce = 10 + w_class = WEIGHT_CLASS_SMALL + block_chance = 0 + armor_penetration = 5 + sharpness = IS_SHARP + custom_materials = null + can_parry = FALSE + wlength = 6 + sellprice = 1 + has_inspect_verb = TRUE + parrysound = list('sound/combat/parry/parrygen.ogg') + anvilrepair = /datum/skill/craft/weaponsmithing + obj_flags = CAN_BE_HIT + blade_dulling = DULLING_BASH + max_integrity = 60 + wdefense = 3 + experimental_onhip = TRUE + experimental_onback = TRUE + embedding = list( + "embed_chance" = 60, + "embedded_pain_multiplier" = 1, + "embedded_fall_chance" = 0, + ) + attack_verb = list("stabbed", "slashed", "sliced", "cut") + hitsound = 'sound/blank.ogg' + var/icon_prefix + +/obj/item/rogueweapon/tetsubishi/Initialize() + . = ..() + AddComponent(/datum/component/kaizoku/caltrop, 20, 30, 100, CALTROP_BYPASS_SHOES) + +/obj/item/rogueweapon/tetsubishi/Crossed(mob/living/L) + playsound(loc, 'sound/foley/flesh_rem2.ogg', TRUE) + return ..() + +/datum/component/kaizoku/caltrop //Less laggy alternative for the server-destroying OG caltrops. + var/min_damage + var/max_damage + var/probability + var/flags + + var/cooldown = 0 + +/datum/component/kaizoku/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _flags = NONE) + min_damage = _min_damage + max_damage = max(_min_damage, _max_damage) + probability = _probability + flags = _flags + + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), PROC_REF(Crossed)) + +/datum/component/kaizoku/caltrop/proc/Crossed(datum/source, atom/movable/AM) + var/atom/A = parent + if(!prob(probability)) + return + + if(ishuman(AM)) + var/mob/living/carbon/human/H = AM + if((flags & CALTROP_IGNORE_WALKERS) && H.m_intent == MOVE_INTENT_WALK) + return + + var/picked_def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone) + if(!istype(O)) + return + + var/feetCover = (H.wear_armor && (H.wear_armor.body_parts_covered & FEET)) || (H.wear_pants && (H.wear_pants.body_parts_covered & FEET)) + + if(!(flags & CALTROP_BYPASS_SHOES) && (H.shoes || feetCover)) + return + + if((H.movement_type & FLYING) || H.buckled) + return + + var/damage = rand(min_damage, max_damage) + H.apply_damage(damage, BRUTE, picked_def_zone) + + + if(cooldown < world.time - 10) //cooldown to avoid message spam. + if(!H.incapacitated(ignore_restraints = TRUE)) + H.visible_message("[H] steps on [A] as it pierces skin.", \ + "I feel my feet being pierced as I step on [A]!") + else + H.visible_message("[H] slides their bodies on [A]!", \ + "I slide on [A]!") + + cooldown = world.time + H.Stun(60) + +/obj/item/throwing_star/ninja + name = "throwing star" + desc = "a simple distracting tool used to cause a commotion and bleeding so its user can scramble." + icon_state = "shuriken" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' diff --git a/code/game/objects/items/rogueweapons/melee/swords.dm b/code/game/objects/items/rogueweapons/melee/swords.dm index 38314a1e4fa..13ff0831488 100644 --- a/code/game/objects/items/rogueweapons/melee/swords.dm +++ b/code/game/objects/items/rogueweapons/melee/swords.dm @@ -684,7 +684,7 @@ swingsound = BLADEWOOSH_HUGE wlength = WLENGTH_GREAT slot_flags = ITEM_SLOT_BACK - minstr = 13 //Requirement is halved when wielded in two hands either way. No sane person should be thinking of using this one-handed. + minstr = 12 // To be able to wield this weapon you must be able to PICK IT UP WITHOUT IT FALLING OFF YOUR HANDS. Realistically no class/race combo has over 13 STR when maxrolling. wbalance = EASY_TO_DODGE sellprice = 90 @@ -858,3 +858,212 @@ sellprice = 25//lets make the two bars worth it +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/rogueweapon/sword/uchigatana + name = "uchigatana" + desc = "Shorter and simpler than the Tachi, the Uchigatana is the primary sidearm for the Abyssariad and Heartfelt footsoldiers. As a Zatana, the curved blade favor powerfull chopping strikes - but lacks a protective crossguard and the curve makes it less efficient in thrusting." + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + icon_state = "uchigatana" + pixel_y = -16 + pixel_x = -16 + inhand_x_dimension = 64 + inhand_y_dimension = 64 + bigboy = TRUE + smeltresult = /obj/item/ingot/steel + +/obj/item/rogueweapon/sword/uchigatana/fire //Experimental weapon. Not to be found ingame. + name = "fire uchigatana" + desc = "Shorter and simpler than the Tachi, the Uchigatana is the primary sidearm for the Abyssariad and Heartfelt footsoldiers. Unlike other uchigatanas, this sword in specifically seems curiously improved with 'frigus' runes." + +/obj/item/rogueweapon/sword/uchigatana/fire/attack(mob/M, mob/living/carbon/human/user) + if(ismob(M)) + fire_effect(M, user) + ..() + +/obj/item/rogueweapon/sword/uchigatana/fire/proc/fire_effect(mob/living/L, mob/user) + L.adjust_fire_stacks(1) + L.IgniteMob() + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, ExtinguishMob)), 5 SECONDS) + if(user) + L.lastattacker = user.real_name + L.lastattackerckey = user.ckey + L.visible_message("[user] has ignited [L] with [src]!", \ + "[user] has ignited you with [src]!") + playsound(loc, 'sound/blank.ogg', 50, TRUE, -1) + return + +/obj/item/rogueweapon/sword/long/tachi //this sword is all fucked. Oh God. Help me. + name = "tachi" + desc = "A long, curved Zatana of Abyssariad make, introduced when Wokou raiders returned to the Fog Isles with captured horses and began developing their own cavalry tactics." + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + icon_state = "tachi" + item_state = "tachi" + pixel_y = -16 + pixel_x = -18 + +/obj/item/rogueweapon/sword/long/tachi/dustcurse/dropped() + . = ..() + name = "Dustcurse tachi" + minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players. + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/sword/long/greatsword/odachi + name = "odachi" + desc = "Greatsword traditionally wielded in open battlefields just as it is a ceremonial blade. Though impractical for duels, it breaks spearlines and shields on a whim, requiring momentum with each slash." + icon_state = "odachi" + icon = 'icons/roguetown/kaizoku/weapons/64.dmi' + parrysound = "bladedlarge" + +/obj/item/rogueweapon/sword/iron/jian + name = "iron jian" + icon_state = "jian1" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + +/obj/item/rogueweapon/sword/iron/jian/Initialize() + . = ..() + var/design = rand(1, 6) //This system will be standardized to other weapons. + switch(design) + if(1) + name = "monk jian" + desc = "A simple, double-edged iron sword. With a short guard and slim grip, it is easier to use in martial arts that requires constant flick of the wrist." + if(2) + name = "frontierman jian" + desc = "A simple, double-edged iron sword. With a thicker pommel and stretched guard, it becomes more proper as sideweapons during sieges for overhead attacks." + if(3) + name = "guardsman jian" + desc = "A simple, double-edged iron sword of abyssariad with parrying hooks at cost of slashing effectiveness." + if(4) + name = "foreigner jian" + desc = "A simple, double-edged iron sword of abyssariad design with heartfelt influence, taking smithing standards from Zweihanders." + if(5) + name = "heartfelt jian" + desc = "A simple, double-edged iron sword of abyssariad design with heartfelt influence. Keeping a rather imperial style of guard." + if(6) + name = "duelist jian" + desc = "A simple, double-edged iron sword of abyssariad design with hand protection that resembles one side of the firelance apparatus. Usually used for training." + icon_state = "jian[design]" + +/obj/item/rogueweapon/sword/scimitar/messer/dao + name = "iron dao" + desc = "A single edged iron saber of Abyssariad making for horseback use. Suitable for chopping." + icon_state = "dao" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + +/obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao //this sprite disappeared by reasons unknown + name = "Yuntoudao" + desc = "A expensive Abyssariad saber with wide middle and tapered ends in a 'willow-leaf' shape, it concentrates the force of a strike in an axe-like blow, while retaining the swiftness of a saber." + icon_state = "yuntoudao" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + +/obj/item/rogueweapon/sword/short/jian + name = "short steel jian" + desc = "A simple, shortened version of the double-edged Jian made of steel. 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 = "shortjian1" + +/obj/item/rogueweapon/sword/short/jian/Initialize() + . = ..() + var/design = rand(1, 3) //This system will be standardized to other weapons. + switch(design) + if(1) + name = "conscript short jian" + desc = "A simple, shortened version of the double-edged Jian in steel. This is usually given to Abyssariad citizens as a right for self-defense by the emperor's will." + if(2) + name = "frontierman short jian" + desc = "A simple, shortened version of the double-edged Jian in steel. With a thicker pommel and stretched guard, it becomes more proper as side weapons during sieges for overhead attacks." + if(3) + name = "duelist short jian" + desc = "A simple, shortened version of the double-edged with hand protection that resembles one side of the fire lance apparatus. Usually used for training." + icon_state = "shortjian[design]" + +/obj/item/rogueweapon/sword/short/wakizashi + name = "wakizashi" + icon_state = "wakizashi1" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + possible_item_intents = list(/datum/intent/sword/cut/sorii, /datum/intent/sword/thrust/sorii) + +/obj/item/rogueweapon/sword/short/wakizashi/Initialize() + . = ..() + var/design = rand(1, 3) //This system will be standardized to other weapons. + switch(design) + if(1) + name = "wakizashi zatana" + desc = "A shorter zatana design with circular handguard and heartfelt-influenced pommel. The curveness of the blade makes it better at cutting than thrusting." + if(2) + name = "traditional wakizashi" + desc = "The traditional wakizashi used by abyssariads for centuries, with a lack of a pommel and a broader handguard for hand protection. The sorii of the blade improves the cutting power." + if(3) + name = "shirasaya wakizashi" + desc = "The cheaper adaptation of the Wakizashi with an complete lack of handguard and no tsuka ito protecting the hand." + icon_state = "wakizashi[design]" + +/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 = "eclipse sword" + desc = "Dragonslayers uses swords too big to be called a sword. Massive, thick, heavy and far too rough. Indeed, it is a heap of raw iron made to penetrate dragon 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 = 13 + 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 c1bd0b18452..36c01e6e16c 100644 --- a/code/game/objects/items/rogueweapons/ranged/ammo.dm +++ b/code/game/objects/items/rogueweapons/ranged/ammo.dm @@ -463,6 +463,93 @@ reagents.handle_reactions() return BULLET_ACT_HIT +//// Kaizoku Edition //// + +/obj/projectile/bullet/reusable/arrow/poison/fog + name = "fog arrow" + desc = "An arrow with it's tip drenched in a powerful sedative." + icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi' + icon_state = "arrowfog_proj" + ammo_type = /obj/item/ammo_casing/caseless/rogue/arrow + +/obj/item/ammo_casing/caseless/rogue/arrow/poison/fog + name = "fog arrow" + desc = "An arrow with it's tip drenched in a powerful sedative." + projectile_type = /obj/projectile/bullet/reusable/arrow/poison/fog + icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi' + icon_state = "arrow_fog" + +/obj/projectile/bullet/reusable/arrow/poison/fog/Initialize() + . = ..() + create_reagents(50, NO_REACT) + +/obj/projectile/bullet/reusable/arrow/poison/fog/on_hit(atom/target, blocked = FALSE) + if(iscarbon(target)) + var/mob/living/carbon/M = target + if(blocked != 100) // not completely blocked + if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + ..() + reagents.reaction(M, INJECT) + reagents.trans_to(M, reagents.total_volume) + return BULLET_ACT_HIT + else + blocked = 100 + target.visible_message("\The [src] was deflected!", \ + "My armor protected me against \the [src]!") + + ..(target, blocked) + DISABLE_BITFIELD(reagents.flags, NO_REACT) + reagents.handle_reactions() + return BULLET_ACT_HIT + +/obj/projectile/bullet/reusable/arrow/poison/fog/Initialize() + . = ..() + reagents.add_reagent(/datum/reagent/fogblight, 5) + +/obj/item/ammo_casing/caseless/rogue/bolt/poison/fog + name = "fog bolt" + desc = "A bolt dipped with a potent sedative." + projectile_type = /obj/projectile/bullet/reusable/bolt/poison/fog + possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/thrust) + icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi' + icon_state = "bolt_fog" + +/obj/projectile/bullet/reusable/bolt/poison/fog + name = "fog bolt" + desc = "A bolt dipped with a potent sedative." + damage = 35 + damage_type = BRUTE + icon = 'icons/roguetown/kaizoku/weapons/ammo.dmi' + icon_state = "boltfogn_proj" + ammo_type = /obj/item/ammo_casing/caseless/rogue/bolt + +/obj/projectile/bullet/reusable/bolt/poison/fog/Initialize() + . = ..() + create_reagents(50, NO_REACT) + +/obj/projectile/bullet/reusable/bolt/poison/fog/on_hit(atom/target, blocked = FALSE) + if(iscarbon(target)) + var/mob/living/carbon/M = target + if(blocked != 100) // not completely blocked + if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + ..() + reagents.reaction(M, INJECT) + reagents.trans_to(M, reagents.total_volume) + return BULLET_ACT_HIT + else + blocked = 100 + target.visible_message("\The [src] was deflected!", \ + "My armor protected me against \the [src]!") + + ..(target, blocked) + DISABLE_BITFIELD(reagents.flags, NO_REACT) + reagents.handle_reactions() + return BULLET_ACT_HIT + +/obj/projectile/bullet/reusable/bolt/poison/fog/Initialize() + . = ..() + reagents.add_reagent(/datum/reagent/fogblight, 5) + #undef ARROW_DAMAGE #undef BOLT_DAMAGE diff --git a/code/game/objects/items/rogueweapons/ranged/bows.dm b/code/game/objects/items/rogueweapons/ranged/bows.dm index 84e453d4e09..87e4cfd868e 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/rogueweapon.dm b/code/game/objects/items/rogueweapons/rogueweapon.dm index b71af7d8e1f..61d2231ccbd 100644 --- a/code/game/objects/items/rogueweapons/rogueweapon.dm +++ b/code/game/objects/items/rogueweapons/rogueweapon.dm @@ -15,8 +15,10 @@ #define DAMAGE_MACE_WIELD 25 #define DAMAGE_HEAVYCLUB_WIELD 30 +#define DAMAGE_WEAK_KNIFE 8 #define DAMAGE_KNIFE 10 #define DAMAGE_DAGGER 12 +#define DAMAGE_GOOD_DAGGER 14 #define DAMAGE_STAFF 12 #define DAMAGE_STAFF_WIELD 23 //Even a wooden quarterstaff is a devastating weapon. @@ -63,7 +65,7 @@ //wdefense defines #define TERRIBLE_PARRY -1 #define BAD_PARRY 0 -#define MEDIOCHRE_PARRY 1 +#define MEDIOCRE_PARRY 1 #define AVERAGE_PARRY 2 #define GOOD_PARRY 2.5 #define GREAT_PARRY 3 diff --git a/code/game/objects/items/rogueweapons/shields.dm b/code/game/objects/items/rogueweapons/shields.dm index 35af601b5cd..dbe7cf57bdd 100644 --- a/code/game/objects/items/rogueweapons/shields.dm +++ b/code/game/objects/items/rogueweapons/shields.dm @@ -292,3 +292,105 @@ return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0) if("onbelt") return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0) + +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/rogueweapon/shield/wood/rattan //The description about the firearm projectiles protection is actually real for this shield, pretty neat thing to include here. It won't change gamewise tho + name = "rattan shield" + desc = "A lightweight rattan shield woven with leather padding and hardened in oil, known for keeping shrapnel and firearm projectiles stuck after being shot at. \nIt can exceptionally block attacks but is more brittle than metal." + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + icon_state = "rattanshield" + dropshrink = 0.8 + coverage = 50 + max_integrity = 150 + +/obj/item/rogueweapon/shield/wood/rattan/attack_hand(mob/user) + ..() + +/obj/item/rogueweapon/shield/wood/rattan/getonmobprop(tag) + . = ..() + if(tag) + switch(tag) + if("gen") + return list("shrink" = 0.6,"sx" = -5,"sy" = -1,"nx" = 6,"ny" = -1,"wx" = 0,"wy" = -2,"ex" = 0,"ey" = -2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 1,"eflip" = 0) + if("onback") + return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0) + +/obj/item/rogueweapon/shield/tower/abyssaltower + name = "abyssal towershield" + desc = "The legendary shield frame named 'Naraku-kai no Tate', long used by Abyssariad champions in the old age against demonic incursions on Fog Islands. It has resemblance with Aasimar's tower shields, which was proper for the time." + icon_state = "abyssaltower" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + force = 15 + throwforce = 10 + throw_speed = 1 + throw_range = 3 + wlength = WLENGTH_NORMAL + wbalance = -1 // Heavy, big shield + resistance_flags = FLAMMABLE + wdefense = 6 + coverage = 65 + parrysound = list('sound/combat/parry/shield/towershield (1).ogg','sound/combat/parry/shield/towershield (2).ogg','sound/combat/parry/shield/towershield (3).ogg') + max_integrity = 300 + smeltresult = /obj/item/ingot/iron // Made with an iron ingot, let us recover it + +/obj/item/rogueweapon/shield/tower/abyssaltower/dustcurse/dropped() + . = ..() + name = "Dustcurse abyssal towershield" + minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players. + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + +/obj/item/rogueweapon/shield/tower/metal/abyssal + name = "spiked steel aegis" + desc = "Light steel spikes are visible on this shield to protect the user against the chaotic close-quarter skirmishes where grappling and flanking is common, but can be caught on enemy armor and weapons." + icon_state = "aegis" + icon = 'icons/roguetown/kaizoku/weapons/32.dmi' + possible_item_intents = list(/datum/intent/shield/bash/metal, /datum/intent/shield/block/metal) + force = 20 + throwforce = 10 + throw_speed = 1 + throw_range = 3 + wlength = WLENGTH_NORMAL + resistance_flags = null + flags_1 = CONDUCT_1 + wdefense = 7 + coverage = 70 + attacked_sound = list('sound/combat/parry/shield/metalshield (1).ogg','sound/combat/parry/shield/metalshield (2).ogg','sound/combat/parry/shield/metalshield (3).ogg') + parrysound = list('sound/combat/parry/shield/metalshield (1).ogg','sound/combat/parry/shield/metalshield (2).ogg','sound/combat/parry/shield/metalshield (3).ogg') + max_integrity = 500 + blade_dulling = DULLING_BASH + sellprice = 30 + smeltresult = /obj/item/ingot/steel // Made with steel, let us repurpose it + +/obj/item/rogueweapon/shield/tower/metal/abyssal/getonmobprop(tag) + if(tag) + switch(tag) + if("gen") + return list("shrink" = 0.6,"sx" = -5,"sy" = -1,"nx" = 6,"ny" = -1,"wx" = 0,"wy" = -2,"ex" = 0,"ey" = -2,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 1,"eflip" = 0) + if("onback") + return list("shrink" = 0.6,"sx" = 1,"sy" = 4,"nx" = 1,"ny" = 2,"wx" = 3,"wy" = 3,"ex" = 0,"ey" = 2,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0) + return ..() + +/obj/item/rogueweapon/shield/tower/metal/attack_hand(mob/user) + ..() + +/obj/item/rogueweapon/shield/tower/metal/abyssal/dustcurse/dropped() + . = ..() + name = "Dustcurse spiked steel aegis" + minstr = 0 //asset solely to be used by NPCs. This will not be found on the hands of players. + to_chat(src, "A haunting wind scatters [usr] into dust, sweeping it back to the ocean!") + if(QDELETED(src)) + return + qdel(src) + diff --git a/code/game/objects/structures/frontierjustice.dm b/code/game/objects/structures/frontierjustice.dm new file mode 100644 index 00000000000..8cd884efb64 --- /dev/null +++ b/code/game/objects/structures/frontierjustice.dm @@ -0,0 +1,87 @@ +/obj/structure/frontierjustice + name = "frontier justice" + desc = "The manifestation extrajudicidal punishment by vigilantism, or performed by evil doers to instill fear. One may never know." + icon = 'icons/roguetown/kaizoku/mapset/frontierjustice.dmi' + icon_state = "edgy1" + anchored = TRUE + density = FALSE + opacity = 0 + blade_dulling = DULLING_CUT + max_integrity = 50 + layer = ABOVE_OBJ_LAYER + destroy_sound = 'sound/foley/bodyfall (1).ogg' + +/obj/structure/frontierjustice/Initialize() + . = ..() + icon_state = "edgy[rand(1,5)]" + +/obj/structure/frontierjustice/examine_status(mob/user) + if(max_integrity) + var/healthpercent = (obj_integrity/max_integrity) * 100 + switch(healthpercent) + if(50 to 99) + return "The flesh is still in place." + if(25 to 50) + return "Damage has set its toll." + if(1 to 25) + return "The corpse is almost butchered." + +/obj/structure/frontierjustice/Destroy() + var/turf/T = loc + if(isturf(T)) // Ensure `T` is a valid turf + var/obj/item/reagent_containers/food/snacks/rogue/meat/steak/meat_piece = new(T) + if(meat_piece) + meat_piece.name = "humen meat" //funny + . = ..() + +/obj/structure/frontierjustice/dead + name = "fated as you" + desc = "Killed off and left to rot." + icon_state = "dead1" + destroy_sound = 'sound/combat/dismemberment/dismem (1).ogg' + +/obj/structure/frontierjustice/dead/Initialize() + . = ..() + icon_state = "dead1" //had to put that otherwise OG frontier justice would kill it off + +/obj/structure/frontierjustice/canibalism + name = "the meal" + desc = "Poor victim of the greenskins or wood elven." + icon_state = "cannibalism1" + destroy_sound = 'sound/combat/dismemberment/dismem (1).ogg' + +/obj/structure/frontierjustice/canibalism/Initialize() + . = ..() + icon_state = "cannibalism[rand(1,2)]" + +/obj/structure/frontierjustice/canibalism/Destroy() + var/turf/T = loc + if(isturf(T)) // Ensure `T` is a valid turf + var/obj/item/reagent_containers/food/snacks/rogue/meat/steak/fried/meat_piece = new(T) + if(meat_piece) + meat_piece.name = "cooked humen meat" //funny + meat_piece.desc = "A slab of manflesh, slow-cooked over glowing coals." + . = ..() + +/obj/structure/frontierjustice/crossed + name = "believer" + desc = "If one forgot the meaning of some religious symbols, surely this will remind them." + icon_state = "crossed1" + destroy_sound = 'sound/foley/breaksound.ogg' + +/obj/structure/frontierjustice/crossed/Initialize() + . = ..() + icon_state = "crossed[rand(1,3)]" + +/obj/structure/frontierjustice/caged + name = "cage" + desc = "Better check if someone is already inside, awaiting for salvation that never came." + icon_state = "cage1" + destroy_sound = 'sound/combat/hits/blunt/metalblunt (2).ogg' + +/obj/structure/frontierjustice/caged/Initialize() + . = ..() + icon_state = "cage[rand(1,3)]" + +/obj/structure/frontierjustice/caged/Destroy() + . = ..() diff --git a/code/game/objects/structures/roguetown/rogueflora.dm b/code/game/objects/structures/roguetown/rogueflora.dm index 457814073c1..bb352ac1f7f 100644 --- a/code/game/objects/structures/roguetown/rogueflora.dm +++ b/code/game/objects/structures/roguetown/rogueflora.dm @@ -519,7 +519,8 @@ /obj/structure/flora/roguegrass/swampweed/Initialize() if(prob(88)) - bushtype3 = pickweight(list(/obj/item/reagent_containers/food/snacks/produce/swampweed = 1)) + bushtype3 = pickweight(list(/obj/item/reagent_containers/food/snacks/produce/swampweed = 1, + /obj/item/reagent_containers/food/snacks/fogdart = 1)) loot_replenish3() pixel_x += rand(-3,3) return ..() @@ -531,9 +532,6 @@ looty3 += /obj/item/reagent_containers/food/snacks/produce/swampweed - - - // pyroflower cluster looting /obj/structure/flora/roguegrass/pyroclasticflowers/attack_hand(mob/user) if(isliving(user)) diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 186012e5523..2e7b68b2359 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/knife/kaizoku/kunai)) + myskill += 3 if(TA) myskill += 1 else diff --git a/code/game/turfs/closed/wall/roguewalls.dm b/code/game/turfs/closed/wall/roguewalls.dm index ac07a8becb9..058d5a4cabf 100644 --- a/code/game/turfs/closed/wall/roguewalls.dm +++ b/code/game/turfs/closed/wall/roguewalls.dm @@ -379,3 +379,64 @@ baseturfs = list(/turf/open/floor/rogue/concrete) climbdiff = 1 damage_deflection = 20 + +/turf/closed/wall/mineral/rogue/stone/abyssal + name = "abyssal ishigaki wall" + desc = "Made from large, interlocking uncut stones without the use of mortar, so a castle is built above it. However, many make simple walls out of it." + icon = 'icons/roguetown/kaizoku/wallset/abyssalstone.dmi' + icon_state = "abyssabyssal" + sheet_type = /obj/item/natural/stone + break_sound = 'sound/combat/hits/onstone/stonedeath.ogg' + attacked_sound = list('sound/combat/hits/onstone/wallhit.ogg', 'sound/combat/hits/onstone/wallhit2.ogg', 'sound/combat/hits/onstone/wallhit3.ogg') + canSmoothWith = list(/turf/closed/wall/mineral/rogue/stone/abyssal) + above_floor = /turf/open/floor/rogue/blocks + baseturfs = list(/turf/open/floor/rogue/blocks) + climbdiff = 1 + damage_deflection = 10 + +/turf/closed/wall/mineral/rogue/stone/abyssal/window + name = "abyssal ishigaki window" + desc = "An simple hole within a Ishigaki wall." + opacity = FALSE + max_integrity = 800 + +/turf/closed/wall/mineral/rogue/stone/window/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && ((mover.pass_flags & PASSTABLE) || (mover.pass_flags & PASSGRILLE)) ) + return 1 + return ..() + +/turf/closed/wall/mineral/rogue/stone/abyssal/window/Initialize() + . = ..() + icon_state = "abyssal" + var/mutable_appearance/M = mutable_appearance(icon, "abyssalhole", layer = ABOVE_NORMAL_TURF_LAYER) + add_overlay(M) + +/turf/closed/wall/mineral/rogue/wood/abyssal + name = "wagoya wall" + desc = "wooden wall of abyssal architecture that uses wooden joinery that fits together seamlessly to avoid use of nails or screws, increasing protection against earthshakes." + icon = 'icons/roguetown/kaizoku/wallset/eastern_wood.dmi' + icon_state = "wood" + break_sound = 'sound/combat/hits/onwood/destroywalldoor.ogg' + attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg') + canSmoothWith = list(/turf/closed/wall/mineral/rogue/wood, /obj/structure/roguewindow, /obj/structure/roguetent, /turf/closed/wall/mineral/rogue/wooddark) +// sheet_type = /obj/item/grown/log/tree/lumber + above_floor = /turf/open/floor/rogue/woodturned + baseturfs = list(/turf/open/floor/rogue/woodturned) + neighborlay = "dirtedge" + climbdiff = 3 + +/turf/closed/wall/mineral/rogue/wood/abyssal/window + name = "wagoya no sama" + desc = "A murderhole on a wooden wall that lacks nails and screws." + opacity = FALSE + max_integrity = 550 + +/turf/closed/wall/mineral/rogue/wood/abyssal/window/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && ((mover.pass_flags & PASSTABLE) || (mover.pass_flags & PASSGRILLE)) ) + return 1 + return ..() + +/turf/closed/wall/mineral/rogue/wood/abyssal/window/Initialize() + . = ..() + var/mutable_appearance/M = mutable_appearance(icon, "woodhole", layer = ABOVE_NORMAL_TURF_LAYER) + add_overlay(M) diff --git a/code/game/turfs/open/floor/roguefloor.dm b/code/game/turfs/open/floor/roguefloor.dm index 49dc737efa6..ec56346e595 100644 --- a/code/game/turfs/open/floor/roguefloor.dm +++ b/code/game/turfs/open/floor/roguefloor.dm @@ -1322,3 +1322,46 @@ . = ..() icon_state = "bathtile_pool_mid" /* ................................................ */ + + +/* .................. Kaizoku Sand ................... */ +/turf/open/floor/rogue/sand + icon = 'icons/roguetown/kaizoku/tileset/tileset.dmi' + icon_state = "sand1" + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SOFT_BAREFOOT + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + landsound = 'sound/foley/jumpland/dirtland.wav' + neighborlay = "sandedges" + smooth = SMOOTH_TRUE + canSmoothWith = list( + /turf/closed/mineral/rogue, + /turf/closed/mineral, + /turf/closed/wall/mineral/rogue/stonebrick, + /turf/closed/wall/mineral/rogue/wood, + /turf/closed/wall/mineral/rogue/wooddark, + /turf/closed/wall/mineral/rogue/stone, + /turf/closed/wall/mineral/rogue/stone/moss, + /turf/open/floor/rogue/cobble, + /turf/open/floor/rogue/dirt, + /turf/open/floor/rogue/grass, + /turf/open/floor/rogue/grass/red, + /turf/open/floor/rogue/grass/yel, + /turf/open/floor/rogue/grass/cold, + /turf/open/floor/rogue/snow, + /turf/open/floor/rogue/snow/patchy, + /turf/open/floor/rogue/snow/rough + ) + +/turf/open/floor/rogue/sand/cardinal_smooth(adjacencies) + // Apply custom smoothing for sand turfs + roguesmooth(adjacencies) + +/turf/open/floor/rogue/sand/Initialize() + . = ..() + icon_state = "sand[rand(1,4)]" + +/obj/effect/decal/turfedge_neu/sand + icon_state = "sandedge" + icon = 'icons/roguetown/kaizoku/tileset/tileset.dmi' diff --git a/code/game/world.dm b/code/game/world.dm index 44764f7c17b..66b2eac21ad 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -336,7 +336,7 @@ GLOBAL_VAR(restart_counter) s += "Dark Medieval Fantasy Roleplay https://discord.gg/qZw267fFsX
" s += "Hosted by SS13.RU Team
" #else - s += "ROGUEWORLD
" + s += "STONEKEEP
" s += "Fantasy Computer Survival Game
" #endif // s += "" diff --git a/code/modules/admin/patreon.dm b/code/modules/admin/patreon.dm index f0afbf2464d..6558730f00f 100644 --- a/code/modules/admin/patreon.dm +++ b/code/modules/admin/patreon.dm @@ -300,12 +300,12 @@ GLOBAL_LIST_EMPTY(temporary_donators) if(!email) return if(!patreon_lookup(name) || !patreon_lookup(email) || !findtext(email, "@")) - to_chat(src, "We couldn't find that name/email combo. Donator status is updated weekly before every playtest. If you have waited a week, seek help in our DISCORD SERVER (https://discord.gg/stonekeep)") + to_chat(src, "We couldn't find that name/email combo. Donator status is updated weekly before every playtest. If you have waited a week, seek help in our DISCORD SERVER (https://discord.gg/qwwYV6dbcg)") return // var/saniemail = sanitize_simple(email,list("@"="AT","."="DOT")) var/fug = patemail2ckey(email) if(fug && (fug != ckey)) - to_chat(src, "That Patreon is already registered to a different player. Donator status is updated weekly before every playtest. If you have waited a week, seek help in our DISCORD SERVER (https://discord.gg/stonekeep)") + to_chat(src, "That Patreon is already registered to a different player. Donator status is updated weekly before every playtest. If you have waited a week, seek help in our DISCORD SERVER (https://discord.gg/qwwYV6dbcg)") return add_patreon(ckey,email) client.patreonlevel = -1 diff --git a/code/modules/antagonists/roguetown/villain/bandit.dm b/code/modules/antagonists/roguetown/villain/bandit.dm index 7a89e9802ae..a5d483ddc6f 100644 --- a/code/modules/antagonists/roguetown/villain/bandit.dm +++ b/code/modules/antagonists/roguetown/villain/bandit.dm @@ -82,201 +82,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(H.client, "Choose your background", "Available backgrounds") as anything in classes - - switch(classchoice) - - if("Deserter") //well armored, polearm skill, shield skill. The heavy melee class. + if(H.dna?.species) + if(HAS_TRAIT(H, TRAIT_KAIZOKU)) //Average sword, barely any armor - all this to justify a chance in getting 4 exp in Swords for Akira Kurosawa experience for duels. Still weaker than Guardians, since they are not champions. H.set_blindness(0) - to_chat(H, span_warning("You were once a soldier employed under a lord, and left illegally. You're capable with armor, shields, and polearms.")) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE) + to_chat(H, span_warning("You are a person of the waves, the one who drifters as the ocean. Now with your link to Abyssor broken, you've bonded to Matthios to avoid the dai-corruption.")) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) //for the sake of duelism trope, there is a chance to get 4xp sword. + H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.burakumin = TRUE //Other abyssariads will easily notice a Ronin, compared to other races. This is partially intended. + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) H.change_stat("strength", 2) H.change_stat("endurance", 1) H.change_stat("constitution", 1) - wrists = /obj/item/clothing/wrists/roguetown/bracers/leather - beltr = /obj/item/clothing/mask/rogue/shepherd/rag - beltl = /obj/item/rogueweapon/knife/hunting - - if(H.age == AGE_OLD) //old deserters are experts with polearms - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - - var/helmet2choose = pickweight(list("Volfhelm" = 5, "Skullcap" = 2, "Barbute" = 1)) - switch(helmet2choose) - if("Volfhelm") - head = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm - if("Skullcap") - head = /obj/item/clothing/head/roguetown/helmet/skullcap - if("Barbute") // big roller - head = /obj/item/clothing/head/roguetown/helmet/heavy/rust - - var/armor2choose = pickweight(list("Rusty halfplate" = 2, "Chainmail" = 1)) - switch(armor2choose) - if("Rusty halfplate") - armor = /obj/item/clothing/suit/roguetown/armor/cuirass/iron/rust - if("Chainmail") - armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron - - var/weapon2choose = pickweight(list("Spear" = 2, "Bardiche" = 1)) - switch(weapon2choose) - if("Spear") - backr = /obj/item/rogueweapon/polearm/spear - if("Bardiche") - backr = /obj/item/rogueweapon/polearm/halberd/bardiche - - switch(pick(1,2)) - if (1) //worse leg protection, better neck protection, and a face mask + pants = /obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/ronin + cloak = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/ronin + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half + head = /obj/item/clothing/head/roguetown/tengai/roningasa //Not protective + if(prob(35)) + beltr = /obj/item/rogueweapon/sword/short/wakizashi //Higher Daisho + else + beltr = /obj/item/rogueweapon/knife/kaizoku/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(H.client, "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) @@ -329,4 +379,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 762a2193bd0..a1712f2d8d2 100644 --- a/code/modules/antagonists/roguetown/villain/peasantrebel.dm +++ b/code/modules/antagonists/roguetown/villain/peasantrebel.dm @@ -149,6 +149,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/antagonists/roguetown/villain/vampirelord.dm b/code/modules/antagonists/roguetown/villain/vampirelord.dm index 750bca44e2c..2636a17e979 100644 --- a/code/modules/antagonists/roguetown/villain/vampirelord.dm +++ b/code/modules/antagonists/roguetown/villain/vampirelord.dm @@ -578,7 +578,7 @@ GLOBAL_LIST_EMPTY(vampire_objects) if(do_after(user, 100)) lord.handle_vitae(-1500) new /obj/item/clothing/under/roguetown/platelegs/vampire (src.loc) - new /obj/item/clothing/suit/roguetown/armor/haubergon_vampire (src.loc) + new /obj/item/clothing/suit/roguetown/armor/chainmail/maille_vampire (src.loc) new /obj/item/clothing/suit/roguetown/armor/cuirass/vampire (src.loc) new /obj/item/clothing/shoes/roguetown/boots/armor/vampire (src.loc) new /obj/item/clothing/head/roguetown/helmet/heavy/savoyard (src.loc) diff --git a/code/modules/cargo/packsrogue/apparel.dm b/code/modules/cargo/packsrogue/apparel.dm index 2ab6ee508e5..19bfa8fd9dc 100644 --- a/code/modules/cargo/packsrogue/apparel.dm +++ b/code/modules/cargo/packsrogue/apparel.dm @@ -113,16 +113,6 @@ cost = 60 contains = /obj/item/clothing/suit/roguetown/armor/leather/jacket/silk_coat -/datum/supply_pack/rogue/apparel/stockings - name = "Stockings" - cost = 10 - contains = /obj/item/clothing/under/roguetown/tights/stockings/random - -/datum/supply_pack/rogue/apparel/stockings_silk - name = "Silk Stockings" - cost = 20 - contains = /obj/item/clothing/under/roguetown/tights/stockings/silk/random - /datum/supply_pack/rogue/apparel/undershirt_random name = "Undershirt" cost = 4 diff --git a/code/modules/cargo/packsrogue/instruments.dm b/code/modules/cargo/packsrogue/instruments.dm index 89e6013c9ea..242993592fc 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 0d68ffb6d9f..cfbb8613958 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 ff20ee12fc5..766c1317402 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1957,6 +1957,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 @@ -2470,6 +2472,10 @@ Slots: [job.spawn_positions] chosen_species = /datum/species/human/northern pref_species = new /datum/species/human/northern random_character(gender) + if(pref_species.minrace_pq > get_playerquality(parent.ckey)) + chosen_species = /datum/species/human/northern + pref_species = new /datum/species/human/northern + random_character(gender) character.age = age character.dna.features = features.Copy() diff --git a/code/modules/clothing/rogueclothes/armor.dm b/code/modules/clothing/rogueclothes/armor.dm index c583192070e..771d0d374a9 100644 --- a/code/modules/clothing/rogueclothes/armor.dm +++ b/code/modules/clothing/rogueclothes/armor.dm @@ -114,7 +114,7 @@ desc = "Favored by the female nobility, to maintain both vitality and good taste while out hunting." icon_state = "armordress" allowed_sex = list(FEMALE) - allowed_race = list("human", "tiefling", "elf", "aasimar") + allowed_race = list("human", "tiefling", "elf", "aasimar", "abyssariad") r_sleeve_status = SLEEVE_NORMAL l_sleeve_status = SLEEVE_NORMAL sellprice = VALUE_PADDED_DRESS @@ -540,12 +540,31 @@ //................ Armored surcoat (Heartfelt) ............... // /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt - desc = "A lordly protection in Heartfelt colors. Masterfully crafted coat of plates, for important nobility." - color = CLOTHING_BLOOD_RED + name = "heartfelt kikko gusoku" + desc = "A lordly protection in Heartfelt colors. Masterfully crafted coat of hexagon plates, for important nobility." + icon = 'icons/roguetown/kaizoku/clothingicon/armor.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/armor.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_armor.dmi' + icon_state = "heartfelt_kikko" + item_state = "heartfelt_kikko" + allowed_sex = list(MALE,FEMALE) sellprice = VALUE_SNOWFLAKE_STEEL+BONUS_VALUE_SMALL body_parts_covered = COVERAGE_FULL +//................ Armored surcoat (Heartfelt Hand) ............... // +/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand + name = "heartfelt kikko coat" + desc = "A coat of armor typicially worn by distinguished retainers of Heartfeltian nobles, using exotic silks adquired from Fog Island." + icon_state = "heartfelt_kikkocoat" + item_state = "heartfelt_kikkocoat" + +/obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand/female + name = "heartfelt kikko dress" + desc = "A dress of armor typicially worn by distinguished retainers of Heartfeltian nobles, using exotic silks adquired from Fog Island." + icon_state = "heartfelt_kikkodress" + item_state = "heartfelt_kikkodress" + //................ Coat of Plate ............... // /obj/item/clothing/suit/roguetown/armor/medium/coatplates name = "coat of plates" @@ -782,17 +801,11 @@ body_parts_covered = COVERAGE_TORSO prevent_crits = ALL_CRITICAL_HITS_VAMP -//................ Ancient Haubergon ............... // -/obj/item/clothing/suit/roguetown/armor/haubergon_vampire - name = "ancient haubergon" +//................ Ancient Maille ............... // +/obj/item/clothing/suit/roguetown/armor/chainmail/maille_vampire + name = "ancient maille" desc = "A style of armor long out of use. Rests easy on the shoulders." icon_state = "vunder" - blocksound = CHAINHIT - drop_sound = 'sound/foley/dropsound/chain_drop.ogg' - pickup_sound = 'sound/foley/equip/equip_armor_chain.ogg' - equip_sound = 'sound/foley/equip/equip_armor_chain.ogg' - anvilrepair = /datum/skill/craft/armorsmithing - smeltresult = /obj/item/ingot/steel sellprice = VALUE_IRON_ARMOR_UNUSUAL armor_class = AC_LIGHT @@ -867,3 +880,480 @@ 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/splint/kikko/eidolon + color = CLOTHING_EIDOLON + +/obj/item/clothing/suit/roguetown/armor/leather/splint/kikko/rich/Initialize() + color = RANDOM_NOBLE_DYES + ..() + +/obj/item/clothing/suit/roguetown/armor/leather/splint/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 + ..() + +// Randomized color Hitatare +/obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/rich/Initialize() + color = RANDOM_NOBLE_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 5d4fa001660..b776a063fda 100644 --- a/code/modules/clothing/rogueclothes/cloaks.dm +++ b/code/modules/clothing/rogueclothes/cloaks.dm @@ -1068,3 +1068,217 @@ add_overlay(mutable_appearance('icons/roguetown/clothing/cloaks.dmi', "clasp")) ..() +/////////////////////////////////////////////////////////////////// +// 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' + sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi' + sleevetype = "shirt" + body_parts_covered = CHEST|GROIN|VITALS|ARMS + +/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/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 + +//modular tabards. Requires bugfixing. + +/obj/item/clothing/cloak/stabard/haramaki + name = "haramaki" + desc = "Tightly packed lacing patterns usually used for binding leather and metal scales." + icon_state = "haramaki" + item_state = "haramaki" + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/cloaks.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/cloaks.dmi' + icon = 'icons/roguetown/kaizoku/clothingicon/cloaks.dmi' + +/obj/item/clothing/cloak/stabard/haramaki/odoshi + name = "odoshi" + icon_state = "odoshi" + item_state = "odoshi" + +/obj/item/clothing/cloak/stabard/haramaki/jinbaori + name = "jinbaori" + desc = "Cloth piece meant to portray the user's loyalty to an lord." + icon_state = "jinbaori" + item_state = "jinbaori" + +/obj/item/clothing/cloak/stabard/haramaki/jinbaori/jizamurai + desc = "The odoshi used by Foglander Zamurais bond to Rockhill's lords. It uses said lord's heraldic colors." + color = CLOTHING_DARK_INK + detail_tag = "_spl" + detail_color = CLOTHING_BLOOD_RED + +/obj/item/clothing/cloak/stabard/haramaki/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/stabard/haramaki/jinbaori/guard/Initialize() + . = ..() + if(GLOB.lordprimary) + lordcolor(GLOB.lordprimary,GLOB.lordsecondary) + else + GLOB.lordcolor += src + +/obj/item/clothing/cloak/stabard/haramaki/jinbaori/guard/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/stabard/haramaki/jinbaori/guard/Destroy() + GLOB.lordcolor -= src + return ..() + +/obj/item/clothing/cloak/stabard/haramaki/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/stabard/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 = "_spl" + detail_color = CLOTHING_PLUM_PURPLE + +/obj/item/clothing/cloak/stabard/haramaki/odoshi/zamurai/attack_right(mob/user) + return + +/obj/item/clothing/cloak/stabard/haramaki/odoshi/zamurai/Initialize() + . = ..() + if(GLOB.lordprimary) + lordcolor(GLOB.lordprimary,GLOB.lordsecondary) + else + GLOB.lordcolor += src + +/obj/item/clothing/cloak/stabard/haramaki/odoshi/zamurai/Destroy() + GLOB.lordcolor -= src + return ..() + +/obj/item/clothing/cloak/stabard/haramaki/odoshi/toweryakko + color = "#804d97" + +/obj/item/clothing/cloak/stabard/haramaki/odoshi/toweryakko/attack_right(mob/user) + return + +/obj/item/clothing/cloak/stabard/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 89ae08ed48a..d7a38d77c03 100644 --- a/code/modules/clothing/rogueclothes/feet.dm +++ b/code/modules/clothing/rogueclothes/feet.dm @@ -28,7 +28,7 @@ icon_state = "blackboots" item_state = "blackboots" sellprice = 10 - + armor = ARMOR_LEATHER_BAD prevent_crits = CUT_AND_MINOR_CRITS max_integrity = INTEGRITY_STANDARD @@ -46,7 +46,7 @@ armor = ARMOR_LEATHER_BAD prevent_crits = CUT_AND_MINOR_CRITS max_integrity = INTEGRITY_STRONGER //Durable. - + /obj/item/clothing/shoes/roguetown/shortboots name = "shortboots" color = "#d5c2aa" @@ -67,7 +67,7 @@ icon_state = "ridingboots" item_state = "ridingboots" sellprice = 10 - + armor = ARMOR_LEATHER prevent_crits = CUT_AND_MINOR_CRITS max_integrity = INTEGRITY_STRONGER @@ -132,7 +132,7 @@ icon_state = "shalal" item_state = "shalal" sellprice = 15 - + armor = ARMOR_LEATHER_BAD //Unique to a rare adventurer class prevent_crits = MINOR_CRITICALS max_integrity = INTEGRITY_STANDARD @@ -143,7 +143,7 @@ icon_state = "tribalshoes" item_state = "tribalshoes" sellprice = 3 - + armor = ARMOR_LEATHER_BAD prevent_crits = MINOR_CRITICALS max_integrity = INTEGRITY_POOR @@ -164,7 +164,7 @@ drop_sound = 'sound/foley/dropsound/armor_drop.ogg' break_sound = 'sound/foley/breaksound.ogg' sellprice = 25 - + armor_class = AC_HEAVY armor = ARMOR_PLATE prevent_crits = ALL_EXCEPT_STAB @@ -176,7 +176,7 @@ item_state = "soldierboots" desc = "Lightly armored boots made from iron offering protection against both melee and ranged attacks." sellprice = 20 - + armor_class = AC_MEDIUM armor = ARMOR_PLATE_BAD prevent_crits = ALL_EXCEPT_STAB @@ -191,7 +191,7 @@ item_state = "leatherboots" resistance_flags = FLAMMABLE sellprice = 10 - + armor = ARMOR_LEATHER prevent_crits = CUT_AND_MINOR_CRITS max_integrity = INTEGRITY_STANDARD //Slightly thicker, less durable than riding or noble boots. @@ -216,12 +216,12 @@ item_state = "furlinedanklets" sewrepair = TRUE is_barefoot = TRUE - + armor = ARMOR_LEATHER_BAD prevent_crits = CUT_AND_MINOR_CRITS max_integrity = INTEGRITY_POOR - - + + /obj/item/clothing/shoes/roguetown/boots/clothlinedanklets name = "cloth lined anklets" @@ -231,7 +231,7 @@ item_state = "furlinedanklets" is_barefoot = TRUE sewrepair = TRUE - + armor = ARMOR_PADDED_BAD prevent_crits = MINOR_CRITICALS max_integrity = INTEGRITY_POOR @@ -250,7 +250,7 @@ item_state = "grenzelboots" sleeved = 'icons/roguetown/clothing/onmob/helpers/stonekeep_merc.dmi' sellprice = 20 - + armor = ARMOR_LEATHER_GOOD prevent_crits = ALL_EXCEPT_CHOP_AND_STAB max_integrity = INTEGRITY_STRONG @@ -268,7 +268,7 @@ anvilrepair = /datum/skill/craft/armorsmithing clothing_flags = CANT_SLEEP_IN sellprice = 30 - + armor_class = AC_HEAVY armor = ARMOR_PLATE_GOOD prevent_crits = ALL_EXCEPT_STAB @@ -327,3 +327,101 @@ item_state = "human_spearshoe" color = null blocksound = PLATEHIT + +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi + name = "kusari tabi" + icon_state = "kusaritabi" + item_state = "kusaritabi" + desc = "The riveted chainmail version of the unarmored Tabi footwear." + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + +/obj/item/clothing/shoes/roguetown/boots/armor/suneate + name = "suneate boots" + desc = "Armored suneate made from steel offering heavy protection against both melee and ranged attacks." + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + icon_state = "suneate" + item_state = "suneate" + +/obj/item/clothing/shoes/roguetown/boots/armor/suneate/cursed/Initialize() + . = ..() + name = "soulbinded suneate" + ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) + +/obj/item/clothing/shoes/roguetown/boots/jikatabi + name = "jikatabi" + desc = "A standard tabi that keeps the toes flexible and healthy, avoiding calluses of long expeditions. However, it looks rather goofy for the non-islanders." + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + icon_state = "jikatabi" + item_state = "jikatabi" + +/obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/shoes/roguetown/boots/jikatabi/dragontabi + name = "dragontabi" + icon_state = "dragontabi" + item_state = "dragontabi" + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + desc = "A tabi reinforced in dragon bones and asbestos, making it fire immune. Not very protective against physical damage, but still fairly durable." + armor = list("melee" = 40, "bullet" = 40, "laser" = 0,"energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0) + max_integrity = 250 + armor_class = AC_MEDIUM + heat_protection = LEGS|FEET + body_parts_covered = LEGS|FEET + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + resistance_flags = FIRE_PROOF | ACID_PROOF + +/obj/item/clothing/shoes/roguetown/sandals/geta + name = "geta" + desc = "A normal wooden geta most suitable for those who need to wander where the mud absorbs pressure." + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + icon_state = "geta" + item_state = "geta" + +/obj/item/clothing/shoes/roguetown/shortboots/cloudhead + name = "cloudhead shoes" + desc = "A traditional shoes with distinctive upturned toe design that resembles the shape of clouds, to symbolize connection to the skies." + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' + icon_state = "cloudhead_shoes" + item_state = "cloudhead_shoes" + +/obj/item/clothing/shoes/roguetown/shortboots/cloudhead/kabukimono + name = "kabuki-maru cloudhead shoes" + desc = "The same traditional cloudhead shoes of the Abyssariads, but colored in rich yellow tone and with intense implication of being used by a lowly burakumin whom belongs to an armed gang." + color = "#9b874f" + +/obj/item/clothing/shoes/roguetown/shortboots/cloudhead/toweryakkos + name = "tower-yakko cloudhead shoes" + desc = "The same traditional cloudhead shoes of the Abyssariads, but colored in rich purple tone and with intense implication of being used by a lowly burakumin whom belongs to an armed gang." + color = "#804d97" + +/obj/item/clothing/shoes/roguetown/ridingboots/gutal + name = "leather gutal" + desc = "The boots used by Abyssariad cavalry with upturned toes and durable, oil-boiled leather." + icon_state = "leathergutal" + item_state = "leathergutal" + icon = 'icons/roguetown/kaizoku/clothingicon/feet.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/feet.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/feet.dmi' diff --git a/code/modules/clothing/rogueclothes/gloves.dm b/code/modules/clothing/rogueclothes/gloves.dm index 70c308fa3f6..8a3894a0e76 100644 --- a/code/modules/clothing/rogueclothes/gloves.dm +++ b/code/modules/clothing/rogueclothes/gloves.dm @@ -121,7 +121,7 @@ name = "iron chain gauntlets" icon_state = "icgloves" desc = "Gauntlets made out of interwoven iron chains. Decent melee protection, but are better suited to stop arrows than blades." - + armor = ARMOR_MAILLE_IRON prevent_crits = ALL_EXCEPT_BLUNT_AND_STAB //Non-riveted, iron chain can be broken apart with a powerful thrust. max_integrity = INTEGRITY_STANDARD //200 Integrity, good for 5~ halberd stabs. @@ -216,3 +216,73 @@ allowed_race = list("human") allowed_sex = list(MALE) +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/clothing/gloves/roguetown/fingerless/yugake + name = "leather yugake" + desc = "Traditional archery gloves used by foglanders to protect the fingers from the impact of the bow's string. Reinforced and sturdy." + icon_state = "yugake" + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + +/obj/item/clothing/gloves/roguetown/leather/abyssal + name = "abyssal gloves" + desc = "Flexible, sturdy gloves of abyssariad making for horseback use to shield the hands against fast moving reins or grappling hook cables." + icon_state = "abyssalgloves" + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + +/obj/item/clothing/gloves/roguetown/leather/abyssal/black + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/gloves/roguetown/leather/abyssal/kabukimono + name = "kabuki-maru abyssal gloves" + desc = "Flexible, sturdy gloves of abyssariad making, but with colours well know from being used by criminals of low level from the fog islands." + color = CLOTHING_KABUKIMONO + +/obj/item/clothing/gloves/roguetown/leather/abyssal/toweryakko + name = "tower-yakko abyssal gloves" + desc = "Flexible, sturdy gloves of abyssariad making, but with colours well know from being used by criminals of low level from the fog islands." + color = CLOTHING_TOWERYAKKO + +/obj/item/clothing/gloves/roguetown/angle/falcon + name = "falconry gloves" + desc = "thick, padded leather gloves to protect a handler's limbs against the sharp talons from their loyal flying companion. Falcons are used in warfare, hunting and communication on Fog Islands." + icon_state = "falconrygloves" + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + +/obj/item/clothing/gloves/roguetown/chain/kikko + name = "kikko steel tekko" + desc = "Gauntlets made of steel in a shape that seems alike the shells of a turtle." + icon_state = "kikkotekko" + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + +/obj/item/clothing/gloves/roguetown/chain/iron/kikko + name = "kikko iron tekko" + icon_state = "ikikkotekko" + desc = "Gauntlets made of iron in a shape that seems alike the shells of a turtle." + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + +/obj/item/clothing/gloves/roguetown/plate/lamellaetekko + name = "lamellae tekko" + desc = "Gauntlets made of steel plates, in sendan style. Offers great protection for the hands while allowing delicate hand dexterity." + icon_state = "tatamitekko" //that's not a tatami design. + icon = 'icons/roguetown/kaizoku/clothingicon/gloves.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/gloves.dmi' + sleeved = 'icons/roguetown/kaizoku/clothing/gloves.dmi' diff --git a/code/modules/clothing/rogueclothes/hats.dm b/code/modules/clothing/rogueclothes/hats.dm index 385b01e48af..3d047370b1b 100644 --- a/code/modules/clothing/rogueclothes/hats.dm +++ b/code/modules/clothing/rogueclothes/hats.dm @@ -1603,3 +1603,614 @@ 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. Commonly used by commoners, or casually by the Zamurais and their retainers." + flags_inv = HIDEEARS + +/obj/item/clothing/head/roguetown/lilly + name = "small lilypad gasa" + icon_state = "lilypad_small" + desc = "a small lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas." + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/lilly/medium + name = "medium lilypad gasa" + icon_state = "lilypad_medium" + desc = "a medium lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas." + +/obj/item/clothing/head/roguetown/lilly/big + name = "big lilypad gasa" + icon_state = "lilypad_big" + desc = "a big lilypad used by Undines to protect from sun and rain. This comes as a intercultural exchange mimicking Abyssariad's gasas." + +/obj/item/clothing/head/roguetown/tengai/roningasa + name = "roningasa" + icon_state = "roningasa" + flags_inv = HIDEEARS|HIDEFACE + desc = "A hat typically worn by the masterless zamurais - the ronins." + bloody_icon_state = null + +/obj/item/clothing/head/roguetown/tengai/torioigasa + name = "torioigasa" + icon_state = "torioigasa" + desc = "A traditional Abyssariad hat designed for long travels on the murklands. Most used by commoners." + bloody_icon_state = null + +/obj/item/clothing/head/roguetown/tengai/sandogasa + name = "sandogasa" + icon_state = "sandogasa" + flags_inv = HIDEEARS + desc = "A large hat providing ample shade and protection from the elements, including rain." + bloody_icon_state = null + +/obj/item/clothing/head/roguetown/tengai/sandogasa/yamabushi + name = "yamabushi sandogasa" + icon_state = "ssandogasa" + desc = "A sandogasa painted in black tar traditionally worn by Abyssanctum yamabushis." + bloody_icon_state = null + +/obj/item/clothing/head/roguetown/soheicloth + name = "sohei coverings" + desc = "Blessed fabric bathed in holy water, keeping a sohei protected from corruptive gases - and providing anonymity. Their symbol of devotion that manifests their humbleness." + icon_state = "soheicloth" + body_parts_covered = HEAD|HAIR + body_parts_covered = HEAD|HAIR|EARS|MOUTH + flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR //it is not hiding facial hair when put on the neck. No idea how to fix. + slot_flags = ITEM_SLOT_NECK|ITEM_SLOT_HEAD + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/soheicloth/thunder + name = "thunder sohei coverings" + color = CLOTHING_THUNDER + +/obj/item/clothing/head/roguetown/soheicloth/storm + name = "storm sohei coverings" + color = CLOTHING_STORM + +/obj/item/clothing/head/roguetown/soheicloth/ocean + name = "ocean sohei coverings" + color = CLOTHING_OCEAN + +/obj/item/clothing/head/roguetown/soheicloth/island + name = "island sohei coverings" + color = CLOTHING_ISLAND + +/obj/item/clothing/head/roguetown/shinobi_zukin + name = "shinobi hood" + icon_state = "shinobi_zukin" + flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + desc = "A hood worn by members of Shinobi clans to conceal their identity and blend into the shadows. Unsuitable for espionage for being too obvious." + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane + name = "hachi-gane" + desc = "Simple, lamellar head protection made for humble monks, ronins and the poor - with the material often gathered from iron panning." + icon_state = "hachi-gane" + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/thunder + name = "thunder hachi-gane" + desc = "Simple, lamellar head protection. Marked in yellow for the mountainous magicians and monks who praises Abyssor's thunders." + color = CLOTHING_THUNDER + +/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/storm + name = "storm hachi-gane" + desc = "Simple, lamellar head protection. Marked in dark blue for the lighthouse keepers of Abyssanctum's faith, who keeps the eternal fire going." + color = CLOTHING_STORM + +/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/ocean + name = "ocean hachi-gane" + desc = "Simple, lamellar head protection. Marked in light blue for the expeditionary magicians and monks of Abyssanctum's faith, long married to the ocean." + color = CLOTHING_OCEAN + +/obj/item/clothing/head/roguetown/helmet/skullcap/hachigane/island + name = "island hachi-gane" + desc = "Simple, lamellar head protection. Marked in red for the soilgazers of Abyssanctum's faith, those bent in ensuring no plague shall reach their blessed islands. " + color = CLOTHING_ISLAND + +/obj/item/clothing/head/roguetown/helmet/zijinguan + name = "zijinguan" //This is actually a ming dynasty helmet + desc = "A cheaper version of the Myrmidon helmet that dates back to the age of guardianship, \ + yet still remains efficient. This helmet has became the symbol of abyssariad military culture \ + of the commoner class alongside the jingasa." + icon_state = "zijinguan" + flags_inv = HIDEEARS + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + detail_tag = "_detail" + dynamic_hair_suffix = "" + +/obj/item/clothing/head/roguetown/helmet/zijinguan/update_icon() + cut_overlays() + if(get_detail_tag()) + var/mutable_appearance/pic = mutable_appearance(icon(icon, "[icon_state][detail_tag]")) + pic.appearance_flags = RESET_COLOR + if(get_detail_color()) + pic.color = get_detail_color() + add_overlay(pic) + +/obj/item/clothing/head/roguetown/helmet/jingasa //the same as a Kettle. Just don't want the 64x64 bits. + name = "jingasa" + desc = "A metal gasa in conical shape. Mainly worn by Ashigarus, it protects against \ + arrows and direct blow. Most efficient together with padding underneath due to the \ + large space for the helmet to move after hit, easing impact." + icon_state = "jingasa" + flags_inv = HIDEEARS + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + flags_inv = HIDEEARS + smeltresult = /obj/item/ash + flags_inv = HIDEEARS + sellprice = VALUE_CHEAP_IRON_HELMET + + body_parts_covered = COVERAGE_HEAD + +/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto + name = "tosei kabuto" + desc = "Made from multiple steel plates riveted together, arranged in a radial pattern, \ + having great balance and weight distribution - protecting even against round balls from firearms. \ + Often used by the Zamurai class, this helmet is no rare find on a battlefield." + icon_state = "tosei_kabuto" + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + +/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto/cursed/Initialize() + . = ..() + name = "soulbinded tosei kabuto" + ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) + +/obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto/cursed/obj_break(damage_flag) + . = ..() + if(QDELETED(src)) + return + qdel(src) + +/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto + name = "masked tosei kabuto" + desc = "Made from multiple steel plates riveted together, arranged in a radial pattern. \ + This one has a mask to protect the face of whoever uses it, albeit it does make sight difficult." + icon_state = "toseikabuto_visor" + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + +/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed/Initialize() + . = ..() + name = "soulbinded masked tosei kabuto" + ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) + +/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed/obj_break(damage_flag) + . = ..() + if(QDELETED(src)) + return + qdel(src) + +/obj/item/clothing/head/roguetown/helmet/visored/zunari //knight helmet. + name = "zunari kabuto" + desc = "An Etchu Zunari Kabuto with the front end of its longitudinal plate \ + overlapping the brows, over the eyes, rather than being riveted beneath it \ + to efficiently reflect blows and arrows - and protect against the sun and sweat." + icon_state = "zunari_kabuto" + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + adjustable = CAN_CADJUST + emote_environment = 3 + block2add = FOV_RIGHT|FOV_LEFT + flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR + + armor = list("melee" = 90, "bullet" = 80, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + body_parts_covered = HEAD_EXCEPT_MOUTH + +/obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed/Initialize() + . = ..() + name = "soulbinded zunari kabuto" + ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) + +/obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed/obj_break(damage_flag) + . = ..() + if(QDELETED(src)) + return + qdel(src) + + +/obj/item/clothing/head/roguetown/heartfelt + name = "heartfelt zunari kabuto" + desc = "An Etchu Zunari kabuto with Heartfelt markings. It lacks a demonic \ + mask for intimidation purposes - yet remains just as effective, besides showing \ + the incredible artistic value that upholds Heartfelt's culture." + icon_state = "heartfelt_kabuto" + body_parts_covered = HEAD|HAIR|EARS //maskless, protects less of the face. + flags_inv = HIDEEARS + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + emote_environment = 3 + sellprice = VALUE_STEEL_HELMET+BONUS_VALUE_SMALL + clothing_flags = CANT_SLEEP_IN + armor = ARMOR_PLATE + armor_class = AC_HEAVY + prevent_crits = ALL_CRITICAL_HITS + max_integrity = INTEGRITY_STRONG + +/obj/item/clothing/head/roguetown/helmet/leather/malgai + name = "leather malgai" + desc = "A abyssariad leather helmet usually used by those who dwells \ + on the center of Fog islands, where great steppes exists, or your common hunter." + icon_state = "malgai" + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/helmet/leather/malgai/duulga //same changes of 'leather' to 'hide' has been brought over to this hat + mouth protection, because Mongol hat go brrtt + name = "arisan duulga" + desc = "The thick, oil-boiled layered leather helmet used by Abyssariads Dustriders \ + from the arid, steppelands on the heart of the Fog Islands." + icon_state = "arisan_duulga" + armor = list("melee" = 40, "bullet" = 15, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_BLUNT, BCLASS_TWIST) + body_parts_covered = HEAD|HAIR|EARS|NOSE|MOUTH + resistance_flags = FLAMMABLE // Made of leather + smeltresult = /obj/item/ash + anvilrepair = null + max_integrity = 250 + sewrepair = TRUE + blocksound = SOFTHIT + sellprice = 25 + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head.dmi' + +/obj/item/clothing/head/roguetown/helmet/skullcap/rattan + name = "tengpai dou" + icon_state = "rattan_helmet" + desc = "A cheap abyssariad helmet made from stripped, oil boiled rattan and iron. \ + Used only by militia and the humble LinYou raiders. Less protective, but can be easily repaired." + flags_inv = HIDEEARS + armor = list("melee" = 60, "bullet" = 40, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + body_parts_covered = HEAD|HAIR|EARS + max_integrity = 125 + sellprice = 20 + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + sewrepair = TRUE + +/obj/item/clothing/head/roguetown/helmet/heavy/bronzepot //hopefully asking someone to draw this helmet. + name = "relic of urn" + icon_state = "bronzeb" + desc = "The eternal relic of the Champions of the Urn, used by Eidolon Skylancers, \ + the Demonslayers of the Abyssal order. It cannot be removed, forever one with the user \ + - molten and grafted into skin, but the infused arcane bends light upon itself for clear sight." + smeltresult = /obj/item/ingot/steel //Intentional. The helmet is not actually made of bronze. It is just a lingering apotheosis-age term for that internal-mirror design. + flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + icon = 'icons/roguetown/kaizoku/clothingicon/head.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/head64.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + bloody_icon_state = "helmetblood_big" + worn_x_dimension = 64 + worn_y_dimension = 64 + block2add = null //Can easily see - cannot remove the helmet. This is your new skull. + adjustable = CAN_CADJUST + clothing_flags = null + +/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 6131358f3cb..d6bdd7f2d4c 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. @@ -121,7 +121,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. @@ -207,7 +207,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 ............... // @@ -226,3 +226,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 men-yoroi" + icon_state = "menyoroi" + 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 mempo" + icon_state = "ironmempo" + max_integrity = 100 + desc = "A cheaper menpo portraying the lower part of a Ogrun's head. It covers only the neck and the mouth." + body_parts_covered = NECK|MOUTH + flags_cover = HEADCOVERSMOUTH | MASKCOVERSMOUTH + +/obj/item/clothing/mask/rogue/kaizoku/menpo/steel + name = "steel men-yoroi" + icon_state = "smenyoroi" + max_integrity = 200 + armor = list("melee" = 80, "bullet" = 50, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT, BCLASS_TWIST) + +/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/half + name = "steel mempo" + icon_state = "steelmempo" + desc = "The lower part of a menpo portraying the maws of a Ogrun's head. It covers only the neck and the mouth, often used by warriors that cares about their sight." + max_integrity = 200 + body_parts_covered = NECK|MOUTH + flags_cover = HEADCOVERSMOUTH | MASKCOVERSMOUTH + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask + name = "iron Merkkin mask" + icon_state = "irontribal" + desc = "The old, barely used mask of the almost extinct Merkpeople, with fish-like characteristics. Usually used by Undines." + max_integrity = 100 + body_parts_covered = FACE|MOUTH|EYES + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/steel + name = "steel tribal mask" + icon_state = "steeltribal" + max_integrity = 200 + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable + var/colorable_var + var/picked + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu + name = "tengu mask" + icon_state = "colourable_tengumask" + max_integrity = 200 + desc = "A mask that glorifies a Skylancer warrior. It portrays the exagerated perception over the race - even if they lack such noses and eyebrows." + colorable_var = TRUE + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune + name = "changeling mask" + icon_state = "colourable_kitsunemask" + max_integrity = 200 + desc = "A mask that glorifies a Changeling warrior. It portrays the less exagerated perception over the race - since the mask's animalistic figure is no equal to their biology-defying skull." + detail_tag = "_detail" + colorable_var = TRUE + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/oni + name = "ogrun mask" + icon_state = "colourable_onimask" + max_integrity = 200 + desc = "A mask that glorifies a Ogrun warrior. It portrays the mostly perfect perception of the race, so efficiently it became the standards for Fog island military due to its intimidation value." + colorable_var = TRUE + +/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/attack_right(mob/user) + if(colorable_var == TRUE) + if(picked) + return + var/the_time = world.time + if(world.time > (the_time + 30 SECONDS)) + return + var/colorone = input(user, "Your emotions spreads your will.","Flush emotions within the threads.") as null|anything in CLOTHING_COLOR_NAMES + if(!colorone) + return + picked = TRUE + color = clothing_color2hex(colorone) + update_icon() + if(ismob(loc)) + var/mob/L = loc + L.update_inv_wear_mask() + return + else + return + +/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/kitsune/update_icon() + cut_overlays() + if(get_detail_tag()) + var/mutable_appearance/pic = mutable_appearance(icon(icon, "[icon_state][detail_tag]")) + pic.appearance_flags = RESET_COLOR + if(get_detail_color()) + pic.color = get_detail_color() + add_overlay(pic) + +/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor + name = "dishonor mask" + desc = "Blackpowder-infused, soul-bound veil for dishonored Abyssariads as a consequence for bringing shame to their clan and traditions, for those unentitled to be called Abyssariads - the Burakumins (non-persons), such as prostitutes and beggars. If broken, it will explode." + icon_state = "bmask" + max_integrity = 300 //Unique and very protective. You will need it. Trust me. + blocksound = PLATEHIT + break_sound = 'sound/foley/breaksound.ogg' + drop_sound = 'sound/foley/dropsound/armor_drop.ogg' + resistance_flags = FIRE_PROOF + armor = list("melee" = 60, "bullet" = 60, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + prevent_crits = list(BCLASS_CUT, BCLASS_CHOP, BCLASS_BLUNT) + flags_inv = HIDEFACE + body_parts_covered = EYES | EARS | NOSE //Allows them to use their mouth due to the mouth opening. + block2add = FOV_BEHIND + slot_flags = ITEM_SLOT_MASK|ITEM_SLOT_HIP + experimental_onhip = TRUE + +/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/Initialize() + . = ..() + name = "dishonor mask" + ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) + +/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/dropped(mob/living/carbon/human/user) + . = ..() + if(QDELETED(src)) + return + qdel(src) + +/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/obj_break(damage_flag) + . = ..() + if(QDELETED(src)) + return + explode(src) + qdel(src) + +/obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor/proc/explode(skipprob) + STOP_PROCESSING(SSfastprocess, src) + var/turf/T = get_turf(src) + explosion(T, light_impact_range = 2, flame_range = 2, smoke = TRUE, soundin = pick('sound/misc/explode/bottlebomb (1).ogg','sound/misc/explode/bottlebomb (2).ogg')) + +/obj/item/clothing/mask/rogue/kaizoku/eyeband + name = "eye bands" + icon_state = "eyeband" + max_integrity = 20 + integrity_failure = 0.5 + body_parts_covered = EYES + icon = 'icons/roguetown/kaizoku/clothingicon/masks.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/masks.dmi' + +/obj/item/clothing/mask/rogue/kaizoku/eyeband/random/Initialize() + color = pick("#a32121", "#8747b1", "#3d3a36", "#414143", "#685542", "#428138", "#264d26", "#537bc6", "#b5b004", "#249589", "#ffffff", "#bd6606", "#962e5c") + ..() + +/obj/item/clothing/mask/rogue/kaizoku/eyeband/leonardo //katanas + color = "#4f47be" + +/obj/item/clothing/mask/rogue/kaizoku/eyeband/michelangelo //nunchucks + color = "#a76e38" + +/obj/item/clothing/mask/rogue/kaizoku/eyeband/donatello //bo staff + color = "#65219c" + +/obj/item/clothing/mask/rogue/kaizoku/eyeband/raphael //sais + color = "#8a2d2d" diff --git a/code/modules/clothing/rogueclothes/neck.dm b/code/modules/clothing/rogueclothes/neck.dm index 4174bc8c7d9..59481dc6c06 100644 --- a/code/modules/clothing/rogueclothes/neck.dm +++ b/code/modules/clothing/rogueclothes/neck.dm @@ -514,3 +514,87 @@ 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/psycross/silver/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" + resistance_flags = FIRE_PROOF + slot_flags = ITEM_SLOT_NECK|ITEM_SLOT_HIP|ITEM_SLOT_WRISTS + +/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 3abebf3fe70..26e505e184a 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 b0486dbe751..6fdf658238c 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 747771dd27c..f5d4f34a5ce 100644 --- a/code/modules/clothing/rogueclothes/shirts.dm +++ b/code/modules/clothing/rogueclothes/shirts.dm @@ -422,3 +422,181 @@ if(get_detail_color()) pic.color = get_detail_color() add_overlay(pic) + +/////////////////////////////////////////////////////////////////// +// Part of Kaizoku project that is still yet to be finished. // +// The Demo usage is meant for Stonekeep and Warmongers. // +// If the usage for other sources is desired, before it finishes,// +// ask monochrome9090 for permission. Respect the artists's will.// +// If you want this quality content, COMMISSION me instead. // +// For this project, requirements are low, and mostly lore-based.// +// I just do not desire for the Abyssariads to be butchered. // +/////////////////////////////////////////////////////////////////// + +/obj/item/clothing/suit/roguetown/shirt/tunic/kimono + name = "traditional kimono" + desc = "A front-wrapped garment with long sleeves made from a long, narrow bolt of cloth used as a formal garment by the poor and rich alike." + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + icon_state = "kimono" + item_state = "kimono" + slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR + boobed = TRUE + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + +/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/random/Initialize() + color = RANDOM_PEASANT_DYES + ..() + +/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/ronin + color = CLOTHING_RONIN + +/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/dark + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/suit/roguetown/shirt/tunic/kimono/kabukimono + color = CLOTHING_KABUKIMONO + +/obj/item/clothing/suit/roguetown/shirt/rags/monkgarb + name = "monk samue" + desc = "The Samue is the clothing used by Abyssanctum monks engaged on the act of Samu, most proper for those performing temple maintenance and mountain hiking." + slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + icon_state = "monkgarb" + item_state = "monkgarb" + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + body_parts_covered = CHEST|ARMS|VITALS + +/obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random/Initialize() + color = RANDOM_PEASANT_DYES + ..() + +/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo //I know this is actually a Kataginu, but it is know more as 'Kamishimo', even if lacking a Hakama. Because HAKAMA is its own thing here. + name = "kataginu" + desc = "A formal kimono used by men, a short sleeveless garment made of hemp which usually comes together with a hakama, and worn on top of a kosode or kimono. To use one without cloth underneath, conveys a ronin nature." + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR|ITEM_SLOT_CLOAK + icon_state = "kamishimo" + item_state = "kamishimo" + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + body_parts_covered = CHEST|VITALS + +/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/random/Initialize() + color = RANDOM_PEASANT_DYES + ..() + +/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/ronin + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/suit/roguetown/shirt/tunic/kamishimo/eidolon + color = CLOTHING_EIDOLON + +/obj/item/clothing/suit/roguetown/shirt/looseshirt + name = "kimono jinbei" + desc = "A summer shirt that goes along with a tobi, used during the hot summers on Fog islands." + slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + icon_state = "looseshirt" + item_state = "looseshirt" + boobed = TRUE + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + body_parts_covered = CHEST|ARMS|VITALS + +/obj/item/clothing/suit/roguetown/shirt/looseshirt/Initialize() + color = RANDOM_PEASANT_DYES + ..() + +/obj/item/clothing/suit/roguetown/shirt/looseshirt/shinobi + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/suit/roguetown/shirt/looseshirt/dragonslayer + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + resistance_flags = FIRE_PROOF | ACID_PROOF + color = CLOTHING_WINESTAIN_RED + +/obj/item/clothing/suit/roguetown/shirt/rags/tribal + name = "tribal garbs" + desc = "Tribal clothings made from plant fiber commonly used by Undine tribesmen." + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + slot_flags = ITEM_SLOT_SHIRT|ITEM_SLOT_ARMOR + icon_state = "tribalgarb" + item_state = "tribalgarb" + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + body_parts_covered = CHEST|VITALS + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian + name = "onmyoji's warfare garb" + desc = "The garbs used by Abyssariad magicians during times of warfare, holding the marks of Abyssor upon the cloth." + icon_state = "abyssaltunic" + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + boobed = TRUE + flags_inv = HIDEBOOB + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + allowed_sex = list(MALE, FEMALE) + allowed_race = list("human", "tiefling", "aasimar", "abyssariad") + color = null + sellprice = 100 + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/black + color = CLOTHING_SOOT_BLACK + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/random/Initialize() + color = RANDOM_NOBLE_DYES + ..() + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/thunder + name = "thunder onmyoji's warfare garb" + desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in yellow for the mountainous magicians and monks who praises Abyssor's thunders." + color = CLOTHING_THUNDER + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/storm + name = "storm onmyoji's warfare garb" + desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in dark blue for the lighthouse keepers of Abyssanctum's faith, who keeps the eternal fire going." + color = CLOTHING_STORM + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/ocean + name = "ocean onmyoji's warfare garb" + desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in light blue for the expeditionary magicians and monks of Abyssanctum's faith, long married to the ocean." + color = CLOTHING_OCEAN + +/obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/island + name = "island onmyoji's warfare garb" + desc = "The garbs used by Abyssariad magicians during times of warfare. Marked in red for the soilgazers of Abyssanctum's faith, those bent in ensuring no plague shall reach their blessed islands. " + color = CLOTHING_ISLAND + +/obj/item/clothing/suit/roguetown/shirt/kaizoku/robe + slot_flags = ITEM_SLOT_ARMOR + name = "onmyoji's garb" + desc = "Casual abyssariad garbs usually used by magicians, or those living on the frigid, treacherous mountains on the edges of the Fog islands." + icon_state = "loosetunic" + icon = 'icons/roguetown/kaizoku/clothingicon/shirt.dmi' + mob_overlay_icon = 'icons/roguetown/kaizoku/clothing/shirt.dmi' + sleeved = 'icons/roguetown/kaizoku/helpers/sleeves_shirts.dmi' + boobed = TRUE + flags_inv = HIDEBOOB + r_sleeve_status = SLEEVE_NORMAL + l_sleeve_status = SLEEVE_NORMAL + allowed_sex = list(MALE) + allowed_race = list("human", "tiefling", "aasimar", "abyssariad") + color = null + +/obj/item/clothing/suit/roguetown/shirt/kaizoku/robe/Initialize() + color = RANDOM_PEASANT_DYES + ..() diff --git a/code/modules/clothing/rogueclothes/storage.dm b/code/modules/clothing/rogueclothes/storage.dm index ac0c390bf84..0872e8ee6d6 100644 --- a/code/modules/clothing/rogueclothes/storage.dm +++ b/code/modules/clothing/rogueclothes/storage.dm @@ -66,18 +66,15 @@ new /obj/item/needle/thorn(src) new /obj/item/roguekey/bandit(src) -//Mercs belt starts with a bandage and a key to their guildhall. +//Mercs belt variants start with a bandage and a key to their guildhall. /obj/item/storage/belt/rogue/leather/mercenary/PopulateContents() new /obj/item/natural/cloth(src) new /obj/item/roguekey/mercenary(src) -/obj/item/storage/belt/rogue/leather/merc_nokey/PopulateContents() - new /obj/item/natural/cloth (src) - new /obj/item/roguecoin/copper/pile (src) -/obj/item/storage/belt/rogue/leather/merc_nokey/shalal +/obj/item/storage/belt/rogue/leather/mercenary/shalal name = "shalal belt" icon_state = "shalal" -/obj/item/storage/belt/rogue/leather/merc_nokey/black +/obj/item/storage/belt/rogue/leather/mercenary/black name = "black belt" icon_state = "blackbelt" @@ -356,3 +353,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 20e17f3aa1e..804563d15ed 100644 --- a/code/modules/clothing/rogueclothes/wrists.dm +++ b/code/modules/clothing/rogueclothes/wrists.dm @@ -81,3 +81,95 @@ 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 + armor = ARMOR_MINIMAL //giving them these just because if makes sense. + prevent_crits = MINOR_CRITICALS + 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 027b22a5788..13369d5fcc5 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm @@ -10,7 +10,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) var/list/allowed_patrons var/list/allowed_ages diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm index a0f8dfbb9b4..ddd219a2e47 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/antag/bandit.dm @@ -12,7 +12,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/bandit maximum_possible_slots = 4 diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/champion.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/champion.dm new file mode 100644 index 00000000000..8d2809b2663 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/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 + "Skylancer", // Eidolon + "Ogrun", + "Undine") // Dragonslayer + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/champion + category_tags = list(CTAG_ADVENTURER) + maximum_possible_slots = 1 + pickprob = 50 + +/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", 3) + H.change_stat("endurance", 2) + H.change_stat("constitution", 2) + H.change_stat("intelligence", -1) // To justify +3 STR to wield their sword + 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/splint/kikko/eidolon + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/eidolon + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/abyssanctum + shoes = /obj/item/clothing/shoes/roguetown/sandals/geta + pants = /obj/item/clothing/under/roguetown/tights/hakama/eidolon + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu + if(H.wear_mask) + if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left )) + qdel(H.wear_mask) + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu + if(findtext(H.real_name, " Clanless")) //You can't be a clanless champion. This one literally does not exist because, at least, they would've settled a bloodline. + to_chat(H, "I am member of the Royal court, of course I have a bloodline.") + clanfication(H) + + + H.champion = TRUE + var/prev_real_name = H.real_name + var/prev_name = H.name + var/spec1 = "Myrmidon" + var/spec2 = "Eidolon" + var/spec3 = "Dragonslayer" + if(H.dna.species.name == "Changeling") + H.real_name = "[spec1] [prev_real_name]" + H.name = "[spec1] [prev_name]" + else if(H.dna.species.name == "Skylancer") + H.real_name = "[spec2] [prev_real_name]" + H.name = "[spec2] [prev_name]" + else + H.real_name = "[spec3] [prev_real_name]" + H.name = "[spec3] [prev_name]" diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm new file mode 100644 index 00000000000..20cf53b7673 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/kyudoka.dm @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/kyudoka //Ashigaru/Civilian role. + name = "Kyudoka" + tutorial = "The praticioners of Kyujutsu trained in Dustwalker dojos, making use of the large Yumi as a weapon of war, \ + trying to keep the culture alive even after the creation of handcannons and firelances overly used by the Fog Island's manpower." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + //humen - need to settle Heartfeltean culture on this one. + "Changeling", + "Skylancer", + "Ogrun", + "Undine") + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/kyudoka + category_tags = list(CTAG_ADVENTURER) + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/kyudoka/pre_equip(mob/living/carbon/human/H) + ..() + H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1,1), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sewing, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) + + shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal + pants = /obj/item/clothing/under/roguetown/trou/leather/fur/random + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random //For the drip's sake that portrays their military side. + if(prob(23)) + gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal + else + gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + belt = /obj/item/storage/belt/rogue/leather + armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker + cloak = /obj/item/clothing/cloak/raincloak/mino + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/long/yumi + backl = /obj/item/storage/backpack/rogue/satchel + beltr = /obj/item/flashlight/flare/torch/lantern + backpack_contents = list(/obj/item/bait = 1, /obj/item/rogueweapon/knife/kaizoku/kunai = 1) + beltl = /obj/item/quiver/arrows + H.change_stat("perception", 2) + H.change_stat("endurance", 1) + H.change_stat("speed", 1) + ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm new file mode 100644 index 00000000000..be9f46bfad6 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/marauder.dm @@ -0,0 +1,112 @@ +/////////////////////////////////////////////////////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) + maximum_possible_slots = 6 + pickprob = 100 + tutorial = "Ever since Grenzelhoft invasions on Fog Islands, the Undine Tribes became allies of many Abyssariad clans and guardians. Even if untrue for the entire government itself, Undine Marauders take part of Abyssariad expeditions as ''allies'' and formidable annihilators of Humens and Goblins alike." + +/datum/outfit/job/roguetown/adventurer/marauder/pre_equip(mob/living/carbon/human/H) + ..() + //average normal skill for all. They are not civilized Undine, so they have skills for survival. + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 4, TRUE) //Tribal Undine lives on the river. + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/labor/fishing, 2, TRUE) //fish is their main course. + H.mind.adjust_skillrank(/datum/skill/craft/crafting, 4, TRUE) //crafting is their deal. + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/labor/butchering, 3, TRUE) //butchering is also their deal. + H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE) //Elf-Goblin nature. + + H.become_blind("TRAIT_GENERIC") + var/tribaltype = list("boneclad","bodysnatcher", "skypiercer") + var/specialization = input("Choose your equipments", "Available equipments") as anything in tribaltype + switch(specialization) + if("boneclad") //Starts with no survival tool. Full melee, tier 3 makeshift armor roundstart. Mace/axe focus. + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/ceramic/reinforced + head = /obj/item/clothing/head/roguetown/helmet/ceramic/reinforced + pants = /obj/item/clothing/under/roguetown/kaizoku/ceramic + beltl = /obj/item/rogueweapon/mace/cudgel/rungu + backl = /obj/item/rogueweapon/mace/ararebo/obsidian + shoes = /obj/item/clothing/shoes/roguetown/sandals/geta + wrists = /obj/item/clothing/wrists/roguetown/bracers/bonebracer + shirt = /obj/item/clothing/suit/roguetown/shirt/rags/tribal + belt = /obj/item/storage/belt/rogue/leather/rope + + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 2, TRUE) + + to_chat(H, span_warning( "I am a warrior from Boneclad Clan! Revenge against paupers-folk! No more shall we pity the fool! To be forced to work is only for weaklings and the disgraced!")) + + //same as normal warriors. + H.change_stat("strength", 2) + H.change_stat("endurance", 1) + H.change_stat("constitution", 1) + H.change_stat("intelligence", -1) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + + if("bodysnatcher") //Starts with blade as survival tool. Has Tier 2 makeshift armor, spear and throwable ranged weapon. Spear focus. + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/ceramic + head = /obj/item/clothing/head/roguetown/helmet/ceramic/medium + pants = /obj/item/clothing/under/roguetown/kaizoku/ceramic/light + backr = /obj/item/rogueweapon/polearm/spear/stone/obsidian + backl = /obj/item/rogueweapon/shield/wood/rattan + beltr = /obj/item/rogueweapon/mace/cudgel/rungu + beltl = /obj/item/rogueweapon/knife/kaizoku/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/knife/kaizoku/kunai = 1) + + ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) + H.change_stat("strength", -1) + H.change_stat("perception", 2) + H.change_stat("speed", 2) + + to_chat(H, span_warning( "We suffered under the veil of night, but no longer shall we suffer, as my clan will rain death on the whalers - and I shall take part in this.")) + + H.cure_blind("TRAIT_GENERIC") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm new file mode 100644 index 00000000000..0eb4027f143 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/mastersohei.dm @@ -0,0 +1,70 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary. +//Contact Monochrome9090 for further information. + +/datum/advclass/combat/abyssariad/mastersohei // High Abyssanctum role. Normally a religious leader for expeditions and whatnot. + name = "Preceptor Sohei" + tutorial = "High-ranking Sohei who hold authority within multiple temples and Soheis retainers within their influence. \ + Often in charge of militant activities, these senior soheis are in search of demonic corruption to dismantle - \ + or involve themselves in spiritual matters with a iron fist." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + ) + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/mastersohei + maximum_possible_slots = 1 + pickprob = 100 + category_tags = list(CTAG_ADVENTURER) + vampcompat = FALSE + +/datum/outfit/job/roguetown/adventurer/abyssariad/mastersohei/pre_equip(mob/living/carbon/human/H) + ..() + head = /obj/item/clothing/head/roguetown/helmet/heavy/bucket/soheidemon + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/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 + r_hand = /obj/item/rogueweapon/polearm/halberd/bisento + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/magic/holy, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) + H.change_stat("strength", 2) + H.change_stat("perception", 2) + H.change_stat("intelligence", 2) + H.change_stat("constitution", 1) + H.change_stat("endurance", 1) + H.change_stat("speed", -2) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/churn) + + var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron) + //Paladins, while devout warriors spent WAY too much time studying the blade. No more acolyte+ + C.update_devotion(50, 50) + C.holder_mob = H + C.grant_spells_sohei(H) + H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/churn) + ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) //It's meant to be only heavy armor, but Kusari is medium. Idk how templar is doing, but in my testing, the armor was freaked. + ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm new file mode 100644 index 00000000000..3343407ccd9 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/onmyoji.dm @@ -0,0 +1,80 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/onmyoji //Considered 'high-abyssanctum', as Onmyojis actually makes part of their religion. (Also, their mana are sourced from Abyssor due to soul exchanging.) + name = "Onmyoji" + tutorial = "The Chosen of the Pressuring Depth, spiritcallers of Abyssor, sage of the oceans. The Onmyojis are celestial magicians skilled in divination \ + and manifesting the powers of the sea as intermediaries between the Abyssariads and the Abyssal realm. The Onmyojis are empowered in the same way Abyssor \ + was empowered, in the depths of the Weeping God's pressuring tears." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + ) + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji + category_tags = list(CTAG_ADVENTURER) + maximum_possible_slots = 2 + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji + allowed_patrons = list(/datum/patron/divine/abyssor) + +/datum/outfit/job/roguetown/adventurer/abyssariad/onmyoji/pre_equip(mob/living/carbon/human/H) + ..() + shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead + belt = /obj/item/storage/belt/rogue/leather/rope + backr = /obj/item/storage/backpack/rogue/satchel + beltl = /obj/item/reagent_containers/glass/bottle/rogue/manapot + backl = /obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff + armor = /obj/item/clothing/suit/roguetown/shirt/kaizoku/robe + head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/eboshi + pants = /obj/item/clothing/under/roguetown/trou/tobi/dark + + var/yesno = list("Yes. I am Iron-hearted.","No. I am Civilian.") + var/military = input("Sworn to the Fog Island ranks?", "Emperor's regiment?") as anything in yesno + var/background = pickweight(list("thunder" = 1, "storm" = 1, "ocean" = 1, "island" = 1)) //This is just flavour in the same way Soheis are. Wait, are they related??? Leave it to the Players to explain. + switch(military) //Just clothes. + if("Yes. I am Iron-hearted.") //Cooler clothing. Roleplay-wise, an champion-type, theme unique solely to Kaizoku as far I'm aware. + switch(background) + if("thunder") + armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/thunder + head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/thunder + pants = /obj/item/clothing/under/roguetown/trou/tobi/thunder + if("storm") + armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/storm + head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/storm + pants = /obj/item/clothing/under/roguetown/trou/tobi/storm + if("ocean") + armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/ocean + head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/ocean + pants = /obj/item/clothing/under/roguetown/trou/tobi/ocean + if("island") + armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard/guardian/island + head = /obj/item/clothing/head/roguetown/wizhat/onmyoji/island + pants = /obj/item/clothing/under/roguetown/trou/tobi/island + H.set_blindness(0) + if("No. I am a Civilian.)") //Just continue and replace. + H.set_blindness(0) + + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/magic/arcane, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/alchemy, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) + H.change_stat("strength", -1) + H.change_stat("intelligence", 3) + H.change_stat("constitution", -1) + H.change_stat("endurance", -1) + H.change_stat("speed", -2) + //placeholder spells. + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball) //They are intended to have their own powers. I will make that later in the future with the help of another coder. + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/forcewall) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm new file mode 100644 index 00000000000..ff01908e90c --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shinobi.dm @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/shinobi //Civilian role. Ashigarus or former (low-ranking) monks takes this role. + name = "Shinobi" + tutorial = "The military or former monks convert agents of a Daimyo or a clan who operates in secrecy, using stealth, \ + disguise and deception as tool. Knowledged in poison, Shinobis steals battle plans and assassinates \ + important political figures. Differently of Imperial Assassins or Rogues, the Shinobis still have concepts \ + of loyalty to Abyssal Tide's honor." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + //humen - need to settle Heartfeltean culture on this one. + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + ) + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/shinobi + category_tags = list(CTAG_ADVENTURER) + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/shinobi/pre_equip(mob/living/carbon/human/H) + ..() + H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, 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, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/traps, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/engineering, 2, TRUE) //Shinobis produces bombs. + if(prob(70)) + beltl = /obj/item/clothing/gloves/roguetown/leather + else + beltl = /obj/item/clothing/gloves/roguetown/fingerless + backl = /obj/item/storage/backpack/rogue/satchel/ninja + neck = /obj/item/clothing/neck/roguetown/gorget + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + pants = /obj/item/clothing/under/roguetown/trou/leather/shinobizubon + shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja + if(prob(40)) + beltl = /obj/item/rogueweapon/knife/kaizoku/tanto + else + beltl = /obj/item/rogueweapon/knife/kaizoku/kaiken + + if(H.dna.species.name == "Undine") + to_chat(H, "Living in the Fog island's waterways, I've been trained and fed by the many Abyssariad monks. From their will, I am a branch of their skills.") + var/TMNT = pickweight(list("Donatello" = 1, "Leonardo" = 1, "Michelangelo" = 1, "Raphael" = 1)) // is this a reference...? + H.become_blind("TRAIT_GENERIC") + pants = /obj/item/clothing/under/roguetown/kaizoku/tribal + armor = /obj/item/clothing/suit/roguetown/armor/leather/splint/ninjakappa + switch(TMNT) //I'm fucking autistic + if("Donatello") + mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/donatello + backr = /obj/item/rogueweapon/polearm/woodstaff/quarterstaff/bostaff + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 4, TRUE) //worst weapon, good skill. + if("Michelangelo") + mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/michelangelo + beltr = /obj/item/rogueweapon/flail/nunchaku + beltl = /obj/item/rogueweapon/flail/nunchaku + H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE) + if("Raphael") + mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/raphael + beltr = /obj/item/rogueweapon/knife/kaizoku/sai + beltl = /obj/item/rogueweapon/knife/kaizoku/sai + if("Leonardo") + mask = /obj/item/clothing/mask/rogue/kaizoku/eyeband/leonardo + beltr = /obj/item/rogueweapon/sword/short/wakizashi + beltl = /obj/item/rogueweapon/sword/short/wakizashi + else + head = /obj/item/clothing/head/roguetown/shinobi_zukin + pants = /obj/item/clothing/under/roguetown/trou/leather/shinobizubon + shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt/shinobi + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/ninja + armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/shozoku + beltr = /obj/item/quiver/arrows + beltl = /obj/item/rogueweapon/knife/kaizoku/kaiken + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu + + ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) + H.change_stat("perception", 1) + H.change_stat("speed", 3) + H.change_stat("constitution", 1) + H.cure_blind("TRAIT_GENERIC") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.dm new file mode 100644 index 00000000000..fb4bcfa7014 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/shrinekeeper.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.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/shrinekeepers //Low-abyssanctum role, but its efficiency requires champion-tier levels entirely because of unarmed skills. They are NOT champions. + name = "Shrinekeeper" + allowed_sexes = list(MALE, FEMALE) + tutorial = "The shrines needs to be cared of, and there is no one most suitable for such duty than the purifier branch. \ + Those who knows the art of folding clothes while people are still in them. The Involuntary Yoga Practicers. Bokh and Bajutsu.\ + They perform rituals to submit demonic spirits just as much they submit mortals with martial arts." + allowed_races = list( + "Changeling", + "Skylancer", + "Ogrun", + "Undine") + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers + category_tags = list(CTAG_ADVENTURER) + vampcompat = FALSE + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers + allowed_patrons = list(/datum/patron/divine/abyssor) + +/datum/outfit/job/roguetown/adventurer/abyssariad/shrinekeepers/pre_equip(mob/living/carbon/human/H) + ..() + neck = /obj/item/clothing/neck/roguetown/psycross/silver/abyssanctum + shoes = /obj/item/clothing/shoes/roguetown/sandals/geta + 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 + + var/yesno = list("I wander and meditate.","I build shrines for Abyssor.") + var/monk = input("Wayfarer or Settler?", "Wayfarer or Settler?") as anything in yesno + switch(monk) //Just clothes. + if("I wander and meditate.") + head = /obj/item/clothing/head/roguetown/takuhatsugasa + cloak = /obj/item/clothing/cloak/raincloak/mino + shirt = /obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) + H.set_blindness(0) + if("I build shrines for Abyssor.") + armor = /obj/item/clothing/suit/roguetown/shirt/robe/shrinekeeper + shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/random + wrists = /obj/item/clothing/wrists/roguetown/shrinekeeper + H.mind.adjust_skillrank(/datum/skill/craft/carpentry, 1, TRUE) //They lose 'Medicine' to have 'Carpetry', because Shrinekeepers... repair shrines. + H.set_blindness(0) + 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/misc/climbing, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, pick(2,2,3), TRUE) + + H.change_stat("strength", 3) + H.change_stat("constitution", 2) + H.change_stat("endurance", 2) + H.change_stat("perception", -1) + H.change_stat("speed", 1) + + ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) + + if(H.patron != /datum/patron/divine/abyssor) + H.patron = GLOB.patronlist[/datum/patron/divine/abyssor] + to_chat(H, "I am a Abyssanctum, loyal to The World Whale. May the tides of fate guide me to honor.") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm new file mode 100644 index 00000000000..0292a2b9e96 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/sohei.dm @@ -0,0 +1,106 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary. +//Contact Monochrome9090 for further information. + +/datum/advclass/combat/abyssariad/sohei //Low-abyssanctum tier. + name = "Underling Sohei" + tutorial = "Senso Soheis are the Abyssanctum war disciples from the Tideweaver branch, the direct \ + continuation of the champions of old age. Their duty is to protect the shrines and spiritual entities \ + from demonic corruption." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + //humen - need to settle Heartfeltean culture on this one. + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + ) + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/sohei + category_tags = list(CTAG_ADVENTURER) + vampcompat = FALSE + maximum_possible_slots = 2 //Only two, united with Yamabushi. + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/sohei + allowed_patrons = list(/datum/patron/divine/abyssor) + +/datum/outfit/job/roguetown/adventurer/abyssariad/sohei/pre_equip(mob/living/carbon/human/H) + ..() + neck = /obj/item/clothing/head/roguetown/soheicloth + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/abyssanctum + shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/iron/tatami + shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi + head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane + beltr = /obj/item/rogueweapon/knife/kaizoku/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/bardiche/naginata/tsukushi //weaker naginata, mass-produced iron tier. Slightly more rare than Yari. + if("katakama") + backr = /obj/item/rogueweapon/polearm/spear/yari/katakama//Steel, more combat-effective and rarer than iron Yari. + if("yari") + backr = /obj/item/rogueweapon/polearm/spear/yari //just a simple iron spear. + + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) //The true focus of this class. + H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) //I don't think they are deserving of bows, but Soheis irl also used them, soo... + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/magic/holy, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, pick(0,1,1), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1,1), TRUE) + if(H.age == AGE_OLD) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 1, TRUE) + H.change_stat("strength", 2) + H.change_stat("constitution", 1) + H.change_stat("endurance", 2) + H.change_stat("perception", -2) //imagine training meditation so hard you end up edging your own eyes, but start noticing spirits. (schizophrenia) + H.change_stat("speed", -1) + + var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron) + //Max devotion limit - Sohei are strong for a common role, but cannot pray to gain more abilities beyond t1 + C.update_devotion(50, 50) + C.holder_mob = H + C.grant_spells_sohei(H) + H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray) + + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + if(H.patron != /datum/patron/divine/abyssor) + H.patron = GLOB.patronlist[/datum/patron/divine/abyssor] + to_chat(H, "I am a Abyssanctum, loyal to The World Whale. May the tides of fate guide me to honor.") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm new file mode 100644 index 00000000000..2b499b6e876 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/wokou.dm @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/wokou //Civilian role. They are not even Ashigarus, so no retainer/military position whasoever. + name = "Wokou Warrior" + tutorial = "The Wokou is a general term for abyssariad fighter and/or pirates, those who constantly causes annual invasions on coastline provinces worldwide. They have many specializations and many \ + receives government subsidy. However, their presence on Enigma has less boundaries to raiding the place, but more about taking the 'lawful' privateer role." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + "Changeling", + "Skylancer", + "Ogrun", + "Undine") + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/wokou + category_tags = list(CTAG_ADVENTURER) + pickprob = 100 + +/datum/outfit/job/roguetown/adventurer/abyssariad/wokou/pre_equip(mob/living/carbon/human/H) // Same as Warrior. + ..() + H.mind.adjust_skillrank(/datum/skill/combat/crossbows, pick(1,2), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, pick(1,2), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, pick(1,1,2), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, pick(2,3), TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(1,1,2), TRUE) + + shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi + gloves = /obj/item/clothing/gloves/roguetown/leather + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho + shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt + pants = /obj/item/clothing/under/roguetown/trou/tobi/random + + H.become_blind("TRAIT_GENERIC") + var/wokoutype = list("LinYou (Ambusher)","Dustrider (Scout)","Muqian (Towerdweller)","Shuhen (Militia)","Kaizoku (Navy)", "Jizamurai (Enforcer)") + var/specialization = input("Choose your culture", "Available culture") as anything in wokoutype + switch(specialization) //as far I know, all roles here are meant to be balanced. + if("LinYou (Ambusher)") //Weaker iron armor, specialized exactly in being able to repair their own weaker armor. + var/roll = rand(1, 100) + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/chainmail/rattan + head = /obj/item/clothing/head/roguetown/helmet/skullcap/rattan + backl = /obj/item/storage/backpack/rogue/satchel + backr = /obj/item/rogueweapon/shield/wood/rattan + beltr = /obj/item/storage/belt/rogue/pouch/coins/poor + if(roll <= 33) + beltl = /obj/item/rogueweapon/sword/short/jian + else if(roll <= 66) + beltl = /obj/item/rogueweapon/sword/scimitar/messer/dao + else + beltl = /obj/item/rogueweapon/sword/iron/jian + H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) + to_chat(H, span_warning( "Hailing from the tropical edges, I am a 'LinYou', armored in humble, oil-boiled wickerwork and iron, I am trained to perform long-term expeditions and guerrila tactics on any soil.")) + + //same as normal warriors. + H.change_stat("strength", 2) + H.change_stat("endurance", 1) + H.change_stat("constitution", 1) + H.change_stat("intelligence", -1) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + + if("Dustrider (Scout)") // Full light armor, highest quality of light armor. Loses shield and money for bow. Literally mongolian, but lacking a horse. Only Dodge expert. + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/leather/hide/dustwalker + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy/deelcoat + head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/duulga + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu + backl = /obj/item/storage/backpack/rogue/satchel + beltr = /obj/item/quiver/arrows + if(prob(60)) + beltl = /obj/item/rogueweapon/knife/kaizoku/kunai //so they HAVE something to use in melee combat. + else + beltl = /obj/item/rogueweapon/knife/kaizoku/tanto // luckyroll. Now you have a short-short sword. + H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE) + + //please tell me if this is balanced or not. + H.change_stat("strength", 1) + H.change_stat("speed", 2) + H.change_stat("intelligence", -1) + H.change_stat("endurance", 1) + ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) + to_chat(H, span_warning( "Hailing from the arid heart of the island, I am a 'Dustwalker'. I left my horse behind to try my luck among the sailing allies, but my trusted bow remains with me.")) + + if("Shuhen (Militia)") //No protective helmet, full face protection + neck from a full menpo - still does not protect the head. Their weapon also functions to work the field, but since that can be done by hand nowadays, is no balance issue now. + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/plate/mirror/iron + head = /obj/item/clothing/head/roguetown/tengai/gasa + if(prob(33)) + head = /obj/item/clothing/head/roguetown/tengai/torioigasa + if(prob(33)) + head = /obj/item/clothing/head/roguetown/tengai/sandogasa + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo + backr = /obj/item/rogueweapon/shield/wood/rattan + beltr = /obj/item/storage/belt/rogue/pouch/coins/poor + if(prob(60)) + beltl = /obj/item/rogueweapon/sickle/kama + else + beltl = /obj/item/rogueweapon/woodcut/changfu // luckyroll. Now you have an axe. + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE) + to_chat(H, span_warning("Farmlands shall never struggle under my might, as I came from the Outskirts where the demons once brew, I slaughtered the Grezenholft like pigs - and I can do it again. May the waters fortalify the soil I step on.")) + + //same as normal warriors. + H.change_stat("strength", 2) + H.change_stat("endurance", 1) + H.change_stat("constitution", 1) + H.change_stat("intelligence", -1) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + + if("Muqian (Towerdweller)") //The 20% of Wokou Population. Practically the best armored - but has no shield and no money, and have to rely on flails for combat. 'Kusari/Chain-People' + H.set_blindness(0) + shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk/kusari + neck = /obj/item/clothing/neck/roguetown/chaincoif/iron/kusari_zukin + shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi + beltl = /obj/item/rogueweapon/flail/kusarigama/peasant + H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 1, TRUE) + to_chat(H, span_warning("I am a Muqian, I hail from the towers of civilization, those upheld in sturdy chains alike my body. May the dices of destiny enlight my ways.")) + + //same as normal warriors. + H.change_stat("strength", 2) + H.change_stat("endurance", 1) + H.change_stat("constitution", 1) + H.change_stat("intelligence", -1) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + + if("Kaizoku (Navy)") // Special one. "AYO THIS IS THE PROJECT NAME!!!" Start with Steel Weapon - but uses weak light armor, but they have DRIP, and non-rattan shield, because from where they come from, has no Rattan. + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku + head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku + beltl = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao + backr = /obj/item/rogueweapon/shield/wood + beltr = /obj/item/storage/belt/rogue/pouch/coins/poor + H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) + to_chat(H, span_warning("I am a son of Kaizoku and I am one with the destroyed Atoll, my life is on the seas. The major empire's supply lines shall crumble against my ways of warfare. May the Abyssal Emperor live FOREVER. ")) + + //focused on having more stamina. + H.change_stat("strength", 1) + H.change_stat("speed", 2) + H.change_stat("intelligence", -1) + H.change_stat("perception", -1) + H.change_stat("endurance", 2) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + if("Jizamurai (Enforcer)") + H.set_blindness(0) + armor = /obj/item/clothing/suit/roguetown/armor/leather/splint/kikko/rich + head = /obj/item/clothing/head/roguetown/tengai/gasa + cloak = /obj/item/clothing/cloak/stabard/haramaki/jinbaori/jizamurai + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/steel/half + mouth = /obj/item/clothing/mask/cigarette/pipe/westman + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/rich + pants = /obj/item/clothing/under/roguetown/trou/tobi/random + beltr = /obj/item/rogueweapon/sword/short/wakizashi + beltl = /obj/item/rogueweapon/sword/uchigatana + H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) + to_chat(H, span_warning("As a minor Zamurai lord, my roots are bound to the sword. I shall protect the weak and the innocent from corruption, as its reach ends where my blade begins. ")) + + //Strength and Endurance. + H.change_stat("strength", 2) + H.change_stat("endurance", 2) + H.change_stat("perception", -1) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) + + H.cure_blind("TRAIT_GENERIC") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm new file mode 100644 index 00000000000..b9f78315217 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/yamabushi.dm @@ -0,0 +1,98 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//THIS ROLE IS FAR FROM FINISHED! The coder that voluntered in helping me on the Abyssanctum spells quitted. So someone willing and able is VERY necessary. +//Contact Monochrome9090 for further information. + +/datum/advclass/combat/abyssariad/yamabushi //Low-ranking Abyssanctum. + name = "Yamabushi" + allowed_sexes = list(MALE, FEMALE) + tutorial = "The Yamabushi stands as the battle-hardened stewards and hermits of knowledge dedicated to society's \ + welfare of Abyssanctum's faith. Their wisdom welcome other patron within their sacred ranks so their devotion \ + further embrace the greater good. They meditate on mountains and endure long lengths each voyage." + allowed_races = list( + "Changeling", + "Skylancer", + "Ogrun", + "Undine") + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/yamabushi + maximum_possible_slots = 2 //Less slots. It is split with Sohei. + 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 + H.virginity = TRUE + 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 + H.virginity = TRUE + if("Pestra") + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/pestra + if("Malum") + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/malum_steel + if("Abyssor") + wrists = /obj/item/clothing/neck/roguetown/psycross/silver/abyssanctum + 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) + + ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC) + var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.patron) + C.holder_mob = H + C.update_devotion(50, 50) + C.grant_spells_cleric(H) + H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm new file mode 100644 index 00000000000..8d69678e431 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/abyssariad/zamurai.dm @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////Abyssariad Pattern for Combat Skills///////////////////////////////////////////////////////// +//'Civilian/Low Abyssanctum' Combat Roles - 3 LEVELS MAX in Combat Skill (Normal) - Many reasons. Mostly religious and Finantial. // +//'Zamurai/High Abyssanctum' Combat Roles - 4 lEVELS MAX in Combat Skill (Rare) - Plenty of Reasons. Leading religious and Demon-slaying. // +//'Champion' Combat Roles - 5 LEVELS MAX in Combat SKill (Unique) - Little Reason to go to Rockhill besides Royal Expedition/Rockhill's Captain.// +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/advclass/combat/abyssariad/zamurai // Zamurai-tier role. Still not leading people since they own no retainer on Rockhill. + name = "Zamurai" + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + //humen - need to settle Heartfeltean culture on this one. + "Changeling", + "Skylancer", + "Ogrun") + outfit = /datum/outfit/job/roguetown/adventurer/abyssariad/zamurai + maximum_possible_slots = 1 + pickprob = 100 + tutorial = "A lower-ranking zamurai serving the warrior caste that became adrift during a expedition, \ + keeping their trusty steed. They are expected to uphold their oficial duties and following the strict \ + martial code of the Abyssal Tide, at least on paper." + category_tags = list(CTAG_ADVENTURER) + horse = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame/saddled + +/datum/advclass/combat/abyssariad/zamurai/equipme(mob/living/carbon/human/H) + if(H.gender == FEMALE) + horse = /mob/living/simple_animal/hostile/retaliate/rogue/saiga/horse/tame/saddled + return ..() + +/datum/outfit/job/roguetown/adventurer/abyssariad/zamurai/pre_equip(mob/living/carbon/human/H) + ..() + pants = /obj/item/clothing/under/roguetown/trou/tobi/random //Fully intended to give them Haidate Tatami, but the armor is strong enough already. + shoes = /obj/item/clothing/shoes/roguetown/boots/armor/suneate + gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal //kote already protects the hands. + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/zamurai //weaker gambeson. Has way more DRIP. (Doesn't matter for balance, shutup) + armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad //Paying off for 4 swordskill instead of 5. + head = /obj/item/clothing/head/roguetown/helmet/visored/zunari //fucking-shit-up knight helmet tier. Sacrificed some to keep that one. + wrists = /obj/item/clothing/wrists/roguetown/bracers/kote //Cooler Bracer that protects the hands. + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military + + to_chat(H, span_warning( "I am a noble storm-hardened warrior in lacquered armor whom lands I own and control. Yet, here I stand in unfamiliar lands no different of my own.")) + + H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/labor/taming, 1, TRUE) //Zamurais does not tame their steed. Their retainer do that. + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) + ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + if(findtext(H.real_name, " Clanless")) //You can't be a clanless zamurai. + to_chat(H, "As a important member of Fog Islands, of course I have a clan. What the hell you've been thinking?") + clanfication(H) + + var/prev_real_name = H.real_name // Initialize the previous real name + var/original_first_name + var/original_clan + var/honorary = "-dono" //The organization for that one is different from the Rockhillian counterpart. + var/index = findtext(prev_real_name, " of ") // If "of" is found, split the name + if(index) + original_first_name = copytext(prev_real_name, 1, index) + original_clan = copytext(prev_real_name, index) + H.real_name = "[original_first_name][honorary][original_clan]" + else // If no "of" is found, apply honorific to the full name instead. + H.real_name = "[prev_real_name][honorary]" + + H.become_blind("TRAIT_GENERIC") + var/zamuraitype = list("Odashibushi(Melee)","Yumibushi(Ranged)") + var/specialization = input("Choose your Specialization", "Available Specialization") as anything in zamuraitype + switch(specialization) + if("Odashibushi(Melee)") //Not as sword-specialized as Swordmaster, but have better armor. + H.set_blindness(0) + backr = /obj/item/rogueweapon/sword/long/greatsword/odachi + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE) //4 instead of 5. Abyssariads with 5 are champions only. + H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) + H.change_stat("strength", 2) + H.change_stat("endurance", 2) + H.change_stat("constitution", 2) + H.change_stat("speed", -1) + + if("Yumibushi(Ranged)") // Ranged Focus. + H.set_blindness(0) + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/long/yumi + beltl = /obj/item/quiver/arrows + beltr = /obj/item/rogueweapon/sword/uchigatana + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) + H.change_stat("perception", 2) + H.change_stat("speed", 2) + H.change_stat("strength", 1) + H.cure_blind("TRAIT_GENERIC") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm index f1d12510f08..2e139fb3e5f 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/assassin.dm @@ -8,7 +8,8 @@ "Half-Elf", "Dwarf", "Tiefling", - "Dark Elf" + "Dark Elf", + "Undine" //Undines don't care about muh honor. ) outfit = /datum/outfit/job/roguetown/adventurer/assassin category_tags = list(CTAG_PILGRIM) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm index 63354580a29..c0f5e6f890f 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 8978c6eb5a1..a3a63b4d359 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm @@ -2,8 +2,14 @@ name = "Hand of Heartfelt" tutorial = "You serve your lord as hand, taking care of diplomatic actions within your realm, \ but why have you come to Rockhill?" - allowed_sexes = list(MALE) - allowed_races = list("Humen") + allowed_sexes = list(FEMALE, MALE) + allowed_races = list( + "Humen", + "Changeling", //With the alliance, members of the Zamurai/Court class from Fog Island becomes hands if other members of the family marry with heartfelt nobles or vice-versa. + "Skylancer", + "Ogrun", + "Undine" + ) outfit = /datum/outfit/job/roguetown/adventurer/heartfelthand maximum_possible_slots = 1 min_pq = 1 @@ -12,19 +18,24 @@ /datum/outfit/job/roguetown/adventurer/heartfelthand/pre_equip(mob/living/carbon/human/H) ..() - shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt + shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt belt = /obj/item/storage/belt/rogue/leather/black - shoes = /obj/item/clothing/shoes/roguetown/nobleboot - pants = /obj/item/clothing/under/roguetown/tights/black + shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal + pants = /obj/item/clothing/under/roguetown/trou/tobi/dark neck = /obj/item/clothing/neck/roguetown/gorget - armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt + if(H.gender == MALE) + armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand + head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku + else + armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/hand/female + head = /obj/item/clothing/head/roguetown/helmet/leather/malgai/kaizoku/female beltr = /obj/item/storage/belt/rogue/pouch/coins/rich gloves = /obj/item/clothing/gloves/roguetown/leather/black - beltl = /obj/item/rogueweapon/sword/decorated + beltl = /obj/item/rogueweapon/sword/sabre/piandao/dec beltr = /obj/item/scomstone backr = /obj/item/storage/backpack/rogue/satchel/heartfelt mask = /obj/item/clothing/mask/rogue/spectacles/golden - neck = /obj/item/clothing/neck/roguetown/chaincoif + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin if(H.mind) H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) @@ -41,3 +52,6 @@ H.change_stat("intelligence", 3) ADD_TRAIT(H, TRAIT_SEEPRICES, type) ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC) + if(!HAS_TRAIT(H, TRAIT_KAIZOKU)) + ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC) + to_chat(H, "") diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm index dac82e065d2..23b4f154351 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/swashbuckler.dm @@ -12,7 +12,11 @@ "Half-Elf", "Dwarf", "Tiefling", - "Dark Elf" + "Dark Elf", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/swashbuckler maximum_possible_slots = 1 diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm index 9b3276f77cd..bfdc11161e9 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm @@ -11,7 +11,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/gravedigger min_pq = 0 diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm index 3ca69e02402..a387d9a1312 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm @@ -12,7 +12,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/puritan maximum_possible_slots = 1 diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm index 6a772158dc8..e034e3fa65b 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/bard.dm @@ -13,7 +13,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/bard category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) @@ -62,6 +66,15 @@ backr = /obj/item/rogue/instrument/guitar if(H.dna.species.id == "aasimar") backr = /obj/item/rogue/instrument/drum // March along the drums of war. + if(H.dna.species.id == "abyssariad" || H.dna.species.name == "Undine") + backr = /obj/item/rogue/instrument/shamisen // Why do our shamisens sounds so rock-y? Consider it a 'Abyssariad Interation' of the japanese kind. Remember, not everything must be equal. + cloak = /obj/item/clothing/cloak/raincloak/guardiancloak/red + armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/kaizoku + shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead + head = /obj/item/clothing/head/roguetown/bardhat/bloodhunter + beltr = /obj/item/rogueweapon/knife/kaizoku/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 2898be261a5..184873599dd 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 971881d492c..6e4bc853fe7 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 82b7ad46300..5d7a048b36c 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/fisher.dm @@ -10,7 +10,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/fisher category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm index 9048d211f6b..a9ccdbe4c4d 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/hunter.dm @@ -10,7 +10,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/hunter @@ -71,7 +75,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/hunter // Everything is the same category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/miner.dm index c69e2d81d39..b42257362b3 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 7c05a132513..c839bf77583 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 9787052fb60..2a5932e2a7d 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 69b23c95408..29f8c2b7ac0 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/rare/Lfish.dm @@ -12,7 +12,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/fishermaster diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm index a263bad8d72..3bfc9bd88fd 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/weaver.dm @@ -6,6 +6,10 @@ "Half-Elf", "Dwarf", "Tiefling", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/adventurer/weaver category_tags = list(CTAG_PILGRIM) diff --git a/code/modules/jobs/job_types/roguetown/apprentices/prince.dm b/code/modules/jobs/job_types/roguetown/apprentices/prince.dm index 1044138e94b..0e03797d934 100644 --- a/code/modules/jobs/job_types/roguetown/apprentices/prince.dm +++ b/code/modules/jobs/job_types/roguetown/apprentices/prince.dm @@ -19,8 +19,8 @@ outfit = /datum/outfit/job/roguetown/prince display_order = JDO_PRINCE give_bank_account = TRUE - bypass_lastclass = FALSE - min_pq = 2 + bypass_lastclass = TRUE + min_pq = 0 /datum/job/roguetown/prince/after_spawn(mob/living/L, mob/M, latejoin = TRUE) ..() diff --git a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm index 7e5d10d5a11..4391132754e 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/dungeoneer.dm @@ -13,7 +13,10 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", //Abyssariad dungeoneers, on the standards of Rockhill, are burakumins. Their non-impure version is the Kaishakunin. + "Skylancer", + "Ogrun" ) allowed_sexes = list(MALE, FEMALE) @@ -23,7 +26,7 @@ outfit = /datum/outfit/job/roguetown/dungeoneer give_bank_account = 50 // Bought loyalty was previously the same as any guardsman, now in line with village elder, etc. N. - min_pq = 2 + min_pq = 0 cmode_music = 'sound/music/combat_weird.ogg' @@ -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 952942ea69e..3e63f9fd99c 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/garrisonarcher.dm @@ -14,7 +14,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "You are an Archer in the Kings garrison and are used as a scout, or to man the walls and shoot at invaders." display_order = JDO_GARRISONARCHER diff --git a/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm b/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm index 67756699b73..9efff96855d 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/garrisonguard.dm @@ -12,7 +12,14 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Tiefling", + "Dark Elf", + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) allowed_ages = list(AGE_ADULT, AGE_MIDDLEAGED, AGE_IMMORTAL) tutorial = "You are a soldier in the ruler's garrison. Your experience, training, and equipment may vary... but you are the first line of defense against the horrors that encroach on Rockhill." @@ -42,13 +49,29 @@ if(!index) index = H.real_name S.name = "guard's tabard ([index])" + if(istype(H.cloak, /obj/item/clothing/cloak/stabard/haramaki/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/stabard/haramaki/jinbaori/guard //I can't put these somewhere else. + shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random + H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg') + /* ! ! ! Class Selection Section Below ! ! ! Design philosphy: @@ -67,16 +90,29 @@ Design philosphy: /datum/outfit/job/roguetown/guardsman/footman/pre_equip(mob/living/carbon/human/H) ..() - //Gets a steel cuirass over chain, a gorget, and a nasal helmet - armor = /obj/item/clothing/suit/roguetown/armor/cuirass - shirt = /obj/item/clothing/suit/roguetown/armor/chainmail - neck = /obj/item/clothing/neck/roguetown/gorget - head = /obj/item/clothing/head/roguetown/helmet/nasal - backr = /obj/item/rogueweapon/shield/wood - beltr = /obj/item/rogueweapon/sword/scimitar/messer - beltl = /obj/item/rogueweapon/mace - backpack_contents = list(/obj/item/keyring/guard) - + if(H.dna?.species && H.dna.species?.id == "abyssariad") // (non-patterned) Islander equipment system + to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.") + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando + shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half //Abyssariads relies less in gorgets, more in masks. + head = /obj/item/clothing/head/roguetown/helmet/zijinguan //Hopefully the feather colors will be fixed. + backr = /obj/item/rogueweapon/shield/wood/rattan + beltr = /obj/item/rogueweapon/sword/scimitar/messer/dao + beltl = /obj/item/rogueweapon/mace/ararebo + backpack_contents = list(/obj/item/keyring/guard) + if(findtext(H.real_name, " Clanless")) + to_chat(H, "If I am bound to the king, I must be one with my bloodline.") + clanfication(H) + if(H.dna?.species && H.dna.species?.id != "abyssariad") // Default non-Islander equipment + //Gets a steel cuirass over chain, a gorget, and a nasal helmet + armor = /obj/item/clothing/suit/roguetown/armor/cuirass + shirt = /obj/item/clothing/suit/roguetown/armor/chainmail + neck = /obj/item/clothing/neck/roguetown/gorget + head = /obj/item/clothing/head/roguetown/helmet/nasal + backr = /obj/item/rogueweapon/shield/wood + beltr = /obj/item/rogueweapon/sword/scimitar/messer + beltl = /obj/item/rogueweapon/mace + backpack_contents = list(/obj/item/keyring/guard) //Stats for class H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) @@ -104,13 +140,25 @@ Design philosphy: /datum/outfit/job/roguetown/guardsman/pikeman/pre_equip(mob/living/carbon/human/H) ..() - //Gets chain over a gambeson, a gorget, and a kettle helmet - armor = /obj/item/clothing/suit/roguetown/armor/chainmail - shirt = /obj/item/clothing/suit/roguetown/armor/gambeson - neck = /obj/item/clothing/neck/roguetown/gorget - head = /obj/item/clothing/head/roguetown/helmet/kettle - beltr = /obj/item/rogueweapon/sword/scimitar/messer - backpack_contents = list(/obj/item/keyring/guard) + if(H.dna.species?.id == "abyssariad") //I gotta try making the abyssariads guards be forced to have surnames. + to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.") + armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai + neck = /obj/item/clothing/neck/roguetown/gorget + head = /obj/item/clothing/head/roguetown/helmet/jingasa + beltr = /obj/item/rogueweapon/sword/scimitar/messer/dao + backpack_contents = list(/obj/item/keyring/guard) + if(findtext(H.real_name, " Clanless")) + to_chat(H, "If I am bound to the king, I must be one with my bloodline.") + clanfication(H) + else + //Gets chain over a gambeson, a gorget, and a kettle helmet + armor = /obj/item/clothing/suit/roguetown/armor/chainmail + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson + neck = /obj/item/clothing/neck/roguetown/gorget + head = /obj/item/clothing/head/roguetown/helmet/kettle + beltr = /obj/item/rogueweapon/sword/scimitar/messer + backpack_contents = list(/obj/item/keyring/guard) //Stats for class H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) @@ -134,8 +182,12 @@ Design philosphy: switch(weapontype) if("Spear") backr = /obj/item/rogueweapon/polearm/spear + if(H.dna.species?.id == "abyssariad") + backr = /obj/item/rogueweapon/polearm/spear/yari if("Bardiche") backr = /obj/item/rogueweapon/polearm/halberd/bardiche + if(H.dna.species?.id == "abyssariad") + backr = /obj/item/rogueweapon/polearm/halberd/bardiche/naginata /datum/advclass/garrison/archer name = "Garrison Archer" @@ -146,17 +198,31 @@ Design philosphy: /datum/outfit/job/roguetown/guardsman/archer/pre_equip(mob/living/carbon/human/H) ..() - //Gets a padded gambeson, leather bracers, and a chain coif - armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy - shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc - backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow - head = /obj/item/clothing/head/roguetown/roguehood/red - neck = /obj/item/clothing/neck/roguetown/chaincoif - wrists = /obj/item/clothing/wrists/roguetown/bracers/leather - beltr = /obj/item/quiver/arrows - beltl = /obj/item/rogueweapon/knife/dagger/steel/special - backpack_contents = list(/obj/item/keyring/guard) - + if(H.dna.species?.id == "abyssariad") + to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.") + armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy/deelcoat + shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow/hankyu + head = /obj/item/clothing/head/roguetown/tengai/gasa + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + beltr = /obj/item/quiver/arrows + beltl = /obj/item/rogueweapon/knife/kaizoku/tanto + backpack_contents = list(/obj/item/keyring/guard) + if(findtext(H.real_name, " Clanless")) + to_chat(H, "If I am bound to the king, I must be one with my bloodline.") + clanfication(H) + else + //Gets a padded gambeson, leather bracers, and a chain coif + armor = /obj/item/clothing/suit/roguetown/armor/gambeson/heavy + shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow + head = /obj/item/clothing/head/roguetown/roguehood/red + neck = /obj/item/clothing/neck/roguetown/chaincoif + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather + beltr = /obj/item/quiver/arrows + beltl = /obj/item/rogueweapon/knife/dagger/steel/special + backpack_contents = list(/obj/item/keyring/guard) //Stats for class H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 4, TRUE) @@ -183,19 +249,33 @@ Design philosphy: name = "Garrison Fencer" tutorial = "You are a fencer in the garrison levy. If nothing else you know a simple truth, there are few problems that cannot be resolved with quick feet and the precise application of a deft blade." outfit = /datum/outfit/job/roguetown/guardsman/fencer - category_tags = list(CTAG_GARRISON) /datum/outfit/job/roguetown/guardsman/fencer/pre_equip(mob/living/carbon/human/H) ..() //Gets studded leather (which hopefully will be renamed splint mail at some point...) and a chain coif - armor = /obj/item/clothing/suit/roguetown/armor/leather/splint - shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc - beltr = /obj/item/rogueweapon/sword/rapier - beltl = /obj/item/rogueweapon/knife/dagger/steel/special - head = /obj/item/clothing/head/roguetown/roguehood/red - neck = /obj/item/clothing/neck/roguetown/chaincoif backpack_contents = list(/obj/item/keyring/guard) + if(H.dna.species?.id == "abyssariad") + to_chat(H, "My clan was bound to sworn to the king's cause under the Heavenly Emperor's will. As an Ashigaru retainer, their lineage is held in high regard, and I shall serve their bloodline as I would my daimyo.") + armor = /obj/item/clothing/suit/roguetown/armor/leather/splint/kikko + shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc + beltr = /obj/item/rogueweapon/sword/rapier + head = /obj/item/clothing/head/roguetown/tengai/gasa + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/military + beltl = /obj/item/rogueweapon/knife/kaizoku/tanto + backpack_contents = list(/obj/item/keyring/guard) + if(findtext(H.real_name, " Clanless")) + to_chat(H, "Since my clan became bound to the king, I must be one with my bloodline. I am no Clanless.") + clanfication(H) + else + //Gets studded leather (which hopefully will be renamed splint mail at some point...) and a chain coif + armor = /obj/item/clothing/suit/roguetown/armor/leather/splint + shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc + beltr = /obj/item/rogueweapon/sword/rapier + beltl = /obj/item/rogueweapon/knife/dagger/steel/special + head = /obj/item/clothing/head/roguetown/roguehood/red + neck = /obj/item/clothing/neck/roguetown/chaincoif + backpack_contents = list(/obj/item/keyring/guard) H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) @@ -215,4 +295,3 @@ Design philosphy: set name = "HALT!" set category = "Noises" emote("haltyell") - diff --git a/code/modules/jobs/job_types/roguetown/garrison/mayor.dm b/code/modules/jobs/job_types/roguetown/garrison/mayor.dm index 88b2daa39c2..2d3ed63a86a 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/mayor.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/mayor.dm @@ -21,7 +21,7 @@ outfit = /datum/outfit/job/roguetown/mayor display_order = JDO_CHIEF give_bank_account = 80 - min_pq = 1 + min_pq = 0 cmode_music = 'sound/music/combat_bog.ogg' diff --git a/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm b/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm index 506e3859ee3..0c958b18fc1 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/royalguard.dm @@ -12,7 +12,10 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", //Lore Situationism: The three abyssariad races have been brought over to the Garrison for prestige values and to cement the King's power by holding culturally loyal-bound raiders as part of the army. + "Skylancer", + "Ogrun" ) allowed_ages = list(AGE_ADULT, AGE_MIDDLEAGED, AGE_IMMORTAL) tutorial = "You're the rulers hand-picked guard, awarded with knighthood for your prowess and loyalty. Your only oath is a personal one to your ruler, no one else may command you! Serve them until your dying breath." @@ -22,7 +25,7 @@ outfit = /datum/outfit/job/roguetown/royalguard give_bank_account = 30 - min_pq = 2 + min_pq = 0 selection_color = "#920909" cmode_music = 'sound/music/combat_old.ogg' @@ -39,53 +42,103 @@ if(!index) index = H.real_name S.name = "knight's tabard ([index])" + if(istype(H.cloak, /obj/item/clothing/cloak/stabard/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 Lord'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 - l_hand = /obj/item/scomstone - 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/stabard/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/bardiche/naginata + backl = /obj/item/rogueweapon/shield/tower/metal/abyssal + if(prob(30)) + head = /obj/item/clothing/head/roguetown/helmet/visored/zunari + else + head = /obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto + if(findtext(H.real_name, " Clanless")) + to_chat(H, "The King acquired my clan - so I have to belong to one before reaching this royal duty I serve.") + clanfication(H) + H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg') - if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE) + if(H.dna?.species && H.dna.species?.id != "abyssariad") + pants = /obj/item/clothing/under/roguetown/chainlegs + cloak = /obj/item/clothing/cloak/tabard/knight/guard + neck = /obj/item/clothing/neck/roguetown/gorget + shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/merc + armor = /obj/item/clothing/suit/roguetown/armor/brigandine // Wear the King's colors. + shoes = /obj/item/clothing/shoes/roguetown/boots/armor/light + beltl = /obj/item/keyring/mguard + belt = /obj/item/storage/belt/rogue/leather + beltr = /obj/item/rogueweapon/sword + backr = /obj/item/storage/backpack/rogue/satchel + backl = /obj/item/rogueweapon/shield/tower/metal + r_hand = /obj/item/rogueweapon/polearm/halberd + if(prob(30)) + head = /obj/item/clothing/head/roguetown/helmet/visored/knight + else + head = /obj/item/clothing/head/roguetown/helmet/sallet + if(H.dna.species.name == "Ogrun") + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 4, TRUE) + r_hand = /obj/item/rogueweapon/mace/goden/steel/tetsubo + else H.mind.adjust_skillrank(/datum/skill/combat/polearms, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/shields, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) - H.change_stat("strength", 2) - H.change_stat("perception", 2) - H.change_stat("endurance", 2) - H.change_stat("constitution", 1) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) + H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg') + + H.change_stat("strength", 2) + H.change_stat("perception", 2) + H.change_stat("endurance", 2) + H.change_stat("constitution", 1) + H.verbs |= /mob/proc/haltyell ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC) ADD_TRAIT(H, TRAIT_KNOWBANDITS, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/garrison/veteran.dm b/code/modules/jobs/job_types/roguetown/garrison/veteran.dm index b31d5bb21e6..40127689d98 100644 --- a/code/modules/jobs/job_types/roguetown/garrison/veteran.dm +++ b/code/modules/jobs/job_types/roguetown/garrison/veteran.dm @@ -25,7 +25,7 @@ outfit = /datum/outfit/job/roguetown/veteran give_bank_account = 50 - min_pq = 1 + min_pq = 10 cmode_music = 'sound/music/combat_guard.ogg' diff --git a/code/modules/jobs/job_types/roguetown/nobility/archivist.dm b/code/modules/jobs/job_types/roguetown/nobility/archivist.dm index 69d0e99788d..a78cca987e0 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/archivist.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/archivist.dm @@ -22,7 +22,7 @@ outfit = /datum/outfit/job/roguetown/archivist display_order = JDO_ARCHIVIST give_bank_account = 100 - min_pq = 1 + min_pq = 0 /datum/outfit/job/roguetown/archivist/pre_equip(mob/living/carbon/human/H) ..() diff --git a/code/modules/jobs/job_types/roguetown/nobility/captain.dm b/code/modules/jobs/job_types/roguetown/nobility/captain.dm index 1b1812dc95d..b78f42d7e5e 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/captain.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/captain.dm @@ -10,8 +10,12 @@ "Humen", "Elf", "Half-Elf", - "Dwarf" + "Dwarf", + "Changeling", //Lore Situationism: The three abyssariad races have been brought over to the Garrison for prestige values and to cement the King's power by holding culturally loyal-bound raiders as part of the army. + "Skylancer", + "Ogrun" ) + allowed_sexes = list(MALE, FEMALE) display_order = JDO_CAPTAIN tutorial = "Law and Order, your divine reason for existence. You have been given command over the garrison to help keep order and peace within the city and defend it against the many dangers of the island." @@ -19,7 +23,7 @@ bypass_lastclass = FALSE outfit = /datum/outfit/job/roguetown/captain give_bank_account = 120 - min_pq = 4 + min_pq = 0 selection_color = "#af594f" cmode_music = 'sound/music/combat_guard.ogg' @@ -29,28 +33,57 @@ 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 - backpack_contents = list(/obj/item/keyring/captain = 1, /obj/item/signal_horn = 1, /obj/item/scomstone) + if(H.dna?.species && H.dna.species?.id != "abyssariad") // Default non-Islander equipment + head = /obj/item/clothing/head/roguetown/helmet/visored/knight + gloves = /obj/item/clothing/gloves/roguetown/plate + pants = /obj/item/clothing/under/roguetown/platelegs + armor = /obj/item/clothing/suit/roguetown/armor/brigandine/captain + neck = /obj/item/clothing/neck/roguetown/gorget + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard + shoes = /obj/item/clothing/shoes/roguetown/boots + backr = /obj/item/storage/backpack/rogue/satchel + backl = /obj/item/rogueweapon/shield/tower/metal + belt = /obj/item/storage/belt/rogue/leather/plaquesilver + beltl = /obj/item/rogueweapon/sword/sabre + beltr = /obj/item/rogueweapon/mace/cudgel + cloak = /obj/item/clothing/cloak/cape/guard + + else if(H.dna?.species && H.dna.species?.id == "abyssariad") // Alternative, Islander equipment + to_chat(H, "As a Abyssal Guardian, I follow the desires of Abyssor's son to now be bound to the Rockhill throne - I serve the ruler's clan with utmost devotion, let death find me before dishonoring my pact.") + head = /obj/item/clothing/head/roguetown/helmet/visored/zunari + gloves = /obj/item/clothing/gloves/roguetown/plate/lamellaetekko + armor = /obj/item/clothing/suit/roguetown/armor/brigandine/shanwenkai + pants = /obj/item/clothing/under/roguetown/platelegs/weepershanwenkai + neck = /obj/item/clothing/neck/roguetown/gorget + shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt + shoes = /obj/item/clothing/shoes/roguetown/ridingboots/gutal + beltl = /obj/item/rogueweapon/sword/sabre/piandao + beltr = /obj/item/rogueweapon/mace/cudgel/jitte + backl = /obj/item/rogueweapon/shield/tower/metal/abyssal + backr = /obj/item/storage/backpack/rogue/satchel + belt = /obj/item/storage/belt/rogue/leather/plaquesilver + cloak = /obj/item/clothing/cloak/raincloak/guardiancloak/guard + H.champion = TRUE + + if(findtext(H.real_name, " Clanless")) + to_chat(H, "The King acquired my clan - so I have to belong to one before reaching this royal duty I serve.") + clanfication(H) + + backpack_contents = list(/obj/item/keyring/captain = 1, /obj/item/signal_horn = 1) if(H.mind) H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/nobility/consort.dm b/code/modules/jobs/job_types/roguetown/nobility/consort.dm index 927bddf487e..9844f737dc5 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/consort.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/consort.dm @@ -18,7 +18,7 @@ display_order = JDO_CONSORT bypass_lastclass = TRUE - min_pq = 4 + min_pq = 0 give_bank_account = 500 cmode_music = 'sound/music/combat_noble.ogg' diff --git a/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm b/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm index 84c77fa11e2..8dd1216cdd1 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/feldsher.dm @@ -10,7 +10,7 @@ tutorial = "You have seen countless wounds over your time. Stitched the sores of blades, sealed honey over the bubous of plague. \ A thousand deaths stolen from the carriagemen, yet these people will still call you a charlatan. Prove them wrong, or right." give_bank_account = 100 - min_pq = 1 + min_pq = 0 allowed_races = list( "Humen", @@ -18,8 +18,10 @@ "Dark 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/hand.dm b/code/modules/jobs/job_types/roguetown/nobility/hand.dm index 292b33a2a69..7e3c6b89277 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/hand.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/hand.dm @@ -14,58 +14,145 @@ ) allowed_sexes = list(MALE, FEMALE) outfit = /datum/outfit/job/roguetown/hand + advclass_cat_rolls = list(CTAG_HAND = 20) display_order = JDO_HAND - tutorial = "You owe everything to your liege. Once, you were just a humble friend- now you are one of the most important men within the kingdom itself. You have played spymaster and confidant to the Noble-Family for so long that you are a vault of intrigue, something you exploit with potent conviction. Let no man ever forget whose ear you whisper into. Youve killed more men with those lips than any blademaster could ever claim to." - bypass_lastclass = FALSE - whitelist_req = TRUE + tutorial = "You owe everything to your liege. Once, you were just a humble friend- now you are one of the most important men within the kingdom itself." + bypass_lastclass = TRUE + whitelist_req = FALSE give_bank_account = 120 - min_pq = 2 + min_pq = 0 cmode_music = 'sound/music/combat_noble.ogg' -/datum/outfit/job/roguetown/hand/pre_equip(mob/living/carbon/human/H) +/* +/datum/job/roguetown/hand/special_job_check(mob/dead/new_player/player) + if(!player) + return + if(!player.ckey) + return + for(var/mob/dead/new_player/Lord in GLOB.player_list) + if(Lord.mind.assigned_role == "King") + if(Lord.brohand == player.ckey) + return TRUE +*/ + +/datum/outfit/job/roguetown/hand + shoes = /obj/item/clothing/shoes/roguetown/boots + belt = /obj/item/storage/belt/rogue/leather/hand + +/datum/job/roguetown/hand/after_spawn(mob/living/L, mob/M, latejoin = TRUE) . = ..() + if(ishuman(L)) + var/mob/living/carbon/human/H = L + H.advsetup = 1 + H.invisibility = INVISIBILITY_MAXIMUM + H.become_blind("advsetup") + +/datum/advclass/hand/duelist + name = "Duelist" + tutorial = "You have played blademaster and strategist to the Noble-Family for so long that you are a master tactician, something you exploit with potent conviction. Let no man ever forget how many duels you have won to uphold your and the Monarch's honor. You've killed more men with swords than any spymaster could ever claim to." + outfit = /datum/outfit/job/roguetown/hand/duelist + + category_tags = list(CTAG_HAND) + +//Duelist start. Basically brings back OG Hand before nerf. +/datum/outfit/job/roguetown/hand/duelist/pre_equip(mob/living/carbon/human/H) + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard + armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/hand pants = /obj/item/clothing/under/roguetown/tights/black + backr = /obj/item/storage/backpack/rogue/satchel + backpack_contents = list(/obj/item/rogueweapon/knife/dagger/steel/special = 1, /obj/item/keyring/hand = 1) + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, 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/swords, 3, 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/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) + H.change_stat("strength", 1) + H.change_stat("perception", 1) + H.change_stat("intelligence", 3) + ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) + +/datum/advclass/hand/spymaster + name = "Spymaster" + tutorial = "You have played spymaster and confidant to the Noble-Family for so long that you are a vault of intrigue, something you exploit with potent conviction. Let no man ever forget whose ear you whisper into. You've killed more men with those lips than any blademaster could ever claim to." + outfit = /datum/outfit/job/roguetown/hand/spymaster + + category_tags = list(CTAG_HAND) + +//Spymaster start. More similar to the rogue adventurer - loses heavy armor and sword skills for more sneaky stuff. +/datum/outfit/job/roguetown/hand/spymaster/pre_equip(mob/living/carbon/human/H) + cloak = /obj/item/clothing/cloak/raincloak/mortus //cool spymaster cloak shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/hand - shoes = /obj/item/clothing/shoes/roguetown/boots - belt = /obj/item/storage/belt/rogue/leather/hand + pants = /obj/item/clothing/under/roguetown/tights/black backr = /obj/item/storage/backpack/rogue/satchel - backpack_contents = list(/obj/item/rogueweapon/knife/dagger/steel = 1, /obj/item/keyring/hand = 1) - if(SSticker.rulertype == "Hand") - head = /obj/item/clothing/head/roguetown/crown/serpcrown - SSroguemachine.crown = head - pants = /obj/item/clothing/under/roguetown/tights/black - shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard - armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/hand - shoes = /obj/item/clothing/shoes/roguetown/boots - belt = /obj/item/storage/belt/rogue/leather/hand - backr = /obj/item/storage/backpack/rogue/satchel - backpack_contents = list(/obj/item/rogueweapon/knife/dagger/steel = 1, /obj/item/keyring/hand = 1) - l_hand = /obj/item/rogueweapon/lordscepter + backpack_contents = list(/obj/item/rogueweapon/knife/dagger/steel/special = 1, /obj/item/keyring/hand = 1, /obj/item/lockpickring/mundane) if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE) - 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/axesmaces, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, 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/swords, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) - if(H.age == AGE_OLD) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE) - H.change_stat("strength", 1) - H.change_stat("constitution", 1) - H.change_stat("perception", 2) - H.change_stat("speed", 1) - H.change_stat("intelligence", 2) + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 5, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/stealing, 5, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 4, TRUE) // not like they're gonna break into the vault. + H.change_stat("strength", -1) + H.change_stat("perception", 3) + H.change_stat("speed", 2) + H.change_stat("intelligence", 1) ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) - ADD_TRAIT(H, TRAIT_SEEPRICES, TRAIT_GENERIC) ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) - H.verbs |= /mob/living/carbon/human/proc/torture_victim + +/datum/advclass/hand/tutor + name = "Tutor" + tutorial = "You have played researcher and confidant to the Noble-Family for so long that you are a vault of knowledge, something you exploit with potent conviction. Let no man ever forget the knowledge you wield. You've read more books than any blademaster or spymaster could ever claim to." + outfit = /datum/outfit/job/roguetown/hand/tutor + + category_tags = list(CTAG_HAND) + +//Tutor start. Trades combat skills for more knowledge and skills - for older hands, hands that don't do combat - people who wanna play old advisors. +/datum/outfit/job/roguetown/hand/tutor/pre_equip(mob/living/carbon/human/H) + head = /obj/item/clothing/head/roguetown/fashionablehat + mask = /obj/item/clothing/mask/rogue/spectacles/golden + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/guard + armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/hand + pants = /obj/item/clothing/under/roguetown/tights/black + backr = /obj/item/storage/backpack/rogue/satchel + backpack_contents = list(/obj/item/rogueweapon/knife/dagger/steel/special = 1, /obj/item/keyring/hand = 1, /obj/item/reagent_containers/glass/bottle/rogue/poison = 1) //starts with a vial of poison, like all totally trustworthy people do! + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, 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/reading, 5, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/alchemy, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/medicine, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 4, TRUE) + H.change_stat("intelligence", 4) + H.change_stat("perception", 3) + H.change_stat("speed", -1) + H.change_stat("strength", -1) + + ADD_TRAIT(H, TRAIT_NOBLE, TRAIT_GENERIC) + ADD_TRAIT(H, TRAIT_SEEPRICES, TRAIT_GENERIC) /datum/job/roguetown/hand/after_spawn(mob/living/L, mob/M, latejoin = TRUE) ..() diff --git a/code/modules/jobs/job_types/roguetown/nobility/magician.dm b/code/modules/jobs/job_types/roguetown/nobility/magician.dm index f8b44cbdd20..2ca0f5264ce 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/magician.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/magician.dm @@ -23,7 +23,7 @@ whitelist_req = TRUE bypass_lastclass = FALSE give_bank_account = 120 - min_pq = 4 + min_pq = 0 cmode_music = 'sound/music/combat_noble.ogg' /datum/outfit/job/roguetown/magician/pre_equip(mob/living/carbon/human/H) diff --git a/code/modules/jobs/job_types/roguetown/nobility/merchant.dm b/code/modules/jobs/job_types/roguetown/nobility/merchant.dm index 8d007f69c1b..f83e0862996 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/merchant.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/merchant.dm @@ -13,7 +13,8 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Skylancer" //Abyssariad: Non-military racial specialization, so they are allowed to work on this role. ) tutorial = "You were born into wealth, learning from before you could talk about the basics of mathematics. With the trade empire of the Mercator guild behind you, life is good! These people are addicted to your wares and you are the literal beating heart of this economy: Dont let these filthy-covered troglodytes ever forget that." diff --git a/code/modules/jobs/job_types/roguetown/nobility/steward.dm b/code/modules/jobs/job_types/roguetown/nobility/steward.dm index 8cdd991ac39..1d69ea593bf 100644 --- a/code/modules/jobs/job_types/roguetown/nobility/steward.dm +++ b/code/modules/jobs/job_types/roguetown/nobility/steward.dm @@ -18,7 +18,7 @@ tutorial = "Coin, Coin, Coin! Oh beautiful coin: Youre addicted to it, and you hold the position as the Lord's personal treasurer of both coin and information. You know the power silver and gold has on a man's mortal soul, and you know just what lengths theyll go to in order to get even more. Keep your festering economy and your rats alive, theyre the only two things you can weigh any trust into anymore." outfit = /datum/outfit/job/roguetown/steward give_bank_account = 100 - min_pq = 2 + min_pq = 0 cmode_music = 'sound/music/combat_noble.ogg' /datum/outfit/job/roguetown/steward/pre_equip(mob/living/carbon/human/H) diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/anthrax.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/anthrax.dm index 9316269490f..46f5bf970aa 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/anthrax.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/anthrax.dm @@ -12,7 +12,7 @@ /datum/outfit/job/roguetown/mercenary/anthrax/pre_equip(mob/living/carbon/human/H) ..() - belt = /obj/item/storage/belt/rogue/leather/black + belt = /obj/item/storage/belt/rogue/leather/mercenary/black pants = /obj/item/clothing/under/roguetown/trou/shadowpants shoes = /obj/item/clothing/shoes/roguetown/boots backl = /obj/item/storage/backpack/rogue/satchel 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 e4127ee8942..4bcff0f3e39 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 @@ -16,7 +16,7 @@ cloak = /obj/item/clothing/cloak/half/red head = /obj/item/clothing/head/roguetown/helmet/sallet/elven gloves = /obj/item/clothing/gloves/roguetown/angle - belt = /obj/item/storage/belt/rogue/leather/merc_nokey/black + belt = /obj/item/storage/belt/rogue/leather/mercenary/black armor = /obj/item/clothing/suit/roguetown/armor/cuirass/elven backr = /obj/item/rogueweapon/polearm/spear backl = /obj/item/storage/backpack/rogue/satchel 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 205128220ae..24b1187ded1 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/boltslinger.dm @@ -9,7 +9,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/mercenary/boltslinger category_tags = list(CTAG_MERCENARY) diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/grenzelhoft.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/grenzelhoft.dm index 31ead079f52..44174286d74 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/grenzelhoft.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/grenzelhoft.dm @@ -20,7 +20,7 @@ gloves = /obj/item/clothing/gloves/roguetown/angle/grenzel armor = /obj/item/clothing/suit/roguetown/armor/cuirass/grenzelhoft shirt = /obj/item/clothing/suit/roguetown/shirt/grenzelhoft - belt = /obj/item/storage/belt/rogue/leather/merc_nokey + belt = /obj/item/storage/belt/rogue/leather/mercenary beltr = /obj/item/storage/belt/rogue/pouch/coins/poor beltl = /obj/item/rogueweapon/mace/cudgel pants = /obj/item/clothing/under/roguetown/grenzelpants 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 00000000000..c0693fad4c8 --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/kabukimono.dm @@ -0,0 +1,59 @@ +// Literally Yakuza, but split into Kabukimonos and Toweryakkos. +// They are different references to Kabuki-monos and Machi-yakko. +// ALL of them are Burakumins. +// Their presence on the alt map will be more of gang warfare instead of a mercenary job. + +/datum/advclass/mercenary/kabukimaru + name = "Kabuki-maru" + tutorial = "You're an exiled brigand driven by coin while robed in yellow. Known for wild antics, loose camaraderie and using large odachis. Your rivals in purple robes are a constant thorn in your search for richness." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + "Humen", //Heartfeltean. + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + ) + outfit = /datum/outfit/job/roguetown/mercenary/kabukimaru + category_tags = list(CTAG_MERCENARY) + maximum_possible_slots = 5 + +/datum/outfit/job/roguetown/mercenary/kabukimaru/pre_equip(mob/living/carbon/human/H) + ..() + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(3,4), TRUE) //sword is their focus. + H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, pick(1,1,2), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, pick(2,3), TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/shields, pick(0,0,1), TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.burakumin = TRUE //They will not receive the explosive mask, as these have already been exiled. They do not require masks to exist on a society. + + beltr = /obj/item/storage/belt/rogue/pouch/coins/poor + neck = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin/kabukimono + pants = /obj/item/clothing/under/roguetown/trou/tobi/kabukimono + shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead/kabukimono + gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal/kabukimono + belt = /obj/item/storage/belt/rogue/leather/mercenary + beltl = /obj/item/rogueweapon/mace/cudgel/jitte + cloak = /obj/item/clothing/cloak/raincloak/horocloak/kabukimono + shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono/kabukimono + head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando + backl = /obj/item/storage/backpack/rogue/satchel + backr = /obj/item/rogueweapon/sword/long/greatsword/odachi + if(!H.has_language(/datum/language/abyssal)) + H.grant_language(/datum/language/abyssal) + to_chat(H, "I can speak Abyssal with ,a before my speech.") + + H.merctype = 9 + + H.change_stat("strength", 2) // Big sword. They really are not that different of the grezenholft counterpart, but even less armored. + H.change_stat("endurance", 1) + H.change_stat("constitution", 2) + ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/marauder.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/marauder.dm index d6de07c6aab..e4354d97a59 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/marauder.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/marauder.dm @@ -16,7 +16,7 @@ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather//leather armor so they match other roles that get heavy leather gloves armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/sea/marauder shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/red - belt = /obj/item/storage/belt/rogue/leather/merc_nokey + belt = /obj/item/storage/belt/rogue/leather/mercenary beltr = /obj/item/storage/belt/rogue/pouch/coins/poor beltl = /obj/item/rogueweapon/shield/tower/buckleriron pants = /obj/item/clothing/under/roguetown/loincloth/brown 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 90d4d8e0f5e..a73bb3f07ff 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/steppesman.dm @@ -5,7 +5,11 @@ allowed_races = list( "Humen", "Half-Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/mercenary/steppesman category_tags = list(CTAG_MERCENARY) @@ -22,12 +26,18 @@ gloves = /obj/item/clothing/gloves/roguetown/leather armor = /obj/item/clothing/suit/roguetown/armor/leather/splint shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt - belt = /obj/item/storage/belt/rogue/leather/merc_nokey/black + belt = /obj/item/storage/belt/rogue/leather/mercenary/black beltr = /obj/item/rogueweapon/sword/sabre beltl= /obj/item/quiver/arrows 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 00000000000..77e9305cfbb --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/toweryakko.dm @@ -0,0 +1,64 @@ +/datum/advclass/mercenary/toweryakko + name = "Tower-Yakko" + tutorial = "You've been the operator of a network of smuggling and racketeering from the Towers on Fog Islands after your faction shifted from vigilantism to organized crime, but you have been exiled ever since and now search for richness on lands away, but your rivals in yellow kimonos does the same." + allowed_sexes = list(MALE, FEMALE) + allowed_races = list( + "Humen", //Heartfeltean. + "Changeling", + "Skylancer", + "Ogrun", + "Undine" + + ) + outfit = /datum/outfit/job/roguetown/mercenary/toweryakko + category_tags = list(CTAG_MERCENARY) + maximum_possible_slots = 5 + + +/datum/outfit/job/roguetown/mercenary/toweryakko/pre_equip(mob/living/carbon/human/H) + ..() + shoes = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead/toweryakkos + head = /obj/item/clothing/head/roguetown/helmet/jingasa + gloves = /obj/item/clothing/gloves/roguetown/leather/abyssal/toweryakko + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo + belt = /obj/item/storage/belt/rogue/leather/mercenary + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + cloak = /obj/item/clothing/cloak/stabard/haramaki/odoshi/toweryakko + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido + backr = /obj/item/rogueweapon/shield/tower/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/merc_classes/underdweller.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/underdweller.dm index 1ebfb14f99d..b672861c751 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/underdweller.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/underdweller.dm @@ -16,7 +16,7 @@ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather//arm armor since they don't get heavy gloves like other mercs do armor = /obj/item/clothing/suit/roguetown/armor/cuirass/iron shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/sailor/red - belt = /obj/item/storage/belt/rogue/leather/merc_nokey + belt = /obj/item/storage/belt/rogue/leather/mercenary beltr = /obj/item/rogueweapon/knife/hunting pants = /obj/item/clothing/under/roguetown/trou/leather shoes = /obj/item/clothing/shoes/roguetown/boots/leather diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/valorian.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/valorian.dm index 5c20c5779f8..8c35f1df835 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/valorian.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/valorian.dm @@ -20,7 +20,7 @@ armor = /obj/item/clothing/suit/roguetown/armor/cuirass/iron shirt = /obj/item/clothing/suit/roguetown/armor/gambeson wrists = /obj/item/clothing/wrists/roguetown/bracers/leather - belt = /obj/item/storage/belt/rogue/leather/merc_nokey + belt = /obj/item/storage/belt/rogue/leather/mercenary beltr = /obj/item/storage/belt/rogue/pouch/coins/poor beltl = /obj/item/rogueweapon/sword/rapier/iron pants = /obj/item/clothing/under/roguetown/tights/green diff --git a/code/modules/jobs/job_types/roguetown/other/merc_classes/zybantine.dm b/code/modules/jobs/job_types/roguetown/other/merc_classes/zybantine.dm index aa0ea42d65a..c97df8f3002 100644 --- a/code/modules/jobs/job_types/roguetown/other/merc_classes/zybantine.dm +++ b/code/modules/jobs/job_types/roguetown/other/merc_classes/zybantine.dm @@ -24,7 +24,7 @@ neck = /obj/item/clothing/neck/roguetown/keffiyeh/red armor = /obj/item/clothing/suit/roguetown/armor/medium/coatplates shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/black - belt = /obj/item/storage/belt/rogue/leather/merc_nokey/shalal + belt = /obj/item/storage/belt/rogue/leather/mercenary/shalal beltr = /obj/item/rogueweapon/sword/long/rider pants = /obj/item/clothing/under/roguetown/tights/red shoes = /obj/item/clothing/shoes/roguetown/shalal diff --git a/code/modules/jobs/job_types/roguetown/other/mercenary.dm b/code/modules/jobs/job_types/roguetown/other/mercenary.dm index 695611b5f8b..6badcd9bef7 100644 --- a/code/modules/jobs/job_types/roguetown/other/mercenary.dm +++ b/code/modules/jobs/job_types/roguetown/other/mercenary.dm @@ -14,7 +14,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "
Blood stained hands, do you even see it when they line your palms with golden treasures?

\ You are a paid killer, redeemable only by fact that your loyalty can be bought, \ @@ -23,7 +27,7 @@ display_order = JDO_MERCENARY bypass_lastclass = FALSE 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 7fdbe562871..bb2beb4ec05 100644 --- a/code/modules/jobs/job_types/roguetown/other/skeleton.dm +++ b/code/modules/jobs/job_types/roguetown/other/skeleton.dm @@ -14,7 +14,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "" diff --git a/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm b/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm index c033d33d943..d10cf597920 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/bathmaid.dm @@ -43,6 +43,18 @@ shoes = /obj/item/clothing/shoes/roguetown/boots/leather shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/puritan armor = /obj/item/clothing/suit/roguetown/armor/leather/jacket/sea + if(H.dna.species?.id == "abyssariad") + mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor + H.burakumin = TRUE + to_chat(H, "In pursuit of hedonism and vices, I forfeited my honor and values of the Abyssal Tide. My soul can no longer claim the essence of an Abyssariad.") + if(H.patron == /datum/patron/divine/abyssor) + H.patron = GLOB.patronlist[/datum/patron/divine/eora] + to_chat(H, "The waters I once revered now scorn me - the rivers blistering my impure skin. I've failed Abyssor as his champion, and now I've bonded with [H.patron].") + + if(H.wear_mask) + if(istype(H.wear_mask, /obj/item/clothing/mask/rogue/eyepatch || /obj/item/clothing/mask/rogue/eyepatch/left)) + qdel(H.wear_mask) + mask = /obj/item/clothing/mask/rogue/kaizoku/facemask/dishonor // Washing Implements @@ -132,4 +144,3 @@ - diff --git a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm index 95d228d9841..03b3a71944c 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm @@ -14,7 +14,11 @@ "Half-Elf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) outfit = /datum/outfit/job/roguetown/vagrant bypass_lastclass = FALSE @@ -71,6 +75,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 e408f71f1a3..e003282d817 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/butcher.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/butcher.dm @@ -13,7 +13,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "Some say youre a strange individual, some say youre a cheat while some claim you are a savant in the art of sausage making. Without your skilled hands and knifework most of the livestock around the town would be wasted. " @@ -58,3 +62,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/butler.dm b/code/modules/jobs/job_types/roguetown/peasants/butler.dm index a36eb851a8e..98144d4c092 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/butler.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/butler.dm @@ -17,8 +17,10 @@ tutorial = "Your blade is a charcuterie of artisanal cheeses and meat, your armor wit and classical training. You are part of the royal family now, and hold a distinguished position as the head of the royal household staff. You wear their colors and have a semblance of dignity, for without you and the servants under your command the court would have all starved to death." outfit = /datum/outfit/job/roguetown/butler display_order = JDO_BUTLER - bypass_lastclass = FALSE - give_bank_account = 5 + bypass_lastclass = TRUE + min_pq = 0 + whitelist_req = TRUE + give_bank_account = 30 // Along with the pouch, enough to purchase some ingredients from the farm and give hard working servants a silver here and there. Still need the assistance of the crown's coffers to do anything significant /datum/outfit/job/roguetown/butler/pre_equip(mob/living/carbon/human/H) ..() diff --git a/code/modules/jobs/job_types/roguetown/peasants/cook.dm b/code/modules/jobs/job_types/roguetown/peasants/cook.dm index 6d20852fc70..0ba7f0305f2 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/cook.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/cook.dm @@ -13,7 +13,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "Slice, chop, and into the pot... You've spent more nites than you can count cutting meat and vegetables until your fingers are bloody and raw, but it's honest work." diff --git a/code/modules/jobs/job_types/roguetown/peasants/soilson.dm b/code/modules/jobs/job_types/roguetown/peasants/soilson.dm index ef7f2c07f54..1826fb5256e 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/soilson.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/soilson.dm @@ -15,7 +15,11 @@ "Dwarf", "Tiefling", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "It is a simple life you live, your basic understanding of life is something many would be envious of if they knew how perfect it was. You know a good day's work, the sweat on your brow is yours: Famines and plague may take its toll, but you know how to celebrate life well. Till the soil and produce fresh food for those around you, and maybe youll be more than an unsung hero someday." @@ -52,22 +56,50 @@ ADD_TRAIT(H, TRAIT_SEEDKNOW, TRAIT_GENERIC) neck = /obj/item/storage/belt/rogue/pouch/coins/poor - if(H.gender == MALE) - head = /obj/item/clothing/head/roguetown/roguehood/random - if(prob(50)) - head = /obj/item/clothing/head/roguetown/strawhat - pants = /obj/item/clothing/under/roguetown/tights/random - armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/striped - shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random - shoes = /obj/item/clothing/shoes/roguetown/simpleshoes + + if(HAS_TRAIT(H, TRAIT_KAIZOKU)) + wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/khudagach + gloves = /obj/item/clothing/gloves/roguetown/fingerless/yugake + armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/hitatare/random + beltl = /obj/item/rogueweapon/sickle/kama //proper weapontool. Unique crafting for a handmade flail.kama + shoes = /obj/item/clothing/shoes/roguetown/sandals/geta belt = /obj/item/storage/belt/rogue/leather/rope beltr = /obj/item/roguekey/soilson - beltl = /obj/item/rogueweapon/knife/villager + if(H.gender == FEMALE) + shirt = /obj/item/clothing/suit/roguetown/shirt/tunic/kimono + else + shirt = /obj/item/clothing/suit/roguetown/shirt/looseshirt + pants = /obj/item/clothing/under/roguetown/trou/tobi + var/helmettype = pickweight(list("Gasa" = 1, "Roningasa" = 1, "Sandogasa" = 1, "Takuhatsugasa" = 1, "Torioigasa" = 1)) + switch(helmettype) + if("Gasa") + head = /obj/item/clothing/head/roguetown/tengai/gasa + if("Roningasa") + head = /obj/item/clothing/head/roguetown/tengai/roningasa + if("Sandogasa") + head = /obj/item/clothing/head/roguetown/tengai/sandogasa + if("Takuhatsugasa") + head = /obj/item/clothing/head/roguetown/takuhatsugasa + if("Torioigasa") + head =/obj/item/clothing/head/roguetown/tengai/torioigasa else - head = /obj/item/clothing/head/roguetown/armingcap - armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random - shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt - shoes = /obj/item/clothing/shoes/roguetown/simpleshoes - belt = /obj/item/storage/belt/rogue/leather/rope - beltr = /obj/item/roguekey/soilson - beltl = /obj/item/rogueweapon/knife/villager + if(H.gender == MALE) + head = /obj/item/clothing/head/roguetown/roguehood/random + if(prob(50)) + head = /obj/item/clothing/head/roguetown/strawhat + pants = /obj/item/clothing/under/roguetown/tights/random + armor = /obj/item/clothing/suit/roguetown/armor/gambeson/light/striped + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random + shoes = /obj/item/clothing/shoes/roguetown/simpleshoes + belt = /obj/item/storage/belt/rogue/leather/rope + beltr = /obj/item/roguekey/soilson + beltl = /obj/item/rogueweapon/knife/villager + else + head = /obj/item/clothing/head/roguetown/armingcap + armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt + shoes = /obj/item/clothing/shoes/roguetown/simpleshoes + belt = /obj/item/storage/belt/rogue/leather/rope + beltr = /obj/item/roguekey/soilson + beltl = /obj/item/rogueweapon/knife/villager + diff --git a/code/modules/jobs/job_types/roguetown/peasants/stevedore.dm b/code/modules/jobs/job_types/roguetown/peasants/stevedore.dm index 91a60761712..1700892e987 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/stevedore.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/stevedore.dm @@ -11,7 +11,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "The strongest workers are hired by the Mercator guild, trained by monks of Ravox and expected to help out with handling troublemakers as well as moving cargo and messages around. The Merchant is your boss!" @@ -57,5 +61,9 @@ ADD_TRAIT(H, TRAIT_DODGEEXPERT, TRAIT_GENERIC) - if(H.patron == /datum/patron/divine/ravox) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) + if(HAS_TRAIT(H, TRAIT_KAIZOKU)) + if(H.patron == /datum/patron/divine/abyssor) //Abyssanctum have combative edge as well, but only for those culturally bound to fog islands. The gods are the same, but the religion is not. + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) + else + if(H.patron == /datum/patron/divine/ravox) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/roguetown.dm b/code/modules/jobs/job_types/roguetown/roguetown.dm index 45adb9e38a6..9c7dca0c8c3 100644 --- a/code/modules/jobs/job_types/roguetown/roguetown.dm +++ b/code/modules/jobs/job_types/roguetown/roguetown.dm @@ -63,10 +63,38 @@ if(H.dna) H.dna.species.random_underwear(H.gender) if(H.dna.species) + if(H.dna.species.id == "human") + if(H.skin_tone == SKIN_COLOR_HEARTFELT) + ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC) + H.grant_language(/datum/language/abyssal) if(H.dna.species.id == "elf") H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) if(H.dna.species.id == "dwarf") H.mind.adjust_skillrank(/datum/skill/labor/mining, 1, TRUE) + if(H.dna.species.id == "abyssariad") + H.verbs |= /mob/proc/throatsing + H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg') + ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC) + if(H.dna.species.name == "Changeling") + ADD_TRAIT(H, TRAIT_STRONGBITE, TRAIT_GENERIC) // When their Skull-bending "wag system" comes about, it will be their debuff to counter this. + if(H.dna.species.name == "Skylancer") + H.verbs |= /mob/proc/birdcall + if(H.dna.species.name == "Undine") + H.cmode_music = list('sound/music/kaizoku/combat/combat_changeling.ogg','sound/music/kaizoku/combat/combat_stormwarrior.ogg','sound/music/kaizoku/combat/combat_searaider.ogg','sound/music/kaizoku/combat/combat_oldtides.ogg','sound/music/kaizoku/combat/combat_decapitator.ogg','sound/music/kaizoku/combat/combat_emperor.ogg','sound/music/kaizoku/combat/combat_traditional.ogg','sound/music/kaizoku/combat/combat_navalretainers.ogg','sound/music/kaizoku/combat/combat_kyudo.ogg') + ADD_TRAIT(H, TRAIT_KAIZOKU, TRAIT_GENERIC) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedarmor) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/reinforcedhelmet) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumhelmet) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/mediumarmor) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/lighthelmet) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/lightarmor) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_spear) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/obsidian_club) + H.verbs |= /mob/proc/croak +// if(H.dna.species.id == "Abyssariad"||H.dna.species.name == "Undine") // Not finished yet because I can't test it now. +// if(H.patron == /datum/patron/divine/abyssor) +// H.set_patron(/datum/patron/goodabyssanctum/abyssor) //so they spawn with their unique powers. + H.underwear_color = null H.update_body() diff --git a/code/modules/jobs/job_types/roguetown/serfs/alchemist.dm b/code/modules/jobs/job_types/roguetown/serfs/alchemist.dm index d7e943b1b34..fbb85ca1626 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/alchemist.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/alchemist.dm @@ -11,7 +11,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "You came to rockhill either to seek knowledge or riches." diff --git a/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm b/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm index 4dd004a293e..b7c3bb3b825 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm @@ -11,7 +11,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "You studied for many decades under your master with a few other apprentices to become an Armorer, a trade that certainly has seen a boom in revenue in recent times with many a bannerlord seeing the importance in maintaining a well-equipped army." @@ -20,7 +24,7 @@ display_order = JDO_ARMORER bypass_lastclass = FALSE give_bank_account = 30 - min_pq = 0 + min_pq = -10 selection_color = "#d68e08" /datum/outfit/job/roguetown/armorsmith/pre_equip(mob/living/carbon/human/H) @@ -83,7 +87,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "You studied for many decades under your master with a few other apprentices to become a Weaponsmith, a trade that is as ancient as the secrets of steel itself! You've repaired the blades of cooks, the cracked hoes of peasants and greased the spears of many soldiers into war." @@ -155,7 +163,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "You can smith armor and weapons alike with ease, but do not forget your apprentices. If nothing else, they can be used for errands or thrown out if bumbling fools. The masons next door are also part of the Makers Guild." diff --git a/code/modules/jobs/job_types/roguetown/serfs/mason.dm b/code/modules/jobs/job_types/roguetown/serfs/mason.dm index 77d0c79b1cd..19b69038338 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/mason.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/mason.dm @@ -11,7 +11,11 @@ "Elf", "Half-Elf", "Dwarf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) allowed_sexes = list(MALE, FEMALE) diff --git a/code/modules/jobs/job_types/roguetown/serfs/tailor.dm b/code/modules/jobs/job_types/roguetown/serfs/tailor.dm index 498772e11e0..5db4c077fb5 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/tailor.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/tailor.dm @@ -12,7 +12,11 @@ allowed_races = list("Humen", "Elf", "Half-Elf", - "Dwarf", + "Dwarf",, + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) give_bank_account = TRUE bypass_lastclass = TRUE diff --git a/code/modules/jobs/job_types/roguetown/temple/acolyte.dm b/code/modules/jobs/job_types/roguetown/temple/acolyte.dm index 0eb569de772..22aeedf5b7d 100644 --- a/code/modules/jobs/job_types/roguetown/temple/acolyte.dm +++ b/code/modules/jobs/job_types/roguetown/temple/acolyte.dm @@ -12,7 +12,11 @@ "Half-Elf", "Dwarf", "Dark Elf", - "Aasimar" + "Aasimar", + "Changeling", + "Skylancer", + "Ogrun", + "Undine" ) tutorial = "Chores, exercise, prayer... and more chores. You are a humble acolyte at the temple in Rockhill, not yet a trained guardian or an ordained priest. But who else would keep the fires lit and the floors clean?" allowed_patrons = ALL_TEMPLE_PATRONS @@ -81,6 +85,13 @@ cloak = /obj/item/clothing/cloak/raincloak/furcloak neck = /obj/item/clothing/neck/roguetown/psycross/silver/dendor beltr = /obj/item/rogueweapon/knife/stone + if("Abyssor") + head = /obj/item/clothing/head/roguetown/padded/shrinekeeper + neck = /obj/item/clothing/neck/roguetown/psycross/silver/abyssanctum + armor = /obj/item/clothing/suit/roguetown/shirt/robe/shrinekeeper + shirt = /obj/item/clothing/suit/roguetown/shirt/rags/monkgarb/random + shoes = /obj/item/clothing/shoes/roguetown/sandals/geta + wrists = /obj/item/clothing/wrists/roguetown/shrinekeeper else // Failsafe head = /obj/item/clothing/head/roguetown/roguehood/random neck = /obj/item/clothing/neck/roguetown/psycross/silver diff --git a/code/modules/jobs/job_types/roguetown/temple/inquisitor.dm b/code/modules/jobs/job_types/roguetown/temple/inquisitor.dm index 7cdbec882c5..b163f4ceaa9 100644 --- a/code/modules/jobs/job_types/roguetown/temple/inquisitor.dm +++ b/code/modules/jobs/job_types/roguetown/temple/inquisitor.dm @@ -15,7 +15,7 @@ outfit = /datum/outfit/job/roguetown/inquisitor display_order = JDO_INQUISITOR - min_pq = 4 + min_pq = 0 bypass_lastclass = TRUE /datum/job/roguetown/inquisitor/after_spawn(mob/living/L, mob/M, latejoin = TRUE) diff --git a/code/modules/jobs/job_types/roguetown/temple/priest.dm b/code/modules/jobs/job_types/roguetown/temple/priest.dm index f560e69620c..ac41b150664 100644 --- a/code/modules/jobs/job_types/roguetown/temple/priest.dm +++ b/code/modules/jobs/job_types/roguetown/temple/priest.dm @@ -23,7 +23,7 @@ display_order = JDO_PRIEST give_bank_account = 115 - min_pq = 4 + min_pq = 0 selection_color = "#b7a375" /datum/outfit/job/roguetown/priest/pre_equip(mob/living/carbon/human/H) diff --git a/code/modules/jobs/job_types/roguetown/temple/templar.dm b/code/modules/jobs/job_types/roguetown/temple/templar.dm index be448ae240b..bc9875aa74a 100644 --- a/code/modules/jobs/job_types/roguetown/temple/templar.dm +++ b/code/modules/jobs/job_types/roguetown/temple/templar.dm @@ -18,7 +18,7 @@ spawn_positions = 1 display_order = JDO_TEMPLAR give_bank_account = 0 - min_pq = 2 + min_pq = 0 /datum/outfit/job/roguetown/templar name = "Templar" diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index fde931c4390..e079f0de752 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 00000000000..1b3ad4ba6b1 --- /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 a2aeaec4ab8..45fc7b0da9c 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 b58b4ddf824..1835ab0daa3 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -87,14 +87,14 @@ /datum/sprite_accessory/hair/bald name = "Bald" icon_state = "" - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") gender = MALE /datum/sprite_accessory/hair/adventurer_human name = "Adventurer" icon_state = "adventurer" gender = MALE - specuse = list("human") + specuse = list("human", "abyssariad") /datum/sprite_accessory/hair/berserker name = "Berserker" @@ -107,7 +107,7 @@ name = "Bog" icon_state = "bog" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/boss_dwarf name = "Boss" @@ -126,13 +126,13 @@ name = "Brother" icon_state = "brother" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/cavehead name = "Cavehead" icon_state = "cavehead" // original name thinning? gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") under_layer = TRUE /datum/sprite_accessory/hair/conscript @@ -146,7 +146,7 @@ name = "Courtier" icon_state = "courtier" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/dark_knight name = "Dark Knight" @@ -165,7 +165,7 @@ name = "Druid" icon_state = "druid" // original name elf_scout? gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/fancy_elf name = "Fancy" @@ -177,7 +177,7 @@ name = "Forester" icon_state = "forester" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/foreigner_tief name = "Foreigner" @@ -215,19 +215,19 @@ name = "Heroic" icon_state = "heroic" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/hunter name = "Hunter" icon_state = "hunter" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/landlord name = "Landlord" icon_state = "landlord" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/lover_tief name = "Lover" @@ -239,7 +239,7 @@ name = "Lions mane" icon_state = "lion" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/monk name = "Monk" @@ -257,7 +257,7 @@ name = "Mercenary" icon_state = "mercenary" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/miner_dwarf name = "Miner" @@ -269,44 +269,44 @@ name = "Nobility" icon_state = "nobility" gender = MALE - specuse = list("human") + specuse = list("human", "abyssariad") /datum/sprite_accessory/hair/nomadic_humtief name = "Nomadic" icon_state = "nomadic" gender = MALE - specuse = list("human", "tiefling") + specuse = list("human", "tiefling", "abyssariad") /datum/sprite_accessory/hair/pirate name = "Pirate" icon_state = "pirate" gender = MALE under_layer = TRUE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/princely name = "Princely" icon_state = "princely" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/rogue name = "Rogue" icon_state = "rogue" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/romantic name = "Romantic" icon_state = "romantic" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/scribe name = "Scribe" icon_state = "scribe" gender = MALE - specuse = list("human", "dwarf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "aasimar", "tiefling", "abyssariad") under_layer = TRUE /datum/sprite_accessory/hair/southern_human @@ -379,7 +379,7 @@ name = "Warrior" icon_state = "warrior" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/wildside name = "Wild sidecut" @@ -415,13 +415,50 @@ name = "Archivist" icon_state = "archivist_f" // original name bob_scully gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/conscriptf + name = "conscript" + icon_state = "conscript_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/tiedcutf + name = "tied sidecut" + icon_state = "tsidecut_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/wildcutf + name = "wild sidecut" + icon_state = "wildside_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/tomboy1 + name = "short 1" + icon_state = "tomboy_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/tomboy2 + name = "short 2" + icon_state = "tomboy2_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/hair/tomboy3 + name = "short 3" + icon_state = "rogue_f" + gender = FEMALE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + /datum/sprite_accessory/hair/barbarian name = "Barbarian" icon_state = "barbarian_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/beartails name = "Beartails" @@ -434,25 +471,25 @@ name = "Buns" icon_state = "buns_f" // original name twinbuns gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/bob name = "Bob" icon_state = "bob_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/curlyshort name = "Curly Short" icon_state = "curly_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/empress name = "Empress" icon_state = "empress_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/fancy_femelf name = "Fancy" @@ -464,7 +501,7 @@ name = "Grumpy" icon_state = "grumpy_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/gnomish_f name = "Gnomish" @@ -482,7 +519,7 @@ name = "Homely" icon_state = "homely_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/junia name = "Junia" @@ -500,13 +537,13 @@ name = "Loose Braid" icon_state = "loosebraid_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/maiden name = "Maiden" icon_state = "maiden_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/majestic_dwarf_F name = "Majestiq" @@ -518,13 +555,13 @@ name = "Majestic" icon_state = "majestic_f" gender = FEMALE - specuse = list("human") + specuse = list("human", "abyssariad") /datum/sprite_accessory/hair/messy name = "Messy" icon_state = "messy_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/mysterious_elf name = "Mysterious" @@ -536,7 +573,7 @@ name = "Mystery" icon_state = "mystery_f" // modified hime_long gender = FEMALE - specuse = list("human", "dwarf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/noblesse name = "Noblesse" @@ -560,7 +597,7 @@ name = "Pixie" icon_state = "pixie_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/plain name = "Plain" @@ -572,19 +609,19 @@ name = "Queenly" icon_state = "queenly_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/shrine name = "Shrinekeeper" icon_state = "shrine_f" gender = FEMALE - specuse = list("elf", "tiefling", "human") + specuse = list("elf", "tiefling", "human", "abyssariad") /datum/sprite_accessory/hair/soilbride name = "Soilbride" icon_state = "soilbride_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/squire_f name = "Squire" @@ -602,7 +639,7 @@ name = "Tied ponytail" icon_state = "tied_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/hair/tiedup name = "Tied up" @@ -620,7 +657,7 @@ name = "Wisp" icon_state = "wisp_f" gender = FEMALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") ////////////////////////////// @@ -636,7 +673,7 @@ /datum/sprite_accessory/hair/shaved name = "Shaved" icon_state = "shaved" - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") gender = NEUTER under_layer = TRUE @@ -695,25 +732,25 @@ name = "Shaved" icon_state = "facial_shaven" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/brew name = "Brew" icon_state = "facial_moonshiner" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/chops name = "Choppe" icon_state = "facial_muttonmus" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/chin name = "Clean Chin" icon_state = "facial_chin" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/braided name = "Dignitary" @@ -725,7 +762,7 @@ name = "Drinker" icon_state = "facial_manly" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/fullbeard name = "Full Beard" @@ -737,67 +774,67 @@ name = "Fullest Beard" icon_state = "facial_brokenman" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/knightly name = "Knightly" icon_state = "facial_knightly" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/know name = "Knowledge" icon_state = "facial_wise" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/fiveoclockm name = "Mustache" icon_state = "facial_5oclockmoustache" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/pick name = "Pick" icon_state = "facial_longbeard" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/pipe name = "Pipesmoker" icon_state = "facial_pipe" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/viking name = "Raider" icon_state = "facial_viking" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/ranger name = "Ranger" icon_state = "facial_dwarf" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/vandyke name = "Rumata" icon_state = "facial_vandyke" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/burns name = "Sideburns" icon_state = "facial_burns" gender = MALE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/facial_hair/hermit name = "Wise Hermit" icon_state = "facial_moonshiner" gender = MALE - specuse = list("human", "dwarf", "elf", "tiefling") + specuse = list("human", "dwarf", "elf", "tiefling", "abyssariad") /////////////////////////// // Accessory Definitions // @@ -870,7 +907,7 @@ gender = NEUTER icon = 'icons/roguetown/mob/detail.dmi' use_static = TRUE - specuse = list("human", "dwarf", "elf", "aasimar", "tiefling") + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") /datum/sprite_accessory/detail/nothing name = "Nothing" @@ -1021,15 +1058,32 @@ name = "Femundies" icon_state = "female_bikini" gender = FEMALE - specuse = ALL_RACES_LIST + specuse = list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie") //had to change that one. Sorry. The RNG was forcing the Abyssariad females to have this. /datum/sprite_accessory/underwear/female_leotard name = "Femleotard" icon_state = "female_leotard" gender = FEMALE - specuse = ALL_RACES_LIST + specuse = list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie") //had to change that one. Sorry. The RNG was forcing the Abyssariad females to have this. roundstart = FALSE +/datum/sprite_accessory/underwear/male_fundoshi + name = "Mendoshi" + icon_state = "male_fundoshi" + gender = MALE + specuse = list("abyssariad") + roundstart = TRUE + use_static = TRUE + icon = 'icons/roguetown/kaizoku/clothing/underwear.dmi' + +/datum/sprite_accessory/underwear/male_fundoshi/female + name = "Femdoshi" + icon_state = "female_fundoshi" + gender = FEMALE + specuse = list("abyssariad") + roundstart = TRUE + use_static = TRUE + //#endif //////////////////////////// // Undershirt Definitions // @@ -1209,6 +1263,7 @@ name = "TiebHorns" icon_state = "tiebhorns" specuse = list("tiefling") + gender = NEUTER color_src = SKINCOLOR offsetti = TRUE @@ -1482,3 +1537,232 @@ /datum/sprite_accessory/moth_markings/moonfly name = "Moon Fly" icon_state = "moonfly" + +//Female Kaizoku hair below. + +/datum/sprite_accessory/hair/kaizoku/empress + name = "Abyssal Empress" + icon_state = "empress" + gender = FEMALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/onnamusha + name = "Onnamusha" + icon_state = "warlady" + gender = FEMALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/waterfield + name = "Waterbearer" + icon_state = "waterfield" + gender = FEMALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/homewaifu + name = "Homewife" + icon_state = "homewaifu" + gender = FEMALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/casual + name = "Natural River" + icon_state = "casual" + gender = FEMALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/martyr + name = "Inhonor of the Fallen" + icon_state = "martyr" + gender = FEMALE + specuse = list("abyssariad") + +//Male Kaizoku hair below. + +/datum/sprite_accessory/hair/kaizoku + name = "Zamurai Manbun" + icon = 'icons/roguetown/kaizoku/body_details/hairstyles.dmi' + icon_state = "samurai" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/ronin + name = "Vagabond" + icon_state = "ronin" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/freespirit + name = "Free Spirit" + icon_state = "freespirit" + gender = NEUTER + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/novice + name = "New Rice" + icon_state = "novice" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/yakuza + name = "Irezumi Gangster" + icon_state = "yakuza" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/steppeman + name = "Aridlands raider" + icon_state = "steppeman" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/bishonen + name = "Husband" + icon_state = "bishonen" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/emperor + name = "Imperial Court" + icon_state = "emperor" + gender = MALE + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/protagonist + name = "Historical Protagonist" + icon_state = "hprotagonist" + gender = NEUTER + specuse = list("abyssariad") + +/datum/sprite_accessory/hair/kaizoku/protagonistalt + name = "Longer Protagonist" + icon_state = "alsoprotagonist" + gender = NEUTER + specuse = list("abyssariad") + +//Abyssariad accessories. + +/datum/sprite_accessory/detail + name = "" + icon_state = null + gender = NEUTER + icon = 'icons/roguetown/mob/detail.dmi' + use_static = TRUE + specuse = list("human", "dwarf", "elf", "aasimar", "tiefling", "abyssariad") + +/datum/sprite_accessory/detail/irezumi + name = "Blademaster Irezumi" + icon_state = "blademaster" + specuse = list("human", "abyssariad") //Humens are getting irezumis due to heartfelt. + +/datum/sprite_accessory/detail/irezumi/champion + name = "Champion Irezumi" + icon_state = "champion" + +/datum/sprite_accessory/detail/irezumi/monk + name = "Monk Irezumi" + icon_state = "monk" + +/datum/sprite_accessory/detail/irezumi/seduction + name = "Eyes Irezumi" + icon_state = "seduction" + +/datum/sprite_accessory/detail/irezumi/seductionalt + name = "Side-eyes Irezumi" + icon_state = "seductionalt" + +/datum/sprite_accessory/detail/irezumi/warrior + name = "Abyss Warrior Irezumi" + icon_state = "warrior" + +//kaizoku bodyparts + +/datum/sprite_accessory/tails/human/onetail + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "Onetail" + icon_state = "onetail" + specuse = list("changeling") + gender = NEUTER + color_src = HAIR + offsetti = TRUE + +/datum/sprite_accessory/ears/upright + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "Upright" + icon_state = "upright" + specuse = list("changeling") + color_src = HAIR + offsetti = TRUE +/* +/datum/sprite_accessory/ears/lying + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "Lying" + icon_state = "lying" + specuse = list("changeling") + color_src = HAIR + offsetti = TRUE +/datum/sprite_accessory/ears/twotails + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "twotails" + icon_state = "twotails" + specuse = list("changeling") + color_src = HAIR + offsetti = TRUE +/datum/sprite_accessory/ears/threetails + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "threetails" + icon_state = "threetails" + specuse = list("changeling") + color_src = HAIR + offsetti = TRUE +*/ + +/datum/sprite_accessory/tails/human/tenguv //Wings DO NOT WORK, so I set it as tails. If you want to fix that, go ahead. + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "TenguV" + icon_state = "tenguv" + specuse = list("tengu") + gender = NEUTER + color_src = HAIR + offsetti = TRUE + +/datum/sprite_accessory/ears/tengus + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "TenguS" + icon_state = "tengus" + specuse = list("tengu") + color_src = HAIR + offsetti = TRUE + +/datum/sprite_accessory/ears/oni + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "ogrun" + icon_state = "oni" + specuse = list("ogrun") + color_src = SKINCOLOR + offsetti = TRUE + +/datum/sprite_accessory/tails/human/oni //Yes. It's a fucking tail now, I'm bullshitting my way out of this tiefling problem until we got horns fixed. + icon = 'icons/roguetown/kaizoku/body_details/attachment.dmi' + name = "Onihorn" + icon_state = "onihorn" + specuse = list("ogrun") + color_src = 0 + offsetti = TRUE + gender = NEUTER + +/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/emote.dm b/code/modules/mob/emote.dm index 06599f95399..e976e201888 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,3 +1,12 @@ +///How confused a carbon must be before they will not vomit +#define BEYBLADE_PUKE_THRESHOLD (0 SECONDS) +///How must nutrition is lost when a carbon pukes +#define BEYBLADE_PUKE_NUTRIENT_LOSS 60 +///How often a carbon becomes penalized +#define BEYBLADE_DIZZINESS_PROBABILITY 20 +///How long the screenshake lasts +#define BEYBLADE_DIZZINESS_DURATION (1 SECONDS) + //The code execution of the emote datum is located at code/datums/emotes.dm /mob/proc/emote(act, m_type = null, message = null, intentional = FALSE, forced = FALSE, targetted = FALSE, custom_me = FALSE) var/oldact = act @@ -62,29 +71,51 @@ . = ..() if(.) user.SpinAnimation(7,1) - +*/ /datum/emote/spin key = "spin" key_third_person = "spins" restraint_check = TRUE mob_type_allowed_typecache = list(/mob/living, /mob/dead/observer) mob_type_ignore_stat_typecache = list(/mob/dead/observer) + mute_time = 5 SECONDS -/datum/emote/living/carbon/human/spin/can_run_emote(mob/user, status_check = TRUE , intentional) - return FALSE +/mob/living/carbon/human/verb/emote_spin() + set name = "Spin" + set category = "Emotes" + emote("spin", intentional = TRUE) +/datum/emote/spin/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional) + . = ..() + if(!iscarbon(user)) + return FALSE + if(user.IsImmobilized()) + return FALSE -/datum/emote/spin/run_emote(mob/user, params , type_override, intentional) +/datum/emote/spin/run_emote(mob/living/carbon/user, params , type_override, intentional) . = ..() if(.) - user.spin(20, 1) + user.spin(4, 1) + user.Immobilize(5) - if(iscyborg(user) && user.has_buckled_mobs()) - var/mob/living/silicon/robot/R = user - var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding) - if(riding_datum) - for(var/mob/M in R.buckled_mobs) - riding_datum.force_dismount(M) - else - R.unbuckle_all_mobs() -*/ + if(user.dizziness > BEYBLADE_PUKE_THRESHOLD) + user.vomit(BEYBLADE_PUKE_NUTRIENT_LOSS, distance = 0) + return + + if(prob(BEYBLADE_DIZZINESS_PROBABILITY)) + to_chat(user, span_warning("You feel woozy from spinning.")) + user.Dizzy(BEYBLADE_DIZZINESS_DURATION) + + // if(iscyborg(user) && user.has_buckled_mobs()) + // var/mob/living/silicon/robot/R = user + // var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding) + // if(riding_datum) + // for(var/mob/M in R.buckled_mobs) + // riding_datum.force_dismount(M) + // else + // R.unbuckle_all_mobs() + +#undef BEYBLADE_PUKE_THRESHOLD +#undef BEYBLADE_PUKE_NUTRIENT_LOSS +#undef BEYBLADE_DIZZINESS_PROBABILITY +#undef BEYBLADE_DIZZINESS_DURATION diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index b22bb76873e..dd6c71f6f9f 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 b8c165b3a77..aeb1672a797 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -134,6 +134,14 @@ // Boolean. Usually set only to TRUE for non-Eoran church roles. var/virginity = FALSE + // Another Boolean. But this time entirely for Kaizoku content to define those whom Abyssariads considers 'impure', and for champions. + var/burakumin = FALSE + var/champion = FALSE + + //a var used for a rather niched power. + var/purification = FALSE + + possible_rmb_intents = list(/datum/rmb_intent/feint,\ /datum/rmb_intent/aimed,\ /datum/rmb_intent/strong,\ diff --git a/code/modules/mob/living/carbon/human/npc/raider.dm b/code/modules/mob/living/carbon/human/npc/raider.dm new file mode 100644 index 00000000000..2862c663ecd --- /dev/null +++ b/code/modules/mob/living/carbon/human/npc/raider.dm @@ -0,0 +1,274 @@ +// Important. These guys are only suitable for events and film-making. Unless you have an ocean-based map, don't make them spawnable naturally. +//They are not finished yet and should not be treated as full content. There is abilities I'd like to provide them. + +GLOBAL_LIST_INIT(ashigaru_quotes, world.file2list("strings/rt/ashigarulines.txt")) +GLOBAL_LIST_INIT(ashigaru_aggro, world.file2list("strings/rt/ashigaruaggrolines.txt")) + +/mob/living/carbon/human/species/abyssariad/raider + aggressive = 1 + mode = AI_IDLE + faction = list("zamurai", "station") + ambushable = FALSE + dodgetime = 3 SECONDS + flee_in_pain = FALSE + possible_rmb_intents = list() + + wander = FALSE + +/mob/living/carbon/human/species/abyssariad/raider/ambush + aggressive = 1 + wander = TRUE + dodgetime = 1 SECONDS + +/mob/living/carbon/human/species/abyssariad/raider/retaliate(mob/living/L) + var/newtarg = target + .=..() + if(target) + aggressive = 1 + wander = TRUE + if(target != newtarg) + if(prob(25)) + emote("rage") + +/mob/living/carbon/human/species/abyssariad/raider/ambush/should_target(mob/living/L) + . = ..() // They kill fallen enemies. Very honorable. + +/mob/living/carbon/human/species/abyssariad/raider/Initialize() + . = ..() + var/list/racetypes = list("Changeling" = 1, "Skylancer" = 1, "Ogrun" = 1) + var/type = pickweight(racetypes) + switch(type) + if("Changeling") + set_species(/datum/species/abyssariad/changeling) + if("Skylancer") + set_species(/datum/species/abyssariad/skylancer) + if("Ogrun") + set_species(/datum/species/abyssariad/ogrun) + addtimer(CALLBACK(src, PROC_REF(after_creation)), 1 SECONDS) + +/mob/living/carbon/human/species/abyssariad/raider/npc_idle() + if(m_intent == MOVE_INTENT_SNEAK) + return + if(world.time < next_idle) + return + next_idle = world.time + rand(30, 70) + if((mobility_flags & MOBILITY_MOVE) && isturf(loc) && wander) + if(prob(20)) + var/turf/T = get_step(loc, pick(GLOB.cardinals)) + if(!istype(T, /turf/open/transparent/openspace)) + Move(T) + else + face_atom(get_step(src, pick(GLOB.cardinals))) + else if(!wander && prob(10)) + face_atom(get_step(src, pick(GLOB.cardinals))) + if(prob(3)) + say(pick(GLOB.ashigaru_quotes)) + if(prob(3)) + emote(pick("laugh", "throatsing")) + +//ashigarus + +/mob/living/carbon/human/species/abyssariad/raider/ambush/ashigaru/after_creation() + ..() + job = "Exiled Ashigaru" + ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + + equipOutfit(new /datum/outfit/job/roguetown/antag/raider/ashigaru) + +/datum/outfit/job/roguetown/antag/raider/ashigaru/pre_equip(mob/living/carbon/human/H) + ..() + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo/half + pants = /obj/item/clothing/under/roguetown/trou/tobi/random + cloak = /obj/item/clothing/cloak/stabard/haramaki/jinbaori/raider + shoes = /obj/item/clothing/shoes/roguetown/boots/jikatabi/shinobi + belt = /obj/item/storage/belt/rogue/kaizoku/leather/daisho/random + + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/combat/shields, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE) + H.change_stat("strength", 2) + H.change_stat("endurance", 2) + H.change_stat("constitution", 1) + + var/loadout = rand(1, 4) + switch(loadout) + if(1) + r_hand = /obj/item/rogueweapon/sword/scimitar/messer/dao + l_hand = /obj/item/rogueweapon/shield/wood/rattan + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/sanmaido + head = /obj/item/clothing/head/roguetown/helmet/jingasa + if(2) + r_hand = /obj/item/rogueweapon/mace/steel/ararebo + l_hand = /obj/item/rogueweapon/shield/wood/rattan + head = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane + armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami + if(3) + r_hand = /obj/item/rogueweapon/polearm/spear/yari + l_hand = /obj/item/rogueweapon/shield/wood/rattan + armor = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami + head = /obj/item/clothing/head/roguetown/helmet/jingasa + if(4) + r_hand = /obj/item/rogueweapon/polearm/spear/yari/katakama + armor = /obj/item/clothing/suit/roguetown/armor/cuirass/nanbando + head = /obj/item/clothing/head/roguetown/helmet/jingasa + +// lowclass zamurais + +/mob/living/carbon/human/species/abyssariad/raider/zamurai/after_creation() + ..() + job = "Lowclass Zamurai" + ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_HEAVYARMOR, TRAIT_GENERIC) + equipOutfit(new /datum/outfit/job/roguetown/antag/raider/zamurai) + +/datum/outfit/job/roguetown/antag/raider/zamurai/pre_equip(mob/living/carbon/human/H) + ..() + pants = /obj/item/clothing/under/roguetown/chainlegs/sendan + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo + cloak = /obj/item/clothing/cloak/stabard/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/tower/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/tower/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/bardiche/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/bardiche/naginata/dustcurse + armor = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad + head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed + shirt = /obj/item/clothing/suit/roguetown/armor/chainmail/tatami + +//highclass zamurais + +/mob/living/carbon/human/species/abyssariad/raider/ambush/highzamurai/after_creation() + ..() + job = "Exiled High Zamurai" + ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_NOROGSTAM, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + ADD_TRAIT(src, TRAIT_HEAVYARMOR, TRAIT_GENERIC) + + equipOutfit(new /datum/outfit/job/roguetown/antag/raider/highzamurai) + +/datum/outfit/job/roguetown/antag/raider/highzamurai + name = "Exiled Highclass Zamurai" + +/datum/outfit/job/roguetown/antag/raider/highzamurai/pre_equip(mob/living/carbon/human/H) + ..() + H.change_stat("strength", 3) + H.change_stat("endurance", 2) + H.change_stat("constitution", 2) + H.change_stat("intelligence", 2) + H.change_stat("speed", 2) + + pants = /obj/item/clothing/under/roguetown/chainlegs/sendan/cursed + mask = /obj/item/clothing/mask/rogue/kaizoku/menpo + cloak = /obj/item/clothing/cloak/stabard/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/tower/abyssaltower/dustcurse + armor = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi + head = /obj/item/clothing/head/roguetown/helmet/visored/zunari/cursed + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai + if(4) + r_hand = /obj/item/rogueweapon/sword/long/tachi/dustcurse + l_hand = /obj/item/rogueweapon/shield/tower/metal/abyssal/dustcurse + armor = /obj/item/clothing/suit/roguetown/armor/brigandine/oyoroi/oyoroigusoku/cursed + head = /obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto/cursed + shirt = /obj/item/clothing/suit/roguetown/armor/gambeson/ruankai diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 39fd85000d0..1dcd2543dda 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -16,6 +16,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/list/possible_ages = ALL_AGES_LIST var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows var/patreon_req + var/minrace_pq = -999 var/max_age = 75 var/list/offset_features = list(OFFSET_ID = list(0,0), OFFSET_GLOVES = list(0,0),\ OFFSET_CLOAK = list(0,0), OFFSET_FACEMASK = list(0,0), OFFSET_HEAD = list(0,0), \ diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm new file mode 100644 index 00000000000..eb89d16caaa --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/_abyssariad.dm @@ -0,0 +1,93 @@ +/mob/living/carbon/human/species/abyssariad + race = /datum/species/abyssariad + +/datum/species/abyssariad + name = "foglander" + id = "abyssariad" + max_age = 1250 //The year Abyssariads have been created by Abyssor. + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT + +/datum/species/abyssariad/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech)) + C.grant_language(/datum/language/common) + C.grant_language(/datum/language/abyssal) + +/datum/species/abyssariad/get_accent(mob/living/carbon/human/H) + return strings("abyssal_replacement.json", "abyssal") + +///mob/proc/banzai() //Don't have female 'Banzai' yells for that. +// set name = "Banzai" +// set category = "Noises" +// emote("banzai") + +/mob/proc/yoo() + set name = "Yoo" + set category = "Noises" + emote("yoo") + +/mob/proc/throatsing() + set name = "Throatsing" + set category = "Noises" + emote("throatsing") + +/mob/proc/birdcall() + set name = "Birdcall" + set category = "Noises" + emote("birdcall") + +/datum/species/abyssariad/check_roundstart_eligible() + return FALSE + +/datum/species/abyssariad/after_creation(mob/living/carbon/C) + ..() +// if(!C.has_language(/datum/language/abyssal)) + C.grant_language(/datum/language/abyssal) + to_chat(C, "I can speak Abyssal with ,a before my speech.") + +/datum/species/abyssariad/on_species_loss(mob/living/carbon/C) + . = ..() + UnregisterSignal(C, COMSIG_MOB_SAY) + C.remove_language(/datum/language/abyssal) + +/datum/species/abyssariad/qualifies_for_rank(rank, list/features) + return TRUE + +/datum/species/abyssariad/get_skin_list() + return sortList(list( + "skin1" = "ffe0d1", + "skin2" = "fcccb3" + )) + + +/datum/species/abyssariad/get_hairc_list() + return sortList(list( + "black - nightsky" = "0a0707", + "brown - treebark" = "362e25", + "blonde - moonlight" = "dfc999", + "red - autumn" = "a34332" + )) + +/proc/clanfication(mob/living/carbon/human/H) + var/index = findtext(H.real_name, " Clanless") //Find 'Clanless' where an 'Clanless' makes no sense to exist. + if(index) + var/original_first_name = copytext(H.real_name, 1, index) //First name extraction. + var/new_surname = H.dna.species.random_surname() //Generation of a generic clan surname for RP purposes. + var/new_full_name = "[original_first_name][new_surname]" //Creates a new full name. "Firstname of Surname clan" + H.change_name(new_full_name) //Applies the name. + testing("[H.real_name] has been reassigned a surname: [new_full_name]") //Debuglog for information. Sometimes "(name) the of (surname) happens and I'M FUGGING GOING INSANE." + +//Not done yet. +/* +/mob/living/carbon/human/verb/abyssaltide() + set name = "Abyssal Tide" + set category = "Memory" + if(HAS_TRAIT(src, TRAIT_KAIZOKU)) // I'm fUGGING ANGRY AT THIS, WHY IT DOESN'T WORKKAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH + var/readme_text = file2text("strings/rt/Abyssal_Tide.json") // CAN'T READ IIIIIIIIT + if (readme_text) + src << browse(readme_text, "window=memory") // AHHHHHHHHHHHHHHHHHH 'IM GOING TO DUFDSGOKSDOGRT + else + to_chat(src, "OOC: The Abyssal Tide information is missing or cannot be read. Please check for further information on Discord.") + else + to_chat(src, "You have no idea what Abyssal Tide means.") +*/ diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm new file mode 100644 index 00000000000..20bf746c67f --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/changeling.dm @@ -0,0 +1,183 @@ + /*==============* + * * + * Changeling * + * * + *===============*/ + +// ( + Hard Bite perk ) +// ( - 'Bite' intention always set a warning state. ) +/* +>>>MAJOR NEED! Please, someone code in a "Felinid"-like system for the changeling, but instead of CRINGE 'CUTESY' BS, I want +help to portray Changeling's bloodthirsty nature. The 'Eldritch Jaw', which is essentially, "wagging_tail" system +for the mouth THAT opens with a automatic emote (bite intention).<<< +Future plan: +-Physical Extension, Kitsune-bi; Immune to fire, put fires on others by touch and need no water, but takes damage from water sources, including water splash from buckets. +-Can only eat meat from all sources. Uncooked or cooked meat, fat, tallows, bones, corpses, gibs. Cannot eat vegetables, cereals, fruits. Exceptions only comes to Sake and Rice. +*/ + +/mob/living/carbon/human/species/abyssariad/changeling + race = /datum/species/abyssariad/changeling + +/datum/species/abyssariad/changeling + name = "Changeling" + id = "abyssariad" + desc = "Storm branched Champions
\ + Molded from Abyssor's tumultuous embrace of storm and will, the Changelings are a warrior, demiurgic race \ + deeply bonded with honor and ethos that intertwines with the tempestuous forces of Abyssor, \ + never set on a balance, all Changelings are extreme as the storms, with the tendency to be both \ + hermeticly humble and quick tempered, and know for either loving duel for honor's sake \ + - or being the most radical martial pacifists on Grimoria. Their society almost crumbled \ + during The Bloody Apotheosis, but their apotheosis-age traditions lives on together with a deep \ + hatred for all things Graggar. Their biology allows high degree of fleshbending, their faces exactly alike masks. \ + They are noble souls that, when not belonging to military or clerical jobs, usually partakes \ + in the society's intelligentsia division, usually as astronomers, alchemists and surgeons." + + skin_tone_wording = "Championage Branch" + + default_color = "FFFFFF" + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) + inherent_traits = list(TRAIT_NOMOBSWAP) + default_features = list("mcolor" = "FFF", "ears" = "Upright", "tail_human" = "Onetail") + use_skintones = 1 + possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, if they become stray from Abyssor - they suffer severe dementia, and after some decades, become Dais. + skinned_type = /obj/item/stack/sheet/animalhide/human + disliked_food = NONE + liked_food = MEAT + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT + limbs_icon_m = 'icons/roguetown/kaizoku/abyssariad_bodies/male/mt_kit.dmi' + limbs_icon_f = 'icons/roguetown/kaizoku/abyssariad_bodies/female/ft_kit.dmi' + dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi' + dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_female.dmi' + hairyness = "" + mutant_bodyparts = list("ears","tail_human") + use_f = FALSE + soundpack_m = /datum/voicepack/male/abyssariad + soundpack_f = /datum/voicepack/female/abyssariad + offset_features = list(OFFSET_ID = list(0,1), OFFSET_GLOVES = list(0,1), OFFSET_WRISTS = list(0,1),\ + OFFSET_CLOAK = list(0,1), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \ + OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,1), \ + OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,1), OFFSET_PANTS = list(0,1), \ + OFFSET_SHIRT = list(0,1), OFFSET_ARMOR = list(0,1), OFFSET_HANDS = list(0,1), OFFSET_UNDIES = list(0,1), \ + OFFSET_ID_F = list(0,-1), OFFSET_GLOVES_F = list(0,1), OFFSET_WRISTS_F = list(0,1), OFFSET_HANDS_F = list(0,1), \ + OFFSET_CLOAK_F = list(0,1), OFFSET_FACEMASK_F = list(0,0), OFFSET_HEAD_F = list(0,0), \ + OFFSET_FACE_F = list(0,0), OFFSET_BELT_F = list(0,1), OFFSET_BACK_F = list(0,0), \ + OFFSET_NECK_F = list(0,0), OFFSET_MOUTH_F = list(0,0), OFFSET_PANTS_F = list(0,1), \ + OFFSET_SHIRT_F = list(0,1), OFFSET_ARMOR_F = list(0,1), OFFSET_UNDIES_F = list(0,1)) + // Lore explanation for stats: + // Qualities: +Dense muscles ; higher fast-twitch fiber + // =>Disadvantage: -Lower Stationary Acuity; They are better at noticing movements, bad at noticing stationary objects. Bad with bows by nature. Foxes have that IRL because of nightvision. At least they have more reason to have it than Dark Elves. + // -Low fat mass, high muscle mass. Streamlined body structure that minimizes resistance and maximizes intense muscular movements. + specstats = list("strength" = 1, "perception" = -2, "intelligence" = 2, "constitution" = -1, "endurance" = 1, "speed" = 1, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage. + specstats_f = list("strength" = 1, "perception" = -2, "intelligence" = 2, "constitution" = -1, "endurance" = 1, "speed" = 1, "fortune" = 0) + enflamed_icon = "widefire" + mutanttongue = /obj/item/organ/tongue/kitsune + minrace_pq = 0 + // 1(str)-1+1-0.5+0.5+1(spd)+0 = 2 specstats. Balance adjusted. + //statsvalue reference by Dova + //Strength and Speed are 1, everything else is .5, all races are +2 or +3 except Humen + customizers = list( + /datum/customizer/organ/eyes/humanoid, + /datum/customizer/bodypart_feature/hair/head/humanoid, + /datum/customizer/bodypart_feature/hair/facial/humanoid, + /datum/customizer/bodypart_feature/accessory + ) + body_markings = list( + /datum/body_marking/tonage, + ) + +/datum/species/abyssariad/changeling/get_span_language(datum/language/message_language) + if(!message_language) + return +// if(message_language.type == /datum/language/abyssal) +// return list(SPAN_ABYSSAL) +// if(message_language.type == /datum/language/common) +// return list(SPAN_SELF) + return message_language.spans + +/datum/species/abyssariad/changeling/check_roundstart_eligible() + return TRUE + +/datum/species/abyssariad/changeling/get_skin_list() + return sortList(list( + "Oathbound Muqian" = SKIN_COLOR_OATHBOUND_MUQIAN, + "Oathbound Kaizoku" = SKIN_COLOR_OATHBOUND_KAIZOKU, + "Oathbound Shuhen" = SKIN_COLOR_OATHBOUND_SHUHEN, + "Oathbound Linyou" = SKIN_COLOR_OATHBOUND_LINYOU, + "Oathbound Dustwalker" = SKIN_COLOR_OATHBOUND_DUSTWALKER, + "Warpcaster Muqian" = SKIN_COLOR_WARPCASTER_MUQIAN, + "Warpcaster Kaizoku" = SKIN_COLOR_WARPCASTER_KAIZOKU, + "Warpcaster Shuhen" = SKIN_COLOR_WARPCASTER_SHUHEN, + "Warpcaster Linyou" = SKIN_COLOR_WARPCASTER_LINYOU, + "Warpcaster Dustwalker" = SKIN_COLOR_WARPCASTER_DUSTWALKER, + )) + + +/datum/species/abyssariad/changeling/get_hairc_list() + return sortList(list( + "blond - pale" = "9d8d6e", + "blond - dirty" = "88754f", + "blond - drywheat" = "d5ba7b", + "blond - strawberry" = "c69b71", + + "brown - mud" = "362e25", + "brown - oats" = "584a3b", + "brown - grain" = "58433b", + "brown - soil" = "48322a", + + "black - oil" = "181a1d", + "black - cave" = "201616", + "black - rogue" = "2b201b", + "black - midnight" = "1d1b2b", + + "red - berry" = "48322a", + "red - wine" = "82534c", + "red - sunset" = "82462b", + "red - blood" = "822b2b", + + "white - platinum" = "f8f3f3", + "white - silver" = "ddddc8", + "white - oceanid" = "141f1f" + + )) + +/datum/species/abyssariad/changeling/random_name(gender,unique,lastname) + var/randname + if(unique) + if(gender == MALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") ) + if(!findname(randname)) + break + if(gender == FEMALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") ) + if(!findname(randname)) + break + else + if(gender == MALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") ) + if(gender == FEMALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") ) + randname += " Clanless" + return randname + +/datum/species/abyssariad/changeling/random_surname() + return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorlast.txt"))]" + +// Commented out. All this was a code FAILURE by my part, and I require help. +/* +/datum/species/abyssariad/changeling/can_wag_tongue(mob/living/carbon/human/H) + return ("kitsune_tongue" in mutant_bodyparts) || ("waggingkitsune_tongue" in mutant_bodyparts) +/datum/species/abyssariad/changeling/is_wagging_tongue(mob/living/carbon/human/H) + return ("waggingkitsune_tongue" in mutant_bodyparts) +/datum/species/abyssariad/changeling/start_wagging_tongue(mob/living/carbon/human/H) + if("changeling" in mutant_bodyparts) + mutant_bodyparts -= "kitsune_tongue" + mutant_bodyparts |= "waggingkitsune_tongue" + H.update_body() +/datum/species/abyssariad/changeling/stop_wagging_tongue(mob/living/carbon/human/H) + if("waggingkitsune_tongue" in mutant_bodyparts) + mutant_bodyparts -= "waggingkitsune_tongue" + mutant_bodyparts |= "kitsune_tongue" + H.update_body() +*/ diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm new file mode 100644 index 00000000000..3c8705976f1 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/ogrun.dm @@ -0,0 +1,155 @@ + /*==============* + * * + * ogrun * + * * + *===============*/ + +// ( Not done yet. But hopefully something related to endurance. ) +// ( Not done yet, but hopefully something quite goreful. ) + +/mob/living/carbon/human/species/abyssariad/ogrun //Remember to code in abyssal powers that forces Orcs to become Onis if it is used with specific purifying ways. + race = /datum/species/abyssariad/ogrun + +/datum/species/abyssariad/ogrun + name = "Ogrun" + id = "abyssariad" + desc = "Island Branched Champions
\ + Created from Abyssor's purifying artifacts under the guide of other Abyssariads, \ + the Ogrun are a stoic race, with stout and sturdy bodies equal to wide trunked trees. \ + Just like the islands that sprinkled the ocean's surface, the Onis are individuals \ + bearing the constant waves and storms of life. It is set in history that Onis were \ + recovered orcs from the Bloody Apotheosis under the effects of Abyssor's Grey Dreams, \ + and under mercy instead of carnage, were purified by Abyssal artifacts into the \ + complete removal of their graggarious demonic corruption, unrooting the evil for the \ + forevermore. They are rekindled souls that, when not belonging to military or clerical jobs, \ + usually partakes in the society's industrial division, usually as blacksmiths, artisans and architects." + + skin_tone_wording = "Championage Branch" + + default_color = "FFFFFF" + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,STUBBLE) + inherent_traits = list(TRAIT_NOMOBSWAP) + default_features = list("mcolor" = "FFF", "ears" = "ogrun", "horns" = "onihorn") + mutant_bodyparts = list("ears","horns") + use_skintones = 1 + possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, Onis are the newest ones on the fold, and they become Orcs mentally if they stray away from Abyssor. + max_age = 430 //The year Onis became part of the Abyssariads. Roughly after the Blood Apotheosis + skinned_type = /obj/item/stack/sheet/animalhide/human + disliked_food = NONE + liked_food = MEAT + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT + limbs_icon_m = 'icons/roguetown/mob/bodies/m/mt_muscular.dmi' + limbs_icon_f = 'icons/roguetown/mob/bodies/f/ft_muscular.dmi' + dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi' + dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_male.dmi' + hairyness = "t2" + use_m = TRUE + soundpack_m = /datum/voicepack/male/abyssariad + soundpack_f = /datum/voicepack/female/abyssariad + offset_features = list(OFFSET_ID = list(0,1), OFFSET_GLOVES = list(0,1), OFFSET_WRISTS = list(0,1),\ + OFFSET_CLOAK = list(0,1), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \ + OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,1), \ + OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,1), OFFSET_PANTS = list(0,1), \ + OFFSET_SHIRT = list(0,1), OFFSET_ARMOR = list(0,1), OFFSET_HANDS = list(0,1), OFFSET_UNDIES = list(0,1), \ + OFFSET_ID_F = list(0,1), OFFSET_GLOVES_F = list(0,1), OFFSET_WRISTS_F = list(0,1), OFFSET_HANDS_F = list(0,1), \ + OFFSET_CLOAK_F = list(0,1), OFFSET_FACEMASK_F = list(0,1), OFFSET_HEAD_F = list(0,1), \ + OFFSET_FACE_F = list(0,1), OFFSET_BELT_F = list(0,1), OFFSET_BACK_F = list(0,1), \ + OFFSET_NECK_F = list(0,1), OFFSET_MOUTH_F = list(0,1), OFFSET_PANTS_F = list(0,1), \ + OFFSET_SHIRT_F = list(0,1), OFFSET_ARMOR_F = list(0,1), OFFSET_UNDIES_F = list(0,1)) + specstats = list("strength" = 1, "perception" = -1, "intelligence" = -1, "constitution" = 2, "endurance" = 2, "speed" = 0, "fortune" = 0) + specstats_f = list("strength" = 1, "perception" = -1, "intelligence" = -1, "constitution" = 2, "endurance" = 2, "speed" = 0, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage. + enflamed_icon = "widefire" + minrace_pq = 0 +// 1(str)-0.5-0.5+1+1+0(spd)+0 = 2 = 2.0 specstats. Balance adjusted. +//statsvalue reference by Dova +//Strength and Speed are 1, everything else is .5, all races are +2 or +3 except Humen. So we keeping it as +2 for balance reasons. + + + customizers = list( + /datum/customizer/organ/eyes/humanoid, + /datum/customizer/bodypart_feature/hair/head/humanoid, + /datum/customizer/bodypart_feature/hair/facial/humanoid, + /datum/customizer/bodypart_feature/accessory, + ) + body_markings = list( + /datum/body_marking/tonage, + ) + +/datum/species/abyssariad/ogrun/check_roundstart_eligible() + return TRUE + +/datum/species/abyssariad/ogrun/get_skin_list() + return sortList(list( + "Defiant Oni" = SKIN_COLOR_DEFIANCE, + "Sanguine Oni" = SKIN_COLOR_DEFIANCE_SANGUINE, + "Stable Oni" = SKIN_COLOR_STABILITY, + "Intellectual Oni" = SKIN_COLOR_STABILITY_INTELLECT, + "Serene Oni" = SKIN_COLOR_SERENITY, + "Harmonious Oni" = SKIN_COLOR_SERENITY_PEACE, + "Audacious Oni" = SKIN_COLOR_AUDACY, + "Mysterious Oni" = SKIN_COLOR_AUDACY_MYSTERY, + "Recently Purified" = SKIN_COLOR_BLANK_PURIFICATED, + )) + +/datum/species/abyssariad/ogrun/get_hairc_list() + return sortList(list( + "black - oil" = "181a1d", + "black - cave" = "201616", + "black - rogue" = "2b201b", + "black - midnight" = "1d1b2b", + + "brown - mud" = "362e25", + "brown - oats" = "584a3b", + "brown - grain" = "58433b", + "brown - soil" = "48322a", + + "red - berry" = "48322a", + "red - wine" = "82534c", + "red - sunset" = "82462b", + "red - blood" = "822b2b", + + "white - snow" = "dee9ed", + "white - ice" = "f4f4f4", + + "blond - pale" = "9d8d6e", + "blond - dirty" = "88754f", + "blond - drywheat" = "8f8766", + "blond - strawberry" = "977033", + + "white - platinum" = "f8f3f3", + "white - silver" = "ddddc8", + "white - oceanid" = "141f1f" + + + )) + +/datum/species/abyssariad/ogrun/get_span_language(datum/language/message_language) + if(!message_language) + return +// if(message_language.type == /datum/language/abyssal) +// return list(SPAN_ABYSSAL) + return message_language.spans + +/datum/species/abyssariad/ogrun/random_name(gender,unique,lastname) + var/randname + if(unique) + if(gender == MALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/onim.txt") ) + if(!findname(randname)) + break + if(gender == FEMALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/onif.txt") ) + if(!findname(randname)) + break + else + if(gender == MALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/onim.txt") ) + if(gender == FEMALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/onif.txt") ) + randname += " Clanless" + return randname + +/datum/species/abyssariad/ogrun/random_surname() + return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorm.txt"))]" diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm new file mode 100644 index 00000000000..52f35b6a213 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/skylancer.dm @@ -0,0 +1,150 @@ + /*==============* + * * + * Skylancer * + * * + *===============*/ + +// ( Not done yet. But hopefully temporary flying. ) +// ( Not done yet, but hopefully easily breakable bones. ) + +/mob/living/carbon/human/species/abyssariad/skylancer + race = /datum/species/abyssariad/skylancer + +/datum/species/abyssariad/skylancer + name = "Skylancer" + id = "abyssariad" + desc = "Sky branched Champions
\ + Molded from Abyssor's relentless skies, the avian denmorians are a inquisitive race with lithe bodies \ + glaceful as the flows of the tides to navigate and glide across the rocky shores and crashing \ + waves of their currently destroyed domain to provide information, supplies and messages in any \ + battlefield. Just like the skies they branched from, they are vast and enduring - if not \ + mysterious and deep, often appearing aloof and solitary to outsiders. Their society almost crumbled \ + during The Bloody Apotheosis, but their apotheosis-age traditions lives on together with a deep \ + hatred for all things Graggar. They are refined souls that, when not belonging to military or clerical jobs, \ + usually partakes in the society's mercantile division, usually as merchants, bankers and gem lapidary. \ + Their specialized syrinxs makes them complex vocalizators for spionage and disguise." + + skin_tone_wording = "Championage Branch" + + default_color = "FFFFFF" + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) + inherent_traits = list(TRAIT_NOMOBSWAP) + default_features = list("mcolor" = "FFF", "ears" = "TenguS", "tail_human" = "TenguV") + use_skintones = 1 + possible_ages = list(AGE_IMMORTAL) //Abyssariads are Immortal. However, if they become stray from Abyssor's will - they suffer severe dementia after some decades. + skinned_type = /obj/item/stack/sheet/animalhide/human + disliked_food = NONE + liked_food = NONE + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | SLIME_EXTRACT + limbs_icon_m = 'icons/roguetown/kaizoku/abyssariad_bodies/male/mtan.dmi' + limbs_icon_f = 'icons/roguetown/kaizoku/abyssariad_bodies/female/ftan.dmi' + dam_icon = 'icons/roguetown/mob/bodies/dam/dam_male.dmi' + dam_icon_f = 'icons/roguetown/mob/bodies/dam/dam_female.dmi' + hairyness = "" + mutant_bodyparts = list("ears","tail_human") + use_f = TRUE + soundpack_m = /datum/voicepack/male/abyssariad + soundpack_f = /datum/voicepack/female/abyssariad + offset_features = list(OFFSET_ID = list(0,2), OFFSET_GLOVES = list(0,0), OFFSET_WRISTS = list(0,1),\ + OFFSET_CLOAK = list(0,2), OFFSET_FACEMASK = list(0,1), OFFSET_HEAD = list(0,1), \ + OFFSET_FACE = list(0,1), OFFSET_BELT = list(0,1), OFFSET_BACK = list(0,2), \ + OFFSET_NECK = list(0,1), OFFSET_MOUTH = list(0,2), OFFSET_PANTS = list(0,2), \ + OFFSET_SHIRT = list(0,2), OFFSET_ARMOR = list(0,2), OFFSET_HANDS = list(0,2), OFFSET_UNDIES = list(0,0), \ + OFFSET_ID_F = list(0,-1), OFFSET_GLOVES_F = list(0,0), OFFSET_WRISTS_F = list(0,0), OFFSET_HANDS_F = list(0,0), \ + OFFSET_CLOAK_F = list(0,0), OFFSET_FACEMASK_F = list(0,-1), OFFSET_HEAD_F = list(0,-1), \ + OFFSET_FACE_F = list(0,-1), OFFSET_BELT_F = list(0,0), OFFSET_BACK_F = list(0,-1), \ + OFFSET_NECK_F = list(0,-1), OFFSET_MOUTH_F = list(0,-1), OFFSET_PANTS_F = list(0,0), \ + OFFSET_SHIRT_F = list(0,0), OFFSET_ARMOR_F = list(0,0), OFFSET_UNDIES_F = list(0,0)) + specstats = list("strength" = -1, "perception" = 2, "intelligence" = 0, "constitution" = -2, "endurance" = 2, "speed" = 2, "fortune" = 0) + specstats_f = list("strength" = -1, "perception" = 2, "intelligence" = 0, "constitution" = -2, "endurance" = 2, "speed" = 2, "fortune" = 0) // Don't even bother making each gender different. Abyssariads are equals in championage. + enflamed_icon = "widefire" + mutanteyes = /obj/item/organ/eyes/rogue/tengu + minrace_pq = 0 + + customizers = list( + /datum/customizer/organ/eyes/humanoid, + /datum/customizer/bodypart_feature/hair/head/humanoid, + /datum/customizer/bodypart_feature/hair/facial/humanoid, + /datum/customizer/bodypart_feature/accessory, + ) + body_markings = list( + /datum/body_marking/tonage, + ) + +/datum/species/abyssariad/skylancer/get_span_language(datum/language/message_language) + if(!message_language) + return +// if(message_language.type == /datum/language/abyssal) +// return list(SPAN_ABYSSAL) + return message_language.spans + +/datum/species/abyssariad/skylancer/check_roundstart_eligible() + return TRUE + +/datum/species/abyssariad/skylancer/get_skin_list() + return sortList(list( + "Oathbound Muqian" = SKIN_COLOR_OATHBOUND_MUQIAN, + "Oathbound Kaizoku" = SKIN_COLOR_OATHBOUND_KAIZOKU, + "Oathbound Shuhen" = SKIN_COLOR_OATHBOUND_SHUHEN, + "Oathbound Linyou" = SKIN_COLOR_OATHBOUND_LINYOU, + "Oathbound Dustwalker" = SKIN_COLOR_OATHBOUND_DUSTWALKER, + "Warpcaster Muqian" = SKIN_COLOR_WARPCASTER_MUQIAN, + "Warpcaster Kaizoku" = SKIN_COLOR_WARPCASTER_KAIZOKU, + "Warpcaster Shuhen" = SKIN_COLOR_WARPCASTER_SHUHEN, + "Warpcaster Linyou" = SKIN_COLOR_WARPCASTER_LINYOU, + "Warpcaster Dustwalker" = SKIN_COLOR_WARPCASTER_DUSTWALKER, + "Peppersblow Warpcaster" = SKIN_COLOR_PEPPERSBLOW, + )) + + +/datum/species/abyssariad/skylancer/get_hairc_list() + return sortList(list( + "blond - pale" = "9d8d6e", + "blond - dirty" = "88754f", + "blond - drywheat" = "d5ba7b", + "blond - strawberry" = "c69b71", + + "brown - mud" = "362e25", + "brown - oats" = "584a3b", + "brown - grain" = "58433b", + "brown - soil" = "48322a", + + "black - oil" = "181a1d", + "black - cave" = "201616", + "black - rogue" = "2b201b", + "black - midnight" = "1d1b2b", + + "red - berry" = "48322a", + "red - wine" = "82534c", + "red - sunset" = "82462b", + "red - blood" = "822b2b", + + "white - platinum" = "f8f3f3", + "white - silver" = "ddddc8", + "white - oceanid" = "141f1f" + + )) + +/datum/species/abyssariad/skylancer/random_name(gender,unique,lastname) + var/randname + if(unique) + if(gender == MALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") ) + if(!findname(randname)) + break + if(gender == FEMALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") ) + if(!findname(randname)) + break + else + if(gender == MALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorm.txt") ) + if(gender == FEMALE) + randname = pick( world.file2list("strings/rt/names/abyssariad/abyssnorf.txt") ) + randname += " Clanless" + return randname + +/datum/species/abyssariad/skylancer/random_surname() + return " [pick(world.file2list("strings/rt/names/abyssariad/abyssnorm.txt"))]" diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/undine.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/undine.dm new file mode 100644 index 00000000000..b92d0d88fb7 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/abyssariad/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/after_creation(mob/living/carbon/C) + ..() + if(C.has_language(/datum/language/elvish)) + C.remove_language(/datum/language/elvish) + C.grant_language(/datum/language/abyssal) + to_chat(C, "I can speak Abyssal with ,a before my speech.") + +/datum/species/elf/undine/get_span_language(datum/language/message_language) + if(!message_language) + return +// if(message_language.type == /datum/language/elvish) +// return list(SPAN_SELF) +// if(message_language.type == /datum/language/common) +// return list(SPAN_SELF) + if(message_language.type == /datum/language/abyssal) + return list(SPAN_ABYSSAL) + return message_language.spans + +/datum/species/elf/undine/get_skin_list() + return sortList(list( + "Swamp Bodysnatcher" = SKIN_COLOR_SWAMPCLAN, + "Jungle Bodysnatcher" = SKIN_COLOR_JUNGLECLAN, //EDIT + "Leaf Skypiercer" = SKIN_COLOR_LEAFCLAN, + "Bog Skypiercer" = SKIN_COLOR_BOGCLAN, //EDIT + "Forest Boneclad" = SKIN_COLOR_FORESTCLAN, + "Shadow Boneclad" = SKIN_COLOR_SHADOWCLAN, + "Firebloom Riverdweller" = SKIN_COLOR_FIREBLOOMCLAN, + "Abyssal Riverdweller" = SKIN_COLOR_ABYSSALCLAN, + )) + +/datum/species/elf/undine/get_hairc_list() + return sortList(list( + "black - oil" = "181a1d", + "black - cave" = "201616", + "black - rogue" = "2b201b", + "black - midnight" = "1d1b2b", + + "brown - mud" = "362e25", + "brown - oats" = "584a3b", + "brown - grain" = "58433b", + "brown - soil" = "48322a", + + "red - berry" = "48322a", + "red - wine" = "82534c", + "red - sunset" = "82462b", + "red - blood" = "822b2b", + + "green - grass" = "2a482c", + "green - swamp" = "3b482a", + "green - leaf" = "2f3c2e", + "green - moss" = "3b3c2a", + "white - silver" = "e8fdfd", + "white - oceanid" = "afdddd" + )) + +/datum/species/elf/undine/random_name(gender,unique,lastname) + var/randname + if(unique) + if(gender == MALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/elf/elfwm.txt") ) + if(!findname(randname)) + break + if(gender == FEMALE) + for(var/i in 1 to 10) + randname = pick( world.file2list("strings/rt/names/elf/elfwf.txt") ) + if(!findname(randname)) + break + else + if(gender == MALE) + randname = pick( world.file2list("strings/rt/names/elf/elfwm.txt") ) + if(gender == FEMALE) + randname = pick( world.file2list("strings/rt/names/elf/elfwf.txt") ) + return randname + +/datum/species/elf/undine/random_surname() + return " [pick(world.file2list("strings/rt/names/elf/elfwlast.txt"))]" + +/datum/species/elf/undine/get_accent(mob/living/carbon/human/H) + return strings("abyssal_replacement.json", "abyssal") + +/mob/proc/croak() + set name = "Croak" + set category = "Noises" + emote("croak") + +/datum/crafting_recipe/bandit_volfhelm + name = "(Bandit) Volfhelm" + time = 4 SECONDS + reqs = list(/obj/item/natural/fur/volf = 2) + result = /obj/item/clothing/head/roguetown/helmet/leather/volfhelm + category = CAT_NONE + +/datum/species/elf/undine/get_accent(mob/living/carbon/human/H) + return strings("abyssal_replacement.json", "abyssal") + +// Unique Undine Recipes. They are actually meant to be RACIAL. But I'm too bad at doing that. + +/datum/crafting_recipe/reinforcedarmor //3-tier, medium armor. Requires troll horns. + name = "Reinforced Tribal Armor" + time = 8 SECONDS + reqs = list(/obj/item/alch/bone = 5, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 3, /obj/item/alch/horn = 1) + result = /obj/item/clothing/suit/roguetown/armor/ceramic/reinforced + category = CAT_NONE + +/datum/crafting_recipe/reinforcedhelmet //3-tier, medium armor. Requires troll horns. + name = "Reinforced Tribal Helmet" + time = 8 SECONDS + reqs = list(/obj/item/alch/bone = 3, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 2, /obj/item/alch/horn = 1) //Costs less since it is a helmet. Still requires troll horns. + result = /obj/item/clothing/head/roguetown/helmet/ceramic/reinforced + category = CAT_NONE + +/datum/crafting_recipe/mediumhelmet //2-tiers, medium armor. The materials can be adquired naturally by butchering. + name = "Medium Tribal helmet" + time = 4 SECONDS + reqs = list(/obj/item/alch/bone = 2, /obj/item/alch/sinew = 1, /obj/item/natural/hide = 1, /obj/item/natural/cloth = 4) + result = /obj/item/clothing/head/roguetown/helmet/ceramic/medium + category = CAT_NONE + +/datum/crafting_recipe/mediumarmor //2-tiers, medium armor. The materials can be adquired naturally by butchering. + name = "Medium Tribal Armor" + time = 4 SECONDS + reqs = list(/obj/item/alch/bone = 3, /obj/item/alch/sinew = 2, /obj/item/natural/hide = 2, /obj/item/natural/cloth = 4) + result = /obj/item/clothing/suit/roguetown/armor/ceramic + category = CAT_NONE + +/datum/crafting_recipe/lighthelmet //1-tiers, light armor. The materials can be adquired naturally by butchering. + name = "Light Tribal Helmet" + time = 4 SECONDS + reqs = list(/obj/item/alch/bone = 1, /obj/item/natural/cloth = 4) + result = /obj/item/clothing/head/roguetown/helmet/ceramic + category = CAT_NONE + +/datum/crafting_recipe/lightarmor //1-tier, light armor. The materials can be adquired naturally by butchering. + name = "Light Tribal Armor" + time = 4 SECONDS + reqs = list(/obj/item/alch/bone = 2, /obj/item/natural/cloth = 4) + result = /obj/item/clothing/suit/roguetown/armor/ceramic/light + category = CAT_NONE + +/datum/crafting_recipe/obsidian_club + name = "Obsidian Club" + time = 4 SECONDS + reqs = list(/obj/item/grown/log/tree/lumber = 1, /obj/item/natural/stone = 4, /obj/item/ash = 1) + result = /obj/item/rogueweapon/mace/ararebo/obsidian + category = CAT_NONE + +/datum/crafting_recipe/obsidian_spear + name = "Obsidian Spear" + time = 4 SECONDS + reqs = list(/obj/item/grown/log/tree/lumber = 1, /obj/item/natural/cloth = 1, /obj/item/natural/stone = 2, /obj/item/ash = 1) + result = /obj/item/rogueweapon/polearm/spear/stone/obsidian + category = CAT_NONE diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/elf/elfs.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/elf/elfs.dm index 7da5b4b07ae..1f366e9a3da 100644 --- a/code/modules/mob/living/carbon/human/species_types/roguetown/elf/elfs.dm +++ b/code/modules/mob/living/carbon/human/species_types/roguetown/elf/elfs.dm @@ -91,7 +91,9 @@ "Coastal Elf" = SKIN_COLOR_COASTAL_ELF, "Wood Elf" = SKIN_COLOR_WOOD_ELF, "Sea Elf" = SKIN_COLOR_SEA_ELF, - "Sand Elf" = SKIN_COLOR_SAND_ELF, + "Jungle Elf" = SKIN_COLOR_JUNGLE_ELF, + "Savannah Elf" = SKIN_COLOR_SAVANNAH_ELF, + "Sand Elf" = SKIN_COLOR_SAND_ELF )) /datum/species/elf/snow/get_hairc_list() 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 00000000000..ce75a2e6c2b --- /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/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) //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 d9b1abacbf3..1dc4f4059a4 100644 --- a/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm +++ b/code/modules/mob/living/carbon/human/voicepacks/female/elf.dm @@ -33,6 +33,8 @@ used = list('sound/vo/female/elf/painscream (1).ogg','sound/vo/female/elf/painscream (2).ogg') if("scream") used = list('sound/vo/female/elf/scream (1).ogg','sound/vo/female/elf/scream (2).ogg','sound/vo/female/elf/scream (3).ogg','sound/vo/female/elf/scream (4).ogg') + if("croak") //undine only. + used = list('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall2.ogg','sound/vo/general/undinecall3.ogg','sound/vo/general/undinecall4.ogg','sound/vo/general/undinecall5.ogg','sound/vo/general/undinecall6.ogg') if(!used) //we haven't found a racial specific sound so use generic used = ..(soundin) diff --git a/code/modules/mob/living/carbon/human/voicepacks/male/abyssariad.dm b/code/modules/mob/living/carbon/human/voicepacks/male/abyssariad.dm new file mode 100644 index 00000000000..983a4b0532a --- /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 e740adf3619..d2ba6292fa5 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 58703e5d636..c3682605555 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -1507,3 +1507,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/croak + key = "croak" + message = "croaks." + emote_type = EMOTE_AUDIBLE + only_forced_audio = TRUE + +/datum/emote/living/birdcall + key = "birdcall" + message = "performs a enthusiastic Skylancer call." + emote_type = EMOTE_AUDIBLE + only_forced_audio = TRUE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 892db8b9512..b6ac6dd6ddb 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1076,18 +1076,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/knife/kaizoku || /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) @@ -1486,6 +1521,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!", \ @@ -1887,7 +1927,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 96d778487cf..b8dd875dae6 100644 --- a/code/modules/mob/living/roguetownprocs.dm +++ b/code/modules/mob/living/roguetownprocs.dm @@ -161,6 +161,10 @@ offhand_defense += (offhand.wdefense * WEAPON_DEFENSE_WEIGHT) if(istype(offhand, /obj/item/rogueweapon/shield)) force_shield = TRUE + if(istype(offhand, /obj/item/rogueweapon/knife/kaizoku/sai) && istype(mainhand, /obj/item/rogueweapon/knife/kaizoku/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 00000000000..a425643aec5 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/roguetown/fogfrog.dm @@ -0,0 +1,138 @@ +/obj/item/reagent_containers/food/snacks/fogdart + name = "fogdart frog" + desc = "the Abyssariad tree frog capable of living in a variety of habitats on Fog Islands, but is more well know for their sleep-inducing glands. It has enough for five projectiles." + icon_state = "fogfrog" + icon = 'icons/roguetown/kaizoku/mobs/fogfrog.dmi' + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/fogblight = 25) + verb_say = "croaks" + verb_yell = "croaks" + foodtype = RAW + obj_flags = CAN_BE_HIT + var/dead = FALSE + eat_effect = /datum/status_effect/debuff/uncookedfood + fried_type = /obj/item/reagent_containers/food/snacks/rogue/friedfrog + max_integrity = 10 + sellprice = 0 + rotprocess = null + +/obj/item/reagent_containers/food/snacks/fogdart/onbite(mob/living/carbon/human/user) + if(loc == user) + if(user.mind && user.mind.has_antag_datum(/datum/antagonist/vampirelord)) + if(dead) + to_chat(user, "It's dead.") + return + var/datum/antagonist/vampirelord/VD = user.mind.has_antag_datum(/datum/antagonist/vampirelord) + if(do_after(user, 30, target = src)) + user.visible_message("[user] drinks from [src]!",\ + "I drink from [src]!") + playsound(user.loc, 'sound/misc/drink_blood.ogg', 100, FALSE, -4) + VD.handle_vitae(50) + dead = TRUE + playsound(get_turf(user), 'sound/vo/mobs/rat/rat_death.ogg', 100, FALSE, -1) + icon_state = "srat1" + rotprocess = SHELFLIFE_SHORT + var/mob/living/carbon/V = user + V.add_stress(/datum/stressevent/drankrat) + return + return ..() + +/obj/item/reagent_containers/food/snacks/rogue/friedfrog + name = "fried frog" + desc = "are you sure you are going to eat this?" + icon = 'icons/roguetown/items/food.dmi' + icon_state = "fogfrog_cooked" + bitesize = 2 + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/fogblight = 10) //heat denaturalized the poison, so it is less harmful. Still bad. + tastes = list("stupid decisions" = 1) + w_class = WEIGHT_CLASS_TINY + eat_effect = null + rotprocess = SHELFLIFE_SHORT + sellprice = 0 + +/obj/item/reagent_containers/food/snacks/fogdart/burning(input as num) + if(!dead) + if(burning >= burntime) + dead = TRUE + playsound(src, 'sound/vo/mobs/rat/rat_death.ogg', 100, FALSE, -1) + icon_state = "fogfrog_fried" + rotprocess = SHELFLIFE_SHORT + . = ..() + +/obj/item/reagent_containers/food/snacks/fogdart/Crossed(mob/living/L) + . = ..() + if(L) + if(!dead) + if(isturf(loc)) + dir = pick(GLOB.cardinals) + step(src, dir) +// playsound(src, pick('sound/vo/mobs/rat/rat_life.ogg','sound/vo/mobs/rat/rat_life2.ogg','sound/vo/mobs/rat/rat_life3.ogg'), 100, TRUE, -1) + +/obj/item/reagent_containers/food/snacks/fogdart/dead + icon_state = "fogfrog_dead" + dead = TRUE + rotprocess = SHELFLIFE_SHORT + +/obj/item/reagent_containers/food/snacks/fogdart/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + if(dead) + icon_state = "fogfrog_dead" + rotprocess = SHELFLIFE_SHORT + +/obj/item/reagent_containers/food/snacks/fogdart/attack_hand(mob/user) + if(isliving(user)) + var/mob/living/L = user + if(!(L.mobility_flags & MOBILITY_PICKUP)) + return + user.changeNext_move(CLICK_CD_MELEE) + if(dead) + ..() + else + if(!isturf(loc)) + if(isliving(user)) + var/mob/living/L = user + if(prob(L.STASPD * 1.5)) + ..() + else + dir = pick(GLOB.cardinals) + step(src, dir) + to_chat(user, "I managed to grab it, but it slides away!") + playsound(src, pick('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall1.ogg','sound/vo/general/undinecall2.ogg'), 100, TRUE, -1) + return + ..() + +/obj/item/reagent_containers/food/snacks/fogdart/process() + ..() + if(dead) + return + if(!isturf(loc)) //no floating out of bags + return + if(prob(5)) + playsound(src, pick('sound/vo/general/undinecall3.ogg','sound/vo/general/undinecall4.ogg','sound/vo/general/undinecall5.ogg'), 100, TRUE, -1) + if(prob(75) && !dead) + dir = pick(GLOB.cardinals) + step(src, dir) + +/obj/item/reagent_containers/food/snacks/fogdart/obj_destruction(damage_flag) + //..() + if(!dead) + new /obj/item/reagent_containers/food/snacks/fogdart/dead(src) + playsound(src, 'sound/vo/general/undinecall6.ogg', 100, FALSE, -1) + qdel(src) + return 1 + . = ..() + +/obj/item/reagent_containers/food/snacks/fogdart/attackby(obj/item/I, mob/user, params) + if(!dead) + if(isliving(user)) + var/mob/living/L = user + if(prob(L.STASPD * 2)) + ..() + else + if(isturf(loc)) + dir = pick(GLOB.cardinals) + step(src, dir) + to_chat(user, "The vermin dodges my attack.") + playsound(src, pick('sound/vo/general/undinecall.ogg','sound/vo/general/undinecall1.ogg','sound/vo/general/undinecall2.ogg'), 100, TRUE, -1) + return + ..() diff --git a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm index ee880766899..ac41bbaae2c 100644 --- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm +++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm @@ -2,6 +2,7 @@ /mob/living/simple_animal/hostile/retaliate/rogue/chicken name = "\improper chicken" desc = "A fat and mostly flightless bird. They produce eggs, or 'cackleberries'." + icon = 'icons/roguetown/mob/monster/chicken.dmi' icon_state = "chicken_brown" icon_living = "chicken_brown" icon_dead = "chicken_brown_dead" 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 00000000000..25d6e4a4874 --- /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 41f7503e585..b70493ff387 100644 --- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm +++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm @@ -5,6 +5,7 @@ #define SPIDER_HEALTH 120 #define VOLF_HEALTH 110 #define SHADE_HEALTH 75 +#define HORSE_UNGENDERED_HEALTH 200 #define ROUS_HEALTH 35 #define FEMALE_MOOBEAST_HEALTH 100 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index bdc24ed4267..305ac949caf 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -497,6 +497,8 @@ GLOBAL_VAR_INIT(mobids, 1) var/D = dir if((spintime < 1)||(speed < 1)||!spintime||!speed) return + + flags_1 |= IS_SPINNING_1 while(spintime >= speed) sleep(speed) switch(D) @@ -510,6 +512,7 @@ GLOBAL_VAR_INIT(mobids, 1) D = NORTH setDir(D) spintime -= speed + flags_1 &= ~IS_SPINNING_1 ///Update the pulling hud icon /mob/proc/update_pull_hud_icon() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 3d078eb3d16..509568bbcaf 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -523,8 +523,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 5e1365e6407..04b2a065a58 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/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index d6fd85887fa..1c90f0c873f 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -27,10 +27,6 @@ if(isnum(vol) && vol > 0) volume = vol create_reagents(volume, reagent_flags) - if(spawned_disease) - var/datum/disease/F = new spawned_disease() - var/list/data = list("viruses"= list(F)) - reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() @@ -52,6 +48,7 @@ /obj/item/reagent_containers/proc/add_initial_reagents() if(list_reagents) reagents.add_reagent_list(list_reagents) + update_icon() /obj/item/reagent_containers/attack(mob/M, mob/user, def_zone) return ..() @@ -135,7 +132,7 @@ reagents.expose_temperature(1000) ..() -/obj/item/reagent_containers/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/reagent_containers/temperature_expose(exposed_temperature, exposed_volume) reagents.expose_temperature(exposed_temperature) /obj/item/reagent_containers/on_reagent_change(changetype) diff --git a/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm b/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm index 6c113d513e7..58063d85338 100644 --- a/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm +++ b/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm @@ -32,7 +32,7 @@ /obj/item/alch/waterdust name = "water rune dust" - icon_state = "runedust" + icon_state = "water_runedust" possible_potion = "mindcomp" /obj/item/alch/bonemeal @@ -62,18 +62,18 @@ /obj/item/alch/magicdust name = "magicdust" - //icon_state = "magicdust" + icon_state = "magic_runedust" possible_potion = "buffpot" /obj/item/alch/firedust name = "fire rune dust" - icon_state = "runedust" + icon_state = "fire_runedust" possible_potion = "bodycomp" /obj/item/alch/sinew name = "sinew" icon_state = "sinew" - dropshrink = 0.5 + dropshrink = 0.9 dust_result = /obj/item/alch/viscera possible_potion = "strpot" @@ -84,12 +84,12 @@ /obj/item/alch/airdust name = "air rune dust" - icon_state = "runedust" + icon_state = "air_runedust" possible_potion = "stronghealth" /obj/item/alch/swampdust name = "swampweed dust" - icon_state = "tobaccodust" + icon_state = "swampdust" possible_potion = "intpot" /obj/item/alch/tobaccodust @@ -99,7 +99,7 @@ /obj/item/alch/earthdust name = "earth rune dust" - //icon_state = "earthdust" + icon_state = "earth_runedust" possible_potion = "spiritcomp" /obj/item/alch/bone diff --git a/code/modules/roguetown/roguecrafting/items.dm b/code/modules/roguetown/roguecrafting/items.dm index 55fd5436437..da9156cf608 100644 --- a/code/modules/roguetown/roguecrafting/items.dm +++ b/code/modules/roguetown/roguecrafting/items.dm @@ -391,6 +391,7 @@ reqs = list(/obj/item/ammo_casing/caseless/rogue/arrow = 1, /obj/item/reagent_containers/food/snacks/produce/jacksberry/poison = 1) craftdiff = 1 + req_imperial = TRUE /datum/crafting_recipe/roguetown/poisonarrow/alt reqs = list(/obj/item/ammo_casing/caseless/rogue/arrow = 1, @@ -401,6 +402,7 @@ result = /obj/item/ammo_casing/caseless/rogue/arrow/poison/potent reqs = list(/obj/item/ammo_casing/caseless/rogue/arrow = 1, /datum/reagent/strongpoison = 5) + req_imperial = TRUE /datum/crafting_recipe/roguetown/poisonbolt name = "poison bolt" @@ -408,6 +410,7 @@ reqs = list(/obj/item/ammo_casing/caseless/rogue/bolt = 1, /obj/item/reagent_containers/food/snacks/produce/jacksberry/poison = 1) craftdiff = 1 + req_imperial = TRUE /datum/crafting_recipe/roguetown/poisonbolt/alt reqs = list(/obj/item/ammo_casing/caseless/rogue/bolt = 1, @@ -418,6 +421,7 @@ result = /obj/item/ammo_casing/caseless/rogue/bolt/poison/potent reqs = list(/obj/item/ammo_casing/caseless/rogue/bolt = 1, /datum/reagent/strongpoison = 5) + req_imperial = TRUE /*========= ENGINEEERING CRAFTING ==========*/ @@ -500,3 +504,80 @@ name = "master's guide to literature" result = list(/obj/item/literary/master) craftdiff = 6 + +/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 + +/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 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE + +/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 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE + +/datum/crafting_recipe/roguetown/smokebomb + name = "smoke bomb" + result = /obj/item/grenade/smoke_bomb + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/reagent_containers/food/snacks/produce/fyritius = 1, + /obj/item/natural/dirtclod = 1, + /obj/item/paper/scroll) + craftdiff = 2 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE + +/datum/crafting_recipe/roguetown/poisonbomb + name = "poison bomb" + result = /obj/item/grenade/smoke_bomb/poison + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/reagent_containers/food/snacks/produce/fyritius = 1, + /obj/item/natural/dirtclod = 1, + /obj/item/reagent_containers/food/snacks/produce/jacksberry/poison = 1) + craftdiff = 3 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE + +/datum/crafting_recipe/roguetown/zhentianlei + name = "zhentianlei bomb" + result = /obj/item/zhentianlei + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/sanctiflux = 1, + /obj/item/ingot/iron = 1 + ) + craftdiff = 4 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE + +/datum/crafting_recipe/roguetown/sanctiflux + name = "sanctiflux" + result = /obj/item/sanctiflux + reqs = list(/obj/item/natural/cloth = 1, + /obj/item/reagent_containers/food/snacks/produce/fyritius = 2, + //obj/item/natural/gourd = 1 + ) + craftdiff = 2 + skillcraft = /datum/skill/craft/engineering + req_islander = TRUE diff --git a/code/modules/roguetown/roguecrafting/leather.dm b/code/modules/roguetown/roguecrafting/leather.dm index 97aafbca993..2f1089f5c96 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_imperial = TRUE + + +/datum/crafting_recipe/roguetown/leather/pants + name = "leather pants {ip}" + result = list(/obj/item/clothing/under/roguetown/trou/leather) + req_imperial = TRUE /datum/crafting_recipe/roguetown/leather/shoes - name = "leather shoes" + name = "leather shoes {ip}" result = /obj/item/clothing/shoes/roguetown/simpleshoes + req_imperial = TRUE /datum/crafting_recipe/roguetown/leather/boots - name = "leather boots" + name = "leather boots {ip}" result = /obj/item/clothing/shoes/roguetown/boots/leather + req_imperial = TRUE /datum/crafting_recipe/roguetown/leather/sandals - name = "sandals" + name = "sandals {ip}" result = /obj/item/clothing/shoes/roguetown/sandals + req_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/leather/furtobi + name = "leather pants {fl}" + result = list(/obj/item/clothing/under/roguetown/trou/leather/fur) + req_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/leather/cloudhead + name = "cloudhead shoes {fl}" + result = /obj/item/clothing/shoes/roguetown/shortboots/cloudhead + req_islander = TRUE + +/datum/crafting_recipe/roguetown/leather/geta + name = "geta sandals {fl}" + result = /obj/item/clothing/shoes/roguetown/sandals/geta + req_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = TRUE diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index 587d3b1c56c..0600e303e1b 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = TRUE /datum/crafting_recipe/roguetown/sewing/sack name = "sack hood" @@ -117,9 +143,6 @@ /*========= SKILL LEVEL: 1 REQUIRED ==========*/ -/datum/crafting_recipe/roguetown/sewing/stripedtunic - name = "striped tunic" - result = list(/obj/item/clothing/suit/roguetown/armor/gambeson/light/striped) /datum/crafting_recipe/roguetown/sewing/pcoif name = "cloth coif" @@ -129,25 +152,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_imperial = 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_imperial = 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_imperial = TRUE /datum/crafting_recipe/roguetown/sewing/sleepingbag name = "sleepcloth" @@ -174,26 +200,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_imperial = 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_imperial = 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_imperial = TRUE /datum/crafting_recipe/roguetown/sewing/bedsheetpelt name = "leather bedsheet" @@ -223,77 +252,57 @@ /obj/item/natural/fibers = 1) craftdiff = 2 -/datum/crafting_recipe/roguetown/sewing/stockings_white - name = "white stockings" - result = list(/obj/item/clothing/under/roguetown/tights/stockings/white) - reqs = list(/obj/item/natural/cloth = 1, - /obj/item/natural/fibers = 1) - craftdiff = 2 - -/datum/crafting_recipe/roguetown/sewing/stockings_black - name = "black stockings" - result = list(/obj/item/clothing/under/roguetown/tights/stockings/black) - reqs = list(/obj/item/natural/cloth = 1, - /obj/item/natural/fibers = 1) - craftdiff = 2 -/datum/crafting_recipe/roguetown/sewing/stockings_blue - name = "blue stockings" - result = list(/obj/item/clothing/under/roguetown/tights/stockings/blue) - reqs = list(/obj/item/natural/cloth = 1, - /obj/item/natural/fibers = 1) - craftdiff = 2 - -/datum/crafting_recipe/roguetown/sewing/stockings_red - name = "red stockings" - result = list(/obj/item/clothing/under/roguetown/tights/stockings/red) - reqs = list(/obj/item/natural/cloth = 1, - /obj/item/natural/fibers = 1) - craftdiff = 2 - -/datum/crafting_recipe/roguetown/sewing/stockings_green - name = "green stockings" - result = list(/obj/item/clothing/under/roguetown/tights/stockings/green) - reqs = list(/obj/item/natural/cloth = 1, - /obj/item/natural/fibers = 1) - craftdiff = 2 /*========= 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = 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_imperial = TRUE /*========= ROLE LOCKED RECIPES ==========*/ /datum/crafting_recipe/roguetown/sewing/tunic @@ -302,3 +311,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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/sewing/lillys + name = "small lilly {fl}" + result = list(/obj/item/clothing/head/roguetown/lilly) + reqs = list(/obj/item/natural/fibers = 3) + req_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/sewing/jinbaori + name = "jinbaori {fl}" + result = list(/obj/item/clothing/cloak/stabard/haramaki/jinbaori) + reqs = list(/obj/item/natural/cloth = 3, + /obj/item/natural/fibers = 1) + craftdiff = 2 + req_islander = 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_islander = 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_islander = 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_islander = 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_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/sewing/onmyojigoofy + name = "haramaki bellyband {fl}" + result = list(/obj/item/clothing/cloak/stabard/haramaki) + reqs = list(/obj/item/natural/cloth = 4, + /obj/item/natural/fibers = 3) + craftdiff = 3 + req_islander = 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_islander = TRUE + +/datum/crafting_recipe/roguetown/sewing/odoshi + name = "odoshi bodylacing {fl}" + result = list(/obj/item/clothing/cloak/stabard/haramaki/odoshi) + reqs = list(/obj/item/natural/cloth = 5, + /obj/item/natural/fibers = 3) + craftdiff = 4 + req_islander = TRUE diff --git a/code/modules/roguetown/roguecrafting/turfs.dm b/code/modules/roguetown/roguecrafting/turfs.dm index f29a6db51f2..bdf2b92b347 100644 --- a/code/modules/roguetown/roguecrafting/turfs.dm +++ b/code/modules/roguetown/roguecrafting/turfs.dm @@ -240,3 +240,37 @@ if(!istype(T, /turf/open/floor/rogue)) return return ..() + +//Abyssariad Walls. +//Tier 'Plank' Abyssariad wall. Making a rough counterpart later. + +/datum/crafting_recipe/roguetown/turfs/woodwall/abyssal + name = "wagoya joinwall" + result = /turf/closed/wall/mineral/rogue/wood/abyssal + reqs = list(/obj/item/natural/plank = 2) + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/turfs/woodwindow/abyssal + name = "wagoya murderhole" + result = /turf/closed/wall/mineral/rogue/wood/abyssal/window + reqs = list(/obj/item/natural/plank = 2) + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +//Abyssariad Walls. +//Tier 'Stone' Abyssariad wall. Making a Stoneblock counterpart later. + +/datum/crafting_recipe/roguetown/turfs/stonewall/abyssal + name = "ishigaki wall" + result = /turf/closed/wall/mineral/rogue/stone + reqs = list(/obj/item/natural/stone = 2) + skillcraft = /datum/skill/craft/masonry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/turfs/stonewindow/abyssal + name = "ishigaki murderhole" + result = /turf/closed/wall/mineral/rogue/stone/window + reqs = list(/obj/item/natural/stoneblock = 2) + skillcraft = /datum/skill/craft/masonry + craftdiff = 1 diff --git a/code/modules/roguetown/roguecrafting/weaving.dm b/code/modules/roguetown/roguecrafting/weaving.dm index 5df8057240c..5623f6e7f66 100644 --- a/code/modules/roguetown/roguecrafting/weaving.dm +++ b/code/modules/roguetown/roguecrafting/weaving.dm @@ -247,6 +247,29 @@ craftdiff = 4 sellprice = 50 +/datum/crafting_recipe/roguetown/weaving/shrinekeeper + name = "shrinekeeper robes" + result = list(/obj/item/clothing/suit/roguetown/shirt/robe/shrinekeeper) + reqs = list(/obj/item/natural/cloth = 4) + craftdiff = 4 + sellprice = 25 + +/datum/crafting_recipe/roguetown/weaving/shrinekabuto + name = "shrinekeeper kabuto" + result = list(/obj/item/clothing/head/roguetown/padded/shrinekeeper) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/reagent_containers/food/snacks/fish = 1) + craftdiff = 4 + sellprice = 35 + +/datum/crafting_recipe/roguetown/weaving/purificator + name = "purificators fistguard" + result = list(/obj/item/clothing/wrists/roguetown/shrinekeeper) + reqs = list(/obj/item/natural/cloth = 2, + /obj/item/reagent_containers/food/snacks/fish = 1) + craftdiff = 4 + sellprice = 35 + /*========= SKILL LEVEL: 5 REQUIRED ==========*/ /datum/crafting_recipe/roguetown/weaving/lordcloak diff --git a/code/modules/roguetown/roguejobs/alchemist/reagents.dm b/code/modules/roguetown/roguejobs/alchemist/reagents.dm index b1a3ddace69..65f17cdb78a 100644 --- a/code/modules/roguetown/roguejobs/alchemist/reagents.dm +++ b/code/modules/roguetown/roguejobs/alchemist/reagents.dm @@ -308,3 +308,43 @@ If you want to expand on poisons theres tons of fun effects TG chemistry has tha M.adjust_fire_stacks(1) M.IgniteMob() return ..() + +/datum/reagent/fogblight + name = "fogblight" + description = "liquid concentrate from fog island's frogs. Used by shinobis." + taste_description = "" + reagent_state = LIQUID + color = "#1f434d" + metabolization_rate = 0.2 + +/datum/reagent/fogblight/on_mob_life(mob/living/carbon/M) + switch(current_cycle) + if(1 to 10) + M.confused += 2 + M.drowsyness += 2 + if(10 to 50) + M.Sleeping(40, 0) + . = 1 + if(51 to INFINITY) + M.Sleeping(40, 0) + M.adjustToxLoss((current_cycle - 50)*REM, 0) + . = 1 + ..() + +/*--------------\ +| spell reagent | +\--------------*/ + +/datum/reagent/medicine/abyssalpurificator + name = "abyssal purification" + description = "abyssor be with you." + reagent_state = LIQUID + metabolization_rate = 0.5 + color = "#8fb9bc" + +/datum/reagent/medicine/abyssalpurificator/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + for(var/datum/reagent/target_reagent in affected_mob.reagents.reagent_list) + if(istype(target_reagent, /datum/reagent/medicine/abyssalpurificator)) + continue + // Remove 2 units of the reagent per second, scaled by the server's REM and tick rate + affected_mob.reagents.remove_reagent(target_reagent.type, 2 * REM * seconds_per_tick) diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm index dfba5321b27..d1a1cf1de7a 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/armor.dm @@ -361,3 +361,371 @@ 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/splint/kikko + craftdiff = 1 + +//cheaper on iron, but has many sticks. Proper for this armor's context. +/datum/anvil_recipe/armor/rattanarmor + name = "Iron-woven Rattan armor (2) (4s)" + recipe_name = "a Rattan Armor" + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/ingot/iron,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick) + created_item = /obj/item/clothing/suit/roguetown/armor/chainmail/rattan + craftdiff = 1 + +/datum/anvil_recipe/armor/kikkoarmor //cheaper brigadine with hide. + name = "Turtleshell Full Armor (2) (2h)" + recipe_name = "a Kikko Gusoku" + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel, /obj/item/natural/hide, /obj/item/natural/hide) + created_item = /obj/item/clothing/suit/roguetown/armor/medium/surcoat/heartfelt/abyssariad + craftdiff = 3 + +//'feet' +/datum/anvil_recipe/armor/kusaritabi + name = "Chainmail footwear x2" + recipe_name = "a pair of Kusari-Tabi" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/shoes/roguetown/boots/armor/light/kusaritabi + createmultiple = TRUE + createditem_num = 1 + +/datum/anvil_recipe/armor/suneate + name = "Plated shin-guards" + recipe_name = "some Suneate Footwear" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/shoes/roguetown/boots/armor/suneate + craftdiff = 3 + +//'gloves' +/datum/anvil_recipe/armor/kikkotekko + name = "Turtleshell gauntlets x2" + recipe_name = "a pair of Steel Kikko Tekko" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/gloves/roguetown/chain/kikko + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/ikikkotekko + name = "Turtleshell gauntlets x2" + recipe_name = "a pair of Iron Kikko Tekko" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/gloves/roguetown/chain/iron/kikko + createmultiple = TRUE + createditem_num = 1 + craftdiff = 0 + +/datum/anvil_recipe/armor/lamellaetekko + name = "Lamellae gauntlets" + recipe_name = "some Lamellae Tekko" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/gloves/roguetown/plate/lamellaetekko + craftdiff = 3 + +//'hats' +/datum/anvil_recipe/armor/hachigane + name = "Hachigane x2" + recipe_name = "a pair of Hachinage" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/head/roguetown/helmet/skullcap/hachigane + createmultiple = TRUE + createditem_num = 1 + +/datum/anvil_recipe/armor/rattanhelmet + name = "Iron Woven Rattan Helmet x2 (3s)" + recipe_name = "a pair of Rattan Helmets" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/head/roguetown/helmet/skullcap/rattan + additional_items = list(/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick,/obj/item/grown/log/tree/stick) + createmultiple = TRUE + createditem_num = 1 + +/obj/item/clothing/head/roguetown/helmet/visored/abyssalchampion +/datum/anvil_recipe/armor/abyssalchampion + name = "Newfangled Myrmidon Helmet (3)" + recipe_name = "a Abyssal Champion Helmet" + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel) + created_item = (/obj/item/clothing/head/roguetown/helmet/visored/abyssalchampion) + craftdiff = 4 + +/datum/anvil_recipe/armor/helmetbuc + name = "Sohei Heavy Headwear" + recipe_name = "a Armored sohei cowl" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/head/roguetown/helmet/heavy/bucket/soheidemon) + craftdiff = 2 + +/datum/anvil_recipe/armor/zunari + name = "Zamurai's helmet (2)" + recipe_name = "a Zunari's Helmet" + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel) + created_item = (/obj/item/clothing/head/roguetown/helmet/visored/zunari) + craftdiff = 3 + +/datum/anvil_recipe/armor/zijinguan + name = "Plumed Footsoldier helmet x2" + recipe_name = "a pair of Zijinguan helmet" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/head/roguetown/helmet/zijinguan + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/jingasa + name = "Conical Ashigaru helmet x2" + recipe_name = "a pair of Jingasas" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/head/roguetown/helmet/jingasa + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/toseikabuto + name = "Tosei-kabuto" + recipe_name = "a Tosei Kabuto" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/head/roguetown/helmet/sallet/tosei_kabuto + craftdiff = 2 + +/datum/anvil_recipe/armor/toseikabutov + name = "Visored tosei-kabuto (2)" + recipe_name = "a Visored Tosei Kabuto" + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel) + created_item = (/obj/item/clothing/head/roguetown/helmet/visored/sallet/tosei_kabuto) + craftdiff = 3 + +//'mask' +/datum/anvil_recipe/armor/imenpo + name = "Iron faceguard" + recipe_name = "a Iron Menpo" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo + craftdiff = 0 + +/datum/anvil_recipe/armor/himenpo + name = "Iron half-faceguard x2" + recipe_name = "a pair of Compact Menpo" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo/half + createmultiple = TRUE + createditem_num = 1 + craftdiff = 0 + +/datum/anvil_recipe/armor/smenpo + name = "Steel faceguard" + recipe_name = "a Steel Menpo" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/steel/half) + craftdiff = 2 + +/datum/anvil_recipe/armor/hsmenpo + name = "Steel half-faceguard x2" + recipe_name = "a Face Mask" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/steel) + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/itribalfish + name = "Iron fishpeople mask x2" + recipe_name = "a pair of iron Merkkin masks" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/mask/rogue/kaizoku/menpo/facemask + createmultiple = TRUE + createditem_num = 1 + craftdiff = 0 + +/datum/anvil_recipe/armor/stribalfish + name = "Steel fishpeople mask" + recipe_name = "a Steel Merkkin Mask" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/steel) + craftdiff = 2 + +/datum/anvil_recipe/armor/ctengu + name = "Birdpeople champion mask" + recipe_name = "a Skylancer Mask" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/tengu) + craftdiff = 2 + +/datum/anvil_recipe/armor/ckitsune + name = "Foxpeople champion mask" + recipe_name = "a Changeling Mask" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/kaizoku/menpo/facemask/colourable/kitsune) + craftdiff = 2 + +/datum/anvil_recipe/armor/coni + name = "Ogrepeople champion mask" + recipe_name = "a ogrun Mask" + req_bar = /obj/item/ingot/steel + created_item = (/obj/item/clothing/mask/rogue/facemask/steel) + craftdiff = 2 + +//'neck' +/datum/anvil_recipe/armor/shood + name = "Karuta hood x2" + recipe_name = "a pair of Karuta Zukin" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/neck/roguetown/chaincoif/karuta_zukin + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/ihood + name = "Chainmail hood x2" + recipe_name = "a pair of Kusari Zukin" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/neck/roguetown/chaincoif/iron/kusari_zukin + createmultiple = TRUE + createditem_num = 1 + craftdiff = 0 + +//'pants' +/datum/anvil_recipe/armor/ihaidate + name = "Foldable Thighguards x2" + recipe_name = "a pair of Haidate Tatami" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/clothing/under/roguetown/chainlegs/iron/haidate_tatami + createmultiple = TRUE + createditem_num = 1 + craftdiff = 0 + +/datum/anvil_recipe/armor/shaidate + name = "Plate Thighguards x2" + recipe_name = "a pair of Chain Chausses" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/under/roguetown/chainlegs/sendan + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/armor/superhaidate + name = "Plated Trousers x2" + recipe_name = "a couple of Yoroi-Hakama" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/under/roguetown/platelegs/yoroihakama + createmultiple = TRUE + createditem_num = 1 + craftdiff = 3 + +//'wrists' +/datum/anvil_recipe/armor/kote //Protects more limbs, so it is costier. + name = "Armored Sleeve" + recipe_name = "a couple of Kote" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/wrists/roguetown/bracers/kote + craftdiff = 4 + +/datum/anvil_recipe/armor/weeper + name = "Weeper Bracers x2" + recipe_name = "a couple of Weeping Bracers" + req_bar = /obj/item/ingot/steel + created_item = /obj/item/clothing/wrists/roguetown/bracers/mountainstar + createmultiple = TRUE + createditem_num = 1 + craftdiff = 3 diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm index 112d6aa6968..993d8802687 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/weapons.dm @@ -547,3 +547,298 @@ req_bar = /obj/item/ingot/steel created_item = /obj/item/rogueweapon/sword/scimitar/falchion craftdiff = 2 + +//Kaizoku Smithing content. I humbly ask for help; A way in which only people with the trait "Kaizoku", being the ones able to make Kaizoku weapons and armor. In another hand, +//they cannot make most (exceptions; the objects that have no abyssariad alternative) armors and weapons. + +/datum/anvil_recipe/weapons/sword_steel + name = "Uchigatana zatana" + recipe_name = "a Uchigatana" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/sword/uchigatana + craftdiff = 2 + +/datum/anvil_recipe/weapons/odachi + name = "Odachi zatana (3)" + recipe_name = "a Odachi" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel, /obj/item/ingot/steel) + created_item = /obj/item/rogueweapon/sword/long/greatsword/odachi + craftdiff = 4 + +/datum/anvil_recipe/weapons/tachi + name = "Tachi zatana (2)" + recipe_name = "a Tachi" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel) + created_item = /obj/item/rogueweapon/sword/long/tachi + craftdiff = 3 + +/datum/anvil_recipe/weapons/jiansword + name = "Jian sword" + recipe_name = "a Jian sword" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/sword/iron/jian + +/datum/anvil_recipe/weapons/daosword + name = "Dao sword" + recipe_name = "a Dao Sword" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/sword/scimitar/messer/dao + +/datum/anvil_recipe/weapons/yuntoudao + name = "Yuntoudao" + recipe_name = "a willow-shaped sword" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/sword/scimitar/falchion/yuntoudao + craftdiff = 2 + +/datum/anvil_recipe/weapons/shortjian + name = "Short Jian" + recipe_name = "a Short Jian" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/sword/short/jian + craftdiff = 1 + +/datum/anvil_recipe/weapons/wakizashi + name = "Wakisashi Zatana" + recipe_name = "a Wakizashi" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/sword/short/wakizashi + craftdiff = 1 + +/datum/anvil_recipe/weapons/piandao + name = "Piandao" + recipe_name = "a Piandao" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/sword/sabre/piandao + craftdiff = 2 + +/datum/anvil_recipe/weapons/decpiandao + name = "Decorated piandao (+g)" + recipe_name = "a Decorated Piandao" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/gold) + created_item = /obj/item/rogueweapon/sword/sabre/piandao/dec + craftdiff = 3 + +/datum/anvil_recipe/weapons/kanabo + name = "Iron Kanabo Warclub (+w)" + recipe_name = "a Iron kanabo" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/small) + created_item = /obj/item/rogueweapon/mace/goden/kanabo + craftdiff = 2 + +/datum/anvil_recipe/weapons/tetsubo + name = "Steel Tetsubo Warclub (+w)" + recipe_name = "a Steel Tetsubo" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/grown/log/tree/small) + created_item = /obj/item/rogueweapon/mace/goden/steel/tetsubo + craftdiff = 3 + +/datum/anvil_recipe/weapons/iararebo + name = "Iron ararebo club (+s)" + recipe_name = "a Iron Ararebo Club" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/stick) + created_item = /obj/item/rogueweapon/mace/ararebo + +/datum/anvil_recipe/weapons/sararebo + name = "Steel Ararebo club (2)" + recipe_name = "a Steel Ararebo " + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/ingot/steel) + created_item = /obj/item/rogueweapon/mace/steel/ararebo + craftdiff = 2 + +/datum/anvil_recipe/weapons/kusarifundo + name = "Kusarifundo (+c) (+s)" + recipe_name = "a Kusarifundo" + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/rope/chain, /obj/item/grown/log/tree/stick) + created_item = /obj/item/rogueweapon/flail/sflail/kusarifundo + craftdiff = 2 + +/datum/anvil_recipe/weapons/kunai + name = "Kunai" + recipe_name = "a Kunai" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/knife/kaizoku/kunai + craftdiff = 1 + +/datum/anvil_recipe/weapons/tanto + name = "Tanto smallsword x2" + recipe_name = "a couple Tantos" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/knife/kaizoku/tanto + createmultiple = TRUE + createditem_num = 1 + craftdiff = 2 + +/datum/anvil_recipe/weapons/kaiken + name = "Kaiken knife x2" + recipe_name = "a couple Daggers" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/knife/kaizoku/kaiken + createmultiple = TRUE + createditem_num = 1 + craftdiff = 3 + +/datum/anvil_recipe/weapons/sai //not made of iron. Still Less damage tho. + name = "Sai x2" + recipe_name = "a couple of Sai" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + created_item = /obj/item/rogueweapon/knife/kaizoku/sai + createmultiple = TRUE + createditem_num = 1 + craftdiff = 3 + +/datum/anvil_recipe/weapons/yari + name = "yari x2 (+w)" + recipe_name = "a couple Spears" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/small) + created_item = /obj/item/rogueweapon/polearm/spear/yari + createmultiple = TRUE + createditem_num = 1 + +/datum/anvil_recipe/weapons/katakama + name = "Katakama Yari x2 (+w) (+i)" + recipe_name = "a couple Spears" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/small, /obj/item/ingot/iron) + created_item = /obj/item/rogueweapon/polearm/spear/yari/katakama + +/datum/anvil_recipe/weapons/jumonji + name = "Jumonji Yari (+w)" + recipe_name = "a Jumonji Yari" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/steel + additional_items = list(/obj/item/grown/log/tree/small) + created_item = /obj/item/rogueweapon/polearm/spear/billhook/jumonji + craftdiff = 3 + +/datum/anvil_recipe/weapons/naginata + name = "Traditional Naginata (2) (+w)" + recipe_name = "a Naginata" + appro_skill = /datum/skill/craft/weaponsmithing + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/ingot/iron,/obj/item/grown/log/tree/small) + created_item = /obj/item/rogueweapon/polearm/halberd/bardiche/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/bardiche/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 1c4457b56a5..cdba3c78c29 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 00000000000..c48c2f9cb3a --- /dev/null +++ b/code/modules/spells/roguetown/acolyte/abyssor.dm @@ -0,0 +1,358 @@ +/obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal //for now just an abyssal version of the same spell, just with a different sprite. Placeholder. + name = "Lesser Miracle" + overlay_state = "purification" + overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + action_icon_state = "spell0" + action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + +/obj/effect/proc_holder/spell/invoked/icebind + name = "Barotrauma Bind" //People faithful to Abyssor will instantly be released from this spell. + overlay_state = "waternet" + overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + chargedrain = 5 + releasedrain = 30 + charge_max = 50 SECONDS + range = 8 + warnie = "aimwarn" + movement_interrupt = FALSE + sound = 'sound/magic/magic_nulled.ogg' + action_icon_state = "spell0" + action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + invocation_type = "none" + associated_skill = /datum/skill/magic/holy + antimagic_allowed = TRUE + charge_max = 60 SECONDS + req_items = list(/obj/item/clothing/neck/roguetown/psycross/silver/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]) + return FALSE + var/target = targets[1] + + if(isliving(target)) + var/mob/living/target_mob = target + if(target_mob.buckled || target_mob.has_buckled_mobs()) + to_chat(user, span_warning("Your target body is not freely loose to be encased in another dimension.")) + return TRUE + else + target_mob.apply_status_effect(/datum/status_effect/abyssaltomb) + to_chat(target_mob, span_warning("[target_mob] is encased within an abyssal pocket dimension leading to the seabed!")) + 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 + if(QDELETED(tomb)) + tomb = null + return ..() + else + tomb = null + qdel(tomb) + 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)) + playsound(src, pick('sound/music/kaizoku/spells/abyssalpressure.ogg','sound/music/kaizoku/spells/abyssalpressure1.ogg','sound/music/kaizoku/spells/abyssalpressure2.ogg'), 100, FALSE) + 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/psycross/silver/abyssanctum) + sound = 'sound/magic/magic_nulled.ogg' + invocation_type = "none" + //invocation = "delivers sharp jabs and a sudden clap, unleashing a freezing shockwave that forms and launches a jagged ice spike." + + associated_skill = /datum/skill/magic/holy + antimagic_allowed = TRUE + charge_max = 10 SECONDS + devotion_cost = -45 + +/obj/projectile/magic/purify + name = "purification" + icon_state = "icespikeproj" + icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + paralyze = 50 + damage = 0 + range = 7 + hitsound = 'sound/blank.ogg' + nondirectional_sprite = TRUE + impact_effect_type = /obj/effect/temp_visual/icespikeproj_projectile_impact //See if we can set it to be a projectile if CMODE, and a invocation if !CMODE + +/obj/effect/temp_visual/icespikeproj_projectile_impact + name = "purifying spike" + icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + icon_state = "icespikeproj_break" + layer = ABOVE_ALL_MOB_LAYER + duration = 3 + +/obj/projectile/magic/purify/on_hit(atom/target, mob/living/user, blocked = FALSE) + ..() + var/mob/living/carbon/C = target + if(iscarbon(target)) + if(C.mob_biotypes & MOB_SPIRIT) // Abyssor's purifying filter absolutely destroys demonic essence. + C.visible_message("An otherworldly divine freeze encircles [target], filtering out their very existence!", "My breath shallows- my ears rings, my senses overwhelmed with the crushing grip! I'M GOING TO IMPLODE FROM INSIDE OUT! PLEASE MERCY!") + C.adjustFireLoss(rand(50, 100)) //Random damage between 50 and 100. Very brutal, and proper for killing demons. Cold damage will come together with it after. + C.Knockdown(40) //Purification successful. You will be paralyzed. + C.Paralyze(1) + C.apply_status_effect(/datum/status_effect/debuff/freezing/severe) + C.flash_fullscreen("whiteflash3") + return + if((C.faction = "orcs") || (C.dna.species?.id == "tiefling") ||(HAS_TRAIT(C, TRAIT_NASTY_EATER ))) // Had to give them these ones because there's a bunch of different goblin IDs. So Trait will have to stay until I care about giving each a respective var. + C.visible_message("[target]'s body is distorced 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 being crushed!", "I feel a suffocating pressure building on my body!") + C.adjustFireLoss(rand(20, 35)) //Normal creatures will still suffer the effects of Barotrauma, yet less in terms of damage. Will still freeze. + C.apply_status_effect(/datum/status_effect/debuff/freezing) + C.flash_fullscreen("whiteflash3") + return + +////////NOT FINISHED YET////////// + +/* +/obj/effect/proc_holder/spell/invoked/elemental //chooses attackable people by clicking on them. + name = "Ice elemental" + overlay_state = "waterspirit" + overlay_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + releasedrain = 30 + chargedrain = 4 + chargetime = 5 + range = 8 + warnie = "aimwarn" + movement_interrupt = FALSE + sound = 'sound/music/kaizoku/spells/martialart_abyssanctum.ogg' + action_icon_state = "spell0" + action_icon = 'icons/roguetown/kaizoku/misc/spells.dmi' + invocation_type = "emote" + invocation = "punches and spins, unleashing a surge of freezing energy." + associated_skill = /datum/skill/magic/holy + antimagic_allowed = FALSE + charge_max = 10 SECONDS + + + +/obj/effect/proc_holder/spell/invoked/icebind/cast(list/targets, mob/living/user) + if(!targets.len || !targets[1]) + to_chat(user, span_warning("Your spell fails to take hold, victimless.")) + return FALSE + + var/target = targets[1] + + if(isliving(target)) + var/mob/living/target_mob = target + if(!target_mob.has_status_effect(/datum/status_effect/frozentomb)) + target_mob.apply_status_effect(/datum/status_effect/frozentomb) + + +/obj/effect/proc_holder/spell/invoked/icebind/cast(list/targets, mob/living/user, mob/living/carbon/human/H) + if(!targets.len || !targets[1]) + to_chat(user, span_warning("Your spell fails to take hold, victimless.")) + return FALSE + + var/mob/living/target = targets[1] + if(target.stat < DEAD) + to_chat(user, "Nothing happens.") + return FALSE + if(target != user) + target.faction = "enemy" // You're targeted to DIE + return TRUE + + if(isturf(target)) + var/turf/open/T = target + if(!isclosedturf(T)) + new /mob/living/simple_animal/retaliate/purifier(target) + to_chat(user, "You create an elemental to do your bidding.") + return FALSE + else + to_chat(user, "You cannot mark someone for purification or create an elemental here.") + return FALSE + +/mob/living/simple_animal/retaliate/purifier + name = "Abyssal Elemental" + desc = "A creature which the presence damages " + health = 300 + maxHealth = 300 + icon = 'icons/roguetown/kaizoku/misc/waterspirit.dmi' + icon_state = "waterspirit" + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID + movement_type = GROUND + speak_emote = list("roars") + wander = TRUE + del_on_death = TRUE + deathmessage = "falls to the ground, decaying into glowing particles." + deathsound = "bodyfall" + footstep_type = FOOTSTEP_MOB_HEAVY + turns_per_move = 3 + STACON = 15 + STASTR = 11 + STASPD = 12 + var/list/currently_affected = list() + var/ticks_to_next_process = 3 + +/mob/living/simple_animal/retaliate/purifier/process() + if(stat) + return + var/list/affected = hearers(7, src) + var/to_fire = 5 + for(var/mob/living/A in affected) + if(istype(A, /mob/living/carbon/human/species)) + if(A.stat != DEAD) + A.adjustBruteLoss(rand(2,10)) + if(!--to_fire) + return + else if(istype(A, /mob/living/simple_animal/hostile)) + if(A.stat != DEAD) + A.adjustBruteLoss(rand(2,10)) + if(!--to_fire) + return + +*/ +//experimental diff --git a/code/modules/spells/roguetown/acolyte/general.dm b/code/modules/spells/roguetown/acolyte/general.dm index 5336585a254..d1cb294c3e0 100644 --- a/code/modules/spells/roguetown/acolyte/general.dm +++ b/code/modules/spells/roguetown/acolyte/general.dm @@ -53,6 +53,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 @@ -305,3 +306,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 48101e0e24e..b92d922747c 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -412,3 +412,8 @@ eye_icon_state = "snail_eyes" icon_state = "snail_eyeballs" +/obj/item/organ/eyes/rogue/tengu + name = "tengu eyes" + desc = "" + eye_icon_state = "eyes_closed" + icon_state = "eyes_closed" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 6b4284a6540..88a04e511a7 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -1,3 +1,4 @@ + /obj/item/organ/tongue name = "tongue" desc = "" @@ -18,7 +19,8 @@ /datum/language/celestial, /datum/language/hellspeak, /datum/language/beast, - /datum/language/orcish + /datum/language/orcish, + /datum/language/abyssal )) /obj/item/organ/tongue/Initialize(mapload) @@ -237,3 +239,15 @@ else new_message += message[i] speech_args[SPEECH_MESSAGE] = new_message + +/obj/item/organ/tongue/kitsune + name = "changeling tongue" + desc = "The tongue that inwardly bends the moldable changeling skull into a glasgow smile, or other shapes depending on their branch." + icon = 'icons/obj/surgery.dmi' + icon_state = "eldritch" + slot = ORGAN_SLOT_TONGUE + var/tongue_type = "eldritch" + var/can_wag = TRUE + var/wagging = FALSE + zone = BODY_ZONE_PRECISE_MOUTH + slot = ORGAN_SLOT_TONGUE diff --git a/config/mapsrw.txt b/config/mapsrw.txt index 0f857f6c14e..1d45e904d94 100644 --- a/config/mapsrw.txt +++ b/config/mapsrw.txt @@ -13,9 +13,11 @@ Format: votable (is this map votable) endmap -map rogueworld +map dun_manor default - #voteweight 1.5 votable endmap +map rogueworld + votable +endmap diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index d94474d2335..46d466d9f98 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.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 00000000000..388bc986a87 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 00000000000..477c09b93a5 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 00000000000..a1ab2b15449 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 00000000000..bc5588052c9 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 00000000000..fd3e329018e 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 00000000000..5682f293bbc 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 00000000000..f09c13709a0 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 00000000000..d58cc2ce4af 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 00000000000..c736e03e572 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 00000000000..0ff5cf1ab1a 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 00000000000..ac0b6683521 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 00000000000..27874b84e70 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 00000000000..cf74d73796c 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 00000000000..115802115aa 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 00000000000..524bf993bbf 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 00000000000..9dceeb2f38a 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 00000000000..824a69e4a88 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 00000000000..b4b89a4543e 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 00000000000..f9457a1f682 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 00000000000..5900b19897f 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 00000000000..74a88f5b397 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 00000000000..fd8f4702c2f 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 00000000000..db78a8660d2 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 00000000000..037215b5be8 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 00000000000..630366797b1 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 00000000000..02049e572dc 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 00000000000..9d3cc946e0b 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 00000000000..6c4ba290471 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 00000000000..ba271abfac4 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 00000000000..ff40ca25ab4 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 00000000000..d2f68687a3d 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 00000000000..27562dd6072 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 00000000000..387d9b29afa 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 00000000000..695227349fa 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 00000000000..435e8ed2d66 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 00000000000..4f3dc0f388d 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 00000000000..817e237ae50 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 00000000000..a5c19110b7d 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 00000000000..07ecd0e9c53 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 00000000000..0534d83180a 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 00000000000..3feb7c3ad06 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 00000000000..b21d11030ea 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 00000000000..047925a2bc7 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 00000000000..4f5867e07e7 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 00000000000..9f96b162302 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 00000000000..376517593ce 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 00000000000..8e3d2638040 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 00000000000..0265af91cb7 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 00000000000..b287a7c0192 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 00000000000..e2d43e5f5c5 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 00000000000..2869d920a22 Binary files /dev/null and b/icons/roguetown/kaizoku/items/produce.dmi differ diff --git a/icons/roguetown/kaizoku/mapset/frontierjustice.dmi b/icons/roguetown/kaizoku/mapset/frontierjustice.dmi new file mode 100644 index 00000000000..3ac352a8b00 Binary files /dev/null and b/icons/roguetown/kaizoku/mapset/frontierjustice.dmi differ diff --git a/icons/roguetown/kaizoku/misc/freezesprite.dmi b/icons/roguetown/kaizoku/misc/freezesprite.dmi new file mode 100644 index 00000000000..462e59e8f70 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 00000000000..bf42a5fe553 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 00000000000..449f225d22e 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 00000000000..2b61af6eb59 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 00000000000..967e477fb68 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 00000000000..6dad3450be9 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 00000000000..591d060b3dd 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 00000000000..311671bff93 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 00000000000..9ba79fa40a1 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 00000000000..b3ee3ffc3f6 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 00000000000..6cf54935c5d 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 00000000000..909439822fd 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 00000000000..c217fb1eb54 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 00000000000..93e6e375f04 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 00000000000..cf74d73796c 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 00000000000..cf74d73796c 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 00000000000..cf74d73796c Binary files /dev/null and b/icons/roguetown/kaizoku/mobs/starvation.dmi differ diff --git a/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi b/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi new file mode 100644 index 00000000000..5a1d691864b Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/abyssalgrass.dmi differ diff --git a/icons/roguetown/kaizoku/tileset/fire.dmi b/icons/roguetown/kaizoku/tileset/fire.dmi new file mode 100644 index 00000000000..900573d72c9 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 00000000000..cf74d73796c 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 00000000000..f85a1b82322 Binary files /dev/null and b/icons/roguetown/kaizoku/tileset/tileset.dmi differ diff --git a/icons/roguetown/kaizoku/wallset/abyssalstone.dmi b/icons/roguetown/kaizoku/wallset/abyssalstone.dmi new file mode 100644 index 00000000000..7fd040ba172 Binary files /dev/null and b/icons/roguetown/kaizoku/wallset/abyssalstone.dmi differ diff --git a/icons/roguetown/kaizoku/wallset/eastern_wood.dmi b/icons/roguetown/kaizoku/wallset/eastern_wood.dmi new file mode 100644 index 00000000000..0c062120367 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 00000000000..138dbe66c16 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 00000000000..d6ffdad179d 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 00000000000..d881a767097 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 00000000000..2396747c65c 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 00000000000..e36c1fa8c53 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 00000000000..770da6a7a5f Binary files /dev/null and b/icons/roguetown/kaizoku/weapons/items.dmi differ diff --git a/icons/roguetown/misc/alchemy.dmi b/icons/roguetown/misc/alchemy.dmi index 502534ac724..410061b11c0 100644 Binary files a/icons/roguetown/misc/alchemy.dmi and b/icons/roguetown/misc/alchemy.dmi differ diff --git a/icons/roguetown/mob/detail.dmi b/icons/roguetown/mob/detail.dmi index a0e7154919d..f5076c1d0d7 100644 Binary files a/icons/roguetown/mob/detail.dmi and b/icons/roguetown/mob/detail.dmi differ diff --git a/icons/roguetown/mob/hair.dmi b/icons/roguetown/mob/hair.dmi index dd48e94ebea..b1615418dcc 100644 Binary files a/icons/roguetown/mob/hair.dmi and b/icons/roguetown/mob/hair.dmi differ diff --git a/icons/roguetown/mob/monster/chicken.dmi b/icons/roguetown/mob/monster/chicken.dmi new file mode 100644 index 00000000000..f1addaa1bd1 Binary files /dev/null and b/icons/roguetown/mob/monster/chicken.dmi differ diff --git a/icons/roguetown/weapons/32.dmi b/icons/roguetown/weapons/32.dmi index 29eedb0ca7e..a74376db8fe 100644 Binary files a/icons/roguetown/weapons/32.dmi and b/icons/roguetown/weapons/32.dmi differ diff --git a/interface/fonts/languages/abyssal.ttf b/interface/fonts/languages/abyssal.ttf new file mode 100644 index 00000000000..0b519427fee Binary files /dev/null and b/interface/fonts/languages/abyssal.ttf differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 51563fe38b3..5b50aa6550d 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 eb1e9c45eb0..c06161500a9 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 a52f5fd24b6..8d80b661075 100644 --- a/modular/Neu_Farming/code/plant_def.dm +++ b/modular/Neu_Farming/code/plant_def.dm @@ -216,6 +216,16 @@ can_grow_underground = TRUE */ +/datum/plant_def/rice + name = "weeperstears patch" + icon_state = "rice" + produce_type = /obj/item/reagent_containers/food/snacks/produce/rice + produce_amount_min = 4 + produce_amount_max = 6 + maturation_nutrition = HUNGRINESS_TINY + maturation_time = FAST_GROWING + + #undef FAST_GROWING #undef VERY_FAST_GROWING diff --git a/modular/Neu_Farming/code/produce.dm b/modular/Neu_Farming/code/produce.dm index fe225460e94..40ea6321c35 100644 --- a/modular/Neu_Farming/code/produce.dm +++ b/modular/Neu_Farming/code/produce.dm @@ -457,3 +457,26 @@ grind_results = list(/datum/reagent/toxin/amanitin = 6) */ + +/obj/item/reagent_containers/food/snacks/produce/rice + seed = /obj/item/neuFarm/seed/rice + name = "weeperstears" + desc = "Weeperstears, or 'Rice', is the abyssariad's staple food. It is believed that the plants came from the tears of Weeping God." + icon_state = "rice" + icon = 'icons/roguetown/kaizoku/items/produce.dmi' + gender = PLURAL + filling_color = "#e0baa0" + bitesize_mod = 2 + foodtype = GRAIN + tastes = list("slightly nutty" = 1) + can_distill = TRUE + distill_reagent = /datum/reagent/consumable/ethanol/sake + distill_amt = 24 + grind_results = list(/datum/reagent/floure = 10) //rice flour + dropshrink = 0.9 + mill_result = /obj/item/reagent_containers/powder/flour +/obj/item/reagent_containers/food/snacks/produce/rice/examine(mob/user) + var/farminglvl = user.mind?.get_skill_level(/datum/skill/labor/farming) + . += ..() + if(farminglvl >= 0) + . += "I can easily tell that these are weeperstears grains." diff --git a/modular/Neu_Farming/code/seeds.dm b/modular/Neu_Farming/code/seeds.dm index 6206d305831..17354a35eb4 100644 --- a/modular/Neu_Farming/code/seeds.dm +++ b/modular/Neu_Farming/code/seeds.dm @@ -146,3 +146,8 @@ seed_identity = "red mushroom spores" plant_def_type = /datum/plant_def/amanita */ + + +/obj/item/neuFarm/seed/rice + seed_identity = "weeperstears seeds" + plant_def_type = /datum/plant_def/rice diff --git a/modular/Neu_Farming/code/tools.dm b/modular/Neu_Farming/code/tools.dm index c6911573496..a0087f9a485 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_Food/icons/food.dmi b/modular/Neu_Food/icons/food.dmi index d9d01db2387..267a135961b 100644 Binary files a/modular/Neu_Food/icons/food.dmi and b/modular/Neu_Food/icons/food.dmi differ diff --git a/sound/ambience/kaizoku/Abyssal_tides.ogg b/sound/ambience/kaizoku/Abyssal_tides.ogg new file mode 100644 index 00000000000..9b3f182483a Binary files /dev/null and b/sound/ambience/kaizoku/Abyssal_tides.ogg differ diff --git a/sound/ambience/kaizoku/Abyssanctum.ogg b/sound/ambience/kaizoku/Abyssanctum.ogg new file mode 100644 index 00000000000..3a1cdec58a5 Binary files /dev/null and b/sound/ambience/kaizoku/Abyssanctum.ogg differ diff --git a/sound/ambience/kaizoku/Abyssariad.ogg b/sound/ambience/kaizoku/Abyssariad.ogg new file mode 100644 index 00000000000..20539f04140 Binary files /dev/null and b/sound/ambience/kaizoku/Abyssariad.ogg differ diff --git a/sound/ambience/kaizoku/Bucolic.ogg b/sound/ambience/kaizoku/Bucolic.ogg new file mode 100644 index 00000000000..595ae5f2ab3 Binary files /dev/null and b/sound/ambience/kaizoku/Bucolic.ogg differ diff --git a/sound/ambience/kaizoku/Defenestration.ogg b/sound/ambience/kaizoku/Defenestration.ogg new file mode 100644 index 00000000000..e808d97c1b0 Binary files /dev/null and b/sound/ambience/kaizoku/Defenestration.ogg differ diff --git a/sound/ambience/kaizoku/Diaspora.ogg b/sound/ambience/kaizoku/Diaspora.ogg new file mode 100644 index 00000000000..8f6f543ef17 Binary files /dev/null and b/sound/ambience/kaizoku/Diaspora.ogg differ diff --git a/sound/ambience/kaizoku/Ephemeral.ogg b/sound/ambience/kaizoku/Ephemeral.ogg new file mode 100644 index 00000000000..0eb6e89cb79 Binary files /dev/null and b/sound/ambience/kaizoku/Ephemeral.ogg differ diff --git a/sound/ambience/kaizoku/FogIslands.ogg b/sound/ambience/kaizoku/FogIslands.ogg new file mode 100644 index 00000000000..6731742ef6a Binary files /dev/null and b/sound/ambience/kaizoku/FogIslands.ogg differ diff --git a/sound/ambience/kaizoku/Kaizoku.ogg b/sound/ambience/kaizoku/Kaizoku.ogg new file mode 100644 index 00000000000..6329a4be61d Binary files /dev/null and b/sound/ambience/kaizoku/Kaizoku.ogg differ diff --git a/sound/ambience/kaizoku/Nebula.ogg b/sound/ambience/kaizoku/Nebula.ogg new file mode 100644 index 00000000000..770448304b6 Binary files /dev/null and b/sound/ambience/kaizoku/Nebula.ogg differ diff --git a/sound/ambience/kaizoku/Oceansanct.ogg b/sound/ambience/kaizoku/Oceansanct.ogg new file mode 100644 index 00000000000..6442f350e14 Binary files /dev/null and b/sound/ambience/kaizoku/Oceansanct.ogg differ diff --git a/sound/ambience/kaizoku/Penumbra.ogg b/sound/ambience/kaizoku/Penumbra.ogg new file mode 100644 index 00000000000..74e3b8fdd83 Binary files /dev/null and b/sound/ambience/kaizoku/Penumbra.ogg differ diff --git a/sound/ambience/kaizoku/Petrichor.ogg b/sound/ambience/kaizoku/Petrichor.ogg new file mode 100644 index 00000000000..b3eddc05596 Binary files /dev/null and b/sound/ambience/kaizoku/Petrichor.ogg differ diff --git a/sound/ambience/kaizoku/Petrichor_night.ogg b/sound/ambience/kaizoku/Petrichor_night.ogg new file mode 100644 index 00000000000..da10460df55 Binary files /dev/null and b/sound/ambience/kaizoku/Petrichor_night.ogg differ diff --git a/sound/ambience/kaizoku/Quintessential.ogg b/sound/ambience/kaizoku/Quintessential.ogg new file mode 100644 index 00000000000..4a3e7f03c0a Binary files /dev/null and b/sound/ambience/kaizoku/Quintessential.ogg differ diff --git a/sound/ambience/kaizoku/Resplendent.ogg b/sound/ambience/kaizoku/Resplendent.ogg new file mode 100644 index 00000000000..85630d059d9 Binary files /dev/null and b/sound/ambience/kaizoku/Resplendent.ogg differ diff --git a/sound/ambience/kaizoku/Rogue_in_Town.ogg b/sound/ambience/kaizoku/Rogue_in_Town.ogg new file mode 100644 index 00000000000..6521ba6616b Binary files /dev/null and b/sound/ambience/kaizoku/Rogue_in_Town.ogg differ diff --git a/sound/ambience/kaizoku/Sanctumocean.ogg b/sound/ambience/kaizoku/Sanctumocean.ogg new file mode 100644 index 00000000000..ef01d67c64f Binary files /dev/null and b/sound/ambience/kaizoku/Sanctumocean.ogg differ diff --git a/sound/ambience/kaizoku/Sibilant.ogg b/sound/ambience/kaizoku/Sibilant.ogg new file mode 100644 index 00000000000..153b42bd7d9 Binary files /dev/null and b/sound/ambience/kaizoku/Sibilant.ogg differ diff --git a/sound/ambience/kaizoku/Sibilant_night.ogg b/sound/ambience/kaizoku/Sibilant_night.ogg new file mode 100644 index 00000000000..249de344036 Binary files /dev/null and b/sound/ambience/kaizoku/Sibilant_night.ogg differ diff --git a/sound/ambience/kaizoku/Sussurus.ogg b/sound/ambience/kaizoku/Sussurus.ogg new file mode 100644 index 00000000000..cc36dcd4127 Binary files /dev/null and b/sound/ambience/kaizoku/Sussurus.ogg differ diff --git a/sound/ambience/kaizoku/Syzygy.ogg b/sound/ambience/kaizoku/Syzygy.ogg new file mode 100644 index 00000000000..d83f1cc5a5d Binary files /dev/null and b/sound/ambience/kaizoku/Syzygy.ogg differ diff --git a/sound/ambience/kaizoku/Torment.ogg b/sound/ambience/kaizoku/Torment.ogg new file mode 100644 index 00000000000..87ad99051ca Binary files /dev/null and b/sound/ambience/kaizoku/Torment.ogg differ diff --git a/sound/ambience/kaizoku/Town_in_Rogue.ogg b/sound/ambience/kaizoku/Town_in_Rogue.ogg new file mode 100644 index 00000000000..430c4b6eaa2 Binary files /dev/null and b/sound/ambience/kaizoku/Town_in_Rogue.ogg differ diff --git a/sound/ambience/kaizoku/Zephyr.ogg b/sound/ambience/kaizoku/Zephyr.ogg new file mode 100644 index 00000000000..393bc67fa26 Binary files /dev/null and b/sound/ambience/kaizoku/Zephyr.ogg differ diff --git a/sound/combat/hits/bladed/dragonslayer.ogg b/sound/combat/hits/bladed/dragonslayer.ogg new file mode 100644 index 00000000000..0fe7316bd71 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 00000000000..804afb71205 Binary files /dev/null and b/sound/combat/hits/bladed/dragonslayer2.ogg differ diff --git a/sound/music/credits.txt b/sound/music/credits.txt index 2f8204cf8f7..c12f9aedd4d 100644 --- a/sound/music/credits.txt +++ b/sound/music/credits.txt @@ -30,3 +30,14 @@ churchnight.ogg: Fear & Hunger 2: Termina - Cathedral Whispers combat_bandit3.ogg: Manhunt - White Trash combat_assassin2.ogg: Fear & Hunger 2: Termina - Monologue With The Moon PIG.ogg: Manhunt - Deliverance + + +combat_changeling.ogg: Okami - Demon Lord Nine Tails.ogg +combat_stormwarrior.ogg: Sephiroth - A Map of Eden Before the Storms.ogg +combat_searaider.ogg - Sephiroth - Uthul Khulture.ogg +combat_oldtides.ogg - Sephiroth - wolf tribes.ogg +combat_decapitator.ogg: Shadow warrior 2 - Off With Your Head.ogg +combat_emperor.ogg: shadow warrior 2 - Steel and Carbon.ogg +combat_traditional.ogg: Tenchu Z - Spinning Lantern.ogg +combat_navalretainers.ogg: Total_Luck - Tenchu Z.ogg +combat_kyudo.ogg: Yuyan archers, AVATAR diff --git a/sound/music/kaizoku/Jigokuraku.ogg b/sound/music/kaizoku/Jigokuraku.ogg new file mode 100644 index 00000000000..1d694250b23 Binary files /dev/null and b/sound/music/kaizoku/Jigokuraku.ogg differ diff --git "a/sound/music/kaizoku/areas/Wany\303\205d\303\205 \303\250\302\274\302\252\303\245_\303\251 Aleksis Tristan Shaw.mp3" "b/sound/music/kaizoku/areas/Wany\303\205d\303\205 \303\250\302\274\302\252\303\245_\303\251 Aleksis Tristan Shaw.mp3" new file mode 100644 index 00000000000..3bdeec2f5c8 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 00000000000..bf374e03c04 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/32.dmi b/sound/music/kaizoku/combat/32.dmi new file mode 100644 index 00000000000..9f86a908f77 Binary files /dev/null and b/sound/music/kaizoku/combat/32.dmi differ diff --git a/sound/music/kaizoku/combat/combat_changeling.ogg b/sound/music/kaizoku/combat/combat_changeling.ogg new file mode 100644 index 00000000000..0c4b4f1c711 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 00000000000..743f66baca0 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 00000000000..22bbb918972 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 00000000000..abb06e23a15 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 00000000000..2bf66792d1e 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 00000000000..0a504495e65 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 00000000000..7443314455f 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 00000000000..6b66fb491cc 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 00000000000..6d0a772561b 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 00000000000..0cbe7cfd2be 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 00000000000..82044de7b82 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 00000000000..f532e7b5c40 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 00000000000..22b7ae01ef6 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 00000000000..48bd0eadede 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 00000000000..932bb6dc8fd 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 00000000000..0275d0a9ace 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 00000000000..142d3d757cd Binary files /dev/null and b/sound/music/kaizoku/instrument/shamisen8.ogg differ diff --git a/sound/music/kaizoku/spells/abyssalpressure.ogg b/sound/music/kaizoku/spells/abyssalpressure.ogg new file mode 100644 index 00000000000..cd1c51531cc Binary files /dev/null and b/sound/music/kaizoku/spells/abyssalpressure.ogg differ diff --git a/sound/music/kaizoku/spells/abyssalpressure1.ogg b/sound/music/kaizoku/spells/abyssalpressure1.ogg new file mode 100644 index 00000000000..49c002e0635 Binary files /dev/null and b/sound/music/kaizoku/spells/abyssalpressure1.ogg differ diff --git a/sound/music/kaizoku/spells/abyssalpressure2.ogg b/sound/music/kaizoku/spells/abyssalpressure2.ogg new file mode 100644 index 00000000000..2970363868a Binary files /dev/null and b/sound/music/kaizoku/spells/abyssalpressure2.ogg differ diff --git a/sound/music/kaizoku/spells/firelance.ogg b/sound/music/kaizoku/spells/firelance.ogg new file mode 100644 index 00000000000..766a9784fe4 Binary files /dev/null and b/sound/music/kaizoku/spells/firelance.ogg differ diff --git a/sound/music/kaizoku/spells/firelance_cooking.ogg b/sound/music/kaizoku/spells/firelance_cooking.ogg new file mode 100644 index 00000000000..8f6b28da4bc Binary files /dev/null and b/sound/music/kaizoku/spells/firelance_cooking.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 00000000000..dc9940dc355 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 00000000000..42b82175ce7 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 00000000000..d89546d9c7e 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 00000000000..abe89244067 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 00000000000..3584a81d4c3 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 00000000000..df743b4417a 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 00000000000..f2b8e15c1d7 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 00000000000..a9a22d315e2 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 00000000000..45482f9c40f 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 00000000000..c96558f94a2 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 00000000000..76d100fd122 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 00000000000..b648f89b0b4 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 00000000000..1c63b707ea8 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 00000000000..097547d07c0 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 00000000000..87c363f69f4 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 00000000000..0164342aed2 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 00000000000..10d51e77d21 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 00000000000..637262bb70e 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 00000000000..a97a168ddb3 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 00000000000..f85056cf109 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 00000000000..b549c6f7f1a 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 00000000000..b4e27e4ca40 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 00000000000..12c24c56c64 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 00000000000..2729258bafd 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 00000000000..95d0dc0aa83 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 00000000000..e8762fa2f64 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 00000000000..c44a5abb27d 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 00000000000..8404d3b2a06 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 00000000000..53554e834b9 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 00000000000..a80f1dac157 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 00000000000..369d168fa73 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 00000000000..e03335b7ebf 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 00000000000..f73eea3d635 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 00000000000..152af57a4f2 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 00000000000..9e1e4a7db2c 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 00000000000..a773340ff1d 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 00000000000..9d6abadc51f 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 00000000000..fde7069873f 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 00000000000..6829a95c82b 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 00000000000..654e242b1d3 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 00000000000..045cdeef73e 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 00000000000..4a8861c2151 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 00000000000..73c84e23c52 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 00000000000..4052f9a723b 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 00000000000..089db4bba54 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 00000000000..e3e5c7951c9 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 00000000000..4dd5993992c 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 00000000000..31bc8da2594 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 00000000000..60c0cb479ae 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 00000000000..bbb5c1d652f 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 00000000000..1a718befa7e 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 00000000000..d2aa14df06e 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 00000000000..e0b30a02b77 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 00000000000..821be256c80 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 00000000000..5cc9ff1b206 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 00000000000..a680e4685f8 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 00000000000..239bcef04d0 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 00000000000..f72d41abc49 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 00000000000..dc687441c7c 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 00000000000..11249356838 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 00000000000..112ffe8df0d 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 00000000000..5a48cad2963 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 00000000000..fb9d4c45edf 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 00000000000..9c58b305adc 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 00000000000..8df1282a2bd 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 00000000000..54c1cd8c783 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 00000000000..575e3b0ad09 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 00000000000..dab6ad8f20f 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 00000000000..5a48cad2963 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 00000000000..d18c40e0fbd 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 00000000000..ac6c835c01d 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 00000000000..1c7af8e54d2 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 00000000000..a16b2c397ab 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 00000000000..10ed97f43e5 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 00000000000..23853fe645e 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 00000000000..b4d55e6a2f4 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 00000000000..c65aa836f32 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 00000000000..b708926e6d5 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 00000000000..725faafa897 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 00000000000..9e9f8b31b6c 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 00000000000..b444b69342d 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 00000000000..7056f0b4cce 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 00000000000..bd6fd4bc968 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 00000000000..311bd1c3418 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 00000000000..731ec6c927b 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 00000000000..6ae8e846d00 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 00000000000..56bdb93fe9e 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 00000000000..75c37b80a07 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 00000000000..c4adf3ce9b9 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 00000000000..673102413e8 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 00000000000..9f1d3fab35f 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 00000000000..f81f2acf312 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 00000000000..1833e3cd501 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 00000000000..675248372e9 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 00000000000..4238288a918 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 00000000000..18a342c61c3 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 00000000000..07e0933770f 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 00000000000..c58d9a78183 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 00000000000..298fe3c3a55 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 00000000000..92a788b7769 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 00000000000..cfc512c3322 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 00000000000..6f97d051f01 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 00000000000..b9eac1d8619 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 00000000000..a05afe7db29 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 00000000000..f3f5cdaa41e 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 00000000000..aa2434dee8e 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 00000000000..df7158dd87d 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 00000000000..a189cc9e4b9 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 00000000000..e1038fe83ec 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 00000000000..ac6c835c01d 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 00000000000..696000bd644 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 00000000000..fbf28037775 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 00000000000..3fe00ccf1aa 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 00000000000..696000bd644 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 00000000000..3a6a2c404f4 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 00000000000..183536779c8 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 00000000000..c421b497add 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 00000000000..8581592a821 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 00000000000..18419a91604 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 00000000000..4293179a041 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 00000000000..2cd12cd5e53 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 00000000000..f84b08ce280 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 00000000000..06b6ea85fca 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 00000000000..82cddfef286 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 00000000000..f4fb82f58a7 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 00000000000..d6f6facdfd7 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 00000000000..a5b0f8c58ad 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 00000000000..ad70d494dda 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 00000000000..cdff3981c9e 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 00000000000..1c43855e933 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 00000000000..f03d97b10c8 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 00000000000..6a4e7a098cb 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 00000000000..cd1c9d6eba1 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 00000000000..7e0d4a24ea9 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 00000000000..026a378d499 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 00000000000..20e7482884e 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 00000000000..61b1ba7c1fb 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 00000000000..0e9a757e17c 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 00000000000..b2c3bf4a6eb 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 00000000000..51a42f2ed2c 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 00000000000..c30fa44f1a4 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 00000000000..4cfad0f5e2f 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 00000000000..f01b3ccdf94 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 00000000000..cb1c56efc46 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 00000000000..e2e9d8e21ff 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 00000000000..4f436c45d00 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 00000000000..93fa78ab62e 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 00000000000..a26b3840531 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 00000000000..c8632558318 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 00000000000..732f835074a 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 00000000000..39b2014ab03 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 00000000000..aa28a5ef098 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 00000000000..b89db93ce3b 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 00000000000..d0478094314 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 00000000000..638537f5b9a 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 00000000000..66658aa6276 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 00000000000..ffa5a524553 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 00000000000..a29c1ff027a 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 00000000000..9f099bd9d68 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 00000000000..bbe6e115738 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 00000000000..f187964f0ae 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 00000000000..dd31f6e9571 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 00000000000..4fe0047d023 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 00000000000..0ba2060f4b0 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 00000000000..13b1d14c61b 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 00000000000..50cb039cc64 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 00000000000..c669d333ad1 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 00000000000..74e844456bb 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 00000000000..61511fe37ed 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 00000000000..25b7edbd150 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 00000000000..f1ec32a3f19 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 00000000000..da341389caa 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 00000000000..da2f88e914c 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 00000000000..5ef17e424ea 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 00000000000..2bbb055de10 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 00000000000..6ccf1c07f2a 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 00000000000..f52649e5ae8 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 00000000000..6395cc2c4d1 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 00000000000..5fccf3b2947 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 00000000000..68d98fb30aa 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 00000000000..f2d595f2522 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 00000000000..7b9de1bff85 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 00000000000..5a09a5888f4 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 00000000000..25a5810cfc1 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 00000000000..f4eb73b3211 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 00000000000..5c002038188 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 00000000000..a1ea6ffb838 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 00000000000..36a0ea55b9b 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 00000000000..8cf71c87568 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 00000000000..bc4e2485f34 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 00000000000..7756827c36e 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 00000000000..3b2f5ca0a08 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 00000000000..b6cb50e7ecf 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 00000000000..2534b6b6e5e 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 00000000000..880496201f0 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 00000000000..5c2d87062ab 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 00000000000..dcf83504ad7 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 00000000000..29b476f94dd 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 00000000000..fc63914adda 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 00000000000..78c4d612b71 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 00000000000..38024c9ca68 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 00000000000..81e392ae77a 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 00000000000..32140ac0faf 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 00000000000..72067fe1afb 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 00000000000..146570a7bbe 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 00000000000..6c781d2958f 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 00000000000..34a72820814 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 00000000000..d167cd39e4e 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 00000000000..8fdf18dfe1b 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 00000000000..8eb3e369b16 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 00000000000..e036b176909 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 00000000000..f250bc5f60b 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 00000000000..2627394b9a8 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 00000000000..4078087d948 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 00000000000..4ede9745bd2 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 00000000000..73494753c29 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 00000000000..25dbf537f3d 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 00000000000..091390e67c2 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 00000000000..99b118f4eef 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 00000000000..8fc7bcf659a 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 00000000000..64d4028bcda 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 00000000000..ccc2acc0789 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 00000000000..28c4b064358 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 00000000000..73a7c31f37e 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 00000000000..5db788a17fe 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 00000000000..4b7278111e7 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 00000000000..c232f3c8763 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 00000000000..98e53c7c740 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 00000000000..c59acc11bb7 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 00000000000..5bb960b910f 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 00000000000..b28694d1a07 Binary files /dev/null and b/sound/vo/male/abyssariad/yoooo.ogg differ diff --git a/stonekeep.dme b/stonekeep.dme index 06aa9a48942..44a2ace3c2b 100644 --- a/stonekeep.dme +++ b/stonekeep.dme @@ -1086,6 +1086,7 @@ #include "code\game\objects\structures\fireplace.dm" #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\fluff.dm" +#include "code\game\objects\structures\frontierjustice.dm" #include "code\game\objects\structures\ghost_role_spawners.dm" #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\grille.dm" @@ -1731,6 +1732,17 @@ #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rogue.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\sorceress.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\warrior.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\champion.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\kyudoka.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\marauder.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\mastersohei.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\onmyoji.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\shinobi.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\shrinekeeper.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\sohei.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\wokou.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\yamabushi.dm" +#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\abyssariad\zamurai.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\bladesinger.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\hoplite.dm" #include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\longbeard.dm" @@ -1805,8 +1817,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" @@ -1853,6 +1867,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" @@ -2013,6 +2028,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" @@ -2037,6 +2053,11 @@ #include "code\modules\mob\living\carbon\human\species_types\vampire.dm" #include "code\modules\mob\living\carbon\human\species_types\zombies.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\roguetown_species.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\_abyssariad.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\changeling.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\ogrun.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\skylancer.dm" +#include "code\modules\mob\living\carbon\human\species_types\roguetown\abyssariad\undine.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\dwarf\_dwarf.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\dwarf\dwarfm.dm" #include "code\modules\mob\living\carbon\human\species_types\roguetown\elf\_elf.dm" @@ -2051,9 +2072,11 @@ #include "code\modules\mob\living\carbon\human\species_types\roguetown\other\werewolf.dm" #include "code\modules\mob\living\carbon\human\voicepacks\genfemale.dm" #include "code\modules\mob\living\carbon\human\voicepacks\genmale.dm" +#include "code\modules\mob\living\carbon\human\voicepacks\female\abyssariad.dm" #include "code\modules\mob\living\carbon\human\voicepacks\female\assassin.dm" #include "code\modules\mob\living\carbon\human\voicepacks\female\dwarf.dm" #include "code\modules\mob\living\carbon\human\voicepacks\female\elf.dm" +#include "code\modules\mob\living\carbon\human\voicepacks\male\abyssariad.dm" #include "code\modules\mob\living\carbon\human\voicepacks\male\assassin.dm" #include "code\modules\mob\living\carbon\human\voicepacks\male\dwarf.dm" #include "code\modules\mob\living\carbon\human\voicepacks\male\elf.dm" @@ -2168,6 +2191,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" @@ -2195,6 +2219,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" @@ -2510,6 +2535,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 00000000000..f22de8a2127 --- /dev/null +++ b/strings/abyssal_replacement.json @@ -0,0 +1,126 @@ +{ + + "abyssal": { + "what?": "nani?", + "'s ": "-no ", + "bye": "mata ne", + "good bye": "sayonara", + "see you later": "jaa ne", + "captain ": "kyaputen ", + "enemy ": "rival", + "friend ": "ally", + "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", + "master": "sensei", + "teacher": "sensei", + "devil": "deviru", + "mythril": "hihi'irokane", + "lamia": "nure-onna", + "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", + "prank": "merk", + "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", + "bionic": "abyssal automata", + "psydon": "weeper", + "jesus": "kami", + "christ": "kami", + "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 ", + "cocksucker": "jawsexer", + "cocksucking": "jawsexxing", + + "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/accent_universal.json b/strings/accent_universal.json index 45135682a1f..55333b9f4e0 100644 --- a/strings/accent_universal.json +++ b/strings/accent_universal.json @@ -88,6 +88,8 @@ "satan": "zizo", "adonai": "psydon", "praise psydon": "Mourn the Weeper", + "samurai": "zamurai", + "katana": "zatana", "cuck": "wittol", "poop": "nitesoil", "goat": "gote", diff --git a/strings/names/abyssariad/abyssnorlast.txt b/strings/names/abyssariad/abyssnorlast.txt new file mode 100644 index 00000000000..63b851d8fe2 --- /dev/null +++ b/strings/names/abyssariad/abyssnorlast.txt @@ -0,0 +1,92 @@ +of the Abe Clan +of the Adachi Clan +of the Arai Clan +of the Arakawa Clan +of the Asano Clan +of the Chiba Clan +of the Date Clan +of the Endo Clan +of the Fukushima Clan +of the Furuya Clan +of the Gotou Clan +of the Hamada Clan +of the Hasegawa Clan +of the Hata Clan +of the Hattori Clan +of the Higashi Clan +of the Hirano Clan +of the Honda Clan +of the Hosokawa Clan +of the Iguchi Clan +of the Imai Clan +of the Inoue Clan +of the Ishioka Clan +of the Ito Clan +of the Iwata Clan +of the Kadokawa Clan +of the Kai Clan +of the Kaneko Clan +of the Kano Clan +of the Katayama Clan +of the Kinoshita Clan +of the Kitagawa Clan +of the Kitano Clan +of the Kiyohara Clan +of the Kojima Clan +of the Kondo Clan +of the Kurihara Clan +of the Maekawa Clan +of the Makino Clan +of the Maruyama Clan +of the Matsushita Clan +of the Minami Clan +of the Miura Clan +of the Mochizuki Clan +of the Nagai Clan +of the Nagasaki Clan +of the Nakajima Clan +of the Nakamoto Clan +of the Nakatani Clan +of the Nishida Clan +of the Noguchi Clan +of the Nomura Clan +of the Obata Clan +of the Oda Clan +of the Ogura Clan +of the Okubo Clan +of the Omura Clan +of the Onishi Clan +of the Ota Clan +of the Ozawa Clan +of the Sakaguchi Clan +of the Sakurai Clan +of the Sawada Clan +of the Shibata Clan +of the Shibasaki Clan +of the Shima Clan +of the Shimada Clan +of the Sugawara Clan +of the Takamura Clan +of the Tamura Clan +of the Tani Clan +of the Terada Clan +of the Toda Clan +of the Tokuda Clan +of the Toyama Clan +of the Tsuchiya Clan +of the Uchida Clan +of the Ueda Clan +of the Ueno Clan +of the Uno Clan +of the Usui Clan +of the Wada Clan +of the Wakabayashi Clan +of the Wakimoto Clan +of the Yagi Clan +of the Yamada Clan +of the Yamashiro Clan +of the Yasuda Clan +of the Yokoyama Clan +of the Yoshimoto Clan +of the Yoshimura Clan +of the Yoshino Clan diff --git a/strings/names/abyssariad/abyssnorm.txt b/strings/names/abyssariad/abyssnorm.txt new file mode 100644 index 00000000000..fb403a3db2d --- /dev/null +++ b/strings/names/abyssariad/abyssnorm.txt @@ -0,0 +1,88 @@ +Akira +Daichi +Haruto +Hiroshi +Ichiro +Jiro +Kaito +Kazuki +Kenji +Koichi +Kousuke +Makoto +Masaru +Naoki +Ren +Riku +Ryo +Ryota +Satoshi +Shigeru +Sora +Susumu +Takashi +Takumi +Taro +Tatsuya +Tomoya +Toru +Yasuhiro +Yoshiro +Yuki +Yusuke +Yuuta +Aki +Atsushi +Daisuke +Eiji +Fumio +Genji +Hideo +Hideki +Hiroto +Hisashi +Isamu +Itsuki +Junnosuke +Katsuo +Kazuya +Keisuke +Ken +Kenta +Kiyoshi +Kouta +Masahiro +Masayuki +Minoru +Mitsuo +Nao +Noboru +Osamu +Reiji +Ryohei +Ryunosuke +Saburo +Seiji +Shigeo +Shinji +Shinya +Shun +Shunpei +Taichi +Takao +Takeo +Tamotsu +Tatsuhiro +Teruo +Tetsuo +Tomohiro +Toshio +Tsuyoshi +Wataru +Yasuo +Yoshihiro +Yoshinori +Yuu +Yuichiro +Yuto +Zen diff --git a/strings/names/abyssariad/onif.txt b/strings/names/abyssariad/onif.txt new file mode 100644 index 00000000000..3a7025e6e57 --- /dev/null +++ b/strings/names/abyssariad/onif.txt @@ -0,0 +1,50 @@ +Jiguur +Temulun +Sarantuya +Samga +Alagh +Yid +Sorkhaghtani +Oyuunchimeg +Sechen +Khadagan +Solongo +Oyuunchimeg +Yesugen +Odtsetseg +Altantsetseg +Narantsetseg +Dokuz +Khatum +Yisugei +Qatun +Khojin +Maral +Narantuyaa +Narantsetseg +Gorbeljin +Nomolun +Silugukhan +Qatakhan +Bayarma +Alagh +Abagai +Ghoa +Cota +Oghul +Sarantsatsral +Botokhui Targhun +Narangerel +Cirina +Khongordzol +Sarantuya +Orbei +Sarantsatsr +Checheyigen +Hogelun +Dokuz Khatum +Sayinaral +Enebish +Altan +Dagasi +Oyuun diff --git a/strings/names/abyssariad/onim.txt b/strings/names/abyssariad/onim.txt new file mode 100644 index 00000000000..6995da24a9a --- /dev/null +++ b/strings/names/abyssariad/onim.txt @@ -0,0 +1,50 @@ +Kokochu +Bogorchu +Tseren +Hooshal +Sechegur +Erke +Jubkhan +Xorxoi +Khurchakhus +Xartsaga +Emlig +Dayir +Esenaij +Caikhatu +Nekunaisi +Tomor +Togh +Sacha +Belgunutei +Gulug +Bogarji +Idughadai +Asugbal +Khoriubechi +Delger +Yesugei +Baiju +Delger +Huslen +Khadagan +Ong +Otgonbayar +Ogodei +Mergen +Timurolie +Durraimur +Buyirugh +Tabudai +Baiju +Khudus +Okin +Barkhagh +Megujin +Gugun +Ajinai +Yul +Ashighemur +Khorghosun +Temur +Khadan diff --git a/strings/rt/ashigaruaggrolines.txt b/strings/rt/ashigaruaggrolines.txt new file mode 100644 index 00000000000..2b2e03cc505 --- /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 00000000000..6265ba6bbfe --- /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 00000000000..b9222e05075 --- /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 00000000000..63b851d8fe2 --- /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 00000000000..fb403a3db2d --- /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 00000000000..3a7025e6e57 --- /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 00000000000..6995da24a9a --- /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