Advertisement
Ballzack

PLD.lua

Nov 28th, 2017
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.65 KB | None | 0 0
  1. ---------------------------------------------------------------------------------------------------------------------------------------
  2. -------------------------------- Initialization function that defines sets and variables to be used -----------------------------------
  3. ---------------------------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- IMPORTANT: Make sure to also get the Mote-Include.lua file to go with this.
  6.  
  7. -- Initialization function for this job file.
  8. function get_sets()
  9. mote_include_version = 2
  10.  
  11. -- Load and initialize the include file.
  12. include('Mote-Include.lua')
  13. end
  14.  
  15. function job_setup()
  16. get_combat_weapon()
  17. update_melee_groups()
  18. end
  19.  
  20.  
  21. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  22. function user_setup()
  23. -- Options: Override default values
  24. state.OffenseMode:options('Normal', 'Mid', 'Acc')
  25. state.PhysicalDefenseMode:options('PDT', 'HP', 'Knockback')
  26. state.MagicalDefenseMode:options('MDT', 'Charm', 'Death', 'Terror')
  27. state.HybridMode:options ('Normal', 'DT')
  28. state.WeaponskillMode:options('Normal', 'Acc')
  29. state.CastingMode:options('Normal', 'DT')
  30. state.IdleMode:options('Normal', 'Regen', 'Refresh')
  31.  
  32. state.WeaponLock = M(false, 'Weapon Lock')
  33.  
  34.  
  35. select_default_macro_book()
  36.  
  37. RandomLockstyleGenerator = 'true'
  38.  
  39. -- List of Equipment Sets created for Random Lockstyle Generator
  40. -- (If you want to have the same Lockstyle every time, reduce the list to a single Equipset #)
  41. random_lockstyle_list = {1,2}
  42.  
  43. -- Random Lockstyle generator.
  44. if RandomLockstyleGenerator == 'true' then
  45. local randomLockstyle = random_lockstyle_list[math.random(1, #random_lockstyle_list)]
  46. send_command('@wait 4;input /lockstyleset '.. randomLockstyle)
  47. end
  48.  
  49. -- Key Binds --
  50. send_command('bind Delete input /ws "Savage Blade" <t>')
  51. send_command('bind End input /ws "Chant du Cygne" <t>')
  52. send_command('bind Home input /ws "Sanguine Blade" <t>')
  53. send_command('bind ^` input /ja "Shield Bash" <t>')
  54. send_command('bind !` input /ma "Flash" <t>')
  55. send_command('bind @` input /ja "Provoke" <t>')
  56. send_command('bind @w gs c toggle WeaponLock')
  57. send_command('bind @home gs c warpring')
  58. end
  59.  
  60. function file_unload()
  61. send_command('unbind Delete')
  62. send_command('unbind End')
  63. send_command('unbind Home')
  64. send_command('unbind ^`')
  65. send_command('unbind !`')
  66. send_command('unbind @`')
  67. send_command('unbind @w')
  68. send_command('unbind @home')
  69. end
  70.  
  71. function init_gear_sets()
  72. -------------------------------------------------------------------------------------------------
  73. -----------------------------------Augmeted Gear-------------------------------------------
  74. -------------------------------------------------------------------------------------------------
  75.  
  76. -- Valorus Mask Augments --
  77. ValorousMask={}
  78. ValorousMask.WSD={ name="Valorous Mask", augments={'Attack+30','Weapon skill damage +2%','STR+8','Accuracy+2',}}
  79. ValorousMaskSTP={}
  80.  
  81. -- Valorous Mail Augments --
  82. ValorousMail={}
  83. ValorousMail.STP={}
  84.  
  85. -- Valorous Hose Augments --
  86. ValorousHose={}
  87. ValorousHose.WSD={ name="Valor. Hose", augments={'Accuracy+22','Weapon skill damage +4%','STR+6',}}
  88. ValorousHose.CDmg={ name="Valor. Hose", augments={'Accuracy+10 Attack+10','Crit. hit damage +4%','DEX+5',}}
  89.  
  90. -- Valorous Greaves Augments --
  91. ValorousGreaves={}
  92. ValorousGreaves.STP = {}
  93. ValorousGreaves.CDMG = { name="Valorous Greaves", augments={'Attack+15','Crit. hit damage +3%','DEX+15',}}
  94.  
  95. -- Odyssean Helm Augments --
  96. OdysseanHelm={}
  97. OdysseanHelm.Refresh={ name="Odyssean Helm", augments={'INT+2','STR+4','"Refresh"+2','Accuracy+14 Attack+14',}}
  98. OdysseanHelm.Phalanx={ name="Odyssean Helm", augments={'Mag. Acc.+17','"Fast Cast"+1','Phalanx +5',}}
  99.  
  100. -- Odyssean Chestplate Augments --
  101. OdysseanChestplate={}
  102. OdysseanChestplate.FC={}
  103. OdysseanChestplate.Phalanx={}
  104. OdysseanChestplateSTP={}
  105. OdysseanChestplate.Refresh={ name="Odyss. Chestplate", augments={'Mag. Acc.+10','Pet: "Store TP"+7','"Refresh"+2','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}}
  106.  
  107. -- Odyssean Gauntlets Augments --
  108. OdysseanGauntlets={}
  109. OdysseanGauntlets.WSD={ name="Odyssean Gauntlets", augments={'Attack+15','Weapon skill damage +3%','Accuracy+8',}}
  110. OdysseanGauntlets.Refresh={}
  111.  
  112. -- Odyssean Cuisses Augments --
  113. OdysseanCuisses={}
  114. OdysseanCuisses.Phalanx={ name="Odyssean Cuisses", augments={'Pet: Haste+4','Attack+15','Phalanx +3','Accuracy+17 Attack+17',}}
  115. OdysseanCuisses.STP={ name="Odyssean Cuisses", augments={'Accuracy+19 Attack+19','"Store TP"+5','VIT+15',}}
  116. OdysseanCuisses.Refresh={ name="Odyssean Cuisses", augments={'Attack+3','Pet: STR+10','"Refresh"+1','Mag. Acc.+5 "Mag.Atk.Bns."+5',}}
  117.  
  118. -- Odyssean Greaves Augments --
  119. OdysseanGreaves={}
  120. OdysseanGreaves.FC={ name="Odyssean Greaves", augments={'"Fast Cast"+6','AGI+10','"Mag.Atk.Bns."+15',}}
  121. OdysseanGreaves.ENM={}
  122. OdysseanGreaves.Refresh={}
  123.  
  124. -- Rudianos Mantle Augments --
  125. Rudianos={}
  126. Rudianos.FC = { name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Fast Cast"+10',}}
  127. Rudianos.ENM = { name="Rudianos's Mantle", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10','Occ. inc. resist. to stat. ailments+10',}}
  128. Rudianos.DA={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
  129. Rudianos.STP={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}}
  130. Rudianos.WSD={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}}
  131. Rudianos.Crit={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Crit.hit rate+10',}}
  132.  
  133. -- Precast sets to enhance JAs
  134. sets.precast.JA['Invincible'] = set_combine(sets.precast.JA['Provoke'],{
  135. ammo="Sapience Orb",
  136. head="Loess Barbuta +1",
  137. neck="Unmoving Collar +1",
  138. ear1="Friomisi Earring",
  139. ear2="Cryptic Earring",
  140. body="Souv. Cuirass +1",
  141. hands="Yorium Gauntlets",
  142. ring1="Apeile Ring",
  143. ring2="Apeile Ring +1",
  144. back=Rudianos.ENM,
  145. waist="Creed Baudrier",
  146. legs="Cab. Breeches +1",
  147. feet="Eschite Greaves"})
  148.  
  149. sets.precast.JA['Holy Circle'] = set_combine(sets.precast.JA['Provoke'],{
  150. ammo="Sapience Orb",
  151. head="Loess Barbuta +1",
  152. neck="Unmoving Collar +1",
  153. ear1="Friomisi Earring",
  154. ear2="Cryptic Earring",
  155. body="Souv. Cuirass +1",
  156. hands="Yorium Gauntlets",
  157. ring1="Apeile Ring",
  158. ring2="Apeile Ring +1",
  159. back=Rudianos.ENM,
  160. waist="Creed Baudrier",
  161. legs="Cab. Breeches +1",
  162. feet="Rev. Leggings +2"})
  163.  
  164. sets.precast.JA['Shield Bash'] = set_combine(sets.precast.JA['Provoke'],{
  165. ammo="Sapience Orb",
  166. head="Loess Barbuta +1",
  167. neck="Unmoving Collar +1",
  168. ear1="Friomisi Earring",
  169. ear2="Cryptic Earring",
  170. body="Souv. Cuirass +1",
  171. hands="Yorium Gauntlets",
  172. ring1="Apeile Ring",
  173. ring2="Apeile Ring +1",
  174. back=Rudianos.ENM,
  175. waist="Creed Baudrier",
  176. legs="Cab. Breeches +1",
  177. feet="Eschite Greaves"})
  178.  
  179. sets.precast.JA['Intervene'] = sets.precast.JA['Shield Bash']
  180.  
  181. sets.precast.JA['Sentinel'] = set_combine(sets.precast.JA['Provoke'],{
  182. ammo="Sapience Orb",
  183. head="Loess Barbuta +1",
  184. neck="Unmoving Collar +1",
  185. ear1="Friomisi Earring",
  186. ear2="Cryptic Earring",
  187. body="Souv. Cuirass +1",
  188. hands="Yorium Gauntlets",
  189. ring1="Apeile Ring",
  190. ring2="Apeile Ring +1",
  191. back=Rudianos.ENM,
  192. waist="Creed Baudrier",
  193. legs="Souv. Diechlings +1",
  194. feet="Cab. Leggings +1"})
  195.  
  196. --The amount of damage absorbed is variable, determined by VIT*2
  197. sets.precast.JA['Rampart'] = set_combine(sets.precast.JA['Provoke'],{
  198. ammo="Sapience Orb",
  199. head="Cab. Coronet +1",
  200. neck="Unmoving Collar +1",
  201. ear1="Friomisi Earring",
  202. ear2="Cryptic Earring",
  203. body="Souv. Cuirass +1",
  204. hands="Yorium Gauntlets",
  205. ring1="Apeile Ring",
  206. ring2="Apeile Ring +1",
  207. back=Rudianos.ENM,
  208. waist="Creed Baudrier",
  209. legs="Souv. Diechlings +1",
  210. feet="Eschite Greaves"})
  211.  
  212. sets.buff['Rampart'] = sets.precast.JA['Rampart']
  213.  
  214. sets.precast.JA['Fealty'] = set_combine(sets.precast.JA['Provoke'],{
  215. ammo="Sapience Orb",
  216. head="Loess Barbuta +1",
  217. neck="Unmoving Collar +1",
  218. ear1="Friomisi Earring",
  219. ear2="Cryptic Earring",
  220. body="Cab. Surcoat +1",
  221. hands="Yorium Gauntlets",
  222. ring1="Apeile Ring",
  223. ring2="Apeile Ring +1",
  224. back=Rudianos.ENM,
  225. waist="Creed Baudrier",
  226. legs="Souv. Diechlings +1",
  227. feet="Eschite Greaves"})
  228.  
  229. sets.precast.JA['Divine Emblem'] = set_combine(sets.precast.JA['Provoke'],{
  230. ammo="Sapience Orb",
  231. head="Loess Barbuta +1",
  232. neck="Unmoving Collar +1",
  233. ear1="Friomisi Earring",
  234. ear2="Cryptic Earring",
  235. body="Souv. Cuirass +1",
  236. hands="Yorium Gauntlets",
  237. ring1="Apeile Ring",
  238. ring2="Apeile Ring +1",
  239. back=Rudianos.ENM,
  240. waist="Creed Baudrier",
  241. legs="Souv. Diechlings +1",
  242. feet="Chev. Sabatons"})
  243.  
  244. sets.precast.JA['Palisade'] = sets.precast.JA['Provoke']
  245.  
  246. --15 + min(max(floor((user VIT + user MND - target VIT*2)/4),0),15)
  247. sets.precast.JA['Cover'] = set_combine(sets.precast.JA['Provoke'],{
  248. ammo="Sapience Orb",
  249. head="Rev. Coronet +1",
  250. neck="Unmoving Collar +1",
  251. ear1="Friomisi Earring",
  252. ear2="Cryptic Earring",
  253. body="Cab. Surcoat +1",
  254. hands="Yorium Gauntlets",
  255. ring1="Apeile Ring",
  256. ring2="Apeile Ring +1",
  257. back=Rudianos.ENM,
  258. waist="Creed Baudrier",
  259. legs="Souv. Diechlings +1",
  260. feet="Eschite Greaves"})
  261.  
  262. sets.buff['Cover'] = sets.precast.JA['Cover']
  263.  
  264. -- Add MND for Chivalry
  265. sets.precast.JA['Chivalry'] = set_combine(sets.precast.JA['Provoke'],{
  266. ammo="Sapience Orb",
  267. head="Rev. Coronet +1",
  268. neck="Unmoving Collar +1",
  269. ear1="Friomisi Earring",
  270. ear2="Cryptic Earring",
  271. body="Cab. Surcoat +1",
  272. hands="Yorium Gauntlets",
  273. ring1="Apeile Ring",
  274. ring2="Apeile Ring +1",
  275. back=Rudianos.ENM,
  276. waist="Creed Baudrier",
  277. legs="Souv. Diechlings +1",
  278. feet="Eschite Greaves"})
  279.  
  280. ------------------------ Sub WAR ------------------------
  281. sets.precast.JA['Provoke'] = {
  282. ammo="Sapience Orb",
  283. head="Loess Barbuta +1",
  284. neck="Unmoving Collar +1",
  285. ear1="Friomisi Earring",
  286. ear2="Cryptic Earring",
  287. body="Souv. Cuirass +1",
  288. hands="Yorium Gauntlets",
  289. ring1="Apeile Ring",
  290. ring2="Apeile Ring +1",
  291. back=Rudianos.ENM,
  292. waist="Creed Baudrier",
  293. legs="Souv. Diechlings +1",
  294. feet="Eschite Greaves"}
  295.  
  296. sets.precast.JA['Warcry'] = sets.precast.JA['Provoke']
  297. sets.precast.JA['Defender'] = sets.precast.JA['Provoke']
  298. sets.precast.JA['Berserk'] = sets.precast.JA['Provoke']
  299. sets.precast.JA['Aggressor'] = sets.precast.JA['Provoke']
  300.  
  301. ------------------------ Sub BLU ------------------------
  302. sets.precast.JA['Chain Affinity'] = sets.precast.JA['Provoke']
  303. sets.precast.JA['Burst Affinity'] = sets.precast.JA['Provoke']
  304.  
  305. ------------------------ Sub RUN ------------------------
  306. sets.precast.JA['Ignis'] = sets.precast.JA['Provoke']
  307. sets.precast.JA['Gelus'] = sets.precast.JA['Provoke']
  308. sets.precast.JA['Flabra'] = sets.precast.JA['Provoke']
  309. sets.precast.JA['Tellus'] = sets.precast.JA['Provoke']
  310. sets.precast.JA['Sulpor'] = sets.precast.JA['Provoke']
  311. sets.precast.JA['Unda'] = sets.precast.JA['Provoke']
  312. sets.precast.JA['Lux'] = sets.precast.JA['Provoke']
  313. sets.precast.JA['Tenebrae'] = sets.precast.JA['Provoke']
  314. sets.precast.JA['Vallation'] = sets.precast.JA['Provoke']
  315. sets.precast.JA['Pflug'] = sets.precast.JA['Provoke']
  316.  
  317. -- Precast Sets
  318. -- FC+ 80%
  319. sets.precast.FC = {
  320. ammo="Sapience Orb",
  321. head="Carmine Mask +1",
  322. neck="Voltsurge Torque",
  323. ear1="Loquac. Earring",
  324. ear2="Etiolation Earring",
  325. body=OdysseanChestplate.FC,
  326. hands="Leyline Gloves",
  327. ring1="Kishar Ring",
  328. ring2="Prolix Ring",
  329. back=Rudianos.FC,
  330. waist="Goading Belt",
  331. legs="Enif Cosciales",
  332. feet=OdysseanGreaves.FC}
  333.  
  334. sets.precast.FC.DT = set_combine(sets.precast.FC,{
  335. ammo={name="Egoist's Tathlum",priority=1},
  336. ear1={name="Odnowa Earring +1",priority=4},
  337. body={name="Rev. Surcoat +3",priority=7},
  338. hands={name="Souv. Handsch. +1",priority=6},
  339. ring2={name="Moonbeam Ring",priority=5},
  340. waist={name="Gold Mog. Belt",priority=2},
  341. feet={name="Carmine Greaves +1",priority=3},})
  342.  
  343. sets.precast.FC.Phalanx = set_combine(sets.precast.FC ,{waist="Siegel Sash"})
  344. sets.precast.FC.Enlight = sets.precast.FC
  345. sets.precast.FC['Enlight II'] = sets.precast.FC.Enlight
  346. sets.precast.FC.Protect = sets.precast.FC
  347. sets.precast.FC.Shell = sets.precast.FC
  348. sets.precast.FC.Crusade = sets.precast.FC
  349. sets.precast.FC.Cure = set_combine(sets.precast.FC.DT, {
  350. ear2="Nourish. Earring +1",
  351. body="Jumalik Mail"})
  352.  
  353. -- Weaponskill sets
  354. -- Default set for any weaponskill that isn't any more specifically defined
  355. sets.precast.WS = {}
  356.  
  357. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  358.  
  359. -------------------------------------------------------------------- DAGGER ---------------------------------------------------------------------------------
  360. --Stat Modifier: 40% DEX / 40% INT fTP: 2.0 3.0 4.5
  361. -- dSTAT: (pINT-mINT)/2 + 8
  362. sets.precast.WS['Aeolian Edge'] = {}
  363.  
  364. -------------------------------------------------------------------- SWORD ---------------------------------------------------------------------------------
  365. --Stat Modifier: 80% DEX fTP: 2.25
  366. sets.precast.WS['Chant du Cygne'] = {
  367. ammo="Jukukik Feather",
  368. head="Flam. Zucchetto +2",
  369. neck="Fotia Gorget",
  370. ear1="Moonshade Earring",
  371. ear2="Brutal Earring",
  372. body="Flamma Korazin +2",
  373. hands="Flam. Manopolas +2",
  374. ring1="Ramuh Ring",
  375. ring2="Begrudging Ring",
  376. back=Rudianos.Crit,
  377. waist="Fotia Belt",
  378. legs=ValorousHose.CDmg,
  379. feet=ValorousGreaves.CDmg}
  380.  
  381. sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'],{})
  382.  
  383. --Stat Modifier: WS damage + 30/31% 2025DMG maxaggro
  384. sets.precast.WS['Atonement'] = {
  385. ammo="Egoist's Tathlum",
  386. head=ValorousMask.WSD,
  387. neck="Fotia Gorget",
  388. ear1="Moonshade Earring",
  389. ear2="Ishvara Earring",
  390. body="Phorcys Korazin",
  391. hands=OdysseanGauntlets.WSD,
  392. ring1="Eihwaz Ring",
  393. ring2="Apeile Ring +1",
  394. back=Rudianos.WSD,
  395. waist="Fotia Belt",
  396. legs=ValorousHose.WSD,
  397. feet="Sulev. Leggings +2"}
  398.  
  399. -- Delivers an aerial attack comprised of two hits. Damage varies with TP.
  400. -- Stat Modifier: 50% MND / 50% STR fTP: 4.0 10.25 13.75
  401. sets.precast.WS['Savage Blade'] = {
  402. ammo="Floestone",
  403. head=ValorousMask.WSD,
  404. neck="Fotia Gorget",
  405. ear1="Moonshade Earring",
  406. ear2="Ishvara Earring",
  407. body="Sulevia's Plate. +2",
  408. hands=OdysseanGauntlets.WSD,
  409. ring1="Rufescent Ring",
  410. ring2="Ifrit Ring +1",
  411. back=Rudianos.WSD,
  412. waist="Fotia Belt",
  413. legs=OdysseanCuisses.WSD,
  414. feet="Sulev. Leggings +2"}
  415.  
  416. sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'],{})
  417.  
  418. -- Delivers a fivefold attack, non-elemental damage. Attack power varies with TP.
  419. -- Stat Modifier: 73~85% MND
  420. sets.precast.WS['Requiescat'] = {
  421. ammo="Paeapua",
  422. head="Flam. Zucchetto +2",
  423. neck="Fotia Gorget",
  424. ear1="Moonshade Earring",
  425. ear2="Brutal Earring",
  426. body="Sulevia's Plate. +2",
  427. hands="Sulev. Gauntlets +2",
  428. ring1="Levia. Ring",
  429. ring2="Levia. Ring +1",
  430. back=Rudianos.DA,
  431. waist="Fotia Belt",
  432. legs="Carmine Cuisses +1",
  433. feet="Sulev. Leggings +2"}
  434.  
  435. sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'],{})
  436.  
  437. -- Stat Modifier: 50% MND / 30% STR fTP: 2.75
  438. -- dSTAT: (pINT-mINT)*2
  439. sets.precast.WS['Sanguine Blade'] = {
  440. neck="Sanctity Necklace",
  441. ear1="Friomisi Earring",
  442. ear2="Novio Earring",
  443. ring1="Archon Ring",
  444. waist="Eschan Stone"}
  445.  
  446. ------------------------------------------------------------------------------------------------
  447. -----------------------------------------Midcast sets-------------------------------------------
  448. ------------------------------------------------------------------------------------------------
  449. sets.midcast.FastRecast = {}
  450.  
  451. -- Divine Skill 560 --
  452. sets.midcast.Divine = {
  453. head="Jumalik Helm",
  454. neck="Incanter's Torque",
  455. ear1="Beatific Earring",
  456. ear2="Divine Earring",
  457. body="Rev. Surcoat +3",
  458. hands="Eschite Gauntlets",
  459. ring1="Stikini Ring",
  460. ring2="Stikini Ring",
  461. back="Altruistic Cape",
  462. waist="Asklepian Belt"}
  463.  
  464. sets.midcast.Divine.DT = set_combine(sets.midcast.Divine,{
  465. ammo="Staunch Tathlum",
  466. head="Souv. Schaller +1",
  467. neck="Loricate Torque +1",
  468. ear1="Knightly Earring",
  469. ear2="Halasz Earring",
  470. body="Rev. Surcoat +3",
  471. hands="Souv. Handsch. +1",
  472. ring1="Moonbeam Ring",
  473. ring2="Moonbeam Ring",
  474. back="Moonbeam Cape",
  475. waist="Flume Belt +1",
  476. legs="Founder's Hose",
  477. feet=OdysseanGreaves.FC})
  478.  
  479. sets.midcast['Enhancing Magic'] ={}
  480.  
  481. sets.midcast.MAB = {
  482. ammo="Pemphredo Tathlum",
  483. head="Jumalik Helm",
  484. neck="Sanctity Necklace",
  485. ear1="Friomisi Earring",
  486. --ear2="Crematio Earring",
  487. body="Found. Breastplate",
  488. hands="Founder's Gauntlets",
  489. --ring1="Shiva Ring +1",
  490. --ring2="Shiva Ring +1",
  491. --back=Rudianos.MAB,
  492. waist="Eschan Stone",
  493. legs="Eschite Cuisses",
  494. feet="Founder's Greaves"}
  495.  
  496. sets.midcast.Flash = {
  497. ammo="Sapience Orb",
  498. head="Souv. Schaller +1",
  499. neck="Unmoving Collar +1",
  500. ear1="Friomisi Earring",
  501. ear2="Cryptic Earring",
  502. body="Souv. Cuirass +1",
  503. hands="Yorium Gauntlets",
  504. ring1="Apeile Ring",
  505. ring2="Apeile Ring +1",
  506. back=Rudianos.ENM,
  507. waist="Goading Belt",
  508. legs="Souv. Diechlings +1",
  509. feet="Eschite Greaves"}
  510.  
  511. sets.midcast.Flash.DT = set_combine(sets.midcast.Flash,{
  512. ammo="Staunch Tathlum",
  513. neck="Loricate Torque +1",
  514. hands="Souv. Handsch. +1",
  515. ring1="Defending Ring",
  516. feet="Souveran Schuhs +1"})
  517.  
  518. sets.midcast.Enlight = sets.midcast.Divine
  519. sets.midcast['Enlight II'] = sets.midcast.Enlight
  520.  
  521. sets.midcast.Reprisal = {
  522. ammo="Egoist's Tathlum",
  523. head="Souv. Schaller +1",
  524. neck="Dualism Collar +1",
  525. ear1="Odnowa Earring",
  526. ear2="Odnowa Earring +1",
  527. body="Rev. Surcoat +3",
  528. hands="Souv. Handsch. +1",
  529. ring1="Moonbeam Ring",
  530. ring2="Moonbeam Ring",
  531. back="Moonbeam Cape",
  532. waist="Gold Mog. Belt",
  533. legs="Souv. Diechlings +1",
  534. feet="Souveran Schuhs +1"}
  535.  
  536. --Phalanx skill 360/358 = 30/30 + phalanx + 23/30 total 53/60
  537. sets.midcast.Phalanx = {
  538. main="Deacon Sword",
  539. ammo="Sapience Orb",
  540. head=OdysseanHelm.Phalanx,
  541. neck="Incanter's Torque",
  542. ear2="Andoaa Earring",
  543. body="Yorium Cuirass",
  544. hands="Souv. Handsch. +1",
  545. ring1="Stikini Ring",
  546. ring2="Stikini Ring",
  547. back="Weard Mantle",
  548. waist="Olympus Sash",
  549. legs=OdysseanCuisses.Phalanx,
  550. feet="Souveran Schuhs +1"}
  551.  
  552. sets.midcast.Phalanx.DT = set_combine(sets.midcast.Phalanx,{
  553. ammo="Staunch Tathlum",
  554. head="Souv. Schaller +1",
  555. neck="Loricate Torque +1",
  556. ear1="Knightly Earring",
  557. ear2="Halasz Earring",
  558. body="Rev. Surcoat +3",
  559. hands="Souv. Handsch. +1",
  560. ring1="Moonbeam Ring",
  561. ring2="Moonbeam Ring",
  562. back="Moonbeam Cape",
  563. waist="Flume Belt +1",
  564. legs="Founder's Hose",
  565. feet=OdysseanGreaves.ENM})
  566.  
  567. sets.midcast.Banish = sets.midcast.MAB
  568. sets.midcast['Banish II'] = sets.midcast.Banish
  569.  
  570. sets.midcast.Holy = sets.midcast.MAB
  571. sets.midcast['Holy II'] = sets.midcast.Holy
  572.  
  573. sets.midcast.Crusade = {
  574. ammo="Staunch Tathlum",
  575. head="Souv. Schaller +1",
  576. neck="Loricate Torque +1",
  577. ear1="Knightly Earring",
  578. ear2="Halasz Earring",
  579. body="Rev. Surcoat +3",
  580. hands="Souv. Handsch. +1",
  581. ring1="Moonbeam Ring",
  582. ring2="Defending Ring",
  583. back="Moonbeam Cape",
  584. waist="Flume Belt +1",
  585. legs="Founder's Hose",
  586. feet=OdysseanGreaves.FC}
  587.  
  588. sets.midcast.Cure = {
  589. ammo="Staunch Tathlum",
  590. head="Loess Barbuta +1",
  591. neck="Phalaina Locket",
  592. ear1="Nourish. Earring +1",
  593. ear2="Mendi. Earring",
  594. body="Jumalik Mail",
  595. hands="Macabre Gaunt. +1",
  596. ring1="Defending Ring",
  597. ring2="Eihwaz Ring",
  598. back="Solemnity Cape",
  599. waist="Goading Belt",
  600. legs="Souv. Diechlings +1",
  601. feet="Odyssean Greaves"}
  602.  
  603. --sets.self_healing = set_combine(sets.midcast.Cure, {})
  604. sets.midcast.Cure.DT = set_combine(sets.midcast.Cure,{
  605. ammo="Staunch Tathlum",
  606. head="Souv. Schaller +1",
  607. neck="Loricate Torque +1",
  608. ear1="Odnowa Earring +1",
  609. ear2="Nourish. Earring +1",
  610. body="Souv. Cuirass +1",
  611. hands="Macabre Gaunt. +1",
  612. ring1="Moonbeam Ring",
  613. ring2="Defending Ring",
  614. back="Solemnity Cape",
  615. waist="Gold Mog. Belt",
  616. legs="Souv. Diechlings +1",
  617. feet="Souveran Schuhs +1"})
  618.  
  619. sets.midcast.Raise = {
  620. ammo="Staunch Tathlum",
  621. head="Souv. Schaller +1",
  622. neck="Loricate Torque +1",
  623. ear1="Knightly Earring",
  624. ear2="Halasz Earring",
  625. body="Rev. Surcoat +3",
  626. hands="Souv. Handsch. +1",
  627. ring1="Moonbeam Ring",
  628. ring2="Defending Ring",
  629. back="Moonbeam Cape",
  630. waist="Flume Belt +1",
  631. legs="Founder's Hose",
  632. feet=OdysseanGreaves.FC}
  633.  
  634. sets.midcast.Protect = {ring2="Sheltered Ring"}
  635. sets.midcast.Shell = sets.midcast.Protect
  636.  
  637. sets.midcast.Stun = sets.midcast.Flash
  638.  
  639. ---------- BLU Spell --------------
  640. sets.midcast['Geist Wall'] = {
  641. ammo="Staunch Tathlum",
  642. head={ name="Souv. Schaller +1",priority=6},
  643. neck="Loricate Torque +1",
  644. ear1="Knightly Earring",
  645. ear2="Halasz Earring",
  646. body={name="Rev. Surcoat +3",priority=4},
  647. hands={ name="Souv. Handsch. +1",priority=3},
  648. ring1="Moonbeam Ring",
  649. ring2="Defending Ring",
  650. back={ name="Moonbeam Cape",priority=5},
  651. waist="Flume Belt +1",
  652. legs={ name="Founder's Hose",priority=2},
  653. feet={ name="Odyssean Greaves", augments={'"Fast Cast"+6','AGI+10','"Mag.Atk.Bns."+15',},priority=1},}
  654.  
  655. sets.midcast['Sheep Song'] = sets.midcast['Geist Wall']
  656. sets.midcast['Metallic Body'] = sets.midcast['Geist Wall']
  657. sets.midcast['Blank Gaze'] = sets.midcast['Geist Wall']
  658. sets.midcast.Soporific = sets.midcast['Geist Wall']
  659. sets.midcast.Cocoon = sets.midcast['Geist Wall']
  660. sets.midcast['Stinking Gas'] = sets.midcast['Geist Wall']
  661. sets.midcast['Jettatura'] = sets.midcast['Geist Wall']
  662.  
  663. -- Initializes trusts at iLvl 119
  664. sets.midcast.Trust = set_combine(sets.precast.FC,{legs="Odyssean Cuisses"})
  665. --------------------------------------
  666. -- Idle/resting/defense/etc sets
  667. --------------------------------------
  668. -- Idle sets
  669. sets.idle = {
  670. ammo="Egoist's Tathlum",
  671. head="Souv. Schaller +1",
  672. neck="Dualism Collar +1",
  673. ear1="Odnowa Earring +1",
  674. ear2="Odnowa Earring",
  675. body="Rev. Surcoat +3",
  676. hands="Souv. Handsch. +1",
  677. ring1="Moonbeam Ring",
  678. ring2="Moonbeam Ring",
  679. back="Moonbeam Cape",
  680. waist="Gold Mog. Belt",
  681. legs="Carmine Cuisses +1",
  682. feet="Souveran Schuhs +1"}
  683.  
  684. sets.idle.Regen = set_combine(sets.idle,{
  685. neck="Sanctity Necklace",
  686. ear1="Infused Earring",
  687. ear2="Dawn Earring",
  688. body="Obviat. Cuirass +1",
  689. ring1="Sheltered Ring",
  690. ring2="Paguroidea Ring"})
  691.  
  692. sets.idle.Refresh = set_combine(sets.idle,{
  693. ammo="Homiliary",
  694. head=OdysseanHelm.Refresh,
  695. neck="Coatl Gorget +1",
  696. body=OdysseanChestplate.Refresh,
  697. ring1="Apeile Ring",
  698. ring2="Apeile Ring +1",
  699. waist="Fucho-no-Obi",
  700. legs=OdysseanCuisses.Refresh})
  701.  
  702. sets.defense.PDT = {
  703. ammo="Staunch Tathlum",
  704. head="Souv. Schaller +1",
  705. neck="Warder's Charm +1",
  706. ear1="Ethereal Earring",
  707. ear2="Thureous Earring",
  708. body="Rev. Surcoat +3",
  709. hands="Souv. Handsch. +1",
  710. ring1="Vocane Ring",
  711. ring2="Defending Ring",
  712. back=Rudianos.ENM,
  713. waist="Asklepian Belt",
  714. legs="Souv. Diechlings +1",
  715. feet="Souveran Schuhs +1"}
  716.  
  717. -- To cap MDT with Shell IV (52/256), need 76/256 in gear. Current gear set is 248/256.
  718. -- Shellra V can provide 75/256.
  719. sets.defense.MDT = sets.defense.PDT
  720.  
  721. sets.defense.Charm = set_combine(sets.defense.PDT,{
  722. neck="Unmoving Collar +1",
  723. ear2="Hearty Earring",
  724. back="Solemnity Cape"})
  725.  
  726. sets.defense.Death = set_combine(sets.defense.PDT,{
  727. ear2="Hearty Earring",
  728. ring1="Shadow Ring",
  729. ring2="Warden's Ring"})
  730.  
  731. sets.defense.Terror = set_combine(sets.defense.PDT,{
  732. main="Sagasinger",
  733. feet="Founder's Greaves"})
  734.  
  735. sets.defense.HP ={
  736. ammo="Egoist's Tathlum",
  737. head="Souv. Schaller +1",
  738. neck="Dualism Collar +1",
  739. ear1="Odnowa Earring +1",
  740. ear2="Odnowa Earring",
  741. body="Rev. Surcoat +3",
  742. hands="Souv. Handsch. +1",
  743. ring1="Moonbeam Ring",
  744. ring2="Moonbeam Ring",
  745. back="Moonbeam Cape",
  746. waist="Gold Mog. Belt",
  747. legs="Souv. Diechlings +1",
  748. feet="Souveran Schuhs +1"}
  749.  
  750. sets.defense.Knockback = set_combine(sets.defense.PDT,{back="Philidor Mantle"})
  751.  
  752. --sets.defense.Reraise = {head="Twilight Helm", body="Twilight Mail"}
  753. --sets.Reraise = sets.defense.Reraise
  754. --------------------------------------
  755. -- Engaged sets
  756. --------------------------------------
  757. -- Engaged set, assumes Burtgang
  758. sets.engaged = {
  759. ammo="Ginsen",
  760. head="Flam. Zucchetto +2",
  761. neck="Asperity Necklace",
  762. ear1="Cessance Earring",
  763. ear2="Brutal Earring",
  764. body="Flamma Korazin +2",
  765. hands="Acro Gauntlets",
  766. ring1="Flamma Ring",
  767. ring2="Petrov Ring",
  768. back=Rudianos.DA,
  769. waist="Sailfi Belt +1",
  770. legs=OdysseanCuisses.STP,
  771. feet="Flam. Gambieras +2"}
  772.  
  773. sets.engaged.Mid = set_combine(sets.engaged, {
  774. neck="Lissome Necklace",
  775. ear2="Telos Earring"})
  776.  
  777. sets.engaged.Acc = set_combine(sets.engaged.Mid, {
  778. body="Emicho Haubert +1",
  779. hands="Emicho Gauntlets +1"})
  780.  
  781. -- Burtgang AM3 --
  782. sets.engaged.AM3 = set_combine(sets.engaged, {
  783. head=ValorousMask.STP,
  784. neck="Ainia Collar",
  785. ear1="Dedition Earring",
  786. hands="Acro Gauntlets",
  787. ring1="Rajas Ring",
  788. back=Rudianos.STP,
  789. waist="Goading Belt",
  790. legs=OdysseanCuisses.STP,
  791. feet=ValorousGreaves.STP})
  792. sets.engaged.Mid.AM3 = set_combine(sets.engaged.AM3, {})
  793. sets.engaged.Acc.AM3 = set_combine(sets.engaged.Mid.AM3, {})
  794.  
  795. sets.engaged.Hybrid = {
  796. ammo="Staunch Tathlum",
  797. head="Sulevia's Mask +2",
  798. neck="Loricate Torque +1",
  799. ear1="Telos Earring",
  800. ear2="Brutal Earring",
  801. body="Tartarus Platemail",
  802. hands="Sulev. Gauntlets +2",
  803. ring1="Moonbeam Ring",
  804. ring2="Moonbeam Ring",
  805. back=Rudianos.STP,
  806. waist="Tempus Fugit",
  807. legs="Sulev. Cuisses +2",
  808. feet="Sulev. Leggings +2"}
  809.  
  810. sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid)
  811. sets.engaged.Mid.DT = set_combine(sets.engaged.DT, sets.engaged.Hybrid)
  812. sets.engaged.Acc.DT = set_combine(sets.engaged.Mid.DT, sets.engaged.Hybrid)
  813.  
  814. sets.engaged.DT.AM3 = set_combine(sets.engaged, sets.engaged.Hybrid)
  815. sets.engaged.Mid.DT.AM3 = set_combine(sets.engaged.DT.AM3, sets.engaged.Hybrid)
  816. sets.engaged.Acc.DT.AM3 = set_combine(sets.engaged.Mid.DT.AM3, sets.engaged.Hybrid)
  817.  
  818. sets.buff.Doom = {ring1="Saida Ring",ring2="Saida Ring",waist="Gishdubar Sash"}
  819. end
  820. ------------------------------------------------------------------------------------------------------------------------------------------
  821. ----------------------------------------Job-specific hooks that are called to process player actions at specific points in time-----------
  822. ------------------------------------------------------------------------------------------------------------------------------------------
  823. function job_post_midcast(spell, action, spellMap, eventArgs)
  824. if spell.english:startswith('Cure') and spell.target.type == 'SELF' then
  825. if state.CastingMode.value == 'DT' then
  826. equip(sets.midcast.Cure.DT)
  827. else
  828. equip(sets.midcast.Cure)
  829. end
  830. end
  831. end
  832.  
  833. function job_post_precast(spell, action, spellMap, eventArgs)
  834. if spell.action_type=="Magic" and buffactive.Silence then
  835. eventArgs.cancel = true
  836. send_command('input /item "Echo Drops" <me>')
  837. end
  838. if spell.type == "WeaponSkill" and player.tp > 2999 then
  839. equip({ear1="Brutal Earring"})
  840. end
  841. --[[ Lock weaponskill if you are to far from the mob as to not lose TP ]]
  842. if spell.type == 'WeaponSkill' then
  843. if spell.target.distance > 6 then
  844. cancel_spell()
  845. add_to_chat(8, 'Target to far away. Move closer nub')
  846. return
  847. end
  848. end
  849. end
  850.  
  851. -- Called when a player gains or loses a buff.
  852. -- buff == buff gained or lost
  853. -- gain == true if the buff was gained, false if it was lost.
  854. function job_buff_change(buff, gain)
  855. if buff:lower()=='terror' or buff:lower()=='petrification' or buff:lower()=='sleep' or buff:lower()=='stun' then
  856. if gain then
  857. equip(sets.defense.PDT)
  858. elseif not gain then
  859. handle_equipping_gear(player.status)
  860. end
  861. end
  862. if state.Buff[buff] ~= nil then
  863. state.Buff[buff] = gain
  864. end
  865. if buff:lower()=='sleep' then
  866. if gain and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque or Vim Torque(+1) or Frenzy Sallet When You Are Asleep
  867. equip({neck="Vim Torque +1"})
  868. elseif not gain then -- Take Berserker's or Vim or Frenzy off
  869. handle_equipping_gear(player.status)
  870. end
  871. end
  872. if buff == "cover" then
  873. if gain then
  874. equip(sets.buff['Cover'])
  875. disable('Body','Head')
  876. else
  877. enable('Body','Head')
  878. handle_equipping_gear(player.status)
  879. end
  880. end
  881. if buff == "doom" then
  882. if gain then
  883. equip(sets.buff.Doom)
  884. disable('ring1','ring2','waist')
  885. else
  886. enable('ring1','ring2','waist')
  887. handle_equipping_gear(player.status)
  888. end
  889. end
  890. -- AM custom groups
  891. if buff:startswith('Aftermath') then
  892. if player.equipment.main == 'Burtgang' then
  893. classes.CustomMeleeGroups:clear()
  894. if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
  895. classes.CustomMeleeGroups:append('AM3')
  896. add_to_chat(8, '-------------AM3 UP-------------')
  897. end
  898. if not midaction() then
  899. handle_equipping_gear(player.status)
  900. end
  901. end
  902. end
  903. end
  904.  
  905. -- Handle notifications of general user state change.
  906. function job_state_change(stateField, newValue, oldValue)
  907. if state.WeaponLock.value == true then
  908. disable('main')
  909. else
  910. enable('main')
  911. end
  912. end
  913.  
  914. function job_self_command(cmdParams, eventArgs)
  915. command = cmdParams[1]:lower()
  916. if command == 'warpring' then
  917. equip({left_ring="Warp Ring"})
  918. send_command('gs disable left_ring;wait 10;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 10;gs enable left_ring')
  919. end
  920. end
  921.  
  922. function get_combat_weapon()
  923. if player.equipment.main == 'Ragnarok' then
  924. state.CombatWeapon:set("Ragnarok")
  925. elseif player.equipment.main == 'Excalibur' then
  926. state.CombatWeapon:set('Excalibur')
  927. elseif player.equipment.main == 'Almace' then
  928. state.CombatWeapon:set('Almace')
  929. elseif player.equipment.main == 'Sequence' then
  930. state.CombatWeapon:set('Sequence')
  931. else -- use regular set, which caters to Burtgang
  932. state.CombatWeapon:reset()
  933. end
  934. end
  935.  
  936. function job_update(cmdParams, eventArgs)
  937. get_combat_weapon()
  938. update_melee_groups()
  939. end
  940.  
  941. -- Called when the player's status changes.
  942. function job_status_change(newStatus, oldStatus, eventArgs)
  943. if newStatus == "Engaged" then
  944. if player.equipment.main == 'Ragnarok' then
  945. state.CombatWeapon:set("Ragnarok")
  946. elseif player.equipment.main == 'Excalibur' then
  947. state.CombatWeapon:set('Excalibur')
  948. elseif player.equipment.main == 'Almace' then
  949. state.CombatWeapon:set('Almace')
  950. elseif player.equipment.main == 'Sequence' then
  951. state.CombatWeapon:set('Sequence')
  952. else -- use regular set, which caters to Burtgang
  953. state.CombatWeapon:reset()
  954. end
  955. end
  956. end
  957.  
  958. function display_current_job_state(eventArgs)
  959. local msg = ''
  960. if state.OffenseMode.value ~= 'None' then
  961. msg = msg .. 'Melee: ['..state.OffenseMode.value..']'
  962.  
  963. msg = msg .. ', '
  964. end
  965.  
  966. if state.DefenseMode.value ~= 'None' then
  967. msg = msg .. 'Defense: [' .. state.DefenseMode.value .. ']'
  968.  
  969. msg = msg .. ', '
  970. end
  971.  
  972. msg = msg .. 'Casting: ['..state.CastingMode.value..'], Idle: ['..state.IdleMode.value..']'
  973.  
  974. add_to_chat(122, msg)
  975. eventArgs.handled = true
  976. end
  977.  
  978. function customize_melee_set(meleeSet)
  979. if state.Buff.Sleep and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep
  980. meleeSet = set_combine(meleeSet,{neck="Vim Torque +1"})
  981. end
  982. if state.Buff.Doom then
  983. meleeSet = set_combine(meleeSet, sets.buff.Doom)
  984. end
  985. return meleeSet
  986. end
  987.  
  988. function customize_idle_set(idleSet)
  989. if state.Buff.Doom then
  990. idleSet = set_combine(idleSet, sets.buff.Doom)
  991. end
  992. return idleSet
  993. end
  994.  
  995. function update_melee_groups()
  996. classes.CustomMeleeGroups:clear()
  997. -- Mythic AM
  998. if player.equipment.main == 'Burtgang' then
  999. if buffactive['Aftermath: Lv.3'] then
  1000. classes.CustomMeleeGroups:append('AM3')
  1001. end
  1002. end
  1003. end
  1004.  
  1005. -- Curing rules
  1006. function refine_various_spells(spell,action,spell_map,event_args)
  1007.  
  1008. local cures = S{'Cure','Cure II','Cure III','Cure IV'}
  1009.  
  1010. if cures:contains(spell.english) then
  1011.  
  1012. local spell_recasts = windower.ffxi.get_spell_recasts()
  1013.  
  1014. if spell_recasts[spell.recast_id] > 0 then
  1015. event_args.cancel = true
  1016.  
  1017. if spell.english == 'Cure IV' then
  1018. send_command('@input /ma "Cure III" '..tostring(spell.target.raw))
  1019. return
  1020. elseif spell.english == 'Cure III' then
  1021. send_command('@input /ma "Cure II" '..tostring(spell.target.raw))
  1022. return
  1023. elseif spell.english == 'Cure II' then
  1024. send_command('@input /ma "Cure" '..tostring(spell.target.raw))
  1025. return
  1026. else
  1027. add_to_chat(122,'All Cure spells are on cooldown. Canceling the cast.')
  1028. return
  1029. end
  1030. end
  1031. end
  1032. end
  1033.  
  1034. -------------------------------------Aspir,Sleep/ga Nuke's refine rules (thanks Asura.Vafruvant for this code)-----------------------------------
  1035. function refine_various_spells(spell, action, spellMap, eventArgs)
  1036.  
  1037. Enmity = S{'Geist Wall', 'Sheep Song', 'Soporific','Blank Gaze','Jettatura','Stinking Gas'}
  1038.  
  1039. if not Enmitys:contains(spell.english) then
  1040. return
  1041. end
  1042.  
  1043. local newSpell = spell.english
  1044. local spell_recasts = windower.ffxi.get_spell_recasts()
  1045. local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
  1046.  
  1047. if spell_recasts[spell.recast_id] > 0 then
  1048. if aspirs:contains(spell.english) then
  1049. if spell.english == 'Geist Wall' then
  1050. add_to_chat(122,cancelling)
  1051. eventArgs.cancel = true
  1052. return
  1053. elseif spell.english == 'Geist Wall' then
  1054. newSpell = 'Sheep Song'
  1055. elseif spell.english == 'Sheep Song' then
  1056. newSpell = 'Soporific'
  1057.  
  1058. end
  1059.  
  1060. end
  1061. end
  1062. if newSpell ~= spell.english then
  1063. send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
  1064. eventArgs.cancel = true
  1065. return
  1066. end
  1067. end
  1068.  
  1069. -- Select default macro book on initial load or subjob change.
  1070. function select_default_macro_book()
  1071. -- Default macro set/book
  1072. if player.sub_job == 'BLU' then
  1073. set_macro_page(1, 2)
  1074. elseif player.sub_job == 'WAR' then
  1075. set_macro_page(2, 2)
  1076. else
  1077. set_macro_page(1, 2)
  1078. end
  1079. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement