diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm index 38789e326eb..c55e51d992c 100644 --- a/code/__DEFINES/roguetown.dm +++ b/code/__DEFINES/roguetown.dm @@ -4,6 +4,7 @@ #define ALL_TEMPLAR_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/necra, /datum/patron/divine/ravox, /datum/patron/divine/pestra, /datum/patron/divine/dendor, /datum/patron/divine/abyssor, /datum/patron/divine/malum, /datum/patron/divine/xylix) #define ALL_PROFANE_PATRONS list(/datum/patron/inhumen/graggar, /datum/patron/inhumen/zizo, /datum/patron/inhumen/matthios, /datum/patron/inhumen/baotha) #define ALL_ICONOCLAST_PATRONS list(/datum/patron/psydon, /datum/patron/psydon/extremist, /datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/dendor, /datum/patron/divine/abyssor, /datum/patron/divine/necra, /datum/patron/divine/ravox, /datum/patron/divine/xylix, /datum/patron/divine/pestra, /datum/patron/divine/malum, /datum/patron/divine/eora, /datum/patron/inhumen/graggar, /datum/patron/inhumen/zizo, /datum/patron/inhumen/matthios, /datum/patron/inhumen/baotha) +#define ALL_GRONNIC_PATRONS list(/datum/patron/inhumen/zizo, /datum/patron/inhumen/graggar, /datum/patron/inhumen/matthios, /datum/patron/inhumen/baotha, /datum/patron/divine/abyssor, /datum/patron/divine/dendor) /// Currently same as ALL_ICONOCLAST_PATRONS, but in text format because byond sucks and won't read things properly. #define COLORFUL_PATRONS list("Psydon", "Astrata", "Noc", "Dendor", "Abyssor", "Necra", "Ravox", "Xylix", "Pestra", "Malum", "Eora", "Graggar", "Zizo", "Matthios", "Baotha") diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 049065292de..200fc8f1187 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -62,6 +62,7 @@ #define MODE_SING "sing" #define SPAN_GEN "say" +#define SPAN_GRONNIC "gronnic" #define SPAN_DWARF "dwarf" #define SPAN_ELF "elf" #define SPAN_OLDPSYDONIC "oldpsydonic" diff --git a/code/datums/faith/_devotion.dm b/code/datums/faith/_devotion.dm index 61b5182c65a..ae07abadcd6 100644 --- a/code/datums/faith/_devotion.dm +++ b/code/datums/faith/_devotion.dm @@ -172,6 +172,12 @@ progression = CLERIC_REQ_1 max_progression = CLERIC_REQ_3 +/datum/devotion/proc/make_shaman() + devotion = 80 + max_devotion = CLERIC_REQ_1 + progression = CLERIC_REQ_1 + max_progression = CLERIC_REQ_1 + /datum/devotion/proc/make_churching() max_devotion = CLERIC_REQ_1 progression = CLERIC_REQ_1 diff --git a/code/datums/status_effects/debuffs/gronn.dm b/code/datums/status_effects/debuffs/gronn.dm new file mode 100644 index 00000000000..99e0ad94ec1 --- /dev/null +++ b/code/datums/status_effects/debuffs/gronn.dm @@ -0,0 +1,8 @@ +/datum/status_effect/debuff/lost_shaman_hood + id = "naledimask" + alert_type = /atom/movable/screen/alert/status_effect/debuff/shamanhood + effectedstats = list(STATKEY_LCK = -3) + +/atom/movable/screen/alert/status_effect/debuff/shamanhood + name = "Lost Hood" + desc = "The sacred hood is lost. I feel frail and sapped without it." diff --git a/code/datums/stress/negative_events.dm b/code/datums/stress/negative_events.dm index b8600ccfdb1..5542fecf0c1 100644 --- a/code/datums/stress/negative_events.dm +++ b/code/datums/stress/negative_events.dm @@ -803,3 +803,8 @@ /datum/stress_event/malaguero/can_show(mob/living/user) return istiefling(user) || ..() + +/datum/stress_event/shamanhoodlost + stress_change = 3 + desc = span_boldred("I have lost my hood! My faith wavers without it. I feel ashamed.") + timer = 999 MINUTES diff --git a/code/game/objects/items/weapons/melee/gronn.dm b/code/game/objects/items/weapons/melee/gronn.dm new file mode 100644 index 00000000000..4d1c71817d3 --- /dev/null +++ b/code/game/objects/items/weapons/melee/gronn.dm @@ -0,0 +1,206 @@ +// Weapons +/obj/item/weapon/sword/short/gronn + name = "gronnic hinterblade" + desc = "Due to the shortage of forged steel in Gronn, their iron blades have become hardier and thicker than what one may see elsewhere. The favoured weapon of choice for any able-bodied northman of Gronn, the hinterblade is the heftier, unwieldy cousin of the arming sword." + possible_item_intents = list(/datum/intent/sword/cut/militia, /datum/intent/sword/chop/militia, /datum/intent/sword/thrust/short) + icon_state = "gronnsword" + gripped_intents = null + minstr = 10 //NO TWINKS!! + wdefense = 3 // Use it with a shield jackass + wlength = WLENGTH_SHORT + w_class = WEIGHT_CLASS_NORMAL + + grid_width = 32 + grid_height = 96 + +/datum/intent/sword/cut/militia + penfactor = 30 + damfactor = 1.2 + no_early_release = TRUE + +/datum/intent/sword/chop/militia + penfactor = 50 + swingdelay = 0 + damfactor = 1.0 + no_early_release = TRUE + +/obj/item/weapon/handclaw + name = "Iron Hound Claws" + desc = "A pair of heavily curved claws, styled after beasts of the wilds for rending bare flesh, \ + A show of the continual worship and veneration of beasts of strength in Gronn." + icon = 'icons/roguetown/weapons/32/fists_claws.dmi' + icon_state = "ironclaws" + parrysound = list('sound/combat/parry/bladed/bladedthin (1).ogg', 'sound/combat/parry/bladed/bladedthin (2).ogg', 'sound/combat/parry/bladed/bladedthin (3).ogg') + force = 30 + throwforce = 12 + thrown_bclass = BCLASS_CUT + wdefense = ULTMATE_PARRY + wlength = WLENGTH_NORMAL + possible_item_intents = list(/datum/intent/claw/cut/iron, /datum/intent/claw/lunge/iron, /datum/intent/claw/rend) + wbalance = DODGE_CHANCE_NORMAL + max_blade_int = 300 + max_integrity = INTEGRITY_STANDARD + + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_HIP + swingsound = list('sound/combat/wooshes/bladed/wooshmed (1).ogg','sound/combat/wooshes/bladed/wooshmed (2).ogg','sound/combat/wooshes/bladed/wooshmed (3).ogg') + associated_skill = /datum/skill/combat/unarmed + pickup_sound = 'sound/foley/equip/swordsmall2.ogg' + anvilrepair = /datum/skill/craft/weaponsmithing + smeltresult = /obj/item/ingot/iron + grid_height = 96 + grid_width = 32 + +/obj/item/weapon/handclaw/steel + name = "Steel Mantis Claws" + desc = "A pair of steel claws, An uncommon sight in Gronn as they do not forge their own steel, \ + Their longer blades offer a superior defence option but their added weight slows them down." + icon_state = "steelclaws" + wdefense = 6 + force = 35 + possible_item_intents = list(/datum/intent/claw/cut/steel, /datum/intent/claw/lunge/steel, /datum/intent/claw/rend/steel) + wbalance = EASY_TO_DODGE + max_blade_int = 180 + max_integrity = 200 + smeltresult = /obj/item/ingot/steel + +/obj/item/weapon/handclaw/gronn + name = "Gronn Beast Claws" + desc = "A pair of uniquely reinforced iron claws forged with the addition of bone by the Iskarn shamans of the Northern Empty. \ + Their unique design aids them in slipping between the plates in armor and their light weight supports rapid aggressive slashes. \ + 'To see the claws of the four, Is to see the true danger of the north. Not man, Not land but beast. We are all prey in their eyes.'" + icon_state = "gronnclaws" + wdefense = 3 + force = 25 + possible_item_intents = list(/datum/intent/claw/cut/gronn, /datum/intent/claw/lunge/gronn, /datum/intent/claw/rend) + wbalance = HARD_TO_DODGE + max_blade_int = 200 + max_integrity = 200 + + +/obj/item/weapon/handclaw/getonmobprop(tag) + . = ..() + if(tag) + switch(tag) + if("gen") + return list("shrink" = 0.4,"sx" = -7,"sy" = -4,"nx" = 7,"ny" = -4,"wx" = -3,"wy" = -4,"ex" = 1,"ey" = -4,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0,"nturn" = 110,"sturn" = -110,"wturn" = -110,"eturn" = 110,"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,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0) + +/datum/intent/claw/lunge + name = "lunge" + icon_state = "inimpale" + attack_verb = list("lunges") + animname = "stab" + blade_class = BCLASS_STAB + hitsound = list('sound/combat/hits/bladed/genstab (1).ogg', 'sound/combat/hits/bladed/genstab (2).ogg', 'sound/combat/hits/bladed/genstab (3).ogg') + +/datum/intent/claw/lunge/iron + damfactor = 1.2 + swingdelay = 8 + clickcd = CLICK_CD_MELEE + penfactor = 35 + +/datum/intent/claw/lunge/steel + damfactor = 1.2 + swingdelay = 12 + clickcd = CLICK_CD_RESIST + penfactor = 35 + +/datum/intent/claw/lunge/gronn + damfactor = 1.1 + swingdelay = 5 + clickcd = 10 + penfactor = 45 + +/datum/intent/claw/cut + name = "cut" + icon_state = "incut" + attack_verb = list("cuts", "slashes") + animname = "cut" + blade_class = BCLASS_CUT + hitsound = list('sound/combat/hits/bladed/smallslash (1).ogg', 'sound/combat/hits/bladed/smallslash (2).ogg', 'sound/combat/hits/bladed/smallslash (3).ogg') + item_damage_type = "slash" + +/datum/intent/claw/cut/iron + penfactor = 20 + swingdelay = 8 + damfactor = 1.4 + clickcd = CLICK_CD_RESIST + +/datum/intent/claw/cut/steel + penfactor = 10 + swingdelay = 4 + damfactor = 1.3 + clickcd = CLICK_CD_RESIST + +/datum/intent/claw/cut/gronn + penfactor = 30 + swingdelay = 0 + damfactor = 1.1 + clickcd = CLICK_CD_MELEE + +/datum/intent/claw/rend + name = "rend" + icon_state = "inrend" + attack_verb = list("rends") + animname = "cut" + blade_class = BCLASS_CHOP + reach = 1 + penfactor = AP_CLUB_SMASH + swingdelay = 20 + damfactor = 2.5 + clickcd = CLICK_CD_RESIST + no_early_release = TRUE + hitsound = list('sound/combat/hits/bladed/genslash (1).ogg', 'sound/combat/hits/bladed/genslash (2).ogg', 'sound/combat/hits/bladed/genslash (3).ogg') + item_damage_type = "slash" + misscost = 10 + damfactor = 0.05 + +/datum/intent/claw/rend/steel + damfactor = 3 + +//Mauls. Woe. Most characters will not be able to engage with this, beyond hobbling. +//Why? The unique strength lockout. The minimum strength is not a suggestion. +/obj/item/weapon/mace/goden/maul + force_wielded = DAMAGE_HEAVYCLUB_WIELD - 3 //-3 compared to grand mace(steel goden). Better intents. + possible_item_intents = list(/datum/intent/mace/strike) + gripped_intents = list(/datum/intent/mace/strike, /datum/intent/mace/smash, /datum/intent/effect/daze, /datum/intent/effect/hobble) + name = "maul" + desc = "Who would need something this large? It looks like it was made for tearing down walls, rather than men." + icon_state = "sledge" + wlength = WLENGTH_LONG + swingsound = BLUNTWOOSH_HUGE + slot_flags = null //No. + minstr = 14 + wdefense = 3 + dropshrink = 0.6 + bigboy = TRUE + gripsprite = TRUE + +//Intents for the mauls. +/datum/intent/effect/hobble + name = "hobbling strike" + desc = "A heavy strike aimed at the legs to cripple movement." + icon_state = "incrack"//Temp. Just so it's easy to differentiate. + attack_verb = list("hobbles") + animname = "strike" + hitsound = list('sound/combat/hits/blunt/shovel_hit3.ogg') + swingdelay = 6 + damfactor = 0.8 + penfactor = AP_CLUB_STRIKE + clickcd = CLICK_CD_RESIST + item_damage_type = "blunt" + intent_effect = /datum/status_effect/debuff/hobbled + target_parts = list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) //Intentionally leaving out feet. If you know, you know. + +/datum/status_effect/debuff/hobbled + id = "hobbled" + alert_type = /atom/movable/screen/alert/status_effect/debuff/hobbled + effectedstats = list(STATKEY_SPD = -2) + duration = 8 SECONDS + +/atom/movable/screen/alert/status_effect/debuff/hobbled + name = "Hobbled" + desc = "You've been struck in the leg! The force has left you staggered!" + icon_state = "dazed" diff --git a/code/modules/asset_cache/asset_cache_list.dm b/code/modules/asset_cache/asset_cache_list.dm index 0cc6b701898..492bd1d4c9e 100644 --- a/code/modules/asset_cache/asset_cache_list.dm +++ b/code/modules/asset_cache/asset_cache_list.dm @@ -51,6 +51,7 @@ "celestial.ttf" = 'interface/fonts/languages/celestial.ttf', "undead.ttf" = 'interface/fonts/languages/undead.ttf', "Vaticanus.ttf" = 'interface/fonts/Vaticanus.ttf', + "gronnic.ttf" = 'interface/fonts/languages/gronnic.ttf', ) //this exists purely to avoid meta by pre-loading all language icons. diff --git a/code/modules/clothing/armor/leather.dm b/code/modules/clothing/armor/leather.dm index b3780c982e1..1d2ff097a52 100644 --- a/code/modules/clothing/armor/leather.dm +++ b/code/modules/clothing/armor/leather.dm @@ -351,3 +351,14 @@ prevent_crits = list(BCLASS_CUT, BCLASS_STAB, BCLASS_BLUNT, BCLASS_CHOP, BCLASS_SMASH) max_integrity = ARMOR_INT_CHEST_LIGHT_MASTER sellprice = 20 + +// gronnic subtype +/obj/item/clothing/armor/leather/heavy/gronn + name = "gronnic ravager mantle" + desc = "A carefully created mantle of bone and hardened leather. It offers superior protection against the threats of the wild while remaining light, \ + A popular design in Iskarn is to adorn a shoulder with a wolf pelt and skull. So that a great beast is always with you." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnleatherarmor" + item_state = "gronnleatherarmor" + armor = ARMOR_GRONN_LIGHT diff --git a/code/modules/clothing/armor/plate.dm b/code/modules/clothing/armor/plate.dm index 59f7d9edda6..ac4854b77ab 100644 --- a/code/modules/clothing/armor/plate.dm +++ b/code/modules/clothing/armor/plate.dm @@ -215,3 +215,18 @@ name = "Psydonic Endurance" desc = "I am protected by blessed Psydonian plate armor." icon_state = "buff" + +//.............. Gronn Armor Sets .................// +/obj/item/clothing/armor/plate/iron/gronn + name = "gronn norsii iron plate" + desc = "A suit of solid iron plate, adorned with tassets and roundels. \ + The Northmen of Gronn rarely used plate, but when they did, \ + it is said that whole armies would quake and shake in fear of what would ravage them." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnplate" + item_state = "gronnplate" + boobed = FALSE + body_parts_covered = COVERAGE_ALL_BUT_LEGS + max_integrity = ARMOR_INT_CHEST_PLATE_STEEL + smeltresult = /obj/item/ingot/iron diff --git a/code/modules/clothing/gloves/angle.dm b/code/modules/clothing/gloves/angle.dm index 1eeff2f5597..3704a4b42df 100644 --- a/code/modules/clothing/gloves/angle.dm +++ b/code/modules/clothing/gloves/angle.dm @@ -17,3 +17,26 @@ desc = "Regal gloves of Grenzelhoftian design, more a fashion statement than actual protection." icon_state = "grenzelgloves" sleeved = 'icons/roguetown/clothing/onmob/helpers/stonekeep_merc.dmi' + +// gronn subtypes +/obj/item/clothing/gloves/angle/gronn + name = "gronnic fur-lined leather gloves" + desc = "Thick, padded gloves made for the harshest of climates and the wildest of beasts encountered in the untamed north." + icon_state = "gronnleathergloves" + item_state = "gronnleathergloves" + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + color = "#ffffff" + +/obj/item/clothing/gloves/angle/gronnfur + name = "gronnic fur-lined bone gloves" + desc = "A pair of hardened leather gloves with bone reinforcements across the wrists\ + and the back of the hand, offering superior protection against\ + the claws of beasts and plants alike. Commonly worn by gatherers." + icon_state = "gronnfurgloves" + item_state = "gronnfurgloves" + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + unarmed_bonus = 1.25 + max_integrity = 250 + color = "#ffffff" diff --git a/code/modules/clothing/gloves/chain.dm b/code/modules/clothing/gloves/chain.dm index be6e287e9b7..730c334d5ba 100644 --- a/code/modules/clothing/gloves/chain.dm +++ b/code/modules/clothing/gloves/chain.dm @@ -54,3 +54,11 @@ desc = "A weathered gauntlet with an ancient design." icon_state = "vgloves" item_weight = 6 * STEEL_MULTIPLIER + +/obj/item/clothing/gloves/chain/gronn + name = "gronn byrine gloves" + desc = "A pair of leather gloves with chain to protects the wrists and back of the hand." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnchaingloves" + item_state = "gronnchaingloves" diff --git a/code/modules/clothing/gloves/plate.dm b/code/modules/clothing/gloves/plate.dm index aa3979f3e15..d3106e34851 100644 --- a/code/modules/clothing/gloves/plate.dm +++ b/code/modules/clothing/gloves/plate.dm @@ -106,3 +106,12 @@ mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/evilarmor.dmi' sleeved = 'icons/roguetown/clothing/special/onmob/evilarmor.dmi' sellprice = 0 // See above comment + +//............... Gronnic gloves ............... // +/obj/item/clothing/gloves/plate/iron/gronn + name = "gronn norsii iron gauntlets" + desc = "Tough iron gauntlets, simple and protective in design. A single punch is said to leave a dozen bruises." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnplategloves" + item_state = "gronnplategloves" diff --git a/code/modules/clothing/head/helmets/heavy.dm b/code/modules/clothing/head/helmets/heavy.dm index bdbb2bf19ec..af99afd9dfd 100644 --- a/code/modules/clothing/head/helmets/heavy.dm +++ b/code/modules/clothing/head/helmets/heavy.dm @@ -555,3 +555,21 @@ adjustable = CAN_CADJUST block2add = FOV_BEHIND max_integrity = 400 + +//............... Gronn Heavy Helmet ...............// +/obj/item/clothing/head/helmet/heavy/bucket/gronn + name = "gronn norsii horned helmet" + desc = "One of Gronn's infamous horned helms of solid iron. \ + Styled after the appearance of invading knights of legend from the Northern Empty, \ + brutal and bare, it is a reminder of a time before there was snow." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/onmob/64x64/gronn.dmi' + bloody_icon = 'icons/effects/blood64x64.dmi' + icon_state = "gronnplatehelm" + item_state = "gronnplatehelm" + emote_environment = 3 + flags_inv = HIDEEARS|HIDEFACE|HIDEHAIR + block2add = FOV_BEHIND + smeltresult = /obj/item/ingot/iron + worn_x_dimension = 64 + worn_y_dimension = 64 diff --git a/code/modules/clothing/neck/psycross.dm b/code/modules/clothing/neck/psycross.dm index a21d93f2580..da7340638f8 100644 --- a/code/modules/clothing/neck/psycross.dm +++ b/code/modules/clothing/neck/psycross.dm @@ -18,6 +18,41 @@ sellprice = 0 experimental_onhip = TRUE +// GRONN PSYCROSSES +/obj/item/clothing/neck/psycross/inhumen/gronn + name = "carved talisman" //plotting talisman + desc = "'The hunt, the studying of your prey, the learning of its routes, the knowledge our ancestors passed down, the empowerment of your people and yourself. Learn of the world, or fade away.'

The Plotting Wolf embodies the virtues of progress and knowledge, so that no obstacle nor threat to the homeland remains insurmountable. To understand the truths of beast-and-bronze is to lighten the future's hardships. Do not humor magicka, however, for playing with fire shall always end in someone being burned." + icon_state = "gronnzizo" + +/obj/item/clothing/neck/psycross/inhumen/baothagronn + name = "carved talisman" //relishing talisma + desc = "'“The excess of desire, the want of more, the glory of victory, the lover's embrace. Embrace the Leopard, or forget your strength.'

The Relishing Leopard embodies the virtues of love and glory, both in battle and at home. Enjoy the flesh, the drink, and the spice; but be wary to avoid overindulgence, for it shall leave you despondant and lethargic. To become too comfortable is to become weak, and such weakness would turn you into a delicious snack for the Leopard." + icon_state = "gronnbaotha" + +/obj/item/clothing/neck/psycross/inhumen/matthios/gronn + name = "carved talisman" //starving talisman + desc = "'“The hunger, the destruction, the impending frost, the enemy of my enemy. Feed the Bear, or be consumed.'

The Starving Bear embodies not a virtue, but the necessity to thrive above all else. Avarice is not a sin, but a virtue; to ensure that the homeland never suffers from poverty nor starvation again. Pillage, plunder, and perforate the wealth that others would keep from you, but do not forget that every choice begets consequences." + icon_state = "gronnmatthios" + +/obj/item/clothing/neck/psycross/inhumen/graggar/gronn + name = "carved talisman" //grinning talisman + desc = "'The battle, the combat, the violence, the rush of victory, the honored glories. Defeat the foe, or die with them.'

The Grinning Moose embodies the virtues of strengh and domination; to survive both the homeland's frigid blizzards and those who'd seek to maraude its countrymen. Be untamed and unstoppable, but do not lose yourself in the haze; for even the Moose was chained, once. Kill your own without reason, and the chain shall be tugged; and your soul, too, shall be impaled on their horns." + icon_state = "gronngraggar" + +/obj/item/clothing/neck/psycross/dendor/gronn + name = "carved talisman" //volfskinned talisman + desc = "'The world above, of knifetoothed plants and rotting carrion. From jungle to desert, even the stones are nature. Heed its call with the respect it commands, or succumb to madness.'

The Volfskinned Man embodies the virtue of nature and temperance; to live in harmony with the world and its spirits. Pluck a jackberry, plant a seed - Slay a beast, see no part wasted. Yet, temperance must be shown; to take from the world without respect-nor-exchange is to curse the homeland with misfortune. Yet, to completely embrace the world's primality is to lose your humanity - and worse, to become the very beast you hunt." + icon_state = "gronndendor" + +/obj/item/clothing/neck/psycross/abyssor/gronn + name = "carved talisman" //hadal talisman + desc = "'The chaos below, of coldblack pressure and crushing weight. Be the current. Control the waves. Reign your sails and hold fast against the storm, or be washed away onto an odyssey with no end.'

The Spiraling Kraken is no virtue, but a presence; the homeland's nautical warden, who's tentacled presence is as unpredictable as the oceans it lords over. To embrace the uncertainty of lyfe is to be rewarded with fortune and mercy when it is most needed. Do not embrace such futility, however, lest you are swept away with all the others into the abyss." + icon_state = "gronnabyssor" + +/obj/item/clothing/neck/psycross/inhumen/gronn/special + name = "carved talisman" //familial talisman + desc = "'The memories of the past, and the dreams of the future. A fetish of a beaste, and the carvings of a force that no one beyond your homeland could understand. Sail gracefully, countryman.'" + // SILVER PSYCROSS START /obj/item/clothing/neck/psycross/silver diff --git a/code/modules/clothing/outfits/atveri.dm b/code/modules/clothing/outfits/atveri.dm index 00e98c9c67b..7f14444ed18 100644 --- a/code/modules/clothing/outfits/atveri.dm +++ b/code/modules/clothing/outfits/atveri.dm @@ -85,3 +85,165 @@ switch(tag) if("onback") return list("shrink" = 0.7,"sx" = -17,"sy" = -15,"nx" = -15,"ny" = -15,"wx" = -12,"wy" = -15,"ex" = -18,"ey" = -15,"nturn" = 0,"sturn" = 0,"wturn" = 180,"eturn" = 0,"nflip" = 8,"sflip" = 0,"wflip" = 1,"eflip" = 0,"northabove" = 1,"southabove" = 0,"eastabove" = 0,"westabove" = 0) + +// Gronnic subtypes of atgervi clothes +/obj/item/clothing/head/helmet/leather/shaman_hood + slot_flags = ITEM_SLOT_HEAD|ITEM_SLOT_HIP + name = "moose hood" + desc = "A deceptively strong moosehide hood with a pair of large heavy antlers. It is the reward of the fourth trial of the Iskarn Shamans: To slay a Grinning Moose in the final hunt alone - and fashion a hood from its head." + body_parts_covered = HEAD|HAIR|EARS|NOSE + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/onmob/32x48/gronn.dmi' + icon_state = "gronnfurhood" + item_state = "gronnfurhood" + bloody_icon = 'icons/effects/blood64x64.dmi' + armor = ARMOR_LEATHER_GOOD + flags_inv = HIDEEARS|HIDEFACE + worn_x_dimension = 32 + worn_y_dimension = 48 + sellprice = 10 + anvilrepair = null + smeltresult = null + sewrepair = TRUE + blocksound = SOFTHIT + max_integrity = ARMOR_INT_HELMET_HARDLEATHER + salvage_result = /obj/item/natural/hide/cured + var/on = FALSE + var/lux_consumed = FALSE + var/lux_color = LIGHT_COLOR_CYAN + adjustable = CAN_CADJUST + light_color = LIGHT_COLOR_ORANGE + light_system = MOVABLE_LIGHT + light_outer_range = 3 + light_power = 1 + toggle_icon_state = TRUE + +/obj/item/clothing/head/helmet/leather/shaman_hood/equipped(mob/user, slot) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.remove_status_effect(/datum/status_effect/debuff/lost_shaman_hood) + H.remove_stress(/datum/stress_event/shamanhoodlost) + +/obj/item/clothing/head/helmet/leather/shaman_hood/dropped(mob/user) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.merctype == 1) //Atgervi + H.apply_status_effect(/datum/status_effect/debuff/lost_shaman_hood) + H.add_stress(/datum/stress_event/shamanhoodlost) + +/obj/item/clothing/head/helmet/leather/shaman_hood/Initialize(mapload) + . = ..() + set_light_on(FALSE) + +/obj/item/clothing/head/helmet/leather/shaman_hood/MiddleClick(mob/user) + if(.) + return + if(adjustable == CADJUSTED) + return + user.changeNext_move(CLICK_CD_MELEE) + toggle_helmet_light(user) + to_chat(user, span_info("I spark [src] [on ? "on" : "off"].")) + +/obj/item/clothing/head/helmet/leather/shaman_hood/proc/toggle_helmet_light(mob/living/user) + on = !on + set_light_on(on) + if(on) + playsound(loc, 'sound/effects/hood_ignite.ogg', 100, TRUE) + do_sparks(2, FALSE, user) + else + playsound(loc, 'sound/misc/toggle_lamp.ogg', 100) + update_icon() + +/obj/item/clothing/head/helmet/leather/shaman_hood/update_icon() + if(adjustable == CADJUSTED) + ..() + return + if(on) + icon_state = "gronnfurhood_lit[lux_consumed ? "3" : "2"]" + item_state = "gronnfurhood_lit[lux_consumed ? "3" : "2"]" + else + icon_state = "gronnfurhood" + item_state = "gronnfurhood" + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() + ..() + +/obj/item/clothing/head/helmet/leather/shaman_hood/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/reagent_containers/lux)) + if(adjustable == CADJUSTED) + to_chat(user, span_warning("The hood must be up for this to work!")) + return + if(lux_consumed) + to_chat(user, span_warning("It has already been infused.")) + return + to_chat(user, span_warning("I infuse the hood with the soul energies!")) + lux_consumed = TRUE + set_light_range_power_color(6, 2, lux_color) //The light is doubled + if(!on) + toggle_helmet_light(user) + else + update_icon() + qdel(I) + . = ..() + + +/obj/item/clothing/head/helmet/leather/shaman_hood/AdjustClothes(mob/user) + if(loc == user) + if(adjustable == CAN_CADJUST) + playsound(src, 'sound/foley/equip/rummaging-03.ogg', 50, TRUE) + if(on) + toggle_helmet_light(user) + if(toggle_icon_state) + icon_state = "gronnfurhood_down" + item_state = "gronnfurhood_down" + adjustable = CADJUSTED + flags_inv = null + body_parts_covered = null + else if(adjustable == CADJUSTED) + playsound(src, 'sound/foley/equip/cloak (3).ogg', 50, TRUE) + ResetAdjust(user) + if(ishuman(user)) + var/mob/living/carbon/H = user + H.update_inv_neck() + H.update_inv_head() + +/obj/item/clothing/head/helmet/leather/shaman_hood/ResetAdjust(mob/user) + . = ..() + if(on) + set_light_on(FALSE) + update_icon() + + +/obj/item/clothing/head/helmet/bascinet/atgervi/gronn + name = "gronnic ravager helm" + desc = "A helmet of hardened leather with a carved animal skull to appear similar to a human; a unique design of The Northern Empty. \ + Its visage is said in Iskarn to scare the spirits of those defeated in the battlefield \ + and preventing those of Necra and 'The Moose' from haunting them." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnleatherhelm" + item_state = "gronnleatherhelm" + block2add = null + body_parts_covered = HEAD|HAIR|EARS|EYES|NOSE + worn_x_dimension = 32 + worn_y_dimension = 32 + +/obj/item/clothing/head/helmet/bascinet/atgervi/gronn/ownel + name = "gronnic ownel helmet" + desc = "A full helmet that adequately protect the eyes and head; \ + The slits are decorated with a harsh gold dye - it is rumoured in Gronn to grant one the ability to see as keenly as an owl." + icon_state = "gronnhelm" + item_state = "gronnhelm" + +/obj/item/clothing/armor/brigandine/gronn + name = "gronn byrine hauberk" + desc = "A chain shirt of Gronnic design with a leather coat layered over, \ + offering additional protection and superior movement. It is often used by sea raiders." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnchain" + item_state = "gronnchain" + smeltresult = /obj/item/ingot/iron diff --git a/code/modules/clothing/pants/plate_legs.dm b/code/modules/clothing/pants/plate_legs.dm index d4c4141d814..c176fc50bf2 100644 --- a/code/modules/clothing/pants/plate_legs.dm +++ b/code/modules/clothing/pants/plate_legs.dm @@ -138,3 +138,13 @@ /obj/item/clothing/pants/platelegs/silver/Initialize(mapload) . = ..() enchant(/datum/enchantment/silver) + +//.............. Gronn Platelegs .................// + +/obj/item/clothing/pants/platelegs/iron/gronn + name = "gronn norsii iron chausses" + desc = "Iron chausses with an added layer of leather for comfort and padding. The knees are adorned with a skull-like shape, reminscent of the moon." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnplatepants" + item_state = "gronnplatepants" diff --git a/code/modules/clothing/pants/trousers.dm b/code/modules/clothing/pants/trousers.dm index f80b4bfc8a9..52e2e623a04 100644 --- a/code/modules/clothing/pants/trousers.dm +++ b/code/modules/clothing/pants/trousers.dm @@ -159,3 +159,23 @@ mob_overlay_icon = 'icons/roguetown/clothing/onmob/courtphys.dmi' detail_tag = "_detail" uses_lord_coloring = LORD_PRIMARY + +//gronn trou +/obj/item/clothing/pants/trou/leather/splint/gronn + name = "gronn byrine chausses" + desc = "A pair of chain-wrapped pants with a leather subligar, ensuring both protection and comfort." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnchainpants" + item_state = "gronnchainpants" + +/obj/item/clothing/pants/trou/leather/gronn + name = "gronnic fur pants" + desc = "A pair of hardened leather pants with bone reinforcements along the legs; \ + Those of Gronn adopt a design that offers superior protection against the blunted hits and slashing claws of beasts." + icon_state = "gronnleatherpants" + item_state = "gronnleatherpants" + armor = ARMOR_GRONN_LIGHT + max_integrity = ARMOR_INT_LEG_HARDLEATHER + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm index 945276cb12c..a8a9255207c 100644 --- a/code/modules/clothing/shoes/boots.dm +++ b/code/modules/clothing/shoes/boots.dm @@ -228,3 +228,25 @@ mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/evilarmor.dmi' sleeved = 'icons/roguetown/clothing/special/onmob/evilarmor.dmi' sellprice = 0 // See above comment + +//.............. Gronn Boots .................// + +/obj/item/clothing/shoes/boots/armor/gronn + name = "gronn norsii iron boots" + desc = "Thick iron boots, tied with a leather cord; protective and sturdy. \ + Gronnic legend tells of a great warrior who fought for aeons until a hero speared him through the foot. \ + The Northmen have since followed through by protecting their feet heavily." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnplateboots" + item_state = "gronnplateboots" + +/obj/item/clothing/shoes/boots/armor/gronn + name = "gronn norsii iron boots" + desc = "Thick iron boots, tied with a leather cord; protective and sturdy. \ + Gronnic legend tells of a great warrior who fought for aeons until a hero speared him through the foot. \ + The Northmen have since followed through by protecting their feet heavily." + icon = 'icons/roguetown/clothing/special/gronn.dmi' + mob_overlay_icon = 'icons/roguetown/clothing/special/onmob/gronn.dmi' + icon_state = "gronnplateboots" + item_state = "gronnplateboots" diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 56e9017c4c1..ecf1f0cf535 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -70,6 +70,11 @@ body { src: url('otavan.ttf'); } +@font-face { + font-family: "Jorvik Informal"; + src: url("gronnic.ttf"); +} + @font-face { font-family: "Underwater Love"; src: url('deepspeak.ttf') format('truetype'); @@ -734,6 +739,7 @@ h1.alert, h2.alert {color: #c9c1ba;font-family: Pterra, TrueType;} .undead {font-family: "FriskyVampire", "Pterra";} .orc {font-family: "Thief by The Riddler", Pterra;} .otavan {font-family: "Notredame", Pterra; font-size: 200%;} +.gronnic {font-family: "Jorvik Informal", Pterra;} .beast {font-family: "Thief by The Riddler", Pterra;} .reptile {font-family: "Kingthings Petrock", Pterra; font-size: 120%;} .deepspeak {font-family: "Underwater Love", Pterra;} diff --git a/code/modules/jobs/job_types/other/gronn.dm b/code/modules/jobs/job_types/other/gronn.dm new file mode 100644 index 00000000000..ca10aee30f1 --- /dev/null +++ b/code/modules/jobs/job_types/other/gronn.dm @@ -0,0 +1,277 @@ +//the mooks +/datum/job/advclass/mercenary/gronn + title = "Gronnic Privateer" + tutorial = "You are one of many upstarts from Gronn, who sailed from the coastal capital of Danheim to the southern beaches of Azuria in search of a more... honest means of profit than the Sea Raiders of infamy." + allowed_sexes = list(MALE, FEMALE) + allowed_races = RACES_PLAYER_ALL + allowed_patrons = ALL_GRONNIC_PATRONS //Subvariant of the 'ALL_INHUMEN_PATRONS' tag, with Abyssor and Dendor as situational additions. Do not add any more to this, no matter what. + cmode_music = 'sound/music/combat_vagarian.ogg' + languages = list(/datum/language/gronnic) + pack_message = "This subclass has 2 loadouts with various stats, skills & equipment." + skills = list( + //Universal skills + /datum/skill/misc/reading = SKILL_LEVEL_NOVICE, + /datum/skill/misc/climbing = SKILL_LEVEL_JOURNEYMAN, + /datum/skill/craft/crafting = SKILL_LEVEL_NOVICE, + /datum/skill/craft/tanning = SKILL_LEVEL_APPRENTICE, + /datum/skill/labor/fishing = SKILL_LEVEL_APPRENTICE, + /datum/skill/misc/swimming = SKILL_LEVEL_EXPERT, //All of you can suck my dick they're SEAMEN + /datum/skill/craft/sewing = SKILL_LEVEL_NOVICE, + /datum/skill/craft/cooking = SKILL_LEVEL_NOVICE, + ) + + pack_title = "Available archetypes" + pack_message = "Choose your archetypes" + job_packs = list( + /datum/job_pack/gronn/grunt, + /datum/job_pack/gronn/ravager, + ) + +/datum/job_pack/gronn/grunt + name = "Leðurháls - Byrine Grunt" + pack_skills = list( + /datum/skill/combat/swords = 4, + /datum/skill/combat/shields = 4, + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/knives = 3, + /datum/skill/misc/athletics = 4, + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 2, + ) + pack_stats = list( + STAT_KEY_STR = 2, + STAT_KEY_PER = 2, + STAT_KEY_CON = 2, + STAT_KEY_INT = -1, + ) + pack_contents = list( + /obj/item/storage/backpack/satchel/black = ITEM_SLOT_BACK_L, + /obj/item/storage/belt/leather = ITEM_SLOT_BELT, + /obj/item/storage/belt/pouch/coins/poor = ITEM_SLOT_BELT_L, + /obj/item/clothing/shoes/boots/leather/atgervi =ITEM_SLOT_SHOES, + /obj/item/clothing/head/helmet/bascinet/atgervi/gronn/ownel = ITEM_SLOT_HEAD, + /obj/item/clothing/gloves/chain/gronn = ITEM_SLOT_GLOVES, + /obj/item/clothing/armor/brigandine/gronn = ITEM_SLOT_ARMOR, + /obj/item/clothing/pants/trou/leather/splint/gronn = ITEM_SLOT_PANTS, + /obj/item/clothing/wrists/bracers/iron = ITEM_SLOT_WRISTS, + /obj/item/weapon/shield/tower/buckleriron = ITEM_SLOT_BACK_R, + /obj/item/weapon/scabbard/sword = ITEM_SLOT_BELT_R, + /obj/item/clothing/neck/coif = ITEM_SLOT_NECK, + ) + pack_backpack_contents = list( + /obj/item/flashlight/flare/torch/metal = 1, + /obj/item/key/mercenary = 1, + /obj/item/weapon/knife/hunting = 1, + /obj/item/weapon/scabbard/knife = 1, + ) + +/datum/job_pack/gronn/grunt/pick_pack(mob/living/carbon/human/picker) + . = ..() + picker.merctype = 1 + ADD_TRAIT(picker, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) + picker.dna.species.soundpack_m = new /datum/voicepack/male/warrior() + + var/obj/item/weapon/sword/short/gronn/item = new() + picker.put_in_hands(item, forced = TRUE) //New heavy shortsword + +/datum/job_pack/gronn/ravager + name = "Skemmdarvargur - Ravager" + pack_skills = list( + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/whipsflails = 3, + /datum/skill/combat/shields = 3, + /datum/skill/combat/knives = 2, + /datum/skill/misc/athletics = 4, + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 2, + /datum/skill/craft/traps = 3, + ) + pack_stats = list( + STAT_KEY_CON = 2, + STAT_KEY_SPD = 2, + ) + pack_contents = list( + /obj/item/storage/backpack/satchel/black = ITEM_SLOT_BACK_L, + /obj/item/storage/belt/leather = ITEM_SLOT_BELT, + /obj/item/storage/belt/pouch/coins/poor = ITEM_SLOT_BELT_L, + /obj/item/clothing/shoes/boots/leather/atgervi = ITEM_SLOT_SHOES, + /obj/item/clothing/head/helmet/bascinet/atgervi/gronn = ITEM_SLOT_HEAD, + /obj/item/clothing/gloves/angle/gronnfur = ITEM_SLOT_GLOVES, + /obj/item/clothing/armor/leather/heavy/gronn = ITEM_SLOT_ARMOR, + /obj/item/clothing/wrists/bracers/leather/masterwork = ITEM_SLOT_WRISTS, + /obj/item/clothing/pants/trou/leather/gronn = ITEM_SLOT_PANTS, + /obj/item/clothing/neck/coif = ITEM_SLOT_NECK, + ) + pack_backpack_contents = list( + /obj/item/flashlight/flare/torch/metal = 1, + /obj/item/key/mercenary = 1, + /obj/item/weapon/knife/hunting = 1, + /obj/item/weapon/scabbard/knife = 1, + ) + +/datum/job_pack/gronn/ravager/pick_pack(mob/living/carbon/human/picker) + . = ..() + picker.merctype = 1 + ADD_TRAIT(picker, TRAIT_DODGEEXPERT, TRAIT_GENERIC) + picker.dna.species.soundpack_m = new /datum/voicepack/male/evil() //Dodge builds are evil + + var/static/list/selectable = list( + "Handclaws" = /obj/item/weapon/handclaw/gronn, //You dont get the insane fucking steel or the special Iskarn ones + "Dual Handaxes" = /obj/item/weapon/axe/stone, + ) + + var/choice = picker.select_equippable(picker, selectable, message = "Choose your weapon.", title = "TAKE UP ARMS") + + if(!choice) + return + + switch(choice) + if("Handclaws") + picker.clamped_adjust_skillrank(/datum/skill/combat/unarmed, SKILL_LEVEL_EXPERT, SKILL_LEVEL_EXPERT, TRUE) + + if("Dual Handaxes") + picker.clamped_adjust_skillrank(/datum/skill/combat/axesmaces, SKILL_LEVEL_EXPERT, SKILL_LEVEL_EXPERT, TRUE) + ADD_TRAIT(picker, TRAIT_DUALWIELDER, TRAIT_GENERIC) + + //and another + var/obj/item/weapon/axe/stone/ax = new(picker.loc) + picker.equip_to_appropriate_slot(ax) + +//the scary mook +/datum/job/advclass/mercenary/gronnheavy + title = "Fjall Járnklæddur" + tutorial = "Even within Fjall, few bear witness to the Horned Visages of the Járnklæddur; Ironclad warriors who stand against the undead armies that rise out of the 'Red Blizzard'. Those who do not have the blessing of the Iskarn Shamans within the Northern Empty oft-seek the protection of the Járnklæddur, despite their steep costs." + allowed_sexes = list(MALE, FEMALE) + allowed_races = RACES_PLAYER_ALL + total_positions = 1 //Hopefully this works. + outfit = /datum/outfit/job/mercenary/gronnheavy + traits = list(TRAIT_HEAVYARMOR) + cmode_music = 'sound/music/combat_vagarian.ogg' + languages = list(/datum/language/gronnic) + allowed_patrons = ALL_GRONNIC_PATRONS //Subvariant of the 'ALL_INHUMEN_PATRONS' tag, with Abyssor and Dendor as situational additions. Do not add any more to this, no matter what. + jobstats = list( + STATKEY_WIL = 3, //People see big numbers and start shitting their pants, but their weighted stats are 7 and it's limited to one, singular slot. This is fine. + STATKEY_STR = 3, //TO WIELD THE MAUL. THEY CAN'T USE ANY OTHER WEAPON TYPE BUT MACES ANYWAY. + STATKEY_INT = 2, + STATKEY_CON = 3, + STATKEY_PER = -1, //CAN'T SEE SHIT OUTTA THIS THING!! + STATKEY_SPD = -3 //SLOW AND UNWIELDY + ) + skills = list( + /datum/skill/misc/reading = SKILL_LEVEL_NOVICE, + /datum/skill/misc/climbing = SKILL_LEVEL_JOURNEYMAN, + /datum/skill/craft/crafting = SKILL_LEVEL_NOVICE, + /datum/skill/craft/tanning = SKILL_LEVEL_APPRENTICE, + /datum/skill/labor/fishing = SKILL_LEVEL_APPRENTICE, + /datum/skill/misc/swimming = SKILL_LEVEL_EXPERT, //All of you can suck my dick they're SEAMEN + /datum/skill/craft/sewing = SKILL_LEVEL_NOVICE, + /datum/skill/craft/cooking = SKILL_LEVEL_NOVICE, + /datum/skill/combat/axesmaces = SKILL_LEVEL_EXPERT, + /datum/skill/combat/knives = SKILL_LEVEL_JOURNEYMAN, + /datum/skill/combat/wrestling = SKILL_LEVEL_JOURNEYMAN, + /datum/skill/combat/unarmed = SKILL_LEVEL_JOURNEYMAN, + /datum/skill/misc/athletics = SKILL_LEVEL_EXPERT, + ) + +/datum/outfit/job/mercenary/gronnheavy/pre_equip(mob/living/carbon/human/H) + ..() + H.dna.species.soundpack_m = new /datum/voicepack/male/evil() //It's fucking cool okay + shoes = /obj/item/clothing/shoes/boots/armor/gronn + head = /obj/item/clothing/head/helmet/heavy/bucket/gronn + gloves = /obj/item/clothing/gloves/plate/iron/gronn + armor = /obj/item/clothing/armor/plate/iron/gronn + cloak = /obj/item/clothing/cloak/volfmantle //Aura farming. + wrists = /obj/item/clothing/wrists/bracers/iron //Weakspot. + pants = /obj/item/clothing/pants/platelegs/iron/gronn + r_hand = /obj/item/weapon/mace/goden/maul + neck = /obj/item/clothing/neck/bevor/iron + backl = /obj/item/storage/backpack/satchel/black + belt = /obj/item/storage/belt/leather + beltl = /obj/item/storage/belt/pouch/coins/poor + + backpack_contents = list( + /obj/item/flashlight/flare/torch/metal = 1, + /obj/item/key/mercenary = 1, + /obj/item/weapon/knife/hunting = 1, + /obj/item/weapon/scabbard/knife = 1 + ) + H.merctype = 1 + +//the special mooks +/datum/job/advclass/mercenary/shaman + title = "Atgervi Shaman" + tutorial = "You are a Shaman of the Fjall, The Northern Empty. Shamans are savage combatants who commune with the Ecclesical Beast Gods through ritualistic violence, rather than idle prayer." + outfit = /datum/outfit/job/roguetown/mercenary/atgervishaman + allowed_sexes = list(MALE, FEMALE) + allowed_races = RACES_PLAYER_ALL + allowed_patrons = ALL_GRONNIC_PATRONS + languages = list(/datum/language/gronnic) + cmode_music = 'sound/music/combat_shaman2.ogg' + traits = list(TRAIT_STRONGBITE, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_NOPAINSTUN) + jobstats = list( + STATKEY_STR = 3, + STATKEY_CON = 2, + STATKEY_SPD = 1, + STATKEY_INT = -1, + STATKEY_PER = -1 + ) + skills = list( + /datum/skill/misc/swimming = SKILL_LEVEL_APPRENTICE, + /datum/skill/misc/climbing = SKILL_LEVEL_APPRENTICE, + /datum/skill/misc/sneaking = SKILL_LEVEL_APPRENTICE, + /datum/skill/combat/wrestling = SKILL_LEVEL_EXPERT, + /datum/skill/combat/unarmed = SKILL_LEVEL_EXPERT, + /datum/skill/misc/reading = SKILL_LEVEL_APPRENTICE, + /datum/skill/misc/athletics = SKILL_LEVEL_EXPERT, + /datum/skill/craft/tanning = SKILL_LEVEL_APPRENTICE, + /datum/skill/magic/holy = SKILL_LEVEL_JOURNEYMAN, + ) + +/datum/job/advclass/mercenary/shaman/after_spawn(mob/living/carbon/human/spawned, client/player_client) + . = ..() + var/datum/devotion/cleric = new /datum/devotion(spawned, spawned.patron) + cleric.grant_to(spawned) + cleric.make_shaman()//Capped to T2 miracles. + +/datum/outfit/job/roguetown/mercenary/atgervishaman/pre_equip(mob/living/carbon/human/H) + ..() + H.mind?.current.faction += "[H.name]_faction" + H.dna.species.soundpack_m = new /datum/voicepack/male/warrior() + + head = /obj/item/clothing/head/helmet/leather/shaman_hood + gloves = /obj/item/clothing/gloves/angle/gronnfur + armor = /obj/item/clothing/armor/leather/heavy/atgervi + shirt = /obj/item/clothing/shirt/undershirt + pants = /obj/item/clothing/pants/trou/leather/atgervi + wrists = /obj/item/clothing/wrists/bracers + shoes = /obj/item/clothing/shoes/boots/leather/atgervi + backr = /obj/item/storage/backpack/satchel/black + belt = /obj/item/storage/belt/leather + neck = /obj/item/storage/belt/pouch/coins/poor + beltl = /obj/item/flashlight/flare/torch + H.put_in_hands(new /obj/item/weapon/handclaw/gronn) + + switch(H.patron?.type) + if(/datum/patron/inhumen/zizo) + neck = /obj/item/clothing/neck/psycross/inhumen/gronn + if(/datum/patron/inhumen/graggar) + neck = /obj/item/clothing/neck/psycross/inhumen/graggar/gronn + if(/datum/patron/inhumen/matthios) + neck = /obj/item/clothing/neck/psycross/inhumen/matthios/gronn + if(/datum/patron/inhumen/baotha) + neck = /obj/item/clothing/neck/psycross/inhumen/baothagronn + if(/datum/patron/divine/abyssor) + neck = /obj/item/clothing/neck/psycross/abyssor/gronn + if(/datum/patron/divine/dendor) + neck = /obj/item/clothing/neck/psycross/dendor/gronn + else + neck = /obj/item/clothing/neck/psycross/inhumen/gronn/special //Failsafe. Gives a specially-fluffed version of Zizo's talisman, which can be reinterpreted as needed. + + backpack_contents = list( + /obj/item/key/mercenary = 1, + /obj/item/weapon/knife/hunting = 1, + /obj/item/weapon/scabbard/knife = 1, + /obj/item/storage/belt/pouch/coins/poor = 1, + ) + + H.merctype = 1 diff --git a/code/modules/language/gronnic.dm b/code/modules/language/gronnic.dm new file mode 100644 index 00000000000..af1d2d43216 --- /dev/null +++ b/code/modules/language/gronnic.dm @@ -0,0 +1,20 @@ +// Language +/datum/language/gronnic + name = "Gronnic" + desc = "The harsh tongue of the Northern Highlands." + speech_verb = "remarks" + ask_verb = "inquires" + exclaim_verb = "asserts" + key = "n" + space_chance = 45 + default_priority = 90 + icon_state = "zalad" + spans = list(SPAN_GRONNIC) + syllables = list( + "to", "ost", "no", "na", "ni", "ko", "ne", "en", "po", "ra", "li", + "on", "ro", "er", "go", "ol", "al", "ot", "ov", "re", "vo", "ka", + "pro", "ta", "by", "el", "os", "yet", "la", "an", "or", "de", "ve", + "lo", "te", "byl", "štó", "eni", "ego", "astv", "pro", "ver", "ogo", "èto", + "pri", "tor", "est", "oto", "enn", "ova", "oro", "kak", "plu", "cha", "fö", "är", + "ha", "ti", "va", "ör", "för", "int", "til", "ans", "der", "ara", "han", "var", "det", + "och", "ing", "sam", "onne", "gen", "eska", "ig", "ende", "lig", "nin") diff --git a/icons/roguetown/clothing/neck.dmi b/icons/roguetown/clothing/neck.dmi index 8203b9929b7..7b44753c867 100644 Binary files a/icons/roguetown/clothing/neck.dmi and b/icons/roguetown/clothing/neck.dmi differ diff --git a/icons/roguetown/weapons/32/swords.dmi b/icons/roguetown/weapons/32/swords.dmi index 50ef2b91a9b..dae71aa9fe5 100644 Binary files a/icons/roguetown/weapons/32/swords.dmi and b/icons/roguetown/weapons/32/swords.dmi differ diff --git a/icons/roguetown/weapons/64/maces.dmi b/icons/roguetown/weapons/64/maces.dmi index 74eb5ada7f9..77bfccd4a18 100644 Binary files a/icons/roguetown/weapons/64/maces.dmi and b/icons/roguetown/weapons/64/maces.dmi differ diff --git a/interface/fonts/languages/gronnic.ttf b/interface/fonts/languages/gronnic.ttf new file mode 100644 index 00000000000..393c0a3a252 Binary files /dev/null and b/interface/fonts/languages/gronnic.ttf differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 9f5e33d1eff..dd6d0fae18f 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -110,6 +110,7 @@ h1.alert, h2.alert {color: #c9c1ba;font-family: Pterra, TrueType;} .hellspeak {font-family: "Nosfer", Pterra;} .undead {font-family: "FriskyVampire", Pterra;} .orc {font-family: "Thief by The Riddler", Pterra;} +.gronnic {font-family: "Jorvik Informal", Pterra;} .beast {font-family: "Thief by The Riddler", Pterra;} .deepspeak {font-family: "Underwater Love", Pterra;} diff --git a/sound/effects/hood_ignite.ogg b/sound/effects/hood_ignite.ogg new file mode 100644 index 00000000000..dda5429cb98 Binary files /dev/null and b/sound/effects/hood_ignite.ogg differ diff --git a/sound/foley/equip/cloak (3).ogg b/sound/foley/equip/cloak (3).ogg new file mode 100644 index 00000000000..a4cce413fe1 Binary files /dev/null and b/sound/foley/equip/cloak (3).ogg differ diff --git a/sound/misc/toggle_lamp.ogg b/sound/misc/toggle_lamp.ogg new file mode 100644 index 00000000000..d257c584233 Binary files /dev/null and b/sound/misc/toggle_lamp.ogg differ diff --git a/sound/music/combat_shaman2.ogg b/sound/music/combat_shaman2.ogg new file mode 100644 index 00000000000..b4b521b72ab Binary files /dev/null and b/sound/music/combat_shaman2.ogg differ diff --git a/sound/music/combat_vagarian.ogg b/sound/music/combat_vagarian.ogg new file mode 100644 index 00000000000..b78218f4c7e Binary files /dev/null and b/sound/music/combat_vagarian.ogg differ diff --git a/vanderlin.dme b/vanderlin.dme index cccfeec54d7..57a9790980f 100644 --- a/vanderlin.dme +++ b/vanderlin.dme @@ -1451,6 +1451,7 @@ #include "code\datums\status_effects\debuffs\drowsiness.dm" #include "code\datums\status_effects\debuffs\drugginess.dm" #include "code\datums\status_effects\debuffs\eye_blur.dm" +#include "code\datums\status_effects\debuffs\gronn.dm" #include "code\datums\status_effects\debuffs\jitteriness.dm" #include "code\datums\status_effects\debuffs\phobia.dm" #include "code\datums\status_effects\debuffs\silenced.dm" @@ -1786,6 +1787,7 @@ #include "code\game\objects\items\weapons\melee\blunt.dm" #include "code\game\objects\items\weapons\melee\flail.dm" #include "code\game\objects\items\weapons\melee\godweapons.dm" +#include "code\game\objects\items\weapons\melee\gronn.dm" #include "code\game\objects\items\weapons\melee\knives.dm" #include "code\game\objects\items\weapons\melee\polearms.dm" #include "code\game\objects\items\weapons\melee\special.dm" @@ -2889,6 +2891,7 @@ #include "code\modules\jobs\job_types\other\deathknight.dm" #include "code\modules\jobs\job_types\other\folkhero.dm" #include "code\modules\jobs\job_types\other\goblin.dm" +#include "code\modules\jobs\job_types\other\gronn.dm" #include "code\modules\jobs\job_types\other\mercenary.dm" #include "code\modules\jobs\job_types\other\rousman.dm" #include "code\modules\jobs\job_types\other\skeleton.dm" @@ -2977,6 +2980,7 @@ #include "code\modules\language\dwarf.dm" #include "code\modules\language\elf.dm" #include "code\modules\language\fae.dm" +#include "code\modules\language\gronnic.dm" #include "code\modules\language\halfspeak.dm" #include "code\modules\language\hellspeak.dm" #include "code\modules\language\language.dm"