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

Defined in:
lib/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
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
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)$/.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>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
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
All =

Union of all patterns for parsing

Returns:

  • (Regexp)

    Combined regex pattern for all parsing categories

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,
TicketBlackscrip, TicketBloodscrip, TicketEtherealScrip, TicketSoulShards, TicketRaikhen,
WealthSilver, WealthSilverContainer, GoalsDetected, GoalsEnded, SpellsongRenewed,
ThornPoisonStart, ThornPoisonProgression, ThornPoisonDeprogression, ThornPoisonEnd, CovertArtsCharges,
AccountName, AccountSubscription, ProfileStart, ProfileName, ProfileHouseCHE, ResignCHE, GemstoneDust)