Module: Lich::Gemstone::Infomon::Parser::Pattern

Defined in:
documented/gemstone/infomon/parser.rb

Constant Summary collapse

CharRaceProf =

Regex patterns grouped for Info, Exp, Skill and PSM parsing - calls upsert_batch to reduce db impact

/^Name:\s+(?<name>[A-z\s'-]+)\s+Race:\s+(?<race>[A-z]+|[A-z]+(?: |-)[A-z]+)\s+Profession:\s+(?<profession>[-A-z]+)/.freeze
CharGenderAgeExpLevel =
/^Gender:\s+(?<gender>[A-z]+)\s+Age:\s+(?<age>[,0-9]+)\s+Expr:\s+(?<experience>[0-9,]+)\s+Level:\s+(?<level>[0-9]+)/.freeze
Stat =
/^\s*(?<stat>[A-z]+)\s\((?:STR|CON|DEX|AGI|DIS|AUR|LOG|INT|WIS|INF)\):\s+(?<value>[0-9]+)\s\((?<bonus>-?[0-9]+)\)\s+[.]{3}\s+(?<enhanced_value>\d+)\s+\((?<enhanced_bonus>-?\d+)\)/.freeze
StatEnd =
/^Mana:\s+-?\d+\s+Silver:\s(?<silver>-?[\d,]+)$/.freeze
Fame =

serves as ExprStart

/^\s+Level: \d+\s+Fame: (?<fame>-?[\d,]+)$/.freeze
RealExp =
%r{^\s+Experience: [\d,]+\s+Field Exp: (?<fxp_current>[\d,]+)/(?<fxp_max>[\d,]+)$}.freeze
AscExp =
/^\s+Ascension Exp: (?<ascension_experience>[\d,]+)\s+Recent Deaths: [\d,]+$/.freeze
TotalExp =
/^\s+Total Exp: (?<total_experience>[\d,]+)\s+Death's Sting: (?<deaths_sting>None|Light|Moderate|Sharp|Harsh|Piercing|Crushing)$/.freeze
LTE =
/^\s+Long-Term Exp: (?<long_term_experience>[\d,]+)\s+Deeds: (?<deeds>\d+)$/.freeze
ExprEnd =
/^\s+Exp (?:until lvl|to next TP): -?[\d,]+/.freeze
SkillStart =
/^\s\w+\s\(at level \d+\), your current skill bonuses and ranks/.freeze
Skill =
/^\s+(?<name>[[a-zA-Z]\s\-']+)\.+\|\s+(?<bonus>\d+)\s+(?<ranks>\d+)/.freeze
SpellRanks =
/^\s+(?<name>[\w\s\-']+)\.+\|\s+(?<rank>\d+).*$/.freeze
SkillEnd =
/^Training Points: \d+ Phy \d+ Mnt/.freeze
GoalsDetected =
/^Skill goals updated!$/.freeze
GoalsEnded =
/^Further information can be found in the FAQs\.$/.freeze
PSMStart =
/^\w+, the following (?<cat>Ascension Abilities|Armor Specializations|Combat Maneuvers|Feats|Shield Specializations|Weapon Techniques) are available:$/.freeze
PSM =
/^\s+(?<name>[A-z\s\-':]+)\s+(?<command>[a-z]+)\s+(?<ranks>\d+)\/(?<max>\d+).*$/.freeze
PSMEnd =
/^   Subcategory: all$/.freeze
Levelup =

Single / low impact - single db write

/^\s+(?<stat>\w+)\s+\(\w{3}\)\s+:\s+(?<value>\d+)\s+(?:\+1)\s+\.\.\.\s+(?<bonus>\d+)(?:\s+\+1)?$/.freeze
SpellsSolo =

from SPELL command

/^(?<name>Bard|Cleric|Empath|Minor (?:Elemental|Mental|Spiritual)|Major (?:Elemental|Mental|Spiritual)|Paladin|Ranger|Savant|Sorcerer|Wizard)(?: Base)?\.+(?<rank>\d+).*$/.freeze
Citizenship =
/^You currently have .*? citizenship in (?<town>.*)\.$/.freeze
NoCitizenship =
/^You don't seem to have citizenship\./.freeze
Society =
/^\s+You are a (?<standing>Master|member) (?:in|of) the (?<society>Order of Voln|Council of Light|Guardians of Sunfist)(?: at (?:rank|step) (?<rank>[0-9]+))?\.$/.freeze
NoSociety =
/^\s+You are not a member of any society at this time./.freeze
SocietyStep =
/^(?:Zarak|Faylanna|Draelox|Marl|Vindar|Taryn|Meaha|Oxanna|Cyndelle) traces the outline of a sigil into the air before you and says|^The High Taskmaster looks at you, consults (?:her|his) notes, and then announces in a loud voice|^The monk concludes ceremoniously,/.freeze
SocietyJoin =
/^The Grandmaster says, "Welcome to the Order|^The Grandmaster says, "You are now a member of the Guardians of Sunfist|^The Grand Poohbah smiles broadly.  "Welcome to the Lodge," he cries/.freeze
SocietyResign =
/^The Grandmaster says, "I'm sorry to hear that.  You are no longer in our service.|^The Poohbah looks at you sternly.  "I had high hopes for you," he says, "but if this be your decision, so be it\.  I hereby strip you of membership|^The Grandmaster says, "I'm sorry to hear that,.+I wish you well with any of your future endeavors./.freeze
Warcries =
/^\s+(?<name>(?:Bertrandt's Bellow|Yertie's Yowlp|Gerrelle's Growl|Seanette's Shout|Carn's Cry|Horland's Holler))$/.freeze
NoWarcries =
/^You must be an active member of the Warrior Guild to use this skill\.$/.freeze
LearnPSM =
/^You have now achieved rank (?<rank>\d+) of (?<psm>[A-z\s]+), costing \d+ (?<cat>[A-z]+) .*?points\.$/
LearnTechnique =

Technique covers Specialization (Armor and Shield), Technique (Weapon), and Feat

/^\[You have (?:gained|increased to) rank (?<rank>\d+) of (?<cat>[A-z]+).*: (?<psm>[A-z\s\-':]+)\.\]$/.freeze
UnlearnPSM =
/^You decide to unlearn rank (?<rank>\d+) of (?<psm>[A-z\s\-':]+), regaining \d+ (?<cat>[A-z]+) .*?points\.$/
UnlearnTechnique =
/^\[You have decreased to rank (?<rank>\d+) of (?<cat>[A-z]+).*: (?<psm>[A-z\s\-':]+)\.\]$/.freeze
LostTechnique =
/^\[You are no longer trained in (?<cat>[A-z]+) .*: (?<psm>[A-z\s\-':]+)\.\]$/.freeze
Resource =
/^(?:Essence|Necrotic Energy|Lore Knowledge|Motes of Tranquility|Devotion|Nature's Grace|Grit|Luck Inspiration|Guile|Vitality): (?<weekly>[0-9,]+)\/50,000 \(Weekly\)\s+(?<total>[0-9,]+)\/200,000 \(Total\)$/.freeze
Suffused =
/^Suffused (?<type>(?:Essence|Necrotic Energy|Lore Knowledge|Motes of Tranquility|Devotion|Nature's Grace|Grit|Luck Inspiration|Guile|Vitality)): (?<suffused>[0-9,]+)$/.freeze
VolnFavor =
/^Voln Favor: (?<favor>[-\d,]+)$/.freeze
CovertArtsCharges =
/^Covert Arts Charges: (?<charges>[-\d,]+)\/200$/.freeze
ShadowEssence =
/^Accumulated Shadow (?:E|e)ssence: (?<essence>\d)/.freeze
ShadowEssenceGain =
/^You violently shatter the bond on the soul of the .+\.  As you draw it into yourself, you manipulate the chaotic and broken life forces, forming shadow essence\./.freeze
ShadowEssenceCap =
/^You begin to sacrifice your victim but immediately sense that it would overwhelm you with shadow essence\./.freeze
SacrificeMana =
/^You summon the shadow essence from the inner depths of your body, surrounding yourself in a dark halo of power\.  You will the shadows into the eddies and currents of the flows of essence around you, spreading through them like blackened veins of corruption\.  The surroundings glow with silent anguish\.  Everything around you becomes pale and enervated with discoloration, like the life has been drained out of the world\.  There is a flood of power as you feel (?<amount>\d+) mana surge into you!$/.freeze
SacrificeChannel =
/^Focusing on the bond to your animate, you force shadow essence into .+, leveraging its broken life forces\.  The backlash of sorcerous violence with the necrotic energy of the \w+ ends in the unnatural revitalization of its animate matter\.$/.freeze
SacrificeInfest =
/^Mastering the struggle against the frantic rush of stolen power, you unleash a dark haze of necrosis upon your unfortunate victim\.  With a small smirk, you force the sickly currents of shadow essence from your body, commanding them to seek and infest .+\.$/.freeze
SacrificeFate =
/^You close your eyes momentarily and visualize the strands of fate that tie together the firmament\.  Identifying a susceptible star, you compel the shadow essence within you to corrupt it\.$/.freeze
SacrificeShift =
/^Summoning the shadow essence within yourself, you will it to bleed through the veil, exposing your mind to the vast abyss of cosmic horror\.  Countless possible gateways reveal themselves, with runes hidden in the fabric of reality\.$/.freeze
GigasArtifactFragments =
/^You are carrying (?<gigas_artifact_fragments>[\d,]+) gigas artifact fragments?\.$/.freeze
RedsteelMarks =
/^(?:\s* Redsteel Marks:           |You are carrying) (?<redsteel_marks>[\d,]+)(?: redsteel marks?\.)?$/.freeze
GemstoneDust =
/^You are carrying (?<gemstone_dust>[\d,]+) Dust in your reserves?\.$/.freeze
TicketGeneral =
/^\s*General - (?<tickets>[\d,]+) tickets?\.$/.freeze
TicketBlackscrip =
/^\s*Troubled Waters - (?<blackscrip>[\d,]+) blackscrip\.$/.freeze
TicketBloodscrip =
/^\s*Duskruin Arena - (?<bloodscrip>[\d,]+) bloodscrip\.$/.freeze
TicketEtherealScrip =
/^\s*Reim - (?<ethereal_scrip>[\d,]+) ethereal scrip\.$/.freeze
TicketSoulShards =
/^\s*Ebon Gate - (?<soul_shards>[\d,]+) soul shards?\.$/.freeze
TicketRaikhen =
/^\s*Rumor Woods - (?<raikhen>[\d,]+) raikhen\.$/.freeze
TicketGold =
/^\s*Gold - (?<gold>[\d,]+) gold\.$/.freeze
WealthSilver =
/^You have (?<silver>no|[,\d]+|but one) silver with you\./.freeze
WealthSilverContainer =
/^You are carrying (?<silver>[\d,]+) silver stored within your /.freeze
AccountName =
/^Account Name:     (?<name>[\w\d\-\_]+)$/.freeze
AccountSubscription =
/^Account Type:     (?<subscription>F2P|Standard|Premium|Platinum)(?: with Shattered)?(?: \(\w+\))?$/.freeze
ProfileStart =
/^PERSONAL INFORMATION$/.freeze
ProfileName =
/^Name: (?<name>[\w\s]+)$/.freeze
ProfileHouseCHE =
/^[A-Za-z\- ]+? (?:of House of the |of House of |of House |of )(?<house>Argent Aspis|Rising Phoenix|Paupers|Arcane Masters|Brigatta|Twilight Hall|Silvergate Inn|Sovyn|Sylvanfair|Helden Hall|White Haven|Beacon Hall|Rone Academy|Willow Hall|Moonstone Abbey|Obsidian Tower|Cairnfang Manor)(?: Archive)?$|^(?<none>No House affiliation)$/.freeze
ResignCHE =
/^(?:Once you have resigned from your House, you will be unable to rejoin without being inducted again by the |If you wish to renounce your membership in the |Before you can resign from the )(?:House |of House of the |of House of |of House |of )?(?<house>Argent Aspis|Rising Phoenix|Paupers|Arcane Masters|Brigatta|Twilight Hall|Silvergate Inn|Sovyn|Sylvanfair|Helden Hall|White Haven|Beacon Hall|Rone Academy|Willow Hall|Moonstone Abbey|Obsidian Tower|Cairnfang Manor)(?: Archive)?|^(?<none>The RESIGN command is for resigning your membership in a House, but you don't currently belong to any of the Cooperative Houses of Elanthia)\.$/.freeze
ResignConfirmCHE =
/^\[You have resigned from the (?:House |of House of the |of House of |of House |of )?(?<house>Argent Aspis|Rising Phoenix|Paupers|Arcane Masters|Brigatta|Twilight Hall|Silvergate Inn|Sovyn|Sylvanfair|Helden Hall|White Haven|Beacon Hall|Rone Academy|Willow Hall|Moonstone Abbey|Obsidian Tower|Cairnfang Manor)(?: Archive)?\.\]$/.freeze
SleepActive =

TODO: refactor / streamline?

/^Your mind goes completely blank\.$|^You close your eyes and slowly drift off to sleep\.$|^You slump to the ground and immediately fall asleep\.  You must have been exhausted!$|^That is impossible to do while unconscious$/.freeze
SleepNoActive =
/^Your thoughts slowly come back to you as you find yourself lying on the ground\.  You must have been sleeping\.$|^You wake up from your slumber\.$|^You are awoken|^You awake|^You slowly come back to alertness and realize you must have been sleeping\.$/.freeze
BindActive =
/^An unseen force (?:envelops|entangles) you, restricting (?:all|your) movement|^You are caught fast, the light of (?:Liabo|Lornon|Tilaok|Makiri|the moon) arresting your movements/.freeze
BindNoActive =
/^The restricting force that envelops you dissolves away\.|^You shake off the immobilization that was restricting your movements!|^The restricting force enveloping you fades away\./.freeze
SilenceActive =
/^A pall of silence settles over you\.|^The pall of silence settles more heavily over you\./.freeze
SilenceNoActive =
/^The pall of silence leaves you\./.freeze
CalmActive =
/^A calm washes over you\./.freeze
CalmNoActive =
/^You are enraged by .*? attack!|^The feeling of calm leaves you\./.freeze
CutthroatActive =
/slices deep into your vocal cords!$|^All you manage to do is cough up some blood\.$/.freeze
CutthroatNoActive =
/^\s*The horrible pain in your vocal cords subsides as you spit out the last of the blood clogging your throat\.$|^That tingles, but there are no head injuries to repair\.$/.freeze
ThornPoisonStart =
/^One of the vines surrounding .*? lashes out at you, driving a thorn into your skin!  You feel poison coursing through your veins\.$/.freeze
ThornPoisonProgression =
/^You begin to feel a strange fatigue, spreading throughout your body\.$|^The strange lassitude is growing worse, making it difficult to keep up with any strenuous activities\.$|^You find yourself gradually slowing down, your muscles trembling with fatigue\.$|^It\'s getting increasingly difficult to move. It feels almost as if the air itself is growing thick as molasses\.$|^No longer able to fight this odd paralysis, you collapse to the ground, as limp as an old washrag\.$/.freeze
ThornPoisonDeprogression =
/^With a shaky gasp and trembling muscles, you regain at least some small ability to move, however slowly\.$|Although you can\'t seem to move as quickly as you usually can, you\'re feeling better than you were just moments ago\.$|^Fine coordination is difficult, but at least you can move at something close to your normal speed again\.$|^While you\'re still a bit shaky, your muscles are responding better than they were\.$/.freeze
ThornPoisonEnd =
/^Your body begins to respond normally again\.$|^Your skin takes on a more pinkish tint\.$/.freeze
SpellUpMsgs =

Adding spell regexes. Does not save to infomon.db. Used by Spell and by ActiveSpells

/^#{Lich::Common::Spell.upmsgs.join('$|^')}$/o.freeze
SpellDnMsgs =
/^#{Lich::Common::Spell.dnmsgs.join('$|^')}$/o.freeze
SpellsongRenewed =
/^Your songs? renews?/.freeze
EnhanciveStart =

Enhancive parsing patterns - from INVENTORY ENHANCIVE TOTALS command

/^Stats:$/.freeze
EnhanciveStat =
/^\s+(?<stat>Strength|Constitution|Dexterity|Agility|Discipline|Aura|Logic|Intuition|Wisdom)\s+\((?<abbr>\w{3})\):\s*(?<value>\d+)\/(?<cap>\d+)$/.freeze
EnhanciveSkillsSection =
/^Skills:$/.freeze
EnhanciveSkillRanks =
/^\s+(?<name>[\w\s\-']+?)\s+Ranks:\s*(?<value>\d+)\/(?<cap>\d+)$/.freeze
EnhanciveSkillBonus =
/^\s+(?<name>[\w\s\-']+?)\s+Bonus:\s*(?<value>\d+)\/(?<cap>\d+)$/.freeze
EnhanciveResourcesSection =
/^Resources:$/.freeze
EnhanciveResource =
/^\s+(?<name>Max Mana|Max Health|Max Stamina|Mana Recovery|Stamina Recovery):\s*(?<value>\d+)\/(?<cap>\d+)$/.freeze
EnhanciveSpellsSection =
/^Self Knowledge Spells:$/.freeze
EnhanciveSpells =
/^\s+(?<spells>[\d,\s]+)$/.freeze
EnhanciveStatisticsSection =
/^Statistics:$/.freeze
EnhanciveStatistic =
/^\s+(?<name>Enhancive Items|Enhancive Properties|Total Enhancive Amount):\s*(?<value>\d+)$/.freeze
EnhanciveEnd =
/^For more details, see INVENTORY ENHANCIVE TOTALS DETAILS\.$/.freeze
EnhanciveNone =
/^No enhancive item bonuses found\.$/.freeze
EnhanciveOn =

Enhancive active state tracking (on/off)

/^You are (?:now|already|currently) accepting the benefits of (?:your|any and all) enhancive (?:inventory )?items(?: in your inventory)?\./.freeze
EnhanciveOff =
/^You (?:are no longer|already are not|are not currently) accepting the benefit(?:s)? of (?:your|any) enhancive (?:inventory )?items(?: in your inventory)?\./.freeze
EnhancivePauses =
/^You currently have (?<pauses>\d+) enhancive pauses? available\.$/.freeze
All =
Regexp.union(CharRaceProf, CharGenderAgeExpLevel, Stat, StatEnd, Fame, RealExp, AscExp, TotalExp, LTE,
ExprEnd, SkillStart, Skill, SpellRanks, SkillEnd, PSMStart, PSM, PSMEnd, Levelup, SpellsSolo,
Citizenship, NoCitizenship, Society, NoSociety, SleepActive, SleepNoActive, BindActive,
BindNoActive, SilenceActive, SilenceNoActive, CalmActive, CalmNoActive, CutthroatActive,
CutthroatNoActive, SpellUpMsgs, SpellDnMsgs, Warcries, NoWarcries, SocietyJoin, SocietyStep,
SocietyResign, LearnPSM, UnlearnPSM, LostTechnique, LearnTechnique, UnlearnTechnique,
Resource, Suffused, VolnFavor, GigasArtifactFragments, RedsteelMarks, TicketGeneral, TicketGold,
TicketBlackscrip, TicketBloodscrip, TicketEtherealScrip, TicketSoulShards, TicketRaikhen,
WealthSilver, WealthSilverContainer, GoalsDetected, GoalsEnded, SpellsongRenewed,
ThornPoisonStart, ThornPoisonProgression, ThornPoisonDeprogression, ThornPoisonEnd, CovertArtsCharges,
AccountName, AccountSubscription, ProfileStart, ProfileName, ProfileHouseCHE, ResignCHE, ResignConfirmCHE,
ShadowEssence, ShadowEssenceGain, ShadowEssenceCap, SacrificeMana, SacrificeChannel, SacrificeInfest,
SacrificeFate, SacrificeShift, GemstoneDust, EnhanciveStart, EnhanciveStat, EnhanciveSkillsSection,
EnhanciveSkillRanks, EnhanciveSkillBonus, EnhanciveResourcesSection, EnhanciveResource,
EnhanciveSpellsSection, EnhanciveSpells, EnhanciveStatisticsSection, EnhanciveStatistic,
EnhanciveEnd, EnhanciveNone, EnhanciveOn, EnhanciveOff, EnhancivePauses)