Advertisement
Guest User

geo lua/degrade

a guest
Jun 11th, 2022
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 35.54 KB | None | 0 0
  1. -- Original: Motenten / Modified: Arislan
  2.  
  3. -------------------------------------------------------------------------------------------------------------------
  4. --  Keybinds
  5. -------------------------------------------------------------------------------------------------------------------
  6.  
  7. --  Modes:      [ F10 ]             Emergency -PDT Mode
  8. --              [ ALT+F10 ]         Toggle Kiting Mode
  9. --              [ F11 ]             Emergency -MDT Mode
  10. --              [ CTRL+F11 ]        Cycle Casting Modes
  11. --              [ F12 ]             Update Current Gear / Report Current Status
  12. --              [ CTRL+F12 ]        Cycle Idle Modes
  13. --              [ ALT+F12 ]         Cancel Emergency -PDT/-MDT Mode
  14. --              [ ALT+` ]           Magic Burst Mode Toggle
  15. --              [ WIN+C ]           Toggle Capacity Points Mode
  16. --
  17. --  Abilities:  [ CTRL+` ]          Full Circle
  18. --              [ CTRL+B ]          Blaze of Glory
  19. --              [ CTRL+A ]          Ecliptic Attrition
  20. --              [ CTRL+D ]          Dematerialize
  21. --              [ CTRL+L ]          Life Cycle
  22. --
  23. --  Weapons:    [ CTRL+W ]          Toggles Weapon Lock
  24. --
  25. --  WS:         [ CTRL+Numpad0 ]    Myrkr
  26. --
  27. --
  28. --              (Global-Binds.lua contains additional non-job-related keybinds)
  29.  
  30.  
  31. -------------------------------------------------------------------------------------------------------------------
  32. -- Setup functions for this job.  Generally should not be modified.
  33. -------------------------------------------------------------------------------------------------------------------
  34.  
  35. -- Initialization function for this job file.
  36. function get_sets()
  37.     mote_include_version = 2
  38.  
  39.     -- Load and initialize the include file.
  40.     include('Mote-Include.lua')
  41. end
  42.  
  43. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  44. function job_setup()
  45.     geo_timer = ''
  46.     indi_timer = ''
  47.     indi_duration = 308
  48.     entrust_timer = ''
  49.     entrust_duration = 344
  50.     entrust = 0
  51.     newLuopan = 0
  52.  
  53.     state.Buff['Blaze of Glory'] = buffactive['Blaze of Glory'] or false
  54.  
  55.     state.CP = M(false, "Capacity Points Mode")
  56.  
  57.     state.Auto = M(true, 'Auto Nuke')
  58.     state.Element = M{['description']='Element','Fire','Blizzard','Aero','Stone','Thunder','Water'}
  59.  
  60.     no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  61.               "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  62.  
  63.     degrade_array = {
  64.         ['Fire'] = {'Fire','Fire II','Fire III','Fire IV','Fire V'},
  65.         ['Ice'] = {'Blizzard','Blizzard II','Blizzard III','Blizzard IV','Blizzard V'},
  66.         ['Wind'] = {'Aero','Aero II','Aero III','Aero IV','Aero V'},
  67.         ['Earth'] = {'Stone','Stone II','Stone III','Stone IV','Stone V'},
  68.         ['Lightning'] = {'Thunder','Thunder II','Thunder III','Thunder IV','Thunder V'},
  69.         ['Water'] = {'Water', 'Water II','Water III', 'Water IV','Water V'},
  70.         ['Aspirs'] = {'Aspir','Aspir II','Aspir III'},
  71.         }
  72.  
  73.     lockstyleset = 6
  74.  
  75. end
  76.  
  77. -------------------------------------------------------------------------------------------------------------------
  78. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  79. -------------------------------------------------------------------------------------------------------------------
  80.  
  81. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  82. function user_setup()
  83.     state.OffenseMode:options('Normal', 'Acc', 'DW')
  84.     state.CastingMode:options('Normal', 'Seidr', 'Resistant')
  85.     state.IdleMode:options('Normal', 'DT', 'MEva')
  86.     state.MagicalDefenseMode:options('DT', 'MEva')
  87.  
  88.     state.WeaponLock = M(false, 'Weapon Lock')
  89.     state.MagicBurst = M(false, 'Magic Burst')
  90.  
  91.     -- Additional local binds
  92.  
  93.     send_command('bind ^` input /ja "Full Circle" <me>')
  94.     send_command('bind ` input /ja "Dematerialize" <me>')
  95.     send_command('bind ^b input /ja "Blaze of Glory" <me>')
  96.     send_command('bind ^d input /ja "Dematerialize" <me>')
  97.     send_command('bind !` gs c toggle MagicBurst')
  98.     send_command('bind ^insert gs c cycleback Element')
  99.     send_command('bind ^delete gs c cycle Element')
  100.     send_command('bind !p input /ja "Entrust" <me>')
  101.     send_command('bind ^, input /ma Sneak <stpc>')
  102.     send_command('bind ^. input /ma Invisible <stpc>')
  103.     send_command('bind @c gs c toggle CP')
  104.     send_command('bind @w gs c toggle WeaponLock')
  105.     send_command('bind !e input /ja "Ecliptic Attrition" <me>')
  106.     send_command('bind !r input /ma "Refresh" <stpc>')
  107.     send_command('bind !q input /ma "Haste" <stpc>')
  108.  
  109.     send_command('bind ^numpad7 input /ws "Black Halo" <t>')
  110.     send_command('bind ^numpad8 input /ws "Hexa Strike" <t>')
  111.     send_command('bind ^numpad9 input /ws "Realmrazer" <t>')
  112.     send_command('bind ^numpad6 input /ws "Exudation" <t>')
  113.     send_command('bind ^numpad1 input /ws "Flash Nova" <t>')
  114.     send_command('bind ^z gs equip sets.idle.MEva')
  115.  
  116.     send_command('bind #- input /follow <t>')
  117.  
  118.     select_default_macro_book()
  119.     set_lockstyle()
  120.  
  121.     state.Auto_Kite = M(false, 'Auto_Kite')
  122.     moving = false
  123. end
  124.  
  125. function user_unload()
  126.     send_command('unbind ^`')
  127.     send_command('unbind ^b')
  128.     send_command('unbind ^a')
  129.     send_command('unbind ^d')
  130.     send_command('unbind ^c')
  131.     send_command('unbind !`')
  132.     send_command('unbind ^insert')
  133.     send_command('unbind ^delete')
  134.     send_command('unbind !w')
  135.     send_command('unbind !p')
  136.     send_command('unbind ^,')
  137.     send_command('unbind !.')
  138.     -- send_command('unbind @c')
  139.     send_command('unbind @w')
  140.     send_command('unbind ^numpad7')
  141.     send_command('unbind ^numpad8')
  142.     send_command('unbind ^numpad9')
  143.     send_command('unbind ^numpad4')
  144.     send_command('unbind ^numpad1')
  145.     send_command('unbind !numpad7')
  146.     send_command('unbind !numpad8')
  147.     send_command('unbind !numpad9')
  148.     send_command('unbind !numpad4')
  149.     send_command('unbind !numpad5')
  150.     send_command('unbind !numpad6')
  151.     send_command('unbind !numpad1')
  152.     send_command('unbind !numpad+')
  153.     send_command('unbind `')
  154.     send_command('unbind !e')
  155.     send_command('unbind !r')
  156.     send_command('unbind !q')
  157.     send_command('unbind ^z')
  158. end
  159.  
  160.  
  161. -- Define sets and vars used by this job file.
  162. function init_gear_sets()
  163.    
  164.     GEO_Pet_Cape = { name="Nantosuelta's Cape", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','Pet: "Regen"+10','Pet: Damage taken -5%',}}
  165.    
  166.     ------------------------------------------------------------------------------------------------
  167.     ----------------------------------------- Precast Sets -----------------------------------------
  168.     ------------------------------------------------------------------------------------------------
  169.  
  170.     -- Precast sets to enhance JAs
  171.     sets.precast.JA.Bolster = {body="Bagua Tunic +1"}
  172.     sets.precast.JA['Full Circle'] = {head="Azimuth Hood +1"}
  173.     sets.precast.JA['Life Cycle'] = {head="Bagua Galero +1", body="Geomancy Tunic", back="Nantosuelta's Cape"}
  174.  
  175.  
  176.     -- Fast cast sets for spells
  177.  
  178.     sets.precast.FC = {
  179.     --  /RDM --15
  180.         ranged="Dunna", --3
  181.         --main="Sucellus", --5
  182.         --sub="Chanter's Shield", --3
  183.         --head="Amalric Coif +1", --11
  184.         head="Haruspex Hat",
  185.         --body=gear.Merl_MB_body, --6
  186.         --hands=gear.Merl_FC_hands, --7
  187.         hands="Telchine Gloves",
  188.         legs="Geomancy Pants +1", --15
  189.         --feet="Volte Gaiters", --6
  190.         feet="Merlinic Crackows",
  191.         neck="Baetyl Pendant", --4
  192.         --ear1="Malignance Earring", --4
  193.         ear1="Malignance Earring",
  194.         ear2="Loquacious Earring", --1
  195.         --ring1="Kishar Ring", --4
  196.         ring1="Prolix Ring",
  197.         --ring2="Weather. Ring +1", --6(4)
  198.         ring2="Weatherspoon Ring",
  199.         --back=gear.GEO_FC_Cape, --10
  200.         --back=gear.GEO_FC_Cape,
  201.         back="Swith Cape",
  202.         waist="Embla Sash",
  203.         }
  204.  
  205.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
  206.         --back="Perimede Cape",
  207.         waist="Siegel Sash",
  208.         })
  209.    
  210.     sets.precast.FC['Geomancy'] = set_combine(sets.precast.FC, {
  211.         --back="Perimede Cape",
  212.         waist="Siegel Sash",
  213.         })
  214.        
  215.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
  216.         hands="Bagua Mitaines",
  217.         head="Mallquis Chapeau+1",
  218.         legs="Mallquis Trews +1",
  219.         })
  220.  
  221.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  222.         --ear1="Mendi. Earring", --5
  223.         --ring1="Lebeche Ring", --(2)
  224.         --back="Perimede Cape", --(4)
  225.         })
  226.  
  227.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  228.     sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty, body="Twilight Cloak"})
  229.     sets.precast.FC.Dispelga = set_combine(sets.precast.FC, {main="Daybreak", sub="Ammurapi Shield"})
  230.  
  231.  
  232.     -- Weaponskill sets
  233.     -- Default set for any weaponskill that isn't any more specifically defined
  234.     sets.precast.WS = {
  235.         --head="Jhakri Coronal +2",
  236.         --body="Jhakri Robe +2",
  237.         hands="Jhakri Cuffs +1",
  238.         --legs="Jhakri Slops +2",
  239.         --feet="Jhakri Pigaches +2",
  240.         neck="Fotia Gorget",
  241.         ear1="Moonshade Earring",
  242.         ear2="Brutal Earring",
  243.         ring1="Petrov Ring",
  244.         --ring2="Hetairoi Ring",
  245.         waist="Fotia Belt",
  246.         }
  247.  
  248.     --sets.precast.WS['Hexastrike'] = set_combine(sets.precast.WS, {
  249.         --neck="Caro Necklace",
  250.         --waist="Grunfeld Rope",
  251.         --})
  252.  
  253.     --sets.precast.WS['Exudation'] = sets.precast.WS['Hexastrike']
  254.  
  255.     sets.precast.WS['Flash Nova'] = {
  256.         head="Bagua Galero +1",
  257.         --body="Amalric Doublet +1",
  258.         hands="Amalric Gages +1",
  259.         --legs="Amalric Slops +1",
  260.         feet="Amalric Nails +1",
  261.         --neck="Saevus Pendant +1",
  262.         ear1="Malignance Earring",
  263.         ear2="Regal Earring",
  264.         ring1="Freke Ring",
  265.         ring2="Metamor. Ring +1",
  266.         --back=gear.GEO_MAB_Cape,
  267.         waist="Refoccilation Stone",
  268.         }
  269.  
  270.     ------------------------------------------------------------------------
  271.     ----------------------------- Midcast Sets -----------------------------
  272.     ------------------------------------------------------------------------
  273.  
  274.     -- Base fast recast for spells
  275.     sets.midcast.FastRecast = {
  276.         --main="Sucellus",
  277.         --sub="Chanter's Shield",
  278.         --head="Amalric Coif +1", --Abjuration https://www.bg-wiki.com/ffxi/Amalric_Coif_%2B1
  279.         head="Haruspex Hat",
  280.         --hands=gear.Merl_FC_hands,
  281.         hands="Telchine Gloves",
  282.         legs="Geomancy Pants +1",
  283.         feet="Merlinic Crackows",
  284.         ear1="Loquacious Earring",
  285.         --ear1="Malignance Earring",
  286.         --ear2="Etiolation Earring",
  287.         ring1="Weatherspoon Ring",
  288.         ring2="Veneficium Ring",
  289.         --ring1="Kishar Ring",
  290.         --ring2="Weather. Ring +1",
  291.         --back=gear.GEO_FC_Cape,
  292.         back="Swith Cape",
  293.         --waist="Shinjutsu-no-Obi +1",
  294.         waist="Cetl Belt"
  295.         } -- Haste
  296.  
  297.     -- Geo Skill > Conserve MP
  298.    sets.midcast.Geomancy = {
  299.         --main="Idris",
  300.         main="Solstice",
  301.         sub="Genmei Shield",
  302.         range="Dunna",
  303.         --sub="Chanter's Shield",
  304.         head="Azimuth Hood +1",
  305.         body="Bagua Tunic +1",
  306.         --body="Amalric Doublet +1",
  307.         --hands="Shrieker's Cuffs",
  308.         hands="Geomancy Mitaines +2",
  309.         --legs="Vanya Slops",
  310.         feet="Amalric Nails +1",
  311.         legs="Bagua Pants",
  312.         --ear1="Calamitous Earring",
  313.         --ear2="Gifted Earring",
  314.         --neck="Reti Pendant",
  315.         neck="Incanter's Torque",
  316.         ring1={name="Stikini Ring", bag="wardrobe2"},
  317.         ring2={name="Stikini Ring", bag="wardrobe1"},
  318.         --back="Fi Follet Cape +1",
  319.         --waist="Shinjutsu-no-Obi +1",
  320.         waist="Kobo Obi",
  321.         }
  322.  
  323.     sets.midcast.Geomancy.Indi = set_combine(sets.midcast.Geomancy, {
  324.         head="Vanya Hood",
  325.         legs="Bagua Pants",
  326.         feet="Azimuth Gaiters +1",
  327.         --back="Lifestream Cape",
  328.         })
  329.  
  330.     sets.midcast.Cure = {
  331.         main="Daybreak", --30
  332.         sub="Sors Shield", --3/(-5)
  333.         ammo="Pemphredo Tathlum",
  334.         head="Vanya Hood", --10
  335.         --body="Vanya Robe", --7/(-6)
  336.         --hands="Vanya Cuffs",
  337.         hands="Telchine Gloves",
  338.         --legs="Vanya Slops",
  339.         feet="Vanya Clogs", --5
  340.         neck="Incanter's Torque",
  341.         --ear1="Beatific Earring",
  342.         --ear2="Meili Earring",
  343.         --ring1="Lebeche Ring", --3/(-5)
  344.         --ring2={name="Haoma's Ring", bag="wardrobe3"},
  345.         --back=gear.GEO_Cure_Cape,
  346.         back="Solemnity Cape",      --0/(-10)
  347.         --waist="Bishop's Sash",
  348.         }
  349.  
  350.     sets.midcast.Curaga = set_combine(sets.midcast.Cure, {
  351.         --neck="Nuna Gorget +1",
  352.         ring2="Metamor. Ring +1",
  353.         --waist="Luminary Sash",
  354.         })
  355.  
  356.     sets.midcast.Cursna = set_combine(sets.midcast.Cure, {
  357.         feet="Vanya Clogs",
  358.         neck="Malison Medallion",
  359.         ring1={name="Haoma's Ring", bag="wardrobe3"},
  360.         ring2={name="Haoma's Ring", bag="wardrobe4"},
  361.         back="Oretan. Cape +1",
  362.         })
  363.  
  364.     sets.midcast['Enhancing Magic'] = {
  365.         --main=gear.Gada_ENH,
  366.         --sub="Ammurapi Shield",
  367.         head="Befouled Crown",
  368.         --body="Telchine Chas.",
  369.         hands="Telchine Gloves",
  370.         legs="Telchine Braconi",
  371.         feet="Telchine Pigaches",
  372.         --neck="Incanter's Torque",
  373.         --ear1="Mimir Earring",
  374.         --ear2="Andoaa Earring",
  375.         --ring1={name="Stikini Ring +1", bag="wardrobe3"},
  376.         --ring2={name="Stikini Ring +1", bag="wardrobe4"},
  377.         --back="Fi Follet Cape +1",
  378.         --waist="Olympus Sash",
  379.         waist="Embla Sash",
  380.         }
  381.  
  382.     sets.midcast.EnhancingDuration = {
  383.         --main=gear.Gada_ENH,
  384.         --sub="Ammurapi Shield",
  385.         head="Telchine Cap",
  386.         body="Telchine Chas.",
  387.         hands="Telchine Gloves",
  388.         legs="Telchine Braconi",
  389.         feet="Telchine Pigaches",
  390.         waist="Embla Sash",
  391.         }
  392.  
  393.     sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  394.         --main="Bolelabunga",
  395.         --sub="Ammurapi Shield",
  396.         })
  397.  
  398.     sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  399.         --head="Amalric Coif +1",
  400.         })
  401.  
  402.     sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
  403.         --neck="Nodens Gorget",
  404.         waist="Siegel Sash",
  405.         })
  406.  
  407.     sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {
  408.         --main="Vadose Rod",
  409.         --sub="Ammurapi Shield",
  410.         --head="Amalric Coif +1",
  411.         --ear2="Magnetic Earring",
  412.         })
  413.  
  414.     sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {ring2="Sheltered Ring"})
  415.     sets.midcast.Protectra = sets.midcast.Protect
  416.     sets.midcast.Shell = sets.midcast.Protect
  417.     sets.midcast.Shellra = sets.midcast.Protect
  418.  
  419.  
  420.     sets.midcast.MndEnfeebles = {
  421.         --main="Idris",
  422.         main="Daybreak",
  423.         --sub="Ammurapi Shield",
  424.         --head=empty,
  425.         head='Befouled Crown',
  426.         --body="Cohort Cloak +1",
  427.         hands="Geomancy Mitaines +2",
  428.         legs="Geomancy Pants +1",
  429.         --feet="Bagua Sandals +3",
  430.         --neck="Bagua Charm +2",
  431.         --ear1="Vor Earring",
  432.         --ear2="Regal Earring",
  433.         --ring1="Kishar Ring",
  434.         ring2={name="Stikini Ring", bag="wardrobe1"},
  435.         --back="Aurist's Cape +1",
  436.         --waist="Luminary Sash",
  437.         } -- MND/Magic accuracy
  438.  
  439.     sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {
  440.         ring1="Freke Ring",
  441.         --ring2="Weather. Ring +1",
  442.         waist="Acuity Belt +1",
  443.         }) -- INT/Magic accuracy
  444.  
  445.     sets.midcast.LockedEnfeebles = {body="Geomancy Tunic +3"}
  446.  
  447.     sets.midcast.Dispelga = set_combine(sets.midcast.IntEnfeebles, {main="Daybreak", sub="Ammurapi Shield"})
  448.  
  449.     sets.midcast['Dark Magic'] = {
  450.         --main="Rubicundity",
  451.         --sub="Ammurapi Shield",
  452.         head="Geomancy Galero",
  453.         --body="Geomancy Tunic +3",
  454.         hands="Geomancy Mitaines +2",
  455.         legs="Geomancy Pants +1",
  456.         --feet=gear.Merl_MAB_feet,
  457.         neck="Erra Pendant",
  458.         ear1="Malignance Earring",
  459.         --ear2="Regal Earring",
  460.         ring1={name="Stikini Ring", bag="wardrobe"},
  461.         ring2="Metamor. Ring +1",
  462.         ring2="Evanescence Ring",
  463.         back="Aurist's Cape +1",
  464.         waist="Acuity Belt +1",
  465.         }
  466.  
  467.     sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  468.         feet="Merlinic Crackows",
  469.         head="Bagua Galero +1",
  470.         ring1="Evanescence Ring",
  471.         --ring2="Archon Ring",
  472.         --ear1="Hirudinea Earring",
  473.         --ear2="Mani Earring",
  474.         waist="Fucho-no-Obi",
  475.         })
  476.  
  477.     sets.midcast.Aspir = sets.midcast.Drain
  478.  
  479.     sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {
  480.         })
  481.  
  482.     -- Elemental Magic sets
  483.  
  484.     sets.midcast['Elemental Magic'] = {
  485.         main="Bunzi's Rod",
  486.         sub="Ammurapi Shield",
  487.         ammo="Pemphredo Tathlum", --ammo="Ghastly Tathlum +1",
  488.         head="Nyame Helm",
  489.         neck="Baetyl Pendant",
  490.         ear1="Malignance Earring",
  491.         ear2="Regal Earring",
  492.         body="Witching Robe",
  493.         hands="Amalric Gages +1",
  494.         ring1="Metamorph Ring +1",
  495.         ring2="Freke Ring",
  496.         back={ name="Nantosuelta's Cape", augments={'INT+15','Magic Damage +1','"Mag.Atk.Bns."+10',}},
  497.         waist="Acuity Belt +1",
  498.         legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Mag. crit. hit dmg. +2%','Mag. Acc.+8','"Mag.Atk.Bns."+14',}},
  499.         feet="Amalric Nails +1",
  500.     }
  501.  
  502.     sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  503.         --main="Idris",
  504.         --sub="Ammurapi Shield",
  505.         hands="Bagua Mitaines",
  506.         --legs=gear.Merl_MAB_legs,
  507.         --feet=gear.Merl_MAB_feet,
  508.         --neck="Sanctity Necklace",
  509.         --ear2="Digni. Earring",
  510.         --waist="Acuity Belt +1",
  511.         })
  512.  
  513.     sets.midcast.GeoElem = set_combine(sets.midcast['Elemental Magic'], {})
  514.  
  515.     sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'].Resistant, {
  516.         body="Seidr Cotehardie",
  517.         })
  518.  
  519.     sets.midcast.GeoElem.Seidr = set_combine(sets.midcast['Elemental Magic'].Seidr, {})
  520.  
  521.     sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  522.         head=empty,
  523.         body="Twilight Cloak",
  524.         ring2="Archon Ring",
  525.         })
  526.  
  527.     -- Initializes trusts at iLvl 119
  528.     sets.midcast.Trust = {
  529.         main="Solstice",
  530.         body="Weatherspoon Robe +1",
  531.         head="Mallquis Chapeau +1",
  532.         hands="Telchine Gloves",
  533.         legs="Telchine Braconi",
  534.         feet="Vanya Clogs"
  535.         }
  536.  
  537.     ------------------------------------------------------------------------------------------------
  538.     ------------------------------------------ Idle Sets -------------------------------------------
  539.     ------------------------------------------------------------------------------------------------
  540.  
  541.     sets.idle = {
  542.         main="Daybreak",
  543.         --sub="Genmei Shield",
  544.         sub="Genmei Shield",
  545.         --head="Volte Beret",
  546.         head="Befouled Crown",
  547.         body="Jhakri Robe +2", --Geomancy Tunic
  548.         hands="Bagua Mitaines",
  549.         --legs="Volte Brais",
  550.         legs="Assiduity Pants +1",
  551.         --feet="Volte Gaiters",
  552.         feet="Geomancy Sandals",
  553.         --neck="Bathy Choker +1",
  554.         neck="Loricate Torque +1",
  555.         --ear1="Lugalbanda Earring",
  556.         ear1="Eabani Earring",
  557.         ear2="Infused Earring",
  558.         --ear2="Etiolation Earring",
  559.         --ring1={name="Stikini Ring +1", bag="wardrobe3"},
  560.         --ring2={name="Stikini Ring +1", bag="wardrobe4"},
  561.         --back=gear.GEO_Idle_Cape,
  562.         --waist="Slipor Sash",
  563.         ring1="Sheltered Ring",
  564.         ring2="Paguroidea Ring",
  565.         back="Solemnity Cape",
  566.         waist="Carrier's Sash",
  567.         }
  568.  
  569.     sets.resting = set_combine(sets.idle, {
  570.         waist="Shinjutsu-no-Obi +1",
  571.         })
  572.  
  573.     sets.idle.DT = set_combine(sets.idle, {
  574.         main="Malignance Pole", --10/0
  575.         sub=empty,
  576.         head="Nyame Helm",
  577.         --body="Mallquis Saio +1", --8/8
  578.         body="Witching Robe",
  579.         hands="Nyame Gauntlets", --3/0
  580.         legs="Nyame Flanchard",
  581.         feet="Merlinic Crackows",
  582.         --neck="Loricate Torque +1", --6/6
  583.         neck="Loricate Torque +1",
  584.         --ear1="Genmei Earring", --2/0
  585.         ear1="Eabani Earring",
  586.         --ear2="Odnowa Earring +1", --3/3
  587.         ear2="Zennaroi Earring",
  588.         --ring1="Gelatinous Ring +1", --7/(-1)
  589.         ring1="Vertigo Ring",
  590.         ring2="Defending Ring",
  591.         --back=gear.GEO_Idle_Cape, --5/5
  592.         back="Solemnity Cape",
  593.         --waist="Slipor Sash", --0/3
  594.         })
  595.  
  596.     -- .Pet sets are for when Luopan is present.
  597.     sets.idle.Pet = set_combine(sets.idle, {
  598.         -- Pet: -DT (37.5% to cap) / Pet: Regen
  599.         --main="Idris", --0/0/25/0
  600.         --sub="Genmei Shield", --10/0/0/0
  601.         --head="Telchine Cap", --0/0/0/3
  602.         head="Azimuth Hood +1",
  603.         --body="Telchine Chas.", --0/0/0/3
  604.         hands="Geomancy Mitaines +2", --3/0/13/0
  605.         --legs="Telchine Braconi", --0/0/0/3
  606.         feet="Bagua Sandals", --0/0/0/5
  607.         neck="Bagua Charm",
  608.         --ear1="Lugalbanda Earring",
  609.         --ear2="Odnowa Earring +1", --3/3/0/0
  610.         --ring1="Gelatinous Ring +1", --7/(-1)/0/0
  611.         ring2="Defending Ring", --10/10/0/0
  612.         back=GEO_Pet_Cape, --0/0/0/15
  613.         --waist="Isa Belt" --0/0/3/1
  614.         })
  615.  
  616.     sets.idle.DT.Pet = set_combine(sets.idle.Pet, {
  617.         --body="Mallquis Saio +2", --8/8
  618.         --back=gear.GEO_Idle_Cape, --5/5
  619.         })
  620.  
  621.     --sets.PetHP = {head="Bagua Galero +1"}
  622.  
  623.     -- .Indi sets are for when an Indi-spell is active.
  624.     --sets.idle.Indi = set_combine(sets.idle, {})
  625.     --sets.idle.Pet.Indi = set_combine(sets.idle.Pet, {})
  626.     --sets.idle.DT.Indi = set_combine(sets.idle.DT, {})
  627.     --sets.idle.DT.Pet.Indi = set_combine(sets.idle.DT.Pet, {})
  628.  
  629.     sets.idle.Town = set_combine(sets.idle, {
  630.         ring1="Dimensional Ring (Holla)",
  631.         ring2="Warp Ring",
  632.         })
  633.  
  634.     -- Defense sets
  635.  
  636.     sets.defense.PDT = sets.idle.DT
  637.     sets.defense.MDT = sets.idle.DT
  638.    
  639.     sets.defense.MEva = set_combine(sets.idle, {
  640.         head="Nyame Helm",
  641.         hands="Nyame Gauntlets",
  642.         legs="Nyame Flanchard",
  643.         feet="Nyame Sollerets",
  644.         main="Malignance Pole",    
  645.         ear1="Eabani Earring",
  646.         ear2="Zennaroi Earring",
  647.         ring2="Defending Ring",
  648.         back=GEO_Pet_Cape,
  649.     }) 
  650.    
  651.     sets.idle.MEva = set_combine(sets.defense.MEva, {
  652.         head="Azimuth Hood +1",
  653.         hands="Geomancy Mitaines +2",
  654.         legs="Merlinic Shalwar",
  655.         feet="Merlinic Crackows",
  656.         main="Malignance Pole",    
  657.         ear2="Zennaroi Earring",
  658.         ring2="Defending Ring",
  659.         back=GEO_Pet_Cape
  660.     }) 
  661.    
  662.     sets.idle.MEva.Pet = set_combine(sets.idle.MEva)
  663.    
  664.     sets.Kiting = {feet="Geomancy Sandals"}
  665.  
  666.     sets.latent_refresh = {waist="Fucho-no-Obi"}
  667.  
  668.    
  669.     --------------------------------------
  670.     -- Engaged sets
  671.     --------------------------------------
  672.  
  673.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  674.     -- sets if more refined versions aren't defined.
  675.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  676.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  677.  
  678.     -- Normal melee group
  679.     sets.engaged = {
  680.         --main="Idris",\
  681.         main="Solstice",
  682.         --sub="Genmei Shield",
  683.         sub="Genbu Shield",
  684.         --head="Jhakri Coronal +2",
  685.         head="Psycloth Tiara",
  686.         --body="Jhakri Robe +2",
  687.         body="Weatherspoon Robe +1",
  688.         --hands="Gazu Bracelet +1",
  689.         hands="Telchine Gloves",
  690.         --legs="Jhakri Slops +2",
  691.         legs="Telchine Braconi",
  692.         --feet="Jhakri Pigaches +2",
  693.         feet="Vanya Clogs",
  694.         neck="Lissome Necklace",
  695.         --ear1="Cessance Earring",
  696.         ear1="Assuage Earring",
  697.         ear2="Brutal Earring",
  698.         ring1="Petrov Ring",
  699.         --ring2="Hetairoi Ring",
  700.         ring2="Rajas Ring",
  701.         back="Argochampsa Mantle",
  702.         waist="Cetl Belt",
  703.         }
  704.  
  705.     sets.engaged.DW = set_combine(sets.engaged, {
  706.         ear1="Suppanomimi"
  707.         })
  708.     --------------------------------------
  709.     -- Custom buff sets
  710.     --------------------------------------
  711.  
  712.     sets.magic_burst = set_combine(sets.midcast['Elemental Magic'], {
  713.         main="Bunzi's Rod",
  714.         sub="Ammurapi Shield",
  715.         --head="Ea Hat +1", --7/(7)
  716.         --body="Ea Houppe. +1", --9/(9)
  717.         --hands="Ea Cuffs +1", --6/(6)
  718.         hands="Amalric Gages +1",
  719.         --legs="Ea Slops +1", --8/(8)
  720.         --feet="Bagua Sandals +3",
  721.         legs="Nyame Flanchard",
  722.         feet="Nyame Sollerets",
  723.         neck="Mizu. Kubikazari", --10
  724.         ring2="Mujin Band", --(5)
  725.         })
  726.  
  727.     sets.buff.Doom = {ring1={name="Saida Ring", bag="wardrobe3"}, ring2={name="Saida Ring", bag="wardrobe4"},}
  728.     sets.Obi = {waist="Hachirin-no-Obi"}
  729.     --sets.CP = {back="Mecisto. Mantle"}
  730.     sets.CP = {back="Mecisto. Mantle"}
  731.    
  732.     sets.ring = {
  733.        
  734.         ring1="Dimensional Ring (Holla)",
  735.         ring2="Warp Ring",
  736.     }
  737. end
  738.  
  739. -------------------------------------------------------------------------------------------------------------------
  740. -- Job-specific hooks for standard casting events.
  741. -------------------------------------------------------------------------------------------------------------------
  742.  
  743. function job_pretarget(spell, spellMap, eventArgs)
  744.     if spell.type == 'Geomancy' then
  745.         if spell.name:startswith('Indi') and buffactive.Entrust and spell.target.type == 'SELF' then
  746.             add_to_chat(002, 'Entrust active - Select a party member!')
  747.             cancel_spell()
  748.         end
  749.     end
  750. end
  751.  
  752. function job_precast(spell, action, spellMap, eventArgs)
  753.     if spell.name:startswith('Aspir') then
  754.         refine_various_spells(spell, action, spellMap, eventArgs)
  755.     elseif state.Auto.value == true then
  756.         if spell.skill == 'Elemental Magic' and spell.english ~= 'Impact' and spellMap ~= 'GeoNuke' then
  757.             refine_various_spells(spell, action, spellMap, eventArgs)
  758.         end
  759.     end
  760. end
  761.  
  762. function job_post_precast(spell, action, spellMap, eventArgs)
  763.     if spell.name == 'Impact' then
  764.         equip(sets.precast.FC.Impact)
  765.     end
  766. end
  767.  
  768. function job_post_midcast(spell, action, spellMap, eventArgs)
  769.     if spell.skill == 'Elemental Magic' then
  770.         if state.MagicBurst.value then
  771.             equip(sets.magic_burst)
  772.             if spell.english == "Impact" then
  773.                 equip(sets.midcast.Impact)
  774.             end
  775.         end
  776.         if (spell.element == world.day_element or spell.element == world.weather_element) then
  777.             equip(sets.Obi)
  778.         end
  779.     elseif spell.skill == 'Enhancing Magic' and classes.NoSkillSpells:contains(spell.english) then
  780.         equip(sets.midcast.EnhancingDuration)
  781.         if spellMap == 'Refresh' then
  782.             equip(sets.midcast.Refresh)
  783.         end
  784.     elseif spell.skill == 'Enfeebling Magic' and newLuopan == 1 then
  785.         -- prevent Cohort Cloak from unequipping head when relic head is locked
  786.         equip(sets.midcast.LockedEnfeebles)
  787.     elseif spell.skill == 'Geomancy' then
  788.         if buffactive.Entrust and spell.english:startswith('Indi-') then
  789.             equip({main=gear.Gada_GEO})
  790.                 entrust = 1
  791.         end
  792.     end
  793. end
  794.  
  795. function job_aftercast(spell, action, spellMap, eventArgs)
  796.     if not spell.interrupted then
  797.         --[[if spell.english:startswith('Geo') then
  798.             geo_timer = spell.english
  799.             send_command('@timers c "'..geo_timer..'" 600 down spells/00136.png')
  800.         elseif spell.english:startswith('Indi') then
  801.             if entrust == 1 then
  802.                 entrust_timer = spell.english
  803.                 send_command('@timers c "'..entrust_timer..' ['..spell.target.name..']" '..entrust_duration..' down spells/00136.png')
  804.                 entrust = 0
  805.             else
  806.                 send_command('@timers d "'..indi_timer..'"')
  807.                 indi_timer = spell.english
  808.                 send_command('@timers c "'..indi_timer..'" '..indi_duration..' down spells/00136.png')
  809.             end
  810.         end ]]
  811.         if spell.english == "Sleep II" then
  812.             send_command('@timers c "Sleep II ['..spell.target.name..']" 90 down spells/00259.png')
  813.         elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
  814.             send_command('@timers c "Sleep ['..spell.target.name..']" 60 down spells/00253.png')
  815.         elseif spell.english:startswith('Geo-') or spell.english == "Life Cycle" then
  816.             newLuopan = 1
  817.         end
  818.     end
  819. end
  820.  
  821.  
  822. -------------------------------------------------------------------------------------------------------------------
  823. -- Job-specific hooks for non-casting events.
  824. -------------------------------------------------------------------------------------------------------------------
  825.  
  826. -- Called when a player gains or loses a buff.
  827. -- buff == buff gained or lost
  828. -- gain == true if the buff was gained, false if it was lost.
  829. function job_buff_change(buff, gain)
  830.     if buff == "doom" then
  831.         if gain then
  832.             equip(sets.buff.Doom)
  833.             send_command('@input /p Doomed.')
  834.              disable('ring1','ring2','waist')
  835.         else
  836.             enable('ring1','ring2','waist')
  837.             handle_equipping_gear(player.status)
  838.         end
  839.     end
  840.  
  841. end
  842.  
  843. -- Handle notifications of general user state change.
  844. function job_state_change(stateField, newValue, oldValue)
  845.     if state.WeaponLock.value == true then
  846.         disable('main','sub')
  847.     else
  848.         enable('main','sub')
  849.     end
  850. end
  851.  
  852. -- Called when a player gains or loses a pet.
  853. -- pet == pet structure
  854. -- gain == true if the pet was gained, false if it was lost.
  855. function job_pet_change(petparam, gain)
  856.     if gain == false then
  857.         send_command('@timers d "'..geo_timer..'"')
  858.         enable('head')
  859.         newLuopan = 0
  860.     end
  861. end
  862.  
  863. -------------------------------------------------------------------------------------------------------------------
  864. -- User code that supplements standard library decisions.
  865. -------------------------------------------------------------------------------------------------------------------
  866.  
  867. function job_handle_equipping_gear(playerStatus, eventArgs)
  868.     check_gear()
  869.     check_moving()
  870. end
  871.  
  872. function job_update(cmdParams, eventArgs)
  873.     handle_equipping_gear(player.status)
  874.     classes.CustomIdleGroups:clear()
  875. end
  876.  
  877. function job_get_spell_map(spell, default_spell_map)
  878.     if spell.action_type == 'Magic' then
  879.         if spell.skill == 'Enfeebling Magic' then
  880.             if spell.type == 'WhiteMagic' then
  881.                 return 'MndEnfeebles'
  882.             else
  883.                 return 'IntEnfeebles'
  884.             end
  885.         elseif spell.skill == 'Geomancy' then
  886.             if spell.english:startswith('Indi') then
  887.                 return 'Indi'
  888.             end
  889.         elseif spell.skill == 'Elemental Magic' then
  890.             if spellMap == 'GeoElem' then
  891.                 return 'GeoElem'
  892.             end
  893.         end
  894.     end
  895. end
  896.  
  897. function customize_idle_set(idleSet)
  898.     if player.mpp < 51 then
  899.         idleSet = set_combine(idleSet, sets.latent_refresh)
  900.     end
  901.      if state.CP.current == 'on' then
  902.          equip(sets.CP)
  903.          disable('back')
  904.      else
  905.          enable('back')
  906.      end
  907.     --if pet.isvalid then
  908.         --if pet.hpp > 73 then
  909.             --if newLuopan == 1 then
  910.                 --equip(sets.PetHP)
  911.                 --disable('head')
  912.             --end
  913.         --elseif pet.hpp <= 73 then
  914.             --enable('head')
  915.             --newLuopan = 0
  916.         --end
  917.     --end
  918.     if state.Auto_Kite.value == true then
  919.        idleSet = set_combine(idleSet, sets.Kiting)
  920.     end
  921.  
  922.     return idleSet
  923. end
  924.  
  925. -- Function to display the current relevant user state when doing an update.
  926. function display_current_job_state(eventArgs)
  927.     local c_msg = state.CastingMode.value
  928.  
  929.     local d_msg = 'None'
  930.     if state.DefenseMode.value ~= 'None' then
  931.         d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  932.     end
  933.  
  934.     local i_msg = state.IdleMode.value
  935.  
  936.     local msg = ''
  937.     if state.MagicBurst.value then
  938.         msg = ' Burst: On |'
  939.     end
  940.     if state.Auto.value then
  941.         msg = ' Auto: On |'
  942.     end
  943.     if state.Kiting.value then
  944.         msg = msg .. ' Kiting: On |'
  945.     end
  946.  
  947.     add_to_chat(060, '| Magic: ' ..string.char(31,001)..c_msg.. string.char(31,002)..  ' |'
  948.         ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002)..  ' |'
  949.         ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002)..  ' |'
  950.         ..string.char(31,002)..msg)
  951.  
  952.     eventArgs.handled = true
  953. end
  954.  
  955. function refine_various_spells(spell, action, spellMap, eventArgs)
  956.  
  957.     local newSpell = spell.english
  958.     local spell_recasts = windower.ffxi.get_spell_recasts()
  959.     local cancelling = 'All '..spell.english..' are on cooldown. Cancelling.'
  960.  
  961.     local spell_index
  962.  
  963.     if spell_recasts[spell.recast_id] > 0 then
  964.         if spell.skill == 'Elemental Magic' and spellMap ~= 'GeoElem' then
  965.             spell_index = table.find(degrade_array[spell.element],spell.name)
  966.             if spell_index > 1 then
  967.                 newSpell = degrade_array[spell.element][spell_index - 1]
  968.                 send_command('@input /ma '..newSpell..' '..tostring(spell.target.raw))
  969.                 eventArgs.cancel = true
  970.             end
  971.         elseif spell.name:startswith('Aspir') then
  972.             spell_index = table.find(degrade_array['Aspirs'],spell.name)
  973.             if spell_index > 1 then
  974.                 newSpell = degrade_array['Aspirs'][spell_index - 1]
  975.                 send_command('@input /ma '..newSpell..' '..tostring(spell.target.raw))
  976.                 eventArgs.cancel = true
  977.             end
  978.         end
  979.     end
  980. end
  981.  
  982.  
  983.  
  984. -------------------------------------------------------------------------------------------------------------------
  985. -- Utility functions specific to this job.
  986. -------------------------------------------------------------------------------------------------------------------
  987.  
  988. function job_self_command(cmdParams, eventArgs)
  989.     if cmdParams[1] == 'nuke' and not midaction() then
  990.         send_command('@input /ma "' .. state.Element.current .. ' V" <t>')
  991.     end
  992.     gearinfo(cmdParams, eventArgs)
  993. end
  994.  
  995. function gearinfo(cmdParams, eventArgs)
  996.     if cmdParams[1] == 'gearinfo' then
  997.         if type(cmdParams[4]) == 'string' then
  998.             if cmdParams[4] == 'true' then
  999.                 moving = true
  1000.             elseif cmdParams[4] == 'false' then
  1001.                 moving = false
  1002.             end
  1003.         end
  1004.         if not midaction() then
  1005.             job_update()
  1006.         end
  1007.     end
  1008. end
  1009.  
  1010. function check_moving()
  1011.     if state.DefenseMode.value == 'None'  and state.Kiting.value == false then
  1012.         if state.Auto_Kite.value == false and moving then
  1013.             state.Auto_Kite:set(true)
  1014.         elseif state.Auto_Kite.value == true and moving == false then
  1015.             state.Auto_Kite:set(false)
  1016.         end
  1017.     end
  1018. end
  1019.  
  1020. function check_gear()
  1021.     if no_swap_gear:contains(player.equipment.left_ring) then
  1022.         disable("ring1")
  1023.     else
  1024.         enable("ring1")
  1025.     end
  1026.     if no_swap_gear:contains(player.equipment.right_ring) then
  1027.         disable("ring2")
  1028.     else
  1029.         enable("ring2")
  1030.     end
  1031. end
  1032.  
  1033. windower.register_event('zone change',
  1034.     function()
  1035.         if no_swap_gear:contains(player.equipment.left_ring) then
  1036.             enable("ring1")
  1037.             equip(sets.idle)
  1038.         end
  1039.         if no_swap_gear:contains(player.equipment.right_ring) then
  1040.             enable("ring2")
  1041.             equip(sets.idle)
  1042.         end
  1043.     end
  1044. )
  1045.  
  1046. -- Select default macro book on initial load or subjob change.
  1047. function select_default_macro_book()
  1048.     set_macro_page(1, 1)
  1049. end
  1050.  
  1051. function set_lockstyle()
  1052.     send_command('wait 3; input /lockstyleset ' .. lockstyleset)
  1053. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement