Darkvlade

DARKVLADE_PLD

Jan 16th, 2018
529
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.82 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Initialization function for this job file.
  6. function get_sets()
  7. mote_include_version = 2
  8.  
  9. -- Load and initialize the include file.
  10. include('Mote-Include.lua')
  11.  
  12. -- Organizer
  13. include('organizer-lib')
  14. include('organizer-items.lua')
  15. end
  16.  
  17. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  18. function job_setup()
  19. state.Buff.Sentinel = buffactive.sentinel or false
  20. state.Buff.Cover = buffactive.cover or false
  21. state.Buff.Doom = buffactive.Doom or false
  22. end
  23.  
  24. -------------------------------------------------------------------------------------------------------------------
  25. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  26. -------------------------------------------------------------------------------------------------------------------
  27.  
  28. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  29. function user_setup()
  30. state.OffenseMode:options('Normal', 'Acc')
  31. state.HybridMode:options('Normal', 'PDT', 'Reraise')
  32. state.WeaponskillMode:options('Normal', 'Acc')
  33. state.CastingMode:options('Normal', 'Resistant')
  34. state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
  35. state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
  36. state.IdleMode:options('Normal', 'Refresh')
  37.  
  38. state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
  39. state.EquipShield = M(false, 'Equip Shield w/Defense')
  40.  
  41. gear.Weard = { name="Weard Mantle", augments={'VIT+3','Enmity+3','Phalanx +4',}}
  42. gear.RudianosWS = { name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','Weapon skill damage +10%',}}
  43. gear.RudianosFC = { name="Rudianos's Mantle", augments={'HP+60','"Fast Cast"+10',}}
  44. gear.RudianosEnm = { name="Rudianos's Mantle", augments={'Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10',}}
  45. gear.Ejekamal = { name="Ejekamal Boots", augments={'Haste+2','"Snapshot"+2','"Fast Cast"+3',}}
  46. gear.EschiteLegsFC = { name="Eschite Cuisses", augments={'"Mag.Atk.Bns."+25','"Conserve MP"+6','"Fast Cast"+5',}}
  47.  
  48. target_distance = 5.5 -- Set Default Distance Here --
  49.  
  50. update_defense_mode()
  51.  
  52. send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  53. send_command('bind !f11 gs c cycle ExtraDefenseMode')
  54. send_command('bind @f10 gs c toggle EquipShield')
  55. send_command('bind @f11 gs c toggle EquipShield')
  56. send_command('pld')
  57.  
  58. select_default_macro_book()
  59. end
  60.  
  61. function user_unload()
  62. send_command('unbind ^f11')
  63. send_command('unbind !f11')
  64. send_command('unbind @f10')
  65. send_command('unbind @f11')
  66. send_command('gs enable all')
  67. end
  68.  
  69.  
  70. -- Define sets and vars used by this job file.
  71. function init_gear_sets()
  72.  
  73. --------------------------------------
  74. -- Precast sets
  75. --------------------------------------
  76.  
  77. -- Fast cast sets for spells
  78.  
  79. sets.precast.FC = {ammo="sapience orb",
  80. head="Carmine mask",neck="Diemer gorget",ear1="Loquac. Earring",ear2="Etiolation Earring",
  81. body="Odyssean chesplate",hands="Leyline Gloves",ring1="Veneficium Ring",ring2="Defending Ring",
  82. back="Rudianos's Mantle",waist="Sailfi Belt +1",legs="Eschite cuisses",feet="Carmine greaves"}
  83.  
  84. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Olympus Sash"})
  85.  
  86. --Enmity
  87.  
  88. sets.precast.Enmity = {ammo="Iron Goblet",
  89. head="Loess Barbuta +1",neck="Unmoving Collar +1",ear2="Cryptic Earring",
  90. body="Souv. Cuirass +1",hands="Souv. Handschuhs +1",ring1="Apeile Ring",ring2="Pernicious Ring",
  91. back="Rudianos's Mantle",waist="Creed Baudrier",legs="Souv. Diechlings +1",feet="Eschite greaves"}
  92.  
  93. -- Precast sets to enhance JAs
  94. sets.precast.JA['Invincible'] = set_combine(sets.precast.Enmity, {legs="Caballarius Breeches +1"})
  95. sets.precast.JA['Holy Circle'] = set_combine(sets.precast.Enmity, {feet="Reverence Leggings +1"})
  96. sets.precast.JA['Shield Bash'] = set_combine(sets.precast.Enmity, {hands="Caballarius Gauntlets +1", ear2="Knightly Earring"})
  97. sets.precast.JA['Sentinel'] = set_combine(sets.precast.Enmity, {feet="Caballarius Leggings +1"})
  98. sets.precast.JA['Rampart'] = set_combine(sets.precast.Enmity, {head="Caballarius Coronet +1"})
  99. sets.precast.JA['Fealty'] = set_combine(sets.precast.Enmity, {body="Caballarius Surcoat +1"})
  100. sets.precast.JA['Divine Emblem'] = set_combine(sets.precast.Enmity, {feet="Chevalier's Sabatons +1"})
  101. sets.precast.JA['Sepulcher'] = sets.precast.Enmity
  102. sets.precast.JA['Palisade'] = sets.precast.Enmity
  103. sets.precast.JA['Cover'] = set_combine(sets.precast.Enmity, {head="Reverence Coronet +1"})
  104.  
  105. -- add mnd for Chivalry
  106. sets.precast.JA['Chivalry'] = {ammo="Staunch Tathlum",
  107. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Nourish. Earring +1",ear2="Lifestorm Earring",
  108. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  109. back="Reiki Cloak",waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +1"}
  110.  
  111. -- /WAR
  112. sets.precast.JA['Provoke'] = set_combine(sets.precast.Enmity, {})
  113. sets.precast.JA['Berserk'] = set_combine(sets.precast.Enmity, {})
  114. sets.precast.JA['Warcry'] = set_combine(sets.precast.Enmity, {})
  115. sets.precast.JA['Aggressor'] = set_combine(sets.precast.Enmity, {})
  116. sets.precast.JA['Defender'] = set_combine(sets.precast.Enmity, {})
  117.  
  118. -- Waltz set (chr and vit)
  119. sets.precast.Waltz = {
  120. head="Sulevia's Mask +2",
  121. body="Sulevia's Platemail +2",hands="Sulevia's Gauntlets +2",
  122. waist="Caudata Belt",legs="Sulevia's Cuisses +1",feet="Sulevia's Leggings +2"}
  123.  
  124. -- Don't need any special gear for Healing Waltz.
  125. sets.precast.Waltz['Healing Waltz'] = {}
  126.  
  127. sets.precast.Step = {ammo="Hasty Pinion +1",
  128. head="Flamma Zucchetto +2",neck="Loricate Torque +1",ear1="Steelflash Earring",ear2="Heartseeker Earring",
  129. body="Flamma Korazin +2",hands="Flamma Manopolas +2",ring1="Defending Ring",ring2="Patricius Ring",
  130. back="Rudianos's Mantle",waist="Sailfi Belt +1",legs="Flamma Dirs +1",feet="Flamma Gambieras +2"}
  131.  
  132. sets.precast.Flourish1 = {ammo="Plumose Sachet",
  133. head="Flamma Zucchetto +2",neck="Loricate Torque +1",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  134. body="Flamma Korazin +2",hands="Flamma Manopolas +2",ring1="Defending Ring",ring2="Sangoma Ring",
  135. back="Rudianos's Mantle",waist="Sailfi Belt +1",legs="Flamma Dirs +1",feet="Flamma Gambieras +2"}
  136.  
  137.  
  138. -- Weaponskill sets
  139. -- Default set for any weaponskill that isn't any more specifically defined
  140.  
  141. sets.precast.WS = {ammo="Hasty Pinion +1",
  142. head="Flamma Zucchetto +2",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  143. body="Flamma Korazin +2",hands="Sulevia's Gauntlets +2",ring1="Ifrit Ring",ring2="Ifrit Ring",
  144. back="Buquwik Cape",waist="Fotia Belt",legs="Sulevia's Cuisses +1",feet="Sulevia's Leggings +2"}
  145.  
  146. sets.precast.WS.Acc = {ammo="Hasty Pinion +1",
  147. head="Flamma Zucchetto +2",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Telos Earring",
  148. body="Flamma Korazin +2",hands="Flamma Manopolas +2",ring1="Petrov Ring",ring2="Patricius Ring",
  149. back="Buquwik Cape",waist="Sailfi Belt +1",legs="Flamma Dirs +1",feet="Flamma Gambieras +2"}
  150.  
  151.  
  152. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  153. sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring2="Patricius Ring",})
  154. sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS.Acc, {waist="Fotia Belt"})
  155.  
  156. sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {hands="Flamma Manopolas +2",waist="Windbuffet Belt"})
  157. sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS.Acc, {hands="Flamma Manopolas +2"})
  158.  
  159. sets.precast.WS['Sanguine Blade'] = {ammo="Plumose Sachet",
  160. head="Flamma Zucchetto +2",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
  161. body="Flamma Korazin +2",hands="Flamma Manopolas +2",ring1="Shiva Ring",ring2="Acumen Ring",
  162. back="Rudianos's Mantle",waist="Fotia Belt",legs="Flamma Dirs +1",feet="Sulevia's Leggings +2"}
  163.  
  164. sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.WS['Sanguine Blade'], {head="Terminal helm"})
  165.  
  166. sets.precast.WS['Atonement'] = {ammo="Iron goblet",
  167. head={ name="Odyssean Helm", augments={'Accuracy+28','Weapon skill damage +3%','STR+11','Attack+4',}},neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Ishvara Earring",
  168. body="Flamma Korazin +2",hands="Souv. Handsch. +1",ring1="Pernicious Ring",ring2="Apeile Ring",
  169. back="Rudiano's mantle",waist="Fotia Belt",legs={ name="Odyssean Cuisses", augments={'Accuracy+21 Attack+21','Weapon skill damage +4%','Accuracy+15','Attack+11',}},feet="Sulevia's Leggings +2"}
  170.  
  171. sets.precast.WS['Savage Blade'] = {ammo="Jukukik feather",
  172. head="Sulevia's Mask +2",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  173. body="Flamma Korazin +2",hands="Valorous Mitts",ring1="Rajas Ring",ring2="Ifrit Ring",
  174. back="Buquwik Cape",waist="Fotia Belt",legs={ name="Odyssean Cuisses", augments={'Accuracy+21 Attack+21','Weapon skill damage +4%','Accuracy+15','Attack+11',}},feet="Sulevia's Leggings +2"},
  175.  
  176.  
  177.  
  178.  
  179.  
  180. --------------------------------------
  181. -- Midcast sets
  182. --------------------------------------
  183.  
  184.  
  185. sets.midcast.FastRecast = {ammo="Sapience Orb",head="Carmine Mask",body="Odyss. Chestplate",hands="Leyline Gloves",legs="Eschite Cuisses",
  186. feet="Carmine Greaves",neck="Loricate Torque +1",waist="Creed Baudrier",ear1="Loquacious Earring",ear2="Etiolation Earring",
  187. ring1="Defending Ring",ring2="Veneficium Ring",waist="Sailfi belt +1",back="Reiki Cloak"}
  188.  
  189. sets.midcast.Enmity = sets.precast.Enmity
  190.  
  191. sets.midcast.Flash = set_combine(sets.midcast.Enmity, {neck="Divine Torque"})
  192.  
  193. sets.midcast.Stun = sets.midcast.Flash
  194.  
  195. sets.midcast.Cure = {ammo="Staunch tathlum","Souv. Schaller +1",
  196. ear1="Mendi. Earring",ear2="Nourishing Earring +1","Souv. Cuirass +1",
  197. hands="Buremte Gloves",ring1="Vocane Ring",ring2="Kunaji Ring",
  198. waist="Chuq'aba Belt",legs="Souv. Diechlings +1","Souveran Schuhs +1",neck="Phalaina locket"}
  199.  
  200. sets.midcast['Blue Magic'] = set_combine(sets.midcast.Enmity, {})
  201.  
  202. sets.midcast['Blue Magic']['Wild Carrot'] = set_combine(sets.midcast.Enmity, sets.midcast.Cure)
  203.  
  204. sets.midcast['Enhancing Magic'] = {sub="Priwen",ammo="Staunch Tathlum",
  205. head="Yorium Barbuta",body="Shabti Cuirass",hands="Souv. Handsch. +1",legs="Yorium Cuisses",
  206. feet="Souveran Schuhs +1",neck="Enhancing Torque",waist="Olympus Sash",ear1="Andoaa Earring",
  207. ear2="Etiolation Earring",ring1="Defending Ring",ring2="Vocane Ring",back="Weard Mantle"}
  208. }
  209.  
  210.  
  211. sets.midcast.Protect = {ring1="Sheltered Ring"}
  212. sets.midcast.Shell = {ring1="Sheltered Ring"}
  213.  
  214. --------------------------------------
  215. -- Idle/resting/defense/etc sets
  216. --------------------------------------
  217.  
  218. sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
  219.  
  220. sets.resting = {ammo="Homiliary",
  221. head="Wivre Hairpin",neck="Creed Collar",
  222. body="Twilight Mail",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  223.  
  224.  
  225. -- Idle sets
  226. sets.idle = {ammo="Staunch Tathlum",
  227. head="Sulevia's Mask +2",neck="Coatl gorget +1",ear1="Infused Earring",ear2="Hearty Earring",
  228. body="Reverence Surcoat +2",hands="Sulevia's Gauntlets +2",ring1="Vocane Ring",ring2="Defending Ring",
  229. back="Rudiano's mantle"="Flume Belt",legs="Carmine Cuisses +1",feet="Sulevia's Leggings +2"}
  230.  
  231. sets.idle.Refresh = set_combine(sets.idle, {ammo="Homiliary",
  232. head="Souv. Schaller +1",neck="Creed Collar",
  233. body="Souv. Cuirass +1",ring1="Sheltered Ring",ring2="Paguroidea Ring"})
  234.  
  235. sets.idle.Town = {ammo="Staunch Tathlum",
  236. head="Flamma Zucchetto +2",neck="Loricate Torque +1",ear1="Telos Earring",ear2="Etiolation Earring",
  237. body="Flamma Korazin +2",hands="Flamma Manopolas +2",ring1="Vocane Ring",ring2="Defending Ring",
  238. back="Rudiano's Mantle",waist="Windbuffet Belt",legs="Carmine Cuisses +1",feet="Flamma Gambieras +2"}
  239.  
  240. sets.idle.Weak = set_combine(sets.idle,{back="Rudiano's Mantle",legs="Sulevia's Cuisses +2"})
  241.  
  242. sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
  243.  
  244. sets.Kiting = {legs="Carmine Cuisses +1"}
  245.  
  246. sets.latent_refresh = {waist="Fucho-no-obi"}
  247.  
  248.  
  249. --------------------------------------
  250. -- Defense sets
  251. --------------------------------------
  252.  
  253. -- Extra defense sets. Apply these on top of melee or defense sets.
  254. sets.Knockback = {ring1="Vocane Ring",back="Impassive Mantle"}
  255. sets.MP = {ammo="Homiliary",neck="Creed Collar",waist="Flume Belt"} --Chev. Armet +1
  256. sets.MP_Knockback = set_combine(sets.MP, sets.Knockback)
  257.  
  258. -- If EquipShield toggle is on (Win+F10 or Win+F11), equip the weapon/shield combos here
  259. -- when activating or changing defense mode:
  260. sets.PhysicalShield = {main="Flyssa +1",sub="Ochain"}
  261. sets.MagicalShield = {main="Flyssa +1",sub="Aegis"}
  262.  
  263. -- Basic defense sets.
  264.  
  265. sets.defense.PDT = {ammo="Staunch Tathlum",
  266. head="Loess Barbuta +1",neck="Loricate Torque +1",ear1="Thureous Earring",ear2="Cryptic Earring",
  267. body="Souv. Cuirass +1",hands="Sulevia's Gauntlets +2",ring1="Vocane Ring",ring2="Defending Ring",
  268. back="Reiki Cloak",waist="Creed baudrier",legs="Souv. Cuisses +1",feet="Souv. Schuhs +1"}
  269. sets.defense.HP = {ammo="Staunch Tathlum",
  270. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Etiolation Earring",
  271. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  272. back="Reiki Cloak",waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +1"}
  273. sets.defense.Reraise = {ammo="Staunch Tathlum",
  274. head="Twilight Helm",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Creed Earring",
  275. body="Twilight Mail",hands="Sulevia's Gauntlets +2",ring1="Vocane Ring",ring2="Defending Ring",
  276. back="Reiki cloak",waist="Nierenschutz",legs="Sulevia's Cuisses +2",feet="Sulevia's Leggings +2"}
  277. sets.defense.Charm = {ammo="Homiliary",
  278. head="Sulevia's Mask +2",neck="Twilight Torque",ear1="Oneiros Earring",ear2="Creed Earring",
  279. body="Sulevia's Platemail +2",hands="Sulevia's Gauntlets +2",ring1="Vocane Ring",ring2="Defending Ring",
  280. back=gear.Weard,
  281. waist="Flume Belt",legs="Sulevia's Cuisses +2",feet="Sulevia's Leggings +2"}
  282. -- To cap MDT with Shell IV (52/256), need 76/256 in gear.
  283. -- Shellra V can provide 75/256, which would need another 53/256 in gear.
  284. sets.defense.MDT = {ammo="Staunch Tathlum",
  285. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Etiolation Earring",
  286. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  287. back="Reiki Cloak",
  288. waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +11"}
  289.  
  290.  
  291. --------------------------------------
  292. -- Engaged sets
  293. --------------------------------------
  294.  
  295. sets.engaged = {ammo="Staunch Tathlum",
  296. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Etiolation Earring",
  297. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  298. back="Reiki Cloak",waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +1"}
  299.  
  300. sets.engaged.Acc = {ammo="Staunch Tathlum",
  301. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Etiolation Earring",
  302. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  303. back="Reiki Cloak",waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +1"}
  304.  
  305.  
  306. sets.engaged.DW = set_combine(sets.engaged, {ear1="Suppanomimi",ear2="Brutal Earring",legs="Carmine Cuisses +1"})
  307.  
  308. sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {ear1="Dudgeon Earring",ear2="Heartseeker Earring"})
  309.  
  310. sets.engaged.PDT = {ammo="Staunch Tathlum",
  311. head="Souv. Schaller +1",neck="Loricate Torque +1",ear1="Odnowa Earring +1",ear2="Etiolation Earring",
  312. body="Souv. Cuirass +1",hands="Souv. Handsch. +1",ring1="Vocane Ring",ring2="Defending Ring",
  313. back="Reiki Cloak",waist="Creed Baudrier",legs="Souv. Cuisses +1",feet="Souveran Schuhs +1"}
  314.  
  315. sets.engaged.Acc.PDT = sets.engaged.PDT
  316. sets.engaged.Reraise = set_combine(sets.engaged, sets.Reraise)
  317. sets.engaged.Acc.Reraise = set_combine(sets.engaged.Acc, sets.Reraise)
  318.  
  319. sets.engaged.DW.PDT = set_combine(sets.engaged.PDT, {ear1="Suppanomimi",ear2="Brutal Earring"})
  320. sets.engaged.DW.Acc.PDT = set_combine(sets.engaged.PDT, {ear1="Dudgeon Earring",ear2="Heartseeker Earring"})
  321. sets.engaged.DW.Reraise = set_combine(sets.engaged.DW, sets.Reraise)
  322. sets.engaged.DW.Acc.Reraise = set_combine(sets.engaged.DW.Acc, sets.Reraise)
  323.  
  324.  
  325. --------------------------------------
  326. -- Custom buff sets
  327. --------------------------------------
  328.  
  329. sets.buff.Doom = {ring1="Purity Ring",ring2="Saida Ring",legs="Shabti cuisses",waist="Gishdubar sash"}
  330. sets.buff.Cover = {head="Reverence Coronet +1", body="Caballarius Surcoat +1"}
  331.  
  332. end
  333.  
  334.  
  335. -------------------------------------------------------------------------------------------------------------------
  336. -- Job-specific hooks for standard casting events.
  337. -------------------------------------------------------------------------------------------------------------------
  338.  
  339. function job_pretarget(spell, action, spellMap, eventArgs)
  340. if spell.type == "WeaponSkill" and player.status == 'Engaged' and spell.target.distance > target_distance then -- Cancel WS If You Are Out Of Range --
  341. eventArgs.cancel=true
  342. add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  343. return
  344. end
  345. end
  346.  
  347.  
  348. function job_midcast(spell, action, spellMap, eventArgs)
  349. -- If DefenseMode is active, apply that gear over midcast
  350. -- choices. Precast is allowed through for fast cast on
  351. -- spells, but we want to return to def gear before there's
  352. -- time for anything to hit us.
  353. -- Exclude Job Abilities from this restriction, as we probably want
  354. -- the enhanced effect of whatever item of gear applies to them,
  355. -- and only one item should be swapped out.
  356. if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
  357. handle_equipping_gear(player.status)
  358. eventArgs.handled = true
  359. end
  360. end
  361.  
  362. -------------------------------------------------------------------------------------------------------------------
  363. -- Job-specific hooks for non-casting events.
  364. -------------------------------------------------------------------------------------------------------------------
  365.  
  366. -- Called when the player's state changes (e.g. Normal to Acc Engaged mode).
  367. function job_state_change(field, new_value, old_value)
  368. classes.CustomDefenseGroups:clear()
  369. classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
  370. if state.EquipShield.value == true then
  371. classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
  372. end
  373.  
  374. classes.CustomMeleeGroups:clear()
  375. classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
  376.  
  377. end
  378.  
  379. -------------------------------------------------------------------------------------------------------------------
  380. -- User code that supplements standard library decisions.
  381. -------------------------------------------------------------------------------------------------------------------
  382.  
  383. -- Called by the 'update' self-command, for common needs.
  384. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  385. function job_update(cmdParams, eventArgs)
  386. update_defense_mode()
  387. end
  388.  
  389. -- Called when status changes (Idle to Engaged, Resting, etc.)
  390. function job_status_change(newStatus, oldStatus, eventArgs)
  391. update_defense_mode()
  392. end
  393.  
  394. -- Modify the default idle set after it was constructed.
  395. function customize_idle_set(idleSet)
  396. if world.area:contains('Adoulin') then
  397. idleSet = set_combine(idleSet, {body="Councilor's Garb"})
  398. end
  399. if player.mpp < 51 then
  400. idleSet = set_combine(idleSet, sets.latent_refresh)
  401. end
  402. if state.Buff.Doom then
  403. idleSet = set_combine(idleSet, sets.buff.Doom)
  404. end
  405.  
  406. return idleSet
  407. end
  408.  
  409. -- Modify the default melee set after it was constructed.
  410. function customize_melee_set(meleeSet)
  411. if state.Buff.Doom then
  412. meleeSet = set_combine(meleeSet, sets.buff.Doom)
  413. end
  414.  
  415. return meleeSet
  416. end
  417.  
  418. function customize_defense_set(defenseSet)
  419. if state.ExtraDefenseMode.value ~= 'None' then
  420. defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
  421. end
  422.  
  423. if state.EquipShield.value == true then
  424. defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
  425. end
  426.  
  427. if state.Buff.Doom then
  428. defenseSet = set_combine(defenseSet, sets.buff.Doom)
  429. end
  430.  
  431. return defenseSet
  432. end
  433.  
  434.  
  435. function display_current_job_state(eventArgs)
  436. local msg = 'Melee'
  437.  
  438. if state.CombatForm.has_value then
  439. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  440. end
  441.  
  442. msg = msg .. ': '
  443.  
  444. msg = msg .. state.OffenseMode.value
  445. if state.HybridMode.value ~= 'Normal' then
  446. msg = msg .. '/' .. state.HybridMode.value
  447. end
  448. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  449.  
  450. if state.DefenseMode.value ~= 'None' then
  451. msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  452. end
  453.  
  454. if state.ExtraDefenseMode.value ~= 'None' then
  455. msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
  456. end
  457.  
  458. if state.EquipShield.value == true then
  459. msg = msg .. ', Force Equip Shield'
  460. end
  461.  
  462. if state.Kiting.value == true then
  463. msg = msg .. ', Kiting'
  464. end
  465.  
  466. if state.PCTargetMode.value ~= 'default' then
  467. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  468. end
  469.  
  470. if state.SelectNPCTargets.value == true then
  471. msg = msg .. ', Target NPCs'
  472. end
  473.  
  474. add_to_chat(122, msg)
  475.  
  476. eventArgs.handled = true
  477. end
  478.  
  479. -------------------------------------------------------------------------------------------------------------------
  480. -- Utility functions specific to this job.
  481. -------------------------------------------------------------------------------------------------------------------
  482.  
  483. function update_defense_mode()
  484. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  485. if player.equipment.sub and not player.equipment.sub:contains('Shield') and
  486. player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
  487. state.CombatForm:set('DW')
  488. else
  489. state.CombatForm:reset()
  490. end
  491. end
  492. end
  493.  
  494.  
  495. -- Select default macro book on initial load or subjob change.
  496. function select_default_macro_book()
  497. -- Default macro set/book
  498. if player.sub_job == 'WAR' then
  499. set_macro_page(5, 1)
  500. elseif player.sub_job == 'DNC' then
  501. set_macro_page(1, 1)
  502. elseif player.sub_job == 'THF' then
  503. set_macro_page(6, 1)
  504. elseif player.sub_job == 'SAM' then
  505. set_macro_page(7, 1)
  506. elseif player.sub_job == 'RNG' then
  507. set_macro_page(8, 1)
  508. elseif player.sub_job == 'PLD' then
  509. set_macro_page(9, 1)
  510. elseif player.sub_job == 'WHM' then
  511. set_macro_page(1, 2)
  512. elseif player.sub_job == 'RDM' then
  513. set_macro_page(1, 3)
  514. elseif player.sub_job == 'SCH' then
  515. set_macro_page(1, 4)
  516. elseif player.sub_job == 'BLU' then
  517. set_macro_page(1, 5)
  518. elseif player.sub_job == 'DRK' then
  519. set_macro_page(5, 5)
  520. elseif player.sub_job == 'RUN' then
  521. set_macro_page(1, 6)
  522. elseif player.sub_job == 'NIN' then
  523. set_macro_page(10, 1)
  524. else
  525. set_macro_page(1, 7) --BRD
  526. end
  527. end
Advertisement
Add Comment
Please, Sign In to add comment