Module: Lich::Gemstone::Feat

Defined in:
documented/gemstone/psms/feat.rb

Overview

Contains features (feats) that can be used in the game.

This module manages the feats available to characters, including their properties and usage.

Constant Summary collapse

@@feats =
{
  "absorb_magic"              => {
    :short_name => "absorbmagic",
    :type       => :buff,
    :cost       => { stamina: 0 },
    :regex      => Regexp.union(/You open yourself to the ravenous void at the core of your being, allowing it to surface\.  Muted veins of metallic grey ripple just beneath your skin\./,
                                /You strain, but the void within remains stubbornly out of reach\.  You need more time\./),
    :usage      => "absorbmagic"
  },
  "chain_armor_proficiency"   => {
    :short_name => "chainarmor",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Chain Armor Proficiency is passive and cannot be activated\./,
    :usage      => nil
  },
  "chastise"                  => {
    :short_name => "chastise",
    :type       => :attack,
    :cost       => { stamina: 10 },
    :regex      => /as you lunge at .+? in a quick and vicious strike!$/,
    :usage      => "chastise"
  },
  "combat_mastery"            => {
    :short_name => "combatmastery",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Combat Mastery is passive and cannot be activated\./,
    :usage      => nil
  },
  "covert_art_escape_artist"  => {
    :short_name => "escapeartist",
    :type       => :reaction,
    :cost       => { stamina: 0 },
    :regex      => Regexp.union(/You roll your shoulders and subtly test the flexion of your joints, staying limber for ready escapes\./,
                                /You were unable to find any targets that meet Covert Art\: Escape Artist's reaction requirements\./),
    :usage      => "escapeartist"
  },
  "covert_art_keen_eye"       => {
    :short_name => "keeneye",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Covert Art\: Keen Eye is always active as long as you stay up to date on training\./,
    :usage      => nil
  },
  "covert_art_poisoncraft"    => {
    :short_name => "poisoncraft",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /USAGE\: FEAT POISONCRAFT \{options\} \[args\]/,
    :usage      => nil
  },
  "covert_art_sidestep"       => {
    :short_name => "sidestep",
    :type       => :buff,
    :cost       => { stamina: 10 },
    :regex      => /You tread lightly and keep your head on a swivel, prepared to sidestep any loose salvos that might stray your way\./,
    :usage      => "sidestep"
  },
  "covert_art_swift_recovery" => {
    :short_name => "swiftrecovery",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Covert Art\: Swift Recovery is always active as long as you stay up to date on training\./,
    :usage      => nil
  },
  "covert_art_throw_poison"   => {
    :short_name => "throwpoison",
    :type       => :attack,
    :cost       => { stamina: 15 },
    :regex      => Regexp.union(/What did the .+ ever do to you\?/,
                                /You pop the cork on .+ and, with a nimble flick of the wrist, fling a portion of its contents in a wide arc\!/,
                                /Covert Art\: Throw Poison what\?/),
    :usage      => "throwpoison"
  },
  "covert_arts"               => {
    :short_name => "covert",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /USAGE\: FEAT COVERT \{options\} \[args\]/,
    :usage      => nil
  },
  "critical_counter"          => {
    :short_name => "criticalcounter",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Critical Counter is passive and cannot be activated\./,
    :usage      => nil
  },
  "dispel_magic"              => {
    :short_name => "dispelmagic",
    :type       => :buff,
    :cost       => { stamina: 30 },
    :regex      => Regexp.union(/You reach for the emptiness within, but there are no spells afflicting you to dispel\./,
                                /You reach for the emptiness within\.  A single, hollow note reverberates through your core, resonating outward and scouring away the energies that cling to you\./),
    :usage      => "dispelmagic"
  },
  "dragonscale_skin"          => {
    :short_name => "dragonscaleskin",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /The Dragonscale Skin\s{1,2}feat is always active once you have learned it\./,
    :usage      => nil
  },
  "excoriate"                 => {
    :short_name => "excoriate",
    :type       => :attack,
    :cost       => { mana: 10 },
    :regex      => /You level your .+? at .+? and call down the excoriating power of .+? to smite (?:him|her|it)!/,
    :usage      => "excoriate"
  },
  "guard"                     => {
    :short_name => "guard",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => Regexp.union(/Guard what\?/,
                                /You move over to .+ and prepare to guard [a-z]+ from attack\./,
                                /You stop guarding .+, move over to .+, and prepare to guard [a-z]+ from attack\./,
                                /You stop protecting .+, move over to .+, and prepare to guard [a-z]+ from attack\./,
                                /You stop protecting .+ and prepare to guard [a-z]+ instead\./,
                                /You are already guarding .+\./),
    :usage      => "guard"
  },
  "kroderine_soul"            => {
    :short_name => "kroderinesoul",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Kroderine Soul is passive and always active as long as you do not learn any spells\.  You have access to two new abilities\:/,
    :usage      => nil
  },
  "light_armor_proficiency"   => {
    :short_name => "lightarmor",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Light Armor Proficiency is passive and cannot be activated\./,
    :usage      => nil
  },
  "martial_arts_mastery"      => {
    :short_name => "martialarts",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Martial Arts Mastery is passive and cannot be activated\./,
    :usage      => nil
  },
  "martial_mastery"           => {
    :short_name => "martialmastery",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Martial Mastery is passive and cannot be activated\./,
    :usage      => nil
  },
  "mental_acuity"             => {
    :short_name => "mentalacuity",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /The Mental Acuity\s{1,2}feat is always active once you have learned it\./,
    :usage      => nil
  },
  "mystic_strike"             => {
    :short_name => "mysticstrike",
    :type       => :buff,
    :cost       => { stamina: 10 },
    :regex      => /You prepare yourself to deliver a Mystic Strike with your next attack\./,
    :usage      => "mysticstrike"
  },
  "mystic_tattoo"             => {
    :short_name => "tattoo",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Usage\:/,
    :usage      => nil
  },
  "perfect_self"              => {
    :short_name => "perfectself",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /The Perfect Self feat is always active once you have learned it\.  It provides a constant enhancive bonus to all your stats\./,
    :usage      => nil
  },
  "plate_armor_proficiency"   => {
    :short_name => "platearmor",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Plate Armor Proficiency is passive and cannot be activated\./,
    :usage      => nil
  },
  "protect"                   => {
    :short_name => "protect",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => Regexp.union(/Protect what\?/,
                                /You move over to .+ and prepare to protect [a-z]+ from attack\./,
                                /You stop protecting .+, move over to .+, and prepare to protect [a-z]+ from attack\./,
                                /You stop guarding .+, move over to .+, and prepare to protect [a-z]+ from attack\./,
                                /You stop guarding .+ and prepare to protect [a-z]+ instead\./,
                                /You are already protecting .+\./),
    :usage      => "protect"
  },
  "scale_armor_proficiency"   => {
    :short_name => "scalearmor",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /Scale Armor Proficiency is passive and cannot be activated\./,
    :usage      => nil
  },
  "shadow_dance"              => {
    :short_name => "shadowdance",
    :type       => :buff,
    :cost       => { stamina: 30 },
    :regex      => /You focus your mind and body on the shadows\./,
    :usage      => nil
  },
  "silent_strike"             => {
    :short_name => "silentstrike",
    :type       => :attack,
    :cost       => { stamina: 20 },
    :regex      => Regexp.union(/Silent Strike can not be used with fire as the attack type\./,
                                /You quickly leap from hiding to attack\!/),
    :usage      => "silentstrike"
  },
  "vanish"                    => {
    :short_name => "vanish",
    :type       => :buff,
    :cost       => { stamina: 30 },
    :regex      => /With subtlety and speed, you aim to clandestinely vanish into the shadows\./,
    :usage      => "vanish"
  },
  "weapon_bonding"            => {
    :short_name => "weaponbonding",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /USAGE\:/,
    :usage      => nil
  },
  "weighting"                 => {
    :short_name => "wps",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /USAGE\: FEAT WPS \{options\} \[args\]/,
    :usage      => nil
  },
  "padding"                   => {
    :short_name => "wps",
    :type       => :passive,
    :cost       => { stamina: 0 },
    :regex      => /USAGE\: FEAT WPS \{options\} \[args\]/,
    :usage      => nil
  }
}

Class Method Summary collapse

Class Method Details

.feat_lookupsArray<Hash>

Returns a list of all feats with their long and short names and costs.

Examples:

Get all feats

feats = Feat.feat_lookups

Returns:

  • (Array<Hash>)

    an array of hashes containing feat details



264
265
266
267
268
269
270
271
272
# File 'documented/gemstone/psms/feat.rb', line 264

def self.feat_lookups
  @@feats.map do |long_name, psm|
    {
      long_name: long_name,
      short_name: psm[:short_name],
      cost: psm[:cost]
    }
  end
end