midash

Orangebear_SCH

Jan 4th, 2014
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 29.95 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.     include('organizer-lib')
  26.  
  27.  
  28. -- Initialization function for this job file.
  29. function get_sets()
  30.     mote_include_version = 2
  31.  
  32.     -- Load and initialize the include file.
  33.     include('Mote-Include.lua')
  34. end
  35.  
  36. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  37. function job_setup()
  38.     info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  39.         "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  40.  
  41.     state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  42.     update_active_strategems()
  43. end
  44.  
  45. -------------------------------------------------------------------------------------------------------------------
  46. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  47. -------------------------------------------------------------------------------------------------------------------
  48.  
  49. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  50. function user_setup()
  51.     state.OffenseMode:options('None', 'Normal')
  52.     state.CastingMode:options('Normal', 'Resistant')
  53.     state.IdleMode:options('Normal', 'PDT')
  54.  
  55.     state.MagicBurst = M(false, 'Magic Burst')
  56.     state.ArtifactBody = M(false, 'Use AF Body')
  57.     state.Kiting = M(false, 'Use Heralds Gaiters')
  58.    
  59.     info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
  60.     spell_maps = "Helix"
  61.     info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
  62.                        "Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
  63.                        "Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
  64.     info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  65.  
  66.     gear.macc_hagondes = {name="Hagondes Cuffs +1", augments={'Phys. dmg. taken -3%','Magic dmg. taken -4%','Mag. Acc.+20'}}
  67.  
  68.         -- Additional local binds
  69.     send_command('bind ^` gs c toggle Kiting') -- Control ` turns AF body on and off
  70.     send_command('bind f9 input /equip main "Akademos"; input /equip sub "Niobid Strap"; gs disable main; gs disable sub;') -- F9 Locks your staff and grip slots so you wont lose TP
  71.     send_command('bind !` gs c toggle MagicBurst') -- Alt ` turns magic burst set on and off   
  72.     send_command('bind !f9 gs enable main; gs enable sub;') -- Alt F9 enables staff and grip , so other weapons/grip can swap
  73.     send_command('bind f10 gs c set DefenseMode Physical') -- F10 turns PDT gear on, after spells/JAs you will return to PDT set automatically
  74.     send_command('bind f11 gs c set DefenseMode Magical') -- F11 turns MDT gear on, same as above for PDT
  75.     send_command('bind ^f11 gs c cycle CastingMode') -- Control F11 changes your casting mode between normal and resistant (magic accuracy)
  76.     send_command('bind f12 gs c update user') -- F12 forces an update (gear changes and other file options), also displays some current info
  77.     send_command('bind ^f12 gs c cycle IdleMode') -- Control F12 changes idle mode between idle and idle PDT, you shouldn't need to use this
  78.     send_command('bind !f12 gs c reset DefenseMode') -- Alt F12 clears your PDT or MDT and turns you to normal idle sets
  79.  
  80.     send_command('bind ^- gs c toggle selectnpctargets')
  81.     send_command('bind ^= gs c cycle pctargetmode')
  82.    
  83.    
  84.     select_default_macro_book()
  85.  
  86. end
  87.  
  88. function user_unload()
  89.     send_command('unbind ^`')
  90.     send_command('unbind !`')  
  91. end
  92.  
  93.  
  94. -- Define sets and vars used by this job file.
  95. function init_gear_sets()
  96.     --------------------------------------
  97.     -- Start defining the sets
  98.     --------------------------------------
  99. organizer_items = {
  100.   echos="Echo Drops",
  101.   remedy="Remedy",
  102.   Crepe="Pear Crepe",
  103. }
  104.     -- Precast Sets
  105.     sets.precast.WS['Myrkr'] = {ammo="Ghastly Tathlum +1",
  106.         head="Merlinic Hood",neck="Fotia Gorget",ear1="Influx Earring",ear2="Moonshade Earring",
  107.         body="Helios Jacket",hands="Otomi Gloves",ring1="Sangoma Ring",ring2="Fenrir Ring +1",
  108.         back="Pahtli Cape",waist="Fotia Belt",legs="Merlinic Shalwar",feet="Regal Pumps +1"}
  109.     -- Precast sets to enhance JAs
  110.  
  111.     sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
  112.  
  113.  
  114.     -- Fast cast sets for spells
  115.  
  116.     sets.precast.FC = {main="Akademos",ammo="Impatiens",
  117.         head="Nahtirah Hat",neck="Orunmila's Torque",ear2="Loquacious Earring",
  118.         body="Anhur Robe",hands="Hagondes Cuffs +1",ring1="Prolix Ring",ring2="Weather. Ring",
  119.         back="Swith Cape +1",waist="Witful Belt",legs="Psycloth Lappas",feet="Regal Pumps +1"}
  120.  
  121.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  122.  
  123.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {ear1="Barkarole Earring",neck="Stoicheion Medal"})
  124.  
  125.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
  126.  
  127.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  128.  
  129.     sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head='empty',body="Twilight Cloak"})
  130.  
  131.     sets.precast.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'], {head="Umuthi Hat"})
  132.  
  133.     -- Midcast Sets
  134.  
  135.     sets.midcast.FastRecast = {ammo="Incantor Stone",
  136.         head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
  137.             body={ name="Merlinic Jubbah", augments={'"Mag.Atk.Bns."+4','"Fast Cast"+7',}},
  138.             hands="Hagondes Cuffs +1",ring1="Prolix Ring",ring2="Weather. Ring",
  139.         back="Swith Cape +1",waist="Goading Belt",legs="Psycloth Lappas",feet="Regal Pumps +1"}
  140.  
  141.     sets.midcast.Cure = {
  142.         neck="Colossus's Torque",ear1="Lifestorm Earring",
  143.         body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Weather. Ring",ring2="Sirona's Ring",
  144.         back="Tempered Cape +1",waist="Bishop's Sash",feet="Peda. Loafers +1"}
  145.  
  146.     sets.midcast.CureWithLightWeather = {ammo="Oreiad's Tathlum",
  147.         hneck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Novia Earring",
  148.         body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Weather. Ring",ring2="Sirona's Ring",
  149.         back="Tempered Cape +1",waist="Bishop's Sash",feet="Peda. Loafers +1"}
  150.  
  151.     sets.midcast.Curaga = sets.midcast.Cure
  152.  
  153.     sets.midcast.Regen = {head="Savant's Bonnet +2",body="Telchine Chas.",back="Bookworm's Cape"}
  154.  
  155.     sets.midcast.Cursna = {
  156.         neck="Debilis Medallion",ear1="Beatific Earring",ear2="Healing Earring",
  157.         hands="Hieros Mittens",ring1="Haoma's Ring",ring2="Sirona's Ring",
  158.         back="Tempered Cape +1",waist="Bishop's Sash",feet="Gende. Galosh. +1"}
  159.  
  160.     sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
  161.         head="Savant's Bonnet +2",neck="Colossus's Torque",ear1="Andoaa Earring",ear2="Gifted Earring",
  162.         body="Telchine Chas.",hands="Ayao's Gages",
  163.         back="Merciful Cape",waist="Olympus Sash",legs="Shedir Seraweels", feet="Regal Pumps +1"}
  164.  
  165.     sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {head="Umuthi Hat",waist="Siegel Sash"})
  166.    
  167.     sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {legs="Shedir Seraweels"})
  168.  
  169.     sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers +1"})
  170.  
  171.     sets.midcast.Protect = {ring1="Sheltered Ring"}
  172.     sets.midcast.Protectra = sets.midcast.Protect
  173.  
  174.     sets.midcast.Shell = {ring1="Sheltered Ring"}
  175.     sets.midcast.Shellra = sets.midcast.Shell
  176.  
  177.  
  178.     -- Custom spell classes
  179.     sets.midcast.MndEnfeebles = {main="Akademos",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
  180.         head="Befouled Crown",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  181.         body="Vanya Robe",hands="Lurid Mitts",ring1="Weather. Ring",ring2="Leviathan Ring",
  182.         back="Refraction Cape",waist="Rumination Sash",legs="Psycloth Lappas",feet="Artsieq Boots"}
  183.  
  184.     sets.midcast.IntEnfeebles = {main="Akademos",sub="Mephitis Grip",range="Ghastly Tathlum +1",
  185.         head="Befouled Crown",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  186.         body="Vanya Robe",hands="Lurid Mitts",ring1="Weather. Ring",ring2="Sangoma Ring",
  187.         back="Refraction Cape",waist="Yamabuki-no-obi",legs="Psycloth Lappas",feet="Merlinic Crackows"}
  188.  
  189.     sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  190.  
  191.     sets.midcast['Dark Magic'] = {main="Akademos",sub="Mephitis Grip",range="Ghastly Tathlum +1",
  192.         head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  193.         body="Vanya Robe",hands="Lurid Mitts",ring1="Weather. Ring",ring2="Sangoma Ring",
  194.         back="Bookworm's Cape",waist="Ninurta's Sash",legs="Psycloth Lappas",feet="Merlinic Crackows"}
  195.  
  196.     sets.midcast.Kaustra = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  197.         head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Strophadic Earring",ear2="Friomisi Earring",
  198.         body="Hagondes Coat +1",hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Acumen Ring",
  199.         back="Bookworm's Cape",waist="Yamabuki-no-obi",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  200.  
  201.     sets.midcast.Drain = {main="Akademos",sub="Mephitis Grip",range="Ghastly Tathlum +1",
  202.         head="Merlinic Hood",neck="Weike Torque",ear1="Gwati Earring",ear2="Hirudinea Earring",
  203.         body="Vanya Robe",hands="Lurid Mitts",ring1="Weather. Ring",ring2="Sangoma Ring",
  204.         back="Bookworm's Cape",waist="Fucho-no-Obi",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  205.  
  206.     sets.midcast.Aspir = sets.midcast.Drain
  207.  
  208.     sets.midcast.Stun = {main="Akademos",sub="Mephitis Grip",ammo="Hasty Pinion +1",
  209.         head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  210.         body="Vanya Robe",hands="Hagondes Cuffs +1",ring1="Prolix Ring",ring2="Sangoma Ring",
  211.         back="Refraction Cape",waist="Ninurta's Sash",legs="Psycloth Lappas",feet="Regal Pumps +1"}
  212.  
  213.     sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {main="Akademos"})
  214.  
  215.  
  216.     -- Elemental Magic sets are default for handling low-tier nukes.
  217.     sets.midcast['Elemental Magic'] = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  218.         head="Merlinic Hood",neck="Eddy Necklace",ear1="Barkarole Earring",ear2="Friomisi Earring",
  219.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Magic burst mdg.+11%','INT+3','"Mag.Atk.Bns."+4',}},        
  220.         hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Shiva Ring",
  221.         back="Bookworm's Cape",waist="Hachirin-no-Obi",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  222.  
  223.     sets.midcast['Elemental Magic'].Resistant = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  224.         head="Merlinic Hood",neck="Eddy Necklace",ear1="Strophadic Earring",ear2="Friomisi Earring",
  225.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Magic burst mdg.+11%','INT+3','"Mag.Atk.Bns."+4',}},
  226.         hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Acumen Ring",
  227.         back="Bookworm's Cape",waist="Hachirin-no-Obi",legs="Merlinic Shalwar",feet="Amalric Nails"}
  228.  
  229.        
  230.     sets.midcast['Elemental Magic'].HelixNuke = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
  231.         head="Merlinic Hood",neck="Sanctity Necklace",ear1="Crematio Earring",ear2="Friomisi Earring",
  232.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Magic burst mdg.+11%','INT+3','"Mag.Atk.Bns."+4',}},
  233.         hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Shiva Ring",
  234.         back="Bookworm's Cape",waist="Eschan Stone",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
  235.        
  236.     -- Custom refinements for certain nuke tiers
  237.     sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Niobid Strap"})
  238.  
  239.     sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {sub="Niobid Strap"})
  240.  
  241.     sets.midcast.Impact = {main="Akademos",sub="Mephitis Grip",ammo="Ghastly Tathlum +1",
  242.         head='empty',neck="Eddy Necklace",ear1="Barkarole Earring",ear2="Friomisi Earring",
  243.         body="Twilight Cloak",hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Weather. Ring",
  244.         back="Bookworm's Cape",waist="Yamabuki-no-obi",legs="Merlinic Shalwar",feet="Amalric Nails"}
  245.  
  246.     sets.af_body = {}
  247.  
  248.  
  249.     -- Sets to return to when not performing an action.
  250.  
  251.     -- Resting sets
  252.     sets.resting = {main="Akademos",sub="Oneiros Grip",
  253.         head="Befouled Crown",neck="Wiglen Gorget",
  254.         body="Witching Robe",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  255.         waist="Austerity Belt",legs="Assiduity Pants +1",feet="Serpentes Sabots"}
  256.  
  257.  
  258.     -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  259.  
  260.     sets.idle.Town = {main="Akademos",sub="Oneiros Grip",ammo="Homiliary",
  261.         neck="Wiglen Gorget",ear1="Infused Earring",ear2="Dawn Earring",
  262.         head='Befouled Crown',body="Witching Robe",
  263.         hands="Serpentes Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  264.         back="Kumbira Cape",waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Serpentes Sabots"}
  265.  
  266.     sets.idle.Field = {main="Akademos",sub="Oneiros Grip",ammo="Homiliary",
  267.         neck="Wiglen Gorget",ear1="Infused Earring",ear2="Dawn Earring",
  268.         head='Befouled Crown',body="Witching Robe",
  269.         hands="Serpentes Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  270.         back="Kumbira Cape",waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Serpentes Sabots"}
  271.  
  272.     sets.idle.Field.PDT = {main="Akademos",sub="Oneiros Grip",ammo="Homiliary",
  273.         neck="Loricate Torque +1 Gorget",ear1="Infused Earring",ear2="Dawn Earring",
  274.         head='Befouled Crown',body="Witching Robe",
  275.         hands="Serpentes Cuffs",ring1="Dark Ring",ring2="Dark Ring",
  276.         back="Kumbira Cape",waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Serpentes Sabots"}
  277.  
  278.     sets.idle.Field.Stun = {main="Akademos",sub="Mephitis Grip",ammo="Homiliary",
  279.         head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  280.         body="Ischemia Chasu.",hands="Hagondes Cuffs +1",ring1="Prolix Ring",ring2="Sangoma Ring",
  281.         back="Refraction Cape",waist="Ninurta's Sash",legs="Psycloth Lappas",feet="Regal Pumps +1"}
  282.  
  283.     sets.idle.Weak = {main="Akademos",sub="Oneiros Grip",ammo="Homiliary",
  284.         neck="Loricate Torque +1",ear2="Moonshade Earring",
  285.         head='Befouled Crown',body="Witching Robe",hands="Hagondes Cuffs +1",ring1="Dark Ring",ring2="Dark Ring",
  286.         waist="Fucho-no-Obi",legs="Assiduity Pants +1"}
  287.  
  288.     -- defense sets
  289.  
  290.     sets.defense.PDT = {main="Akademos",sub="Oneiros Grip",ammo="Ghastly Tathlum +1",
  291.         neck="Loricate Torque +1",ear2="Moonshade Earring",
  292.         body="Respite Cloak",hands="Hagondes Cuffs +1",ring1="Dark Ring",ring2="Dark Ring",
  293.         waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Amalric Nails"}
  294.  
  295.     sets.defense.MDT = {main="Akademos",sub="Oneiros Grip",ammo="Ghastly Tathlum +1",
  296.         neck="Loricate Torque +1",ear2="Moonshade Earring",
  297.         body="Respite Cloak",hands="Hagondes Cuffs +1",ring1="Dark Ring",ring2="Dark Ring",
  298.         waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Amalric Nails"}
  299.  
  300.     sets.Kiting = {feet="Herald's Gaiters"}
  301.  
  302.     sets.latent_refresh = {waist="Fucho-no-obi"}
  303.  
  304.     sets.magic_burst = {main="Akademos",sub="Niobid Strap",
  305.         head="Merlinic Hood",neck="Mizukage-no-Kubikazari",
  306.         body={ name="Merlinic Jubbah", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Magic burst mdg.+11%','INT+3','"Mag.Atk.Bns."+4',}},
  307.         hands="Amalric Gages",
  308.         ring1="Locus Ring",ring2="Mujin Band",
  309.         feet="Merlinic Crackows",back="Seshaw Cape"}
  310.  
  311.     -- Engaged sets
  312.  
  313.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  314.     -- sets if more refined versions aren't defined.
  315.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  316.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  317.  
  318.     -- Normal melee group
  319.     sets.engaged = {ammo="Ghastly Tathlum +1",
  320.         neck="Loricate Torque +1",
  321.         body="Respite Cloak",hands="Lurid Mitts",ring1="Dark Ring",ring2="Dark Ring",
  322.         waist="Fucho-no-Obi",legs="Assiduity Pants +1",feet="Gende. Galosh. +1"}
  323.  
  324.  
  325.  
  326.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  327.     sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
  328.     sets.buff['Rapture'] = {head="Savant's Bonnet +2"}
  329.     sets.buff['Perpetuance'] = {hands="Savant's Bracers +2"}
  330.     sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
  331.     sets.buff['Penury'] = {legs="Savant's Pants +2"}
  332.     sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
  333.     sets.buff['Celerity'] = {feet="Pedagogy Loafers +1"}
  334.     sets.buff['Alacrity'] = {feet="Pedagogy Loafers +1"}
  335.  
  336.     sets.buff['Klimaform'] = {feet="Savant's Loafers +2"}
  337.  
  338.     sets.buff.FullSublimation = {ear1="Savant's Earring"}
  339.         -- head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown
  340.     sets.buff.PDTSublimation = {ear1="Savant's Earring"}
  341.         -- head="Academic's Mortarboard",ear1="Savant's Earring"
  342.     --sets.buff['Sandstorm'] = {feet="Desert Boots"}
  343. end
  344.  
  345. -------------------------------------------------------------------------------------------------------------------
  346. -- Job-specific hooks for standard casting events.
  347. -------------------------------------------------------------------------------------------------------------------
  348.  
  349. -- Run after the general midcast() is done.
  350. function job_post_midcast(spell, action, spellMap, eventArgs)
  351.     if spell.action_type == 'Magic' then
  352.         apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  353.     end
  354. end
  355.  
  356. function job_post_midcast(spell, action, spellMap, eventArgs)
  357.     if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  358.         equip(sets.magic_burst)
  359.     elseif spell.skill == 'Elemental Magic' and state.ArtifactBody.value then
  360.         equip(sets.af_body)
  361.     end
  362. end
  363.  
  364. -------------------------------------------------------------------------------------------------------------------
  365. -- Job-specific hooks for non-casting events.
  366. -------------------------------------------------------------------------------------------------------------------
  367.  
  368. -- Called when a player gains or loses a buff.
  369. -- buff == buff gained or lost
  370. -- gain == true if the buff was gained, false if it was lost.
  371. function job_buff_change(buff, gain)
  372.     if buff == "Sublimation: Activated" then
  373.         handle_equipping_gear(player.status)
  374.     end
  375. end
  376.  
  377. -- Handle notifications of general user state change.
  378. function job_state_change(stateField, newValue, oldValue)
  379.     if stateField == 'Offense Mode' then
  380.         if newValue == 'Normal' then
  381.             disable('main','sub','range')
  382.         else
  383.             enable('main','sub','range')
  384.         end
  385.     end
  386. end
  387.  
  388. -------------------------------------------------------------------------------------------------------------------
  389. -- User code that supplements standard library decisions.
  390. -------------------------------------------------------------------------------------------------------------------
  391.  
  392. -- Custom spell mapping.
  393. function job_get_spell_map(spell, default_spell_map)
  394.     if spell.action_type == 'Magic' then
  395.         if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  396.             if world.weather_element == 'Light' then
  397.                 return 'CureWithLightWeather'
  398.             end
  399.         elseif spell.skill == 'Enfeebling Magic' then
  400.             if spell.type == 'WhiteMagic' then
  401.                 return 'MndEnfeebles'
  402.             else
  403.                 return 'IntEnfeebles'
  404.             end
  405.         elseif spell.skill == 'Elemental Magic' then
  406.             if info.low_nukes:contains(spell.english) then
  407.                 return 'LowTierNuke'
  408.             elseif info.mid_nukes:contains(spell.english) then
  409.                 return 'MidTierNuke'
  410.             elseif info.high_nukes:contains(spell.english) then
  411.                 return 'HighTierNuke'
  412.             end
  413.         end
  414.     end
  415. end
  416.  
  417. function customize_idle_set(idleSet)
  418.     if state.Buff['Sublimation: Activated'] then
  419.         if state.IdleMode.value == 'Normal' then
  420.             idleSet = set_combine(idleSet, sets.buff.FullSublimation)
  421.         elseif state.IdleMode.value == 'PDT' then
  422.             idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
  423.         end
  424.     end
  425.  
  426.     if player.mpp < 51 then
  427.        idleSet = set_combine(idleSet, sets.latent_refresh)
  428.    end
  429.  
  430.    return idleSet
  431. end
  432.  
  433. -- Called by the 'update' self-command.
  434. function job_update(cmdParams, eventArgs)
  435.    if cmdParams[1] == 'user' and not (buffactive['light arts']      or buffactive['dark arts'] or
  436.                       buffactive['addendum: white'] or buffactive['addendum: black']) then
  437.        if state.IdleMode.value == 'Stun' then
  438.            send_command('@input /ja "Dark Arts" <me>')
  439.         else
  440.             send_command('@input /ja "Light Arts" <me>')
  441.         end
  442.     end
  443.  
  444.     update_active_strategems()
  445.     update_sublimation()
  446. end
  447.  
  448. -- Function to display the current relevant user state when doing an update.
  449. -- Return true if display was handled, and you don't want the default info shown.
  450. function display_current_job_state(eventArgs)
  451.     display_current_caster_state()
  452.     eventArgs.handled = true
  453. end
  454.  
  455. -------------------------------------------------------------------------------------------------------------------
  456. -- User code that supplements self-commands.
  457. -------------------------------------------------------------------------------------------------------------------
  458.  
  459. -- Called for direct player commands.
  460. function job_self_command(cmdParams, eventArgs)
  461.     if cmdParams[1]:lower() == 'scholar' then
  462.         handle_strategems(cmdParams)
  463.         eventArgs.handled = true
  464.     end
  465. end
  466.  
  467. -------------------------------------------------------------------------------------------------------------------
  468. -- Utility functions specific to this job.
  469. -------------------------------------------------------------------------------------------------------------------
  470. -- Select default macro book on initial load or subjob change.
  471. function select_default_macro_book()
  472.     set_macro_page(1, 19)
  473. end
  474.  
  475.  
  476. -- Reset the state vars tracking strategems.
  477. function update_active_strategems()
  478.     state.Buff['Ebullience'] = buffactive['Ebullience'] or false
  479.     state.Buff['Rapture'] = buffactive['Rapture'] or false
  480.     state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
  481.     state.Buff['Immanence'] = buffactive['Immanence'] or false
  482.     state.Buff['Penury'] = buffactive['Penury'] or false
  483.     state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  484.     state.Buff['Celerity'] = buffactive['Celerity'] or false
  485.     state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  486.  
  487.     state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  488. end
  489.  
  490. function update_sublimation()
  491.     state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  492. end
  493.  
  494. -- Equip sets appropriate to the active buffs, relative to the spell being cast.
  495. function apply_grimoire_bonuses(spell, action, spellMap)
  496.     if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
  497.         equip(sets.buff['Perpetuance'])
  498.     end
  499.     if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
  500.         equip(sets.buff['Rapture'])
  501.     end
  502.     if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
  503.         if state.Buff.Ebullience and spell.english ~= 'Impact' then
  504.             equip(sets.buff['Ebullience'])
  505.         end
  506.         if state.Buff.Immanence then
  507.             equip(sets.buff['Immanence'])
  508.         end
  509.         if state.Buff.Klimaform and spell.element == world.weather_element then
  510.             equip(sets.buff['Klimaform'])
  511.         end
  512.     end
  513.  
  514.     if state.Buff.Penury then equip(sets.buff['Penury']) end
  515.     if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
  516.     if state.Buff.Celerity then equip(sets.buff['Celerity']) end
  517.     if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
  518. end
  519.  
  520.  
  521. -- General handling of strategems in an Arts-agnostic way.
  522. -- Format: gs c scholar <strategem>
  523. function handle_strategems(cmdParams)
  524.     -- cmdParams[1] == 'scholar'
  525.     -- cmdParams[2] == strategem to use
  526.  
  527.     if not cmdParams[2] then
  528.         add_to_chat(123,'Error: No strategem command given.')
  529.         return
  530.     end
  531.     local strategem = cmdParams[2]:lower()
  532.  
  533.     if strategem == 'light' then
  534.         if buffactive['light arts'] then
  535.             send_command('input /ja "Addendum: White" <me>')
  536.         elseif buffactive['addendum: white'] then
  537.             add_to_chat(122,'Error: Addendum: White is already active.')
  538.         else
  539.             send_command('input /ja "Light Arts" <me>')
  540.         end
  541.     elseif strategem == 'dark' then
  542.         if buffactive['dark arts'] then
  543.             send_command('input /ja "Addendum: Black" <me>')
  544.         elseif buffactive['addendum: black'] then
  545.             add_to_chat(122,'Error: Addendum: Black is already active.')
  546.         else
  547.             send_command('input /ja "Dark Arts" <me>')
  548.         end
  549.     elseif buffactive['light arts'] or buffactive['addendum: white'] then
  550.         if strategem == 'cost' then
  551.             send_command('input /ja Penury <me>')
  552.         elseif strategem == 'speed' then
  553.             send_command('input /ja Celerity <me>')
  554.         elseif strategem == 'aoe' then
  555.             send_command('input /ja Accession <me>')
  556.         elseif strategem == 'power' then
  557.             send_command('input /ja Rapture <me>')
  558.         elseif strategem == 'duration' then
  559.             send_command('input /ja Perpetuance <me>')
  560.         elseif strategem == 'accuracy' then
  561.             send_command('input /ja Altruism <me>')
  562.         elseif strategem == 'enmity' then
  563.             send_command('input /ja Tranquility <me>')
  564.         elseif strategem == 'skillchain' then
  565.             add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
  566.         elseif strategem == 'addendum' then
  567.             send_command('input /ja "Addendum: White" <me>')
  568.         else
  569.             add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  570.         end
  571.     elseif buffactive['dark arts']  or buffactive['addendum: black'] then
  572.         if strategem == 'cost' then
  573.             send_command('input /ja Parsimony <me>')
  574.         elseif strategem == 'speed' then
  575.             send_command('input /ja Alacrity <me>')
  576.         elseif strategem == 'aoe' then
  577.             send_command('input /ja Manifestation <me>')
  578.         elseif strategem == 'power' then
  579.             send_command('input /ja Ebullience <me>')
  580.         elseif strategem == 'duration' then
  581.             add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
  582.         elseif strategem == 'accuracy' then
  583.             send_command('input /ja Focalization <me>')
  584.         elseif strategem == 'enmity' then
  585.             send_command('input /ja Equanimity <me>')
  586.         elseif strategem == 'skillchain' then
  587.             send_command('input /ja Immanence <me>')
  588.         elseif strategem == 'addendum' then
  589.             send_command('input /ja "Addendum: Black" <me>')
  590.         else
  591.             add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  592.         end
  593.     else
  594.         add_to_chat(123,'No arts has been activated yet.')
  595.     end
  596. end
  597.  
  598.  
  599. -- Gets the current number of available strategems based on the recast remaining
  600. -- and the level of the sch.
  601. function get_current_strategem_count()
  602.     -- returns recast in seconds.
  603.     local allRecasts = windower.ffxi.get_ability_recasts()
  604.     local stratsRecast = allRecasts[231]
  605.  
  606.     local maxStrategems = (player.main_job_level + 10) / 20
  607.  
  608.     local fullRechargeTime = 4*60
  609.  
  610.     local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
  611.  
  612.     return currentCharges
  613. end
  614.  
  615.  
  616. -- Puts in Aftercast timers for sleep and stun lines in linkshell.
  617. function job_aftercast(spell, action, spellMap, eventArgs)
  618.         if not spell.interrupted then
  619.                 if spell.english == "Sleep II" then
  620.                         send_command('timers create "Sleep 2 '..spell.target.name..'" 90 down')
  621.                 elseif spell.english == "Sleep" then
  622.                         send_command('timers create "Sleep '..spell.target.name..'" 60 down')
  623.                 elseif spell.english == "Sleepga" then
  624.                         send_command('timers create "Sleepga '..spell.target.name..'" 60 down')
  625.                 elseif spell.english == "Stun" then
  626.                         send_command('exec StunningBear.txt')
  627.                 end
  628.         end
  629. end
Advertisement
Add Comment
Please, Sign In to add comment