Advertisement
Guest User

WHM

a guest
Jul 23rd, 2014
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.89 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 (and its supplementary files) to go with this.
  6.  
  7. -- Initialization function for this job file.
  8. function get_sets()
  9.     -- Load and initialize the include file.
  10.     include('Mote-Include.lua')
  11. end
  12.  
  13. -- Called when this job file is unloaded (eg: job change)
  14. function file_unload()
  15.     if binds_on_unload then
  16.         binds_on_unload()
  17.     end
  18. end
  19.  
  20.  
  21. -- Define sets and vars used by this job file.
  22. function init_gear_sets()
  23.     -- Default macro set/book
  24.     set_macro_page(1, 6)
  25.    
  26.     -- Options: Override default values
  27.     options.OffenseModes = {'None', 'Normal'}
  28.     options.DefenseModes = {'Normal'}
  29.     options.WeaponskillModes = {'Normal'}
  30.     options.CastingModes = {'Normal', 'Resistant', 'Dire'}
  31.     options.IdleModes = {'Normal', 'PDT'}
  32.     options.RestingModes = {'Normal'}
  33.     options.PhysicalDefenseModes = {'PDT'}
  34.     options.MagicalDefenseModes = {'MDT'}
  35.    
  36.     state.Defense.PhysicalMode = 'PDT'
  37.     state.OffenseMode = 'None'
  38.    
  39.     state.Buff['Afflatus Solace'] = buffactive['afflatus solace'] or false
  40.  
  41.     --------------------------------------
  42.     -- Start defining the sets
  43.     --------------------------------------
  44.  
  45.     -- Precast Sets
  46.  
  47.     -- Fast cast sets for spells
  48.     sets.precast.FC = {main=gear.FastcastStaff,ammo="Incantor Stone",
  49.         head="Nahtirah Hat",neck="Orison Locket",ear2="Loquacious Earring",
  50.         body="Anhur Robe",hands="Gendewitha Gages",ring1="Prolix Ring",
  51.         back="Swith Cape",waist="Witful Belt",legs="Orvail Pants +1",feet="Chelona Boots"}
  52.        
  53.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  54.  
  55.     sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Orison Pantaloons +2"})
  56.  
  57.         sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
  58.  
  59.         sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {main="Tamaxchi",sub="Genbu's Shield",ammo="Impatiens"})
  60.  
  61.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  62.    
  63.     sets.precast.BarElement = {main="Beneficus"}
  64.    
  65.     -- Precast sets to enhance JAs
  66.     sets.precast.JA.Benediction = {body="Piety Briault +1"}
  67.  
  68.     -- Waltz set (chr and vit)
  69.     sets.precast.Waltz = {
  70.         head="Nahtirah Hat",ear1="Roundel Earring",
  71.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",
  72.         back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  73.    
  74.    
  75.     -- Weaponskill sets
  76.  
  77.     -- Default set for any weaponskill that isn't any more specifically defined
  78.     gear.default.weaponskill_neck = "Asperity Necklace"
  79.     gear.default.weaponskill_waist = ""
  80.     sets.precast.WS = {
  81.         head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
  82.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
  83.         back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  84.    
  85.     sets.precast.WS['Flash Nova'] = {
  86.         head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
  87.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",
  88.         back="Toro Cape",waist="Thunder Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  89.    
  90.  
  91.     -- Midcast Sets
  92.    
  93.     sets.midcast.FastRecast = {
  94.         head="Nahtirah Hat",ear2="Loquacious Earring",
  95.         body="Anhur Robe",hands="Gendewitha Gages",ring1="Prolix Ring",
  96.         back="Swith Cape",waist="Goading Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  97.    
  98.     -- Cure sets
  99.     gear.default.obi_waist = "Goading Belt"
  100.     gear.default.obi_back = "Swith Cape"
  101.  
  102.     sets.midcast.CureSolace = {main="Tamaxchi",sub="Genbu's Shield",ammo="Mana Ampulla",
  103.         head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Orison Earring",ear2="Beatific Earring",
  104.         body="Orison Bliaud +2",hands="Theophany Mitts +1",ring1="Haoma's Ring",ring2="Sirona's Ring",
  105.         back="Pahtli Cape",waist="Pythia Sash +1",legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
  106.  
  107.     sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
  108.         head="Theophany Cap +1",neck="Colossus's Torque",ear1="Orison Earring",ear2="Loquacious Earring",
  109.         body="Heka's Kalasiris",hands="Theophany Mitts +1",ring1="Prolix Ring",ring2="Sirona's Ring",
  110.         back="Pahtli Cape",waist="Pythia Sash +1",legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
  111.  
  112.     sets.midcast.Curaga = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
  113.         head="Theophany Cap +1",neck="Orison Locket",ear1="Orison Earring",ear2="Loquacious Earring",
  114.         body="Heka's Kalasiris",hands="Theophany Mitts +1",ring1="Prolix Ring",ring2="Sangoma Ring",
  115.         back="Pahtli Cape",waist="Pythia Sash +1",legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
  116.  
  117.     sets.midcast.CureMelee = {ammo="Incantor Stone",
  118.         head="Theophany Cap +1",neck="Orison Locket",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  119.         body="Heka's Kalasiris",hands="Theophany Mitts +1",ring1="Prolix Ring",ring2="Sirona's Ring",
  120.         back=gear.ElementalCape,waist=gear.ElementalBelt,legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
  121.  
  122.     sets.midcast.Cursna = {main="Beneficus",
  123.         head="Orison Cap +2",neck="Malison Medallion",
  124.         hands="Theophany Mitts +1",ring1="Haoma's Ring",ring2="Haoma's Ring",
  125.         legs="Theophany Pantaloons +1",feet="Gendewitha Galoshes",back="Mending Cape",waist="Witful Belt"}
  126.  
  127.     sets.midcast.StatusRemoval = {
  128.         head="Orison Cap +2",legs="Orison Pantaloons +2"}
  129.  
  130.  
  131.     sets.midcast['Enhancing Magic'] = {main="Beneficus",sub="Genbu's Shield",
  132.         body="Anhur Robe",hands="Dynasty Mitts",neck="Colossus's Torque",
  133.         waist="Olympus Sash",legs="Piety Pantaloons +1",feet="Orison Duckbills +2"}
  134.  
  135.     sets.midcast.Stoneskin = {
  136.         head="Nahtirah Hat",neck="Orison Locket",ear2="Loquacious Earring",
  137.         body="Anhur Robe",hands="Gendewitha Gages",
  138.         back="Swith Cape",waist="Siegel Sash",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  139.  
  140.     sets.midcast.Auspice = {feet="Orison Duckbills +2"}
  141.  
  142.     sets.midcast.BarElement = {main="Beneficus",sub="Genbu's Shield",
  143.         head="Orison Cap +2",neck="Colossus's Torque",
  144.         body="Orison Bliaud +2",hands="Orison Mitts +2",
  145.         waist="Olympus Sash",legs="Piety Pantaloons +1",feet="Orison Duckbills +2"}
  146.  
  147.     sets.midcast.Regen = {main="Bolelabunga",
  148.         body="Piety Briault +1",hands="Orison Mitts +2",
  149.         legs="Theophany Pantaloons +1"}
  150.  
  151.     sets.midcast.Protectra = {ring1="Sheltered Ring",feet="Piety Duckbills +1"}
  152.  
  153.     sets.midcast.Shellra = {ring1="Sheltered Ring",legs="Piety Pantaloons +1"}
  154.    
  155.    
  156.     sets.midcast.Haste = {hands="Dynasty Mitts"}
  157.  
  158.  
  159.     sets.midcast['Divine Magic'] = {main="Venabulum",sub="Mephitis Grip",
  160.         head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  161.         body="Gendewitha Bliaut",hands="Lurid Mitts",ring2="Sangoma Ring",
  162.         back=gear.ElementalCape,waist=gear.ElementalBelt,legs="Theophany Pantaloons +1",feet="Orison Duckbills +2"}
  163.  
  164.     sets.midcast['Dark Magic'] = {main="Venabulum", sub="Mephitis Grip",
  165.         head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  166.         body="Gendewitha Bliaut",hands="Lurid Mitts",ring1="Strendu Ring",ring2="Sangoma Ring",
  167.         back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
  168.  
  169.     --sets.midcast.Stun = set_combine(sets.midcast.Dark Magic, {main=gear.RecastStaff})
  170.  
  171.     -- Custom spell classes
  172.     sets.midcast.MndEnfeebles = {main="Venabulum", sub="Mephitis Grip",
  173.         head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  174.         body="Gendewitha Bliaut",hands="Lurid Mitts",ring1="Strendu Ring",ring2="Sangoma Ring",
  175.         back="Refraction Cape",waist="Demonry Sash",legs="Orvail Pants +1",feet="Theophany Duckbills +1"}
  176.  
  177.     sets.midcast.IntEnfeebles = {main="Venabulum", sub="Mephitis Grip",
  178.         head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  179.         body="Gendewitha Blaut",hands="Lurid Mitts",ring1="Strendu Ring",ring2="Sangoma Ring",
  180.         back="Refraction Cape",waist="Demonry Sash",legs="Orvail Pants +1",feet="Theophany Duckbills +1"}
  181.  
  182.    
  183.     -- Sets to return to when not performing an action.
  184.    
  185.     -- Resting sets
  186.     sets.resting = {main=gear.Staff.HMP,
  187.         head="Nefer Khat",
  188.         body="Heka's Kalasiris",hands="Serpentes Cuffs",
  189.         waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots",ammo="Mana Ampulla"}
  190.    
  191.  
  192.     -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  193.     sets.idle = {main="Bolelabunga", sub="Genbu's Shield",ammo="Incantor Stone",
  194.         head="Nefer Khat",neck="Twilight Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
  195.         body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Paguroidea Ring",ring2="Defending Ring",
  196.         back="Umbra Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
  197.  
  198.     sets.idle.PDT = {main="Terra's Staff", sub="Oneiros Grip",ammo="Incantor Stone",
  199.         head="Gendewitha Caubeen",neck="Twilight Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
  200.         body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Defending Ring",
  201.         back="Umbra Cape",waist="Slipor Sash",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  202.  
  203.     sets.idle.Town = {main="Bolelabunga", sub="Genbu's Shield",ammo="Impatiens",
  204.         head="Theophany Cap +1",neck="Colossus's Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
  205.         body="Piety Briault +1",hands="Theophany Mitts +1",ring1="Haoma's Ring",ring2="Defending Ring",
  206.         back="Umbra Cape",waist="Pythia Sash +1",legs="Piety Pantaloons +1",feet="Piety Duckbills +1"}
  207.    
  208.     sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
  209.         head="Nefer Khat",neck="Twilight Torque",ear1="Gifted Earring",ear2="Loquacious Earring",
  210.         body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sangoma Ring",ring2="Defending Ring",
  211.         back="Umbra Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
  212.    
  213.    
  214.    
  215.     -- Defense sets
  216.  
  217.     sets.defense.PDT = {main="Terra's Staff",sub="Oneiros Grip",
  218.         head="Gendewitha Caubeen",neck="Twilight Torque",
  219.         body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Defending Ring",
  220.         back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  221.  
  222.     sets.defense.MDT = {main="Terra's Staff",sub="Oneiros Grip",
  223.         head="Theophany Cap +1",neck="Twilight Torque",
  224.         body="Piety Briault +1",hands="Dynasty Mitts",ring1="Dark Ring",ring2="Defending Ring",
  225.         waist="Slipor Sash",legs="Theophany Pantaloons +1",feet="Theophany Duckbills +1",ear1="Sanare Earring",
  226.         ear2="Mujin Stud"}
  227.  
  228.     sets.Kiting = {feet="Herald's Gaiters"}
  229.  
  230.     -- Engaged sets
  231.  
  232.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  233.     -- sets if more refined versions aren't defined.
  234.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  235.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  236.    
  237.     -- Basic set for if no TP weapon is defined.
  238.     sets.engaged = {
  239.         head="Theophany Cap +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  240.         body="Piety Briault +1",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
  241.         back="Umbra Cape",waist="Goading Belt",legs="Piety Pantaloons +1",feet="Piety Duckbills +1"}
  242.  
  243.  
  244.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  245.     sets.buff['Divine Caress'] = {hands="Orison Mitts +2"}
  246. end
  247.  
  248. -------------------------------------------------------------------------------------------------------------------
  249. -- Job-specific hooks that are called to process player actions at specific points in time.
  250. -------------------------------------------------------------------------------------------------------------------
  251.  
  252. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  253. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  254. function job_precast(spell, action, spellMap, eventArgs)
  255.     classes.CustomClass = get_spell_class(spell, action, spellMap)
  256.  
  257.     if spell.english == "Paralyna" and buffactive.Paralyzed then
  258.         -- no gear swaps if we're paralyzed, to avoid blinking while trying to remove it.
  259.         eventArgs.handled = true
  260.     end
  261.    
  262.     if spell.skill == 'Healing Magic' then
  263.         gear.default.obi_back = "Refraction Cape"
  264.     else
  265.         gear.default.obi_back = "Toro Cape"
  266.     end
  267. end
  268.  
  269.  
  270. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  271. function job_midcast(spell, action, spellMap, eventArgs)
  272.     if spell.action_type == 'Magic' then
  273.         -- Default base equipment layer of fast recast.
  274.         equip(sets.midcast.FastRecast)
  275.     end
  276. end
  277.  
  278.  
  279. function job_post_midcast(spell, action, spellMap, eventArgs)
  280.     -- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
  281.     if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
  282.         equip(sets.buff['Divine Caress'])
  283.     end
  284. end
  285.  
  286.  
  287. -- Return true if we handled the aftercast work.  Otherwise it will fall back
  288. -- to the general aftercast() code in Mote-Include.
  289. function job_aftercast(spell, action, spellMap, eventArgs)
  290.     if not spell.interrupted then
  291.         if state.Buff[spell.name] ~= nil then
  292.             state.Buff[spell.name] = true
  293.         elseif spell.name == "Afflatus Misery" then
  294.             state.Buff['Afflatus Solace'] = false
  295.         end
  296.     end
  297. end
  298.  
  299.  
  300. -------------------------------------------------------------------------------------------------------------------
  301. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  302. -------------------------------------------------------------------------------------------------------------------
  303. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  304. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  305. function job_precast(spell, action, spellMap, eventArgs)
  306.     if spell.english == "Paralyna" and buffactive.Paralyzed then
  307.         -- no gear swaps if we're paralyzed, to avoid blinking while trying to remove it.
  308.         eventArgs.handled = true
  309.     end
  310.    
  311.     if spell.skill == 'Healing Magic' then
  312.         gear.default.obi_back = "Mending Cape"
  313.     else
  314.         gear.default.obi_back = "Toro Cape"
  315.     end
  316. end
  317.  
  318.  
  319. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  320. function job_midcast(spell, action, spellMap, eventArgs)
  321.     if spell.action_type == 'Magic' then
  322.         -- Default base equipment layer of fast recast.
  323.         equip(sets.midcast.FastRecast)
  324.     end
  325. end
  326.  
  327.  
  328. function job_post_midcast(spell, action, spellMap, eventArgs)
  329.     -- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
  330.     if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
  331.         equip(sets.buff['Divine Caress'])
  332.     end
  333. end
  334.  
  335.  
  336. -- Return true if we handled the aftercast work.  Otherwise it will fall back
  337. -- to the general aftercast() code in Mote-Include.
  338. function job_aftercast(spell, action, spellMap, eventArgs)
  339.     if not spell.interrupted then
  340.         if state.Buff[spell.name] ~= nil then
  341.             state.Buff[spell.name] = true
  342.         elseif spell.name == "Afflatus Misery" then
  343.             state.Buff['Afflatus Solace'] = false
  344.         end
  345.     end
  346. end
  347.  
  348.  
  349. -------------------------------------------------------------------------------------------------------------------
  350. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  351. -------------------------------------------------------------------------------------------------------------------
  352.  
  353. -- Custom spell mapping.
  354. function job_get_spell_map(spell, default_spell_map)
  355.     if spell.action_type == 'Magic' then
  356.         if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') and player.status == 'Engaged' then
  357.             return "CureMelee"
  358.         elseif default_spell_map == 'Cure' and state.Buff['Afflatus Solace'] then
  359.             return "CureSolace"
  360.         elseif spell.skill == "Enfeebling Magic" then
  361.             if spell.type == "WhiteMagic" then
  362.                 return "MndEnfeebles"
  363.             else
  364.                 return "IntEnfeebles"
  365.             end
  366.         end
  367.     end
  368. end
  369.  
  370.  
  371. -------------------------------------------------------------------------------------------------------------------
  372. -- General hooks for other events.
  373. -------------------------------------------------------------------------------------------------------------------
  374.  
  375. -- Called when a player gains or loses a buff.
  376. -- buff == buff gained or lost
  377. -- gain == true if the buff was gained, false if it was lost.
  378. function job_buff_change(buff, gain)
  379.     if state.Buff[buff] ~= nil then
  380.         state.Buff[buff] = gain
  381.     end
  382. end
  383.  
  384.  
  385. -------------------------------------------------------------------------------------------------------------------
  386. -- User code that supplements self-commands.
  387. -------------------------------------------------------------------------------------------------------------------
  388.  
  389. -- Called by the 'update' self-command.
  390. function job_update(cmdParams, eventArgs)
  391.     if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
  392.         local needsArts =
  393.             player.sub_job:lower() == 'sch' and
  394.             not buffactive['Light Arts'] and
  395.             not buffactive['Addendum: White'] and
  396.             not buffactive['Dark Arts'] and
  397.             not buffactive['Addendum: Black']
  398.            
  399.         if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
  400.             if needsArts then
  401.                 send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
  402.             else
  403.                 send_command('@input /ja "Afflatus Solace" <me>')
  404.             end
  405.         end
  406.     end
  407. end
  408.  
  409.  
  410. -- Handle notifications of general user state change.
  411. function job_state_change(stateField, newValue, oldValue)
  412.     if stateField == 'OffenseMode' then
  413.         if newValue == 'Normal' then
  414.             disable('main','sub')
  415.         else
  416.             enable('main','sub')
  417.         end
  418.     elseif stateField == 'Reset' then
  419.         if state.OffenseMode == 'None' then
  420.             enable('main','sub')
  421.         end
  422.     end
  423. end
  424.  
  425.  
  426. -- Function to display the current relevant user state when doing an update.
  427. -- Return true if display was handled, and you don't want the default info shown.
  428. function display_current_job_state(eventArgs)
  429.     local defenseString = ''
  430.     if state.Defense.Active then
  431.         local defMode = state.Defense.PhysicalMode
  432.         if state.Defense.Type == 'Magical' then
  433.             defMode = state.Defense.MagicalMode
  434.         end
  435.  
  436.         defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  437.     end
  438.    
  439.     local meleeString = ''
  440.     if state.OffenseMode == 'Normal' then
  441.         meleeString = 'Melee: Weapons locked, '
  442.     end
  443.  
  444.     add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
  445.         'Kiting: '..on_off_names[state.Kiting])
  446.  
  447.     eventArgs.handled = true
  448. end
  449.  
  450. -------------------------------------------------------------------------------------------------------------------
  451. -- Utility functions specific to this job.
  452. -------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement