Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2017
811
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 39.30 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6.         Custom commands:
  7.  
  8.         Shorthand versions for each strategem type that uses the version appropriate for
  9.         the current Arts.
  10.  
  11.                                         Light Arts              Dark Arts
  12.  
  13.         gs c scholar light              Light Arts/Addendum
  14.         gs c scholar dark                                       Dark Arts/Addendum
  15.         gs c scholar cost               Penury                  Parsimony
  16.         gs c scholar speed              Celerity                Alacrity
  17.         gs c scholar aoe                Accession               Manifestation
  18.         gs c scholar power              Rapture                 Ebullience
  19.         gs c scholar duration           Perpetuance
  20.         gs c scholar accuracy           Altruism                Focalization
  21.         gs c scholar enmity             Tranquility             Equanimity
  22.         gs c scholar skillchain                                 Immanence
  23.         gs c scholar addendum           Addendum: White         Addendum: Black
  24.        
  25.         gs c castmode   --Changes basic magic mode between normal and resistant. Default: Normal
  26.         gs c seidr      --Toggles use of Seidr Cotehardie. Options are: Off (default), Normal elemental magic, All elemental magic (Includes burst mode).
  27.         gs c burstmode  --Enables burst mode. If already enabled, toggles between: Burst, and BurstResistant
  28.         gs c resetburstmode --Disables burst mode and resets to previously selected CastMode.
  29. --]]
  30.  
  31.  
  32.  
  33. -- Initialization function for this job file.
  34. function get_sets()
  35.     mote_include_version = 2
  36.  
  37.     -- Load and initialize the include file.
  38.     include('Mote-Include.lua')
  39.     --include('Organizer-lib.lua')
  40. end
  41.  
  42. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  43. function job_setup()
  44.     info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  45.         "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  46.  
  47.     state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  48.    
  49.     state.BurstMode = M("Burst", "BurstResistant", "Off")
  50.     state.Seidr = M("Normal", "All", "Off")
  51.     state.Seidr = 'Off'
  52.     state.BurstMode = 'Off'
  53.     CastMode = 'Normal'
  54.     LastBurstMode = 'Burst'
  55.     --LastCastingState = 'Normal'
  56.     --state.SavedCastingState = false
  57.     update_active_strategems()
  58. end
  59.  
  60. -------------------------------------------------------------------------------------------------------------------
  61. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  62. -------------------------------------------------------------------------------------------------------------------
  63.  
  64. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  65. function user_setup()
  66.     state.OffenseMode:options('None', 'Normal')
  67.     state.CastingMode:options('Normal', 'Resistant', 'Burst', 'BurstResistant')
  68.     state.HybridMode:options('Normal', 'Burst', false)
  69.     state.IdleMode:options('Normal', 'PDT')
  70.  
  71.  
  72.     info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
  73.     info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
  74.                        "Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
  75.                        "Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
  76.     info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  77.     info.helix      = S{"Geohelix", "Geohelix II", "Hydrohelix", "Hydrohelix II", "Anemohelix",
  78.                         "Anemohelix II", "Pyrohelix", "Pyrohelix II", "Cryohelix", "Cryohelix II",
  79.                         "Ionohelix", "Ionohelix II", "Noctohelix", "Noctohelix II", "Luminohelix",
  80.                         "Luminohelix II"}
  81.     info.drain      = S{"Drain", "Aspir", "Aspir II", "Aspir III"} 
  82.  
  83.     info.nocto      = S{"Noctohelix", "Noctohelix II"}
  84.    
  85.     info.storm = S{"Aurorastorm", "Voidstorm", "Firestorm", "Sandstorm", "Rainstorm", "Windstorm", "Hailstorm", "Thunderstorm",
  86.                "Aurorastorm II", "Voidstorm II", "Firestorm II", "Sandstorm II", "Rainstorm II", "Windstorm II", "Hailstorm II", "Thunderstorm II"}
  87.    
  88.     --gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
  89.  
  90.     send_command('bind ^` input /ma Stun <t>')
  91.     --send_command('gs org')
  92.  
  93.     select_default_macro_book()
  94. end
  95.  
  96. function user_unload()
  97.     send_command('unbind ^`')
  98. end
  99.  
  100.  
  101. -- Define sets and vars used by this job file.
  102. function init_gear_sets()
  103.     --------------------------------------
  104.     -- Start defining the sets
  105.     --------------------------------------
  106.  
  107.     -- Precast Sets
  108.  
  109.     -- Precast sets to enhance JAs
  110.  
  111.     sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy pants +1"}
  112.  
  113.  
  114.     -- Fast cast sets for spells
  115.  
  116.     sets.precast.FC = {ammo="Incantor Stone",
  117.     head="Nahtirah Hat", body={ name="Helios Jacket", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+5','Magic burst mdg.+9%',}}, hands="Acad. Bracers +1", legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
  118.     feet="Peda. Loafers +1", neck="Orunmila's Torque", waist="Witful Belt", right_ear="Loquac. Earring", left_ring="Prolix Ring",
  119.     right_ring="Weather. Ring",
  120.     back="Swith Cape +1",}
  121.  
  122.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  123.  
  124.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {left_ear="Barkarole earring"})
  125.     --sets.precast.FC['Elemental Magic'].Weather = set_combine(sets.precast.FC['Elemental Magic'], {feet = "
  126.     sets.precast.FC.Stoneskin = set_combine(sets.precast.FC, {head="Umuthi hat", hands="Carapacho cuffs", legs="Doyen pants", waist="Siegel sash"})
  127.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", legs="Doyen pants"})
  128.  
  129.     --sets.precast.FC.Curaga = sets.precast.FC.Cure
  130.  
  131.         sets.precast.FC['Impact'] = set_combine(sets.precast.FC,{
  132.         head={name="", priority=1},
  133.         body= {name="Twilight Cloak", priority=2},     
  134.         })
  135.  
  136.     -- Midcast Sets
  137.  
  138.     --[[sets.midcast.FastRecast = {
  139.         head="Nahtirah Hat",ear2="Loquacious Earring",
  140.         body="Helios jacket",hands="Arbatel bracers",ring1="Prolix Ring",ring2="Weatherspoon ring",
  141.         waist="Goading Belt",legs="Gyve trousers",feet="Pedagogy Loafers +1"}]]
  142.  
  143.     sets.midcast.Cure = {
  144.         head="Befouled crown",neck="Incanter's Torque",ear1="Dignitary's Earring",ear2="Loquacious Earring",
  145.         body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  146.         back="Solemnity cape", waist="Goading Belt",
  147.         legs={ name="Chironic Hose", augments={'Mag. Acc.+19','"Cure" potency +10%','MND+1','"Mag.Atk.Bns."+12',}},
  148.         feet="Pedagogy Loafers +1"}
  149.  
  150.     sets.midcast.CureWithLightWeather = {
  151.         head="Befouled crown",neck="Incanter's Torque",ear1="Dignitary's Earring",
  152.         ear2="Loquacious Earring", body="Helios jacket",hands="Bokwus Gloves",
  153.         ring1="Prolix Ring", back="Solemnity cape",    
  154.         waist="Hachirin-no-obi",
  155.         legs={ name="Chironic Hose", augments={'Mag. Acc.+19','"Cure" potency +10%','MND+1','"Mag.Atk.Bns."+12',}},
  156.         feet="Pedagogy Loafers +1"}
  157.  
  158.     sets.midcast.Curaga = sets.midcast.Cure
  159.  
  160.     sets.midcast.Regen = {head="Arbatel Bonnet"}
  161.  
  162.     --[[sets.midcast.Cursna = {
  163.         neck="Malison Medallion",
  164.         hands="Hieros Mittens",ring1="Ephedra Ring",
  165.         feet="Gendewitha Galoshes"}]]
  166.  
  167.     sets.midcast['Enhancing Magic'] = {
  168.         ammo="Impatiens", head="Befouled Crown",
  169.         body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  170.         hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  171.         legs="Gyve Trousers",feet={ name="Peda. Loafers +1", augments={'Enhances "Stormsurge" effect',}},
  172.         neck="Incanter's Torque",waist="Goading Belt",left_ear="Dignitary's Earring", right_ear="Loquac. Earring",
  173.         left_ring="Prolix Ring",right_ring="Weather. Ring", back="Refraction Cape",}
  174.  
  175.     sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  176.  
  177.     sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy loafers +1"})
  178.     sets.midcast['Haste'] = sets.midcast['Enhancing Magic']
  179.     sets.midcast.Protect = {ring1="Sheltered Ring"}
  180.     sets.midcast.Protectra = sets.midcast.Protect
  181.  
  182.     sets.midcast.Shell = {ring1="Sheltered Ring"}
  183.     sets.midcast.Shellra = sets.midcast.Shell
  184.  
  185.  
  186.     -- Custom spell classes
  187.     sets.midcast.MndEnfeebles = {ammo="Pemphredo Tathlum",
  188.     head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  189.     body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  190.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  191.     legs={ name="Chironic Hose", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','MND+9','Mag. Acc.+15','"Mag.Atk.Bns."+3',}},
  192.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  193.     neck="Incanter's Torque", waist="Eschan Stone",left_ear="Barkarole Earring", right_ear="Dignitary's Earring",
  194.     left_ring="Sangoma Ring", right_ring="Weather. Ring", back="Altruistic Cape",}
  195.  
  196.     sets.midcast.IntEnfeebles = sets.midcast.MndEnfeebles
  197.  
  198.     sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  199.  
  200.     sets.midcast['Dark Magic'] = {ammo="Pemphredo Tathlum",
  201.     head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  202.     body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  203.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  204.     legs={ name="Chironic Hose", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','MND+9','Mag. Acc.+15','"Mag.Atk.Bns."+3',}},
  205.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  206.     neck="Incanter's Torque",waist="Eschan Stone",left_ear="Barkarole Earring",right_ear="Dignitary's Earring",
  207.     left_ring="Sangoma Ring", right_ring="Weather. Ring", back={ name="Bookworm's Cape", augments={'INT+1','MND+1','Helix eff. dur. +19',}}}
  208.  
  209.     sets.midcast.Kaustra = {
  210.     ammo="Pemphredo Tathlum",
  211.     head="Pixie Hairpin +1",
  212.     body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  213.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  214.     legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Mag. crit. hit dmg. +6%','Mag. Acc.+13','"Mag.Atk.Bns."+11',}},
  215.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  216.     neck="Mizu. Kubikazari",waist="Eschan Stone",left_ear="Barkarole Earring",right_ear="Friomisi Earring",
  217.     left_ring="Sangoma Ring",right_ring="Archon Ring", back="Bookworm's Cape",}
  218.  
  219.     sets.midcast.Drain = {ammo="Pemphredo Tathlum",
  220.     head="Pixie Hairpin +1",
  221.     body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
  222.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  223.     legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Mag. crit. hit dmg. +6%','Mag. Acc.+13','"Mag.Atk.Bns."+11',}},
  224.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  225.     neck="Incanter's Torque", waist="Eschan Stone", left_ear="Loquac. Earring", right_ear="Hirudinea Earring",
  226.     left_ring="Excelsis Ring", right_ring="Archon Ring", back="Bookworm's Cape",}
  227.  
  228.     sets.midcast.Aspir = sets.midcast.Drain
  229.  
  230.     sets.midcast.Stun = {ammo="Incantor Stone",
  231.     head="Nahtirah Hat",
  232.     body={ name="Helios Jacket", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+5','Magic burst mdg.+9%',}},
  233.     hands="Acad. Bracers +1",
  234.     legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
  235.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  236.     neck="Incanter's Torque", waist="Witful Belt", left_ear="Barkarole Earring", right_ear="Dignitary's Earring",
  237.     left_ring="Prolix Ring", right_ring="Sangoma Ring", back="Swith Cape +1",}
  238.  
  239.     sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {
  240.     ammo="Incantor Stone",
  241.     head="Nahtirah Hat",
  242.     body={ name="Helios Jacket", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+5','Magic burst mdg.+9%',}},
  243.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  244.     legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
  245.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  246.     neck="Incanter's Torque", waist="Witful Belt", left_ear="Barkarole Earring", right_ear="Dignitary's Earring",
  247.     left_ring="Prolix Ring", right_ring="Sangoma Ring", back="Bookworm's Cape",}
  248.     )
  249.     sets.midcast.Stun.BurstResistant = sets.midcast.Stun.Resistant
  250.  
  251.     -- Elemental Magic sets are default for handling low-tier nukes.
  252.     sets.midcast['Elemental Magic'] = {
  253.         ammo="Pemphredo Tathlum",
  254.         head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  255.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','"Mag.Atk.Bns."+15',}},
  256.         hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  257.         legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Mag. crit. hit dmg. +6%','Mag. Acc.+13','"Mag.Atk.Bns."+11',}},
  258.         feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  259.         neck="Sanctity Necklace",
  260.         waist="Eschan Stone",
  261.         left_ear="Barkaro. Earring",
  262.         right_ear="Friomisi Earring",
  263.         left_ring="Acumen Ring",
  264.         right_ring="Resonance Ring",       
  265.         back={ name="Bookworm's Cape", augments={'INT+1','MND+1','Helix eff. dur. +19',}},
  266.     }
  267.    
  268.     sets.midcast.Helix = set_combine(sets.midcast['Elemental Magic'],{back="Bookworm's cape"})
  269.     sets.midcast.Nocto = set_combine(sets.midcast.Helix, {head = "Pixie Hairpin +1"})
  270.     sets.midcast['Elemental Magic'].Burst = set_combine(sets.midcast['Elemental Magic'],
  271.         {neck="Mizukage-no-Kubikazari", hands="Amalric gages",
  272.         legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','Mag. Acc.+14',}},
  273.         back="Seshaw cape", ring1="Mujin band", ring2="Locus ring"})
  274.    
  275.     sets.midcast.WspnRing = {right_ring = "Weather. Ring"}
  276.    
  277.     sets.midcast.Helix.Burst = set_combine(sets.midcast['Elemental Magic'].Burst,{back="Bookworm's cape"}) 
  278.    
  279.     sets.midcast['Elemental Magic'].Resistant = {ammo="Pemphredo Tathlum",
  280.         head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  281.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','"Mag.Atk.Bns."+15',}},
  282.         hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  283.         legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Mag. crit. hit dmg. +6%','Mag. Acc.+13','"Mag.Atk.Bns."+11',}},
  284.         feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  285.         neck="Incanter's Torque",waist="Eschan Stone",left_ear="Barkarole Earring",right_ear="Friomisi Earring",
  286.         left_ring="Resonance Ring",right_ring="Acumen Ring",back="Refraction Cape"}
  287.        
  288.     sets.midcast['Elemental Magic'].BurstResistant = set_combine(sets.midcast['Elemental Magic'].Resistant,
  289.         {neck="Mizukage-no-Kubikazari", hands="Amalric gages",
  290.         legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','Mag. Acc.+14',}},
  291.         back="Seshaw cape", ring1="Mujin band", ring2="Locus ring"})
  292.     -- Custom refinements for certain nuke tiers
  293.    
  294.     sets.midcast.Helix.BurstResistant = set_combine(sets.midcast['Elemental Magic'].BurstResistant,{back="Bookworm's cape"})   
  295.    
  296.     sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'])
  297.  
  298.     sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant)
  299.    
  300.     sets.midcast['Elemental Magic'].HighTierNuke.Burst = set_combine(sets.midcast['Elemental Magic'].Burst)
  301.    
  302.     sets.midcast['Elemental Magic'].HighTierNuke.BurstResistant = set_combine(sets.midcast['Elemental Magic'].BurstResistant)
  303.  
  304.     sets.midcast['Impact'] = set_combine(sets.midcast.Kaustra, {
  305.         head=empty,neck="Sanctity necklace",
  306.         body={name="Twilight Cloak", priority=1}})
  307.        
  308.  
  309.  
  310.     -- Sets to return to when not performing an action.
  311.  
  312.     -- Resting sets
  313.     --[[sets.resting = {main="Chatoyant Staff",sub="Mephitis Grip",
  314.         head="Nefer Khat +1",neck="Wiglen Gorget",
  315.         body="Heka's Kalasiris",hands={ name="Chironic Gloves", augments={'Attack+10','Pet: "Mag.Atk.Bns."+21','"Refresh"+1','Mag. Acc.+15 "Mag.Atk.Bns."+15',}},ring1="Sheltered Ring",ring2="Paguroidea Ring",
  316.         waist="Austerity Belt",legs="Nares Trews",feet="Serpentes Sabots"}]]--
  317.  
  318.  
  319.     -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  320.  
  321.     sets.idle.Town = {
  322.         head="Shaded Specs.", neck="Wiglen gorget", ear1="Barkarole earring", ear2="Dignitary's earring",
  323.         body="Amalric doublet",hands={ name="Chironic Gloves", augments={'Attack+10','Pet: "Mag.Atk.Bns."+21','"Refresh"+1','Mag. Acc.+15 "Mag.Atk.Bns."+15',}},
  324.         ring1="Sheltered Ring",ring2="Paguroidea Ring",
  325.         back="Solemnity Cape",waist="Fucho-no-obi", legs="Nares Trews",feet="Herald's Gaiters"}
  326.  
  327.     sets.idle.Field = {
  328.         head="Befouled crown",neck="Wiglen Gorget",
  329.         body="Amalric doublet",
  330.         hands={ name="Chironic Gloves", augments={'Attack+10','Pet: "Mag.Atk.Bns."+21','"Refresh"+1','Mag. Acc.+15 "Mag.Atk.Bns."+15',}},ring1="Sheltered Ring",ring2="Paguroidea Ring",
  331.         back="Solemnity Cape",waist="Fucho-no-obi", legs="Nares Trews",feet="Herald's Gaiters"}
  332.  
  333.     --[[sets.idle.Field.PDT = {
  334.         head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  335.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
  336.         back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}]]
  337.  
  338.     --[[sets.idle.Field.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
  339.         head="Nahtirah Hat",neck="Aesir Torque",ear1="Barkarole Earring",ear2="Dignitary's Earring",
  340.         body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
  341.         back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}]]
  342.  
  343.     --[[sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
  344.         head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  345.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
  346.         back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}]]
  347.  
  348.     -- Defense sets
  349.  
  350.     sets.defense.PDT = {ammo="Pemphredo Tathlum",
  351.     head="Welkin Crown",
  352.     body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
  353.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  354.     legs={ name="Hagondes Pants", augments={'Phys. dmg. taken -2%','Mag. Acc.+20',}},
  355.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  356.     neck="Loricate Torque +1",
  357.     waist="Fucho-no-Obi",
  358.     left_ear="Ethereal Earring",
  359.     right_ear="Novia Earring",
  360.     left_ring="Defending Ring",
  361.     right_ring="Patricius Ring",
  362.     back="Solemnity Cape",}
  363.  
  364.     sets.defense.MDT = {ammo="Pemphredo Tathlum",
  365.     head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  366.     body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
  367.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  368.     legs="Gyve Trousers",
  369.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  370.     neck="Loricate Torque +1",
  371.     waist="Fucho-no-Obi",
  372.     left_ear="Ethereal Earring",
  373.     right_ear="Novia Earring",
  374.     left_ring="Defending Ring",
  375.     right_ring="Minerva's Ring",
  376.     back="Solemnity Cape"}
  377.  
  378.     sets.Kiting = {feet="Herald's Gaiters"}
  379.  
  380.     sets.latent_refresh = {waist="Fucho-no-obi"}
  381.  
  382.     -- Engaged sets
  383.  
  384.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  385.     -- sets if more refined versions aren't defined.
  386.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  387.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  388.  
  389.     -- Normal melee group
  390.     sets.engaged = {sub="Niobid Strap",
  391.     ammo="Iron Gobbet",
  392.     head={ name="Merlinic Hood", augments={'Magic burst mdg.+11%','MND+7','Mag. Acc.+13','"Mag.Atk.Bns."+12',}},
  393.     body={ name="Helios Jacket", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+5','Magic burst mdg.+9%',}},
  394.     hands={ name="Chironic Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Spell interruption rate down -10%','MND+3','Mag. Acc.+9',}},
  395.     legs={ name="Hagondes Pants", augments={'Phys. dmg. taken -2%','Mag. Acc.+20',}},
  396.     feet={ name="Chironic Slippers", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-5','CHR+1','Mag. Acc.+5','"Mag.Atk.Bns."+14',}},
  397.     neck="Loricate Torque +1", waist="Fucho-no-Obi", left_ear="Ethereal earring", right_ear="Novia Earring",
  398.     left_ring="Defending Ring", right_ring="Patricius Ring",  back="Solemnity Cape",}
  399.  
  400.     sets.precast.WS['Myrkr'] = {ammo="Incantor stone",
  401.         head="Nahtirah hat", neck="Orunmila's torque", ear1="Loquacious earring", ear2="Moonshade earring",
  402.         body= "Amalric doublet", hands="Bokwus gloves", ring1="Sangoma ring", ring2="Etana ring",
  403.         back="Altruistic cape", waist="Fucho-no-obi", legs="Psycloth lappas", feet="Arbatel loafers +1"}
  404.  
  405.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  406.     sets.buff['Ebullience'] = {head="Arbatel bonnet"}
  407.     sets.buff['Rapture'] = {head="Arbatel Bonnet"}
  408.     sets.buff['Perpetuance'] = {hands="Arbatel Bracers"}
  409.     sets.buff['Immanence'] = {hands="Arbatel Bracers"}
  410.     sets.buff['Penury'] = {legs="Arbatel Pants"}
  411.     sets.buff['Parsimony'] = {legs="Arbatel Pants"}
  412.     sets.buff['Celerity'] = {feet="Pedagogy Loafers +1"}
  413.     sets.buff['Alacrity'] = {feet="Pedagogy Loafers +1"}
  414.  
  415.     sets.buff['Klimaform'] = {feet="Arbatel Loafers +1"}
  416.  
  417.     --sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
  418.     --sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
  419.  
  420.     --sets.buff['Sandstorm'] = {feet="Desert Boots"}
  421.    
  422.     organizer_items = {
  423.    
  424.     warpring = "Warp Ring",
  425.     staff="Akademos",
  426.     nukebody="Seidr Cotehardie",
  427.    
  428.     }
  429.    
  430. end
  431.  
  432. -------------------------------------------------------------------------------------------------------------------
  433. -- Job-specific hooks for standard casting events.
  434. -------------------------------------------------------------------------------------------------------------------
  435.  
  436. -- Run after the general midcast() is done.
  437.  
  438.  
  439. function job_post_midcast(spell, action, spellMap, eventArgs)
  440.     if spell.action_type == 'Magic' then        
  441.         apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  442.         if spell.skill == 'Elemental Magic' or spell.english:startswith('Drain') or spell.english:startswith('Aspir') or
  443.              spell.skill == 'Enfeebling Magic' or spell.english=='Kaustra' or spell.english == 'Stun'  then
  444.             if info.helix:contains(spell.english) then
  445.                     if buffactive['Klimaform'] and spell.element==world.weather_element then
  446.                         equip({feet="Arbatel loafers +1"}) 
  447.                     end
  448.                 return
  449.             end
  450.             if spell.element == world.weather_element then
  451.                 equip({waist="Hachirin-No-Obi"})
  452.                 if buffactive['Klimaform'] and spell.element==world.weather_element then
  453.                     equip({feet="Arbatel loafers +1"})
  454.                        
  455.                 end
  456.                 if world.weather_element == 'Light' then
  457.                     equip(sets.midcast.WspnRing)
  458.                     --add_to_chat("Did something")
  459.                 elseif world.weather_element == 'Dark' then
  460.                     equip({head = "Pixie Hairpin +1"})
  461.                 end
  462.             end
  463.  
  464.                
  465.  
  466.         end
  467.        
  468.         if state.Seidr == 'All' then
  469.             equip({body="Seidr Cotehardie"})
  470.         end
  471.        
  472.         if spell.skill == 'Elemental Magic' then
  473.             if state.Seidr == 'Normal' and state.BurstMode=='Off' then
  474.                     equip({body="Seidr Cotehardie"})                   
  475.             end
  476.            
  477.         end
  478.        
  479.     end
  480. end
  481.  
  482. -------------------------------------------------------------------------------------------------------------------
  483. -- Job-specific hooks for non-casting events.
  484. -------------------------------------------------------------------------------------------------------------------
  485.  
  486. -- Called when a player gains or loses a buff.
  487. -- buff == buff gained or lost
  488. -- gain == true if the buff was gained, false if it was lost.
  489. function job_buff_change(buff, gain)
  490.     if buff == "Sublimation: Activated" then
  491.         handle_equipping_gear(player.status)
  492.     end
  493. end
  494.  
  495. -- Handle notifications of general user state change.
  496. function job_state_change(stateField, newValue, oldValue)
  497.     if stateField == 'Offense Mode' then
  498.         if newValue == 'Normal' then
  499.             disable('main','sub','range')
  500.         else
  501.             enable('main','sub','range')
  502.         end
  503.     end
  504. end
  505.  
  506. -------------------------------------------------------------------------------------------------------------------
  507. -- User code that supplements standard library decisions.
  508. -------------------------------------------------------------------------------------------------------------------
  509.  
  510. -- Custom spell mapping.
  511. function job_get_spell_map(spell, default_spell_map)
  512.     if spell.action_type == 'Magic' then
  513.         if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  514.             if world.weather_element == 'Light' then
  515.                 return 'CureWithLightWeather'
  516.             end
  517.         elseif spell.skill == 'Enfeebling Magic' then
  518.             if spell.type == 'WhiteMagic' then
  519.                 return 'MndEnfeebles'
  520.             else
  521.                 return 'IntEnfeebles'
  522.             end
  523.         elseif spell.skill == 'Elemental Magic' then
  524.             if info.low_nukes:contains(spell.english) then
  525.                 return 'LowTierNuke'           
  526.             elseif info.mid_nukes:contains(spell.english) then
  527.                 return 'MidTierNuke'
  528.             elseif info.high_nukes:contains(spell.english) then
  529.                 return 'HighTierNuke'      
  530.             elseif info.helix:contains(spell.english) then
  531.                 if info.nocto:contains(spell.english) then
  532.                     return 'Nocto'
  533.                 else
  534.                     return 'Helix'
  535.                 end
  536.             end
  537.         end
  538.         if info.drain:contains(spell.english) then
  539.             return 'Drain'
  540.         end    
  541.         if info.storm:contains(spell.english) then
  542.             return 'Storm' 
  543.         end
  544.        
  545.     end
  546. end
  547.  
  548. function customize_idle_set(idleSet)
  549.     if state.Buff['Sublimation: Activated'] then
  550.         if state.IdleMode.value == 'Normal' then
  551.             idleSet = set_combine(idleSet, sets.buff.FullSublimation)
  552.         elseif state.IdleMode.value == 'PDT' then
  553.             idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
  554.         end
  555.     end
  556.  
  557.     if player.mpp < 51 then
  558.         idleSet = set_combine(idleSet, sets.latent_refresh)
  559.     end
  560.  
  561.     return idleSet
  562. end
  563.  
  564. -- Called by the 'update' self-command.
  565. function job_update(cmdParams, eventArgs)
  566.     --[[if cmdParams[1] == 'user' and not (buffactive['light arts']      or buffactive['dark arts'] or
  567.                        buffactive['addendum: white'] or buffactive['addendum: black']) then
  568.         if state.IdleMode.value == 'Stun' then
  569.             send_command('@input /ja "Dark Arts" <me>')
  570.         else
  571.             send_command('@input /ja "Light Arts" <me>')
  572.         end
  573.     end]]
  574.  
  575.     update_active_strategems()
  576.     update_sublimation()
  577. end
  578.  
  579. -- Function to display the current relevant user state when doing an update.
  580. -- Return true if display was handled, and you don't want the default info shown.
  581. function display_current_job_state(eventArgs)
  582.     --display_current_caster_state()
  583.     local msg = ''
  584.    
  585.     if state.OffenseMode.value ~= 'None' then
  586.         msg = msg .. 'Melee'
  587.  
  588.         if state.CombatForm.has_value then
  589.             msg = msg .. ' (' .. state.CombatForm.value .. ')'
  590.         end
  591.        
  592.         msg = msg .. ', '
  593.     end
  594.    
  595.     msg = msg .. 'Casting ['..state.CastingMode.value..'], Idle ['..state.IdleMode.value..']'
  596.    
  597.     if state.DefenseMode.value ~= 'None' then
  598.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  599.     end
  600.    
  601.     if state.Kiting.value == true then
  602.         msg = msg .. ', Kiting'
  603.     end
  604.  
  605.     if state.PCTargetMode.value ~= 'default' then
  606.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  607.     end
  608.  
  609.     if state.SelectNPCTargets.value == true then
  610.         msg = msg .. ', Target NPCs'
  611.     end
  612.    
  613.     if state.BurstMode == 'Off' then
  614.         msg = msg .. ', Bursting Mode [' .. LastBurstMode .. ']'
  615.     end
  616.    
  617.     if state.BurstMode ~= 'Off' then
  618.         msg = msg .. ', Default Casting Mode [' .. CastMode .. ']'
  619.     end
  620.    
  621.     msg = msg .. ', Seidr Cotehardie Mode [' .. state.Seidr ..']'
  622.    
  623.     add_to_chat(122, msg)
  624.    
  625.    
  626.     eventArgs.handled = true
  627. end
  628.  
  629. -------------------------------------------------------------------------------------------------------------------
  630. -- User code that supplements self-commands.
  631. -------------------------------------------------------------------------------------------------------------------
  632.  
  633. -- Called for direct player commands.
  634. function job_self_command(cmdParams, eventArgs)
  635.     if cmdParams[1]:lower() == 'scholar' then
  636.         handle_strategems(cmdParams)
  637.         eventArgs.handled = true
  638.         return
  639.     end
  640.    
  641.     if cmdParams[1]:lower() == 'reportstrategems' then
  642.         add_to_chat(110, get_current_strategem_count())
  643.         eventArgs.handled = true
  644.     end
  645.    
  646.     if cmdParams[1]:lower() == 'seidr' then
  647.         if state.Seidr == 'Off' then
  648.             state.Seidr = 'Normal'
  649.             add_to_chat(215, 'Seidr Cotehardie will be equipped for normal Elemental Magic.')
  650.             eventArgs.handled = true
  651.             return
  652.         end
  653.        
  654.         if state.Seidr == 'Normal' then
  655.             state.Seidr = 'All'
  656.             add_to_chat(215, 'Seidr Cotehardie will be equipped for all Elemental Magic')
  657.             eventArgs.handled = true
  658.             return
  659.         end
  660.        
  661.         if state.Seidr == 'All' then
  662.             state.Seidr = 'Off'
  663.             add_to_chat(215, 'Seidr Cotehardie set to [Off]')
  664.             eventArgs.handled = true
  665.             return
  666.         end
  667.     end
  668.    
  669.     if cmdParams[1]:lower() == 'resetburstmode' then
  670.                        
  671.            
  672.             send_command('gs c set CastingMode ' .. CastMode)          
  673.            
  674.             if state.BurstMode ~='Off' then
  675.                 LastBurstMode=state.BurstMode
  676.             end
  677.                 state.BurstMode='Off'
  678.            
  679.             eventArgs.handled = true
  680.             return
  681.         end
  682.     if cmdParams[1]:lower() == 'burstmode' then
  683.         if state.BurstMode == 'Off' then
  684.             state.BurstMode = LastBurstMode
  685.             send_command('gs c set CastingMode ' .. LastBurstMode)
  686.             eventArgs.handled = true
  687.             return
  688.         end
  689.        
  690.         if state.BurstMode == 'BurstResistant' then
  691.        
  692.             state.BurstMode = 'Burst'
  693.             send_command('gs c set CastingMode Burst')
  694.             eventArgs.handled = true
  695.             return
  696.         end
  697.        
  698.         if state.BurstMode == 'Burst' then
  699.        
  700.             send_command('gs c set CastingMode BurstResistant')
  701.             state.BurstMode ='BurstResistant'
  702.             eventArgs.handled = true
  703.             return
  704.         end    
  705.     end
  706.     if cmdParams[1]:lower() == 'castmode' then
  707.         if CastMode == 'Normal' then
  708.             CastMode = 'Resistant'
  709.        
  710.             if state.BurstMode == 'Off' then
  711.                 send_command('gs c set CastingMode ' .. CastMode)
  712.             else
  713.                 add_to_chat(122, 'Set Default Cast Mode to [Resistant]')
  714.             end
  715.            
  716.             eventArgs.handled = true
  717.             return
  718.         end
  719.        
  720.         if CastMode == 'Resistant' then
  721.             CastMode = 'Normal'
  722.            
  723.             if state.BurstMode == 'Off' then
  724.                 send_command('gs c set CastingMode ' .. CastMode)
  725.             else
  726.                 add_to_chat(122, 'Set Default Cast Mode to [Normal]')
  727.             end
  728.             eventArgs.handled = true
  729.             return
  730.         end
  731.        
  732.     end
  733. end
  734.  
  735.  
  736.  
  737. -------------------------------------------------------------------------------------------------------------------
  738. -- Utility functions specific to this job.
  739. -------------------------------------------------------------------------------------------------------------------
  740.  
  741. -- Reset the state vars tracking strategems.
  742. function update_active_strategems()
  743.     state.Buff['Ebullience'] = buffactive['Ebullience'] or false
  744.     state.Buff['Rapture'] = buffactive['Rapture'] or false
  745.     state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
  746.     state.Buff['Immanence'] = buffactive['Immanence'] or false
  747.     state.Buff['Penury'] = buffactive['Penury'] or false
  748.     state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  749.     state.Buff['Celerity'] = buffactive['Celerity'] or false
  750.     state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  751.  
  752.     state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  753. end
  754.  
  755. function update_sublimation()
  756.     state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  757. end
  758.  
  759. -- Equip sets appropriate to the active buffs, relative to the spell being cast.
  760. function apply_grimoire_bonuses(spell, action, spellMap)
  761.     if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
  762.         equip(sets.buff['Perpetuance'])
  763.     end
  764.     if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
  765.         equip(sets.buff['Rapture'])
  766.     end
  767.     if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
  768.         if state.Buff.Ebullience and spell.english ~= 'Impact' then
  769.             equip(sets.buff['Ebullience'])
  770.         end
  771.         if state.Buff.Immanence then
  772.             equip(sets.buff['Immanence'])
  773.         end
  774.         if state.Buff.Klimaform and spell.element == world.weather_element then
  775.             equip(sets.buff['Klimaform'])
  776.         end
  777.     end
  778.  
  779.     if state.Buff.Penury then equip(sets.buff['Penury']) end
  780.     if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
  781.     if state.Buff.Celerity then equip(sets.buff['Celerity']) end
  782.     if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
  783. end
  784.  
  785.  
  786. -- General handling of strategems in an Arts-agnostic way.
  787. -- Format: gs c scholar <strategem>
  788. function handle_strategems(cmdParams)
  789.     -- cmdParams[1] == 'scholar'
  790.     -- cmdParams[2] == strategem to use
  791.  
  792.     if not cmdParams[2] then
  793.         add_to_chat(123,'Error: No strategem command given.')
  794.         return
  795.     end
  796.     local strategem = cmdParams[2]:lower()
  797.  
  798.     if strategem == 'light' then
  799.         if buffactive['light arts'] then
  800.             send_command('input /ja "Addendum: White" <me>')
  801.         elseif buffactive['addendum: white'] then
  802.             add_to_chat(122,'Error: Addendum: White is already active.')
  803.         else
  804.             send_command('input /ja "Light Arts" <me>')
  805.         end
  806.     elseif strategem == 'dark' then
  807.         if buffactive['dark arts'] then
  808.             send_command('input /ja "Addendum: Black" <me>')
  809.         elseif buffactive['addendum: black'] then
  810.             add_to_chat(122,'Error: Addendum: Black is already active.')
  811.         else
  812.             send_command('input /ja "Dark Arts" <me>')
  813.         end
  814.     elseif buffactive['light arts'] or buffactive['addendum: white'] then
  815.         if strategem == 'cost' then
  816.             send_command('input /ja Penury <me>')
  817.         elseif strategem == 'speed' then
  818.             send_command('input /ja Celerity <me>')
  819.         elseif strategem == 'aoe' then
  820.             send_command('input /ja Accession <me>')
  821.         elseif strategem == 'power' then
  822.             send_command('input /ja Rapture <me>')
  823.         elseif strategem == 'duration' then
  824.             send_command('input /ja Perpetuance <me>')
  825.         elseif strategem == 'accuracy' then
  826.             send_command('input /ja Altruism <me>')
  827.         elseif strategem == 'enmity' then
  828.             send_command('input /ja Tranquility <me>')
  829.         elseif strategem == 'skillchain' then
  830.             add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
  831.         elseif strategem == 'addendum' then
  832.             send_command('input /ja "Addendum: White" <me>')
  833.         else
  834.             add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  835.         end
  836.     elseif buffactive['dark arts']  or buffactive['addendum: black'] then
  837.         if strategem == 'cost' then
  838.             send_command('input /ja Parsimony <me>')
  839.         elseif strategem == 'speed' then
  840.             send_command('input /ja Alacrity <me>')
  841.         elseif strategem == 'aoe' then
  842.             send_command('input /ja Manifestation <me>')
  843.         elseif strategem == 'power' then
  844.             send_command('input /ja Ebullience <me>')
  845.         elseif strategem == 'duration' then
  846.             add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
  847.         elseif strategem == 'accuracy' then
  848.             send_command('input /ja Focalization <me>')
  849.         elseif strategem == 'enmity' then
  850.             send_command('input /ja Equanimity <me>')
  851.         elseif strategem == 'skillchain' then
  852.             send_command('input /ja Immanence <me>')
  853.         elseif strategem == 'addendum' then
  854.             send_command('input /ja "Addendum: Black" <me>')
  855.         else
  856.             add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  857.         end
  858.     else
  859.         add_to_chat(123,'No arts has been activated yet.')
  860.     end
  861. end
  862.  
  863.  
  864. -- Gets the current number of available strategems based on the recast remaining
  865. -- and the level of the sch.
  866. function get_current_strategem_count()
  867.     -- returns recast in seconds.
  868.     local allRecasts = windower.ffxi.get_ability_recasts()
  869.     local stratsRecast = allRecasts[231]
  870.  
  871.     local maxStrategems = math.floor((player.main_job_level + 10) / 20)
  872.  
  873.     local fullRechargeTime = 4*60
  874.  
  875.     local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
  876.  
  877.     return currentCharges
  878. end
  879.  
  880.  
  881. -- Select default macro book on initial load or subjob change.
  882. function select_default_macro_book()
  883.     set_macro_page(10, 4)
  884. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement