diff --git a/src/Classes/GemSelectControl.lua b/src/Classes/GemSelectControl.lua index f9bd47ef6..96b6736b3 100644 --- a/src/Classes/GemSelectControl.lua +++ b/src/Classes/GemSelectControl.lua @@ -568,6 +568,12 @@ function GemSelectClass:AddGemTooltip(gemInstance) end end end + if grantedEffect.flavourText and main.showFlavourText then + self.tooltip:AddSeparator(10) + for _, line in ipairs(grantedEffect.flavourText) do + self.tooltip:AddLine(16, colorCodes.UNIQUE .. line) + end + end end function GemSelectClass:AddGrantedEffectInfo(gemInstance, grantedEffect, addReq) diff --git a/src/Data/Skills/sup_dex.lua b/src/Data/Skills/sup_dex.lua index a8a8397f9..ee7bd7ac7 100644 --- a/src/Data/Skills/sup_dex.lua +++ b/src/Data/Skills/sup_dex.lua @@ -160,6 +160,7 @@ skills["SupportAilithLineagePlayer"] = { excludeSkillTypes = { }, gemFamily = { "AilithLineage",}, isLineage = true, + flavourText = {"Ailith awoke to find her fire iridescent, and her mind alive", "with visions. By morning, she began teaching what she'd", "seen... thus was born the Keepers of the Pale Vision.", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -400,6 +401,7 @@ skills["SupportArakaalisLustPlayer"] = { excludeSkillTypes = { }, gemFamily = { "ArakaaliLineage",}, isLineage = true, + flavourText = {"She flashed a smile full of wicked teeth. \"Sin, my darling.", "Forget your Maraketh woes.\" She bit and tore and reveled;", "he lay trapped in silk, wrought with despair and ecstasy.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -432,6 +434,7 @@ skills["SupportAmmoConservationPlayerFour"] = { excludeSkillTypes = { }, gemFamily = { "AmmoConservation",}, isLineage = true, + flavourText = {"Confident their enemy was defenseless, the Keitans brazenly", "charged the walls - but Arjun's ammunition supply reports", "had been... 'inaccurate'... just like everything else Bardiyan.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -2332,6 +2335,7 @@ skills["SupportGarukhansResolvePlayer"] = { excludeSkillTypes = { SkillType.Persistent, SkillType.HasUsageCondition, SkillType.SupportedByGarukhan, SkillType.NOT, SkillType.AND, SkillType.Instant, SkillType.Cooldown, SkillType.Triggered, SkillType.UsedByTotem, }, gemFamily = { "HitAndRun",}, isLineage = true, + flavourText = {"At the last, her hope gone - but not her resolve - she threw her", "beloved Tangletongue. That was the day a god bled. For this, the", "Great Roc graced a Maraketh warrior with a feather for the first time.", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -3834,6 +3838,7 @@ skills["SupportPietysMercyPlayer"] = { excludeSkillTypes = { }, gemFamily = { "Mercy",}, isLineage = true, + flavourText = {"The prisoners cowered in their cages when Piety stalked by.", "She gave them bread and said flatly, \"You needn't be so", "frightened. I don't want to kill you... I'm going to use you.\"", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -4487,6 +4492,7 @@ skills["SupportRakiatasFlowPlayer"] = { excludeSkillTypes = { }, gemFamily = { "RakiataLineage",}, isLineage = true, + flavourText = {"The Tasalio Tribe developed their own Way, seeing", "the world not as it is, but as it should be, given its", "roiling and endless grace of constant motion.", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -4615,6 +4621,7 @@ skills["SupportCombatReloadPlayer"] = { excludeSkillTypes = { }, gemFamily = { "DoubleBarrel",}, isLineage = true, + flavourText = {"\"No plan. No stealth. I want shock. Awe. I want them to", "know who did it, and I want them telling tales. That's the", "only way for us to earn their respect... and their fear.\"", }, levels = { [1] = { manaMultiplier = 10, levelRequirement = 0, }, }, @@ -4914,6 +4921,7 @@ skills["SupportRigwaldsFerocityPlayer"] = { excludeSkillTypes = { SkillType.NoAttackOrCastTime, SkillType.Instant, }, gemFamily = { "RigwaldLineage",}, isLineage = true, + flavourText = {"\"Skothe kept us idle, sitting safe on these islands, while our", "brethren remain slaves. We are one and the same! We must", "fight! So, I bring you his head. I am now your Wolven King!\"", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -5428,6 +5436,7 @@ skills["SupportTacatisIrePlayer"] = { excludeSkillTypes = { }, gemFamily = { "TacatiLineage",}, isLineage = true, + flavourText = {"He almost saved the Vaal. His unique poison made it past", "the Queen's cupbearers; he had only to direct his anger...", "but in her presence, he could feel naught but lust.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -5464,6 +5473,7 @@ skills["SupportTulsStillnessPlayer"] = { excludeSkillTypes = { }, gemFamily = { "BreachLineage",}, isLineage = true, + flavourText = {"\"Countless graves glow silently in endless rows that stretch", "on unseen. The living lie within, but do not decay, do not", "die. Their eyes remain open, their essence stilled, waiting.\"", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 59d0ecb3b..1773bdfd6 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -78,6 +78,7 @@ skills["SupportAhnsCitadelPlayer"] = { excludeSkillTypes = { }, gemFamily = { "Fortress",}, isLineage = true, + flavourText = {"As possessed golems ravaged the land, Aul - crowned Ahn", "by blood and tyranny - began the last ritual, causing azurite", "crystals to rupture and grow throughout his doomed citadel.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -199,6 +200,7 @@ skills["SupportArbitersIgnitionPlayer"] = { excludeSkillTypes = { }, gemFamily = { "ArbiterLineage",}, isLineage = true, + flavourText = {"\"This carving seems to depict curled bodies floating in vats...", "the next shows all but one of them dying. What were they", "trying to do? It seems they kept trying... kept experimenting...\"", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -298,6 +300,7 @@ skills["SupportAtzirisAllurePlayer"] = { excludeSkillTypes = { }, gemFamily = { "AtziriLineage",}, isLineage = true, + flavourText = {"Such was her seductive power, every noble in the court fell", "over themselves to do her bidding. Winning a single glance", "away from her mirror meant more than their lives.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -1674,6 +1677,7 @@ skills["SupportDiallasDesirePlayer"] = { excludeSkillTypes = { }, gemFamily = { "DiallasDesire",}, isLineage = true, + flavourText = {"\"I will become your Gemling Queen, my love, but not", "with such dull stones. I want to give myself to you", "for eternity. Surely we can seek perfection together?\"", }, levels = { [1] = { reservationMultiplier = -10, manaMultiplier = -10, levelRequirement = 0, }, }, @@ -1706,6 +1710,7 @@ skills["SupportDoedresUndoingPlayer"] = { excludeSkillTypes = { }, gemFamily = { "CursedGround",}, isLineage = true, + flavourText = {"\"Let the meat show us the way. Hail the meat, praise the", "meat. The meat is both debasement and divinity alike. The", "meat shall lead us down the path to true enlightenment.\"", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -2189,6 +2194,7 @@ skills["SupportEshsRadiancePlayer"] = { excludeSkillTypes = { }, gemFamily = { "BreachLineage",}, isLineage = true, + flavourText = {"\"Where life once thrived, now only metal grows, inching", "like endless worms through the ash. Where silence fell,", "now sourceless thought whispers numbers in the dark.\"", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -3363,6 +3369,7 @@ skills["SupportFlukePlayerTwo"] = { excludeSkillTypes = { }, gemFamily = { "Fluke",}, isLineage = true, + flavourText = {"Few mortals can comprehend the horror of experiencing", "every possibility. Chaos alone takes joy in the", "unthinkable and the unimaginable made manifest.", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -3401,6 +3408,7 @@ skills["SupportKalisasCrescendoPlayer"] = { excludeSkillTypes = { }, gemFamily = { "KalisasCrescendo",}, isLineage = true, + flavourText = {"\"Her voice reached into my chest and plucked my beating", "heart from its cage. By the wide, glistening eyes of my", "fellow punters, I knew that they felt it, too.\"", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -3433,6 +3441,7 @@ skills["SupportKulemaksDominionPlayer"] = { excludeSkillTypes = { }, gemFamily = { "AbyssalLineageTwo",}, isLineage = true, + flavourText = {"Still a shadow of his former self, Kulemak turned to deception.", "He promised Ahn untold power and mastery, in exchange for", "a single golem. \"After all, what harm could one servant do?\"", }, levels = { [1] = { manaMultiplier = 30, levelRequirement = 0, }, }, @@ -3465,6 +3474,7 @@ skills["SupportKurgalsLeashPlayer"] = { excludeSkillTypes = { }, gemFamily = { "KurgalLineage",}, isLineage = true, + flavourText = {"Kurgal's first body was a mere stone golem, enslaved by a", "collar. He found such ecstasy in the power of dominion,", "he clawed his way free... and soon, supplanted a Lich Lord.", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -4779,6 +4789,7 @@ skills["SupportWildshardsPlayerThree"] = { excludeSkillTypes = { SkillType.ProjectilesNumberModifiersNotApplied, }, gemFamily = { "AdditionalProjectiles",}, isLineage = true, + flavourText = {"She holds in her hand a shattered crystal, a vision of her desire: to", "see her sister's silver palace obliterated, to see it cast across the", "heavens. One cross word, and the sky will rain down her fury.", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -4995,6 +5006,7 @@ skills["SupportTecrodsRevengePlayer"] = { excludeSkillTypes = { SkillType.MinionsAreUndamagable, }, gemFamily = { "LastGasp",}, isLineage = true, + flavourText = {"The Lich Lords destroyed his body, but with his dying fury,", "Tecrod found a way. He lurks deep, in the blood, in the flesh,", "in the Well... perhaps walking among them even now, unseen.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -5166,6 +5178,7 @@ skills["SupportVarashtasBlessingPlayer"] = { excludeSkillTypes = { }, gemFamily = { "VarashtasBlessing",}, isLineage = true, + flavourText = {"\"These traditions we shall set forth, so that we may remain", "strong, so that we may endure throughout the ages. Not to", "bind, not to dominate, but to protect... and guide.\"", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -5228,6 +5241,7 @@ skills["SupportVilentasPropulsionPlayer"] = { excludeSkillTypes = { SkillType.FixedSpeedProjectile, }, gemFamily = { "ProjectileSpeed",}, isLineage = true, + flavourText = {"Day and night, she hammered away, obsessed with proving it", "could be done; a vast ring of artifice under the earth, pushing", "energy to speeds never before seen - all to prove Qotra wrong.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -5488,6 +5502,7 @@ skills["SupportZarokhsRefrainPlayer"] = { excludeSkillTypes = { SkillType.Cooldown, SkillType.SupportedByZarokh, SkillType.NOT, SkillType.AND, SkillType.SummonsTotem, SkillType.UsedByTotem, SkillType.Trapped, SkillType.RemoteMined, SkillType.Vaal, SkillType.Channel, SkillType.Attack, SkillType.Triggered, }, gemFamily = { "SpellEcho",}, isLineage = true, + flavourText = {"Reliving the same day for all time, Zarokh raged against", "the moments that made up his prison. There would be", "no redemption, for he had broken his only barya.", }, levels = { [1] = { storedUses = 1, cooldown = 5, levelRequirement = 0, manaMultiplier = 30, }, }, diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 2956037ce..f47ca78e3 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -109,6 +109,7 @@ skills["SupportAmanamusTithePlayer"] = { excludeSkillTypes = { }, gemFamily = { "AmanamusTithe",}, isLineage = true, + flavourText = {"Those that serve the Liege of the Lightless are his, utterly.", "Blood, flesh, and soul are fodder to bend to his will.", "Under a Lich Lord, not even death is an escape.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -529,6 +530,7 @@ skills["SupportAtaluiBloodlettingPlayer"] = { excludeSkillTypes = { SkillType.Blessing, SkillType.Persistent, }, gemFamily = { "Lifetap",}, isLineage = true, + flavourText = {"Atazek and Atalui rose, battered and dark, bleeding from a hundred", "different wounds. She gave her brother a sinister grin. \"Shall we", "show them what happens to those who challenge the Vaal?\"", }, levels = { [1] = { manaMultiplier = 50, levelRequirement = 0, }, }, @@ -1235,6 +1237,7 @@ skills["SupportBrutusBrainPlayer"] = { excludeSkillTypes = { }, gemFamily = { "MeatShield",}, isLineage = true, + flavourText = {"Shavronne gleefully raised her arms to the sky as lightning", "flashed. She'd done it! Her creation was perfect! Invincible.", "Immortal! But she soon realized there was one piece missing...", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -1761,6 +1764,7 @@ skills["SupportDaressosPassionPlayer"] = { excludeSkillTypes = { }, gemFamily = { "DaressoLineage",}, isLineage = true, + flavourText = {"\"I raised my eyes to look upon my death. Instead, I saw her.", "Merveil. Fighting had always been about survival. Now the", "fight became about something much greater... love.\"", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -2318,6 +2322,7 @@ skills["SupportEinharsBeastritePlayer"] = { excludeSkillTypes = { }, gemFamily = { "Behead",}, isLineage = true, + flavourText = {"\"You must cut the beast, like this,\" he told the wide-eyed", "and forgetful woman. \"The juiciest parts are in the middle!\"", "She nodded, and began relearning the way of the wilds.", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -4131,6 +4136,7 @@ skills["SupportKaomsMadnessPlayer"] = { excludeSkillTypes = { }, gemFamily = { "Fissures",}, isLineage = true, + flavourText = {"As King Kaom delved further into Wraeclast, so, too, did he", "draw closer to the Beast. One night, in a nightmarish fit, he", "swung his axe at his own men, slaughtering hundreds.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -4495,6 +4501,7 @@ skills["SupportCorruptingCryPlayerThree"] = { excludeSkillTypes = { }, gemFamily = { "CorruptingCry",}, isLineage = true, + flavourText = {"The water used to cool the Locus of Corruption ran red", "as blood, bright as flame, and bubbled with strange heat.", "\"Drink,\" he offered. \"Suffuse your flesh with power!\"", }, ignoreMinionTypes = true, levels = { [1] = { levelRequirement = 0, }, @@ -6305,6 +6312,7 @@ skills["SupportHardyTotemsPlayerThree"] = { excludeSkillTypes = { }, gemFamily = { "HardyTotems",}, isLineage = true, + flavourText = {"A scavenging warrior found Tawhoa meditating in a grove.", "\"There is only so much jade in this world,\" intoned the god.", "\"Take my gift to your tribe. Ironwood will grow for all time.\"", }, levels = { [1] = { manaMultiplier = 10, levelRequirement = 0, }, }, @@ -6547,6 +6555,7 @@ skills["SupportUhtredAuguryPlayer"] = { excludeSkillTypes = { SkillType.SingleLevelSkill, }, gemFamily = { "UhtredLineage",}, isLineage = true, + flavourText = {"Studying the ill omens of the stars, Uhtred came to suspect", "something was very wrong among the first Kalguurans.", "Olroth, Vorana, Medved... three there were. Three dangers.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -6578,6 +6587,7 @@ skills["SupportUhtredExodusPlayer"] = { excludeSkillTypes = { SkillType.SingleLevelSkill, }, gemFamily = { "UhtredLineage",}, isLineage = true, + flavourText = {"By the time Uhtred realised the truth, only Vorana remained", "to defend them. While the rest fled, she implanted her flesh", "with gems and set forth alone to face the endless hordes.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -6609,6 +6619,7 @@ skills["SupportUhtredOmenPlayer"] = { excludeSkillTypes = { SkillType.SingleLevelSkill, }, gemFamily = { "UhtredLineage",}, isLineage = true, + flavourText = {"Day and night, his priests followed each of the Kalguuran", "heroes. When Medved disappeared, Uhtred grew even more", "paranoid. Now, only two remained... Olroth and Vorana.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -6973,6 +6984,7 @@ skills["SupportUruksSmeltingPlayer"] = { excludeSkillTypes = { }, gemFamily = { "ArmourDemolisher",}, isLineage = true, + flavourText = {"The volcano roared, but there was no thunder, only the boom", "of Uruk's hammer. Wraeclast had forgotten the old alliance,", "but by the Molten One's will, the fires would rage again.", }, levels = { [1] = { levelRequirement = 0, }, }, @@ -7005,6 +7017,7 @@ skills["SupportUulNetolsEmbracePlayer"] = { excludeSkillTypes = { }, gemFamily = { "BreachLineage",}, isLineage = true, + flavourText = {"\"The Lords could not breathe, so they grew new lungs.", "The Lords could not venture, so they grew new skin.", "The Lords were alone, so they grew us, to serve them.\"", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, @@ -7245,6 +7258,7 @@ skills["SupportXophsPyrePlayer"] = { excludeSkillTypes = { }, gemFamily = { "BreachLineage",}, isLineage = true, + flavourText = {"\"They drank until only dust remained. Ate until their gums", "bled rust. Such was their greed, the only thing that remains", "of the Broken Sun... is the Red Pyre, the Torus Eternal.\"", }, levels = { [1] = { manaMultiplier = 20, levelRequirement = 0, }, }, diff --git a/src/Export/Scripts/skills.lua b/src/Export/Scripts/skills.lua index d9b0db5b9..d62d66eaa 100644 --- a/src/Export/Scripts/skills.lua +++ b/src/Export/Scripts/skills.lua @@ -13,6 +13,23 @@ local function mapAST(ast) return "SkillType."..(skillTypeMap[ast._rowIndex] or ("Unknown"..ast._rowIndex)) end +local function cleanAndSplit(str) -- Same as in Flavour Text exporter. + -- Normalize newlines + str = str:gsub("\r\n", "\n") + + local lines = {} + for line in str:gmatch("[^\n]+") do + line = line:match("^%s*(.-)%s*$") -- trim each line + if line ~= "" then + -- Escape quotes + line = line:gsub('"', '\\"') + table.insert(lines, line) + end + end + + return lines +end + local weaponClassMap = { ["Claw"] = "Claw", ["Dagger"] = "Dagger", @@ -319,6 +336,13 @@ directiveTable.skill = function(state, args, out) end if supportGem.Lineage then out:write('\tisLineage = true,\n') + if supportGem.FlavourText then + out:write('\tflavourText = {') + for _, line in ipairs(cleanAndSplit(supportGem.FlavourText.Text)) do + out:write('"', line, '", ') + end + out:write('},\n') + end end end if skill.isTrigger then