Advertisement
Brownies

testingGSblm

Aug 19th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.54 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. end
  12.  
  13.  
  14. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  15. function job_setup()
  16.  
  17. end
  18.  
  19. -------------------------------------------------------------------------------------------------------------------
  20. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  21. -------------------------------------------------------------------------------------------------------------------
  22.  
  23. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  24. function user_setup()
  25.     state.OffenseMode:options('None', 'Normal')
  26.     state.CastingMode:options('Normal', 'Resistant', 'Proc')
  27.     state.IdleMode:options('Normal', 'PDT')
  28.    
  29.     state.MagicBurst = M(false, 'Magic Burst')
  30.  
  31.     lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
  32.         'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
  33.         'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
  34.         'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
  35.         'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
  36.  
  37.     gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
  38.    
  39.     ShadowType = 'None'
  40.    
  41.     -- Additional local binds
  42.     send_command('bind ^` input /ma Stun <t>')
  43.     send_command('bind @` gs c activate MagicBurst')
  44.  
  45.     select_default_macro_book()
  46. end
  47.  
  48. -- Called when this job file is unloaded (eg: job change)
  49. function user_unload()
  50.     send_command('unbind ^`')
  51.     send_command('unbind @`')
  52. end
  53.  
  54.  
  55. -- Define sets and vars used by this job file.
  56. function init_gear_sets()
  57.     --------------------------------------
  58.     -- Start defining the sets
  59.     --------------------------------------
  60.    
  61.     ---- Precast Sets ----
  62.    
  63.     -- Precast sets to enhance JAs
  64.     sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +2"}
  65.  
  66.     sets.precast.JA.Manafont = {body="Sorcerer's Coat +2"}
  67.    
  68.     -- equip to maximize HP (for Tarus) and minimize MP loss before using convert
  69.     sets.precast.JA.Convert = {}
  70.  
  71.  
  72.     -- Fast cast sets for spells
  73.  
  74.     sets.precast.FC = {sub="Vivid strap +1",
  75.         head="Walahra turban",ear2="Loquacious Earring",
  76.         waist="headlong belt"}
  77.  
  78.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  79.  
  80.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
  81.  
  82.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", back="Pahtli Cape"})
  83.  
  84.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  85.  
  86.     -- Weaponskill sets
  87.     -- Default set for any weaponskill that isn't any more specifically defined
  88.     sets.precast.WS = {
  89.         head="Hagondes Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  90.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Icesoul Ring",
  91.         back="Refraction Cape",waist="Cognition Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  92.  
  93.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  94.     sets.precast.WS['Vidohunir'] = {ammo="Dosis Tathlum",
  95.         head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
  96.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Acumen Ring",
  97.         back="Toro Cape",waist="Thunder Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  98.    
  99.    
  100.     ---- Midcast Sets ----
  101.  
  102.     sets.midcast.FastRecast = {sub="Vivid strap +1",
  103.         head="Walahra turban",ear2="Loquacious Earring",
  104.         waist="headlong belt"}
  105.  
  106.     sets.midcast.Cure = {main="Chatoyant Staff",sub="Vivid strap +1",
  107.         head="Goliard Chapeau",neck="Fylgja Torque +1",ear1="Roundel Earring",ear2="Loquacious Earring",
  108.         body="Mahatma Houppelande",hands="Mahatma Cuffs",ring1="Celestial Ring",ring2="Celestial Ring",
  109.         back="Ixion Cape",waist=gear.ElementalObi,legs="Mahatma Slops",feet="Goliard clogs"}
  110.  
  111.     sets.midcast.Curaga = sets.midcast.Cure
  112.  
  113.     sets.midcast['Enhancing Magic'] = {main="Chatoyant Staff",sub="Vivid strap +1",
  114.         head="Goliard Chapeau",neck="Enhancing Torque",ear1="Augment. Earring",ear2="Loquacious Earring",
  115.         body="Goliard saio",hands="Mahatma Cuffs",ring1="Celestial Ring",ring2="Celestial Ring",
  116.         legs="Mahatma Slops",waist=gear.ElementalObi,legs="Genie Huaraches"}
  117.    
  118.     sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  119.  
  120.     sets.midcast['Enfeebling Magic'] = {main="Chatoyant Staff",sub="Vivid strap +1",
  121.         head="Genie Tiara",neck="Enfeebling Torque",ear1="Incubus Earring +1",ear2="Incubus Earring +1",
  122.         body="Wizard's Coat +1",hands="Oracle's Gloves",ring1="Omniscient Ring +1",ring2="Omniscient Ring +1",
  123.         back="Refraction Cape",waist="Witch Sash",legs="Genie Lappas",feet="Goliard Clogs"}
  124.        
  125.     sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
  126.  
  127.     sets.midcast['Dark Magic'] = {main="Chatoyant Staff",sub="Dark Grip",ammo="Phtm. Tathlum",
  128.         head="Sorcerer's Petasos +1",neck="Dark Torque",ear1="Dark Earring",ear2="Incubus Earring +1",
  129.         body="Oracle's Robe",hands="Sorcerer's Gloves +1",ring1="Omniscient Ring +1",ring2="Omniscient Ring +1",
  130.         back="Hecate's Cape",waist="Witch Sash",legs="Wizard's Tonban +1",feet="Genie Huaraches"}
  131.  
  132.     sets.midcast.Drain = {main="Diabolos's Pole",sub="Dark grip",ammo="Phtm. Tathlum",
  133.         head="Sorcerer's Petasos +1",neck="Dark Torque",ear1="Dark Earring",ear2="Incubus Earring +1",
  134.         body="Oracle's Robe",hands="Sorcerer's Gloves +1",ring1="Diabolos's Ring",ring2="Omniscient Ring +1",
  135.         back="Hecate's Cape",waist="Witch Sash",legs="Wizard's Tonban +1",feet="Genie Huaraches"}
  136.    
  137.     sets.midcast.Aspir = sets.midcast.Drain
  138.  
  139.     sets.midcast.Stun = {main="Chatoyant Staff",sub="Thunder Grip",ammo="Phtm. Tathlum",
  140.         head="Sorcerer's Petasos +1",neck="Dark Torque",ear1="Dark Earring",ear2="Incubus Earring +1",
  141.         body="Oracle's Robe",hands="Sorcerer's Gloves +1",ring1="Omniscient Ring +1",ring2="Omniscient Ring +1",
  142.         back="Hecate's Cape",waist="Witch Sash",legs="Wizard's Tonban +1",feet="Genie Huaraches"}
  143.  
  144.     --[[sets.midcast.BardSong = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
  145.         head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  146.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
  147.         back="Refraction Cape",legs="Bokwus Slops",feet="Bokwus Boots"}]]-- not used
  148.  
  149.  
  150.     -- Elemental Magic sets
  151.    
  152.     sets.midcast['Elemental Magic'] = {main="Chatoyant Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  153.         head="Sorcerer's Petasos +1",neck="Lemegeton medallion +1",ear1="Moldavite Earring",ear2="Crapaud Earring",
  154.         body="Genie Weskit",hands="Zenith Mitts +1",ring1="Omniscient Ring +1",ring2="Omniscient Ring +1",
  155.         back="Hecate's Cape",waist="Witch Sash",legs="Mahatma Slops",feet="Goliard clogs"}
  156.  
  157.     sets.midcast['Elemental Magic'].Resistant = {main="Chatoyant Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  158.         head="Sorcerer's Petasos +1",neck="Lemegeton medallion +1",ear1="Moldavite Earring",ear2="Elemental Earring",
  159.         body="Oracle's Robe",hands="Genie manillas",ring1="Omniscient Ring +1",ring2="Omniscient Ring +1",
  160.         back="Hecate's Cape",waist="Witch Sash",legs="Mahatma Slops",feet="Goliard clogs"}--waist=gear.ElementalObi
  161.  
  162.     sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
  163.     sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
  164.  
  165.  
  166.     -- Minimal damage gear for procs.
  167.     sets.midcast['Elemental Magic'].Proc = {main="Earth Staff", sub="Mephitis Grip",ammo="Impatiens",
  168.         head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  169.         body="Manasa Chasuble",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  170.         back="Swith Cape +1",waist="Witful Belt",legs="Nares Trews",feet="Chelona Boots +1"}
  171.  
  172.  
  173.    
  174.     -- Sets to return to when not performing an action.
  175.    
  176.     -- Resting sets
  177.     sets.resting = {main="Imperial Wand",ammo="Legion Scutum",
  178.         head="Oracle's Cap",neck="Beak Necklace +1",ear1="Rapture Earring",ear2="Antivenom Earring",
  179.         body="Oracle's robe",hands="Oracle's Gloves",ring1="Celestial Ring",ring2="Celestial Ring",
  180.         back="Invigorating Cape",waist="headlong belt",legs="Oracle's braconi",feet="Numerist Pumps"}
  181.    
  182.  
  183.     -- Idle sets
  184.    
  185.     -- Normal refresh idle set
  186.     sets.idle = {main="Terra's Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  187.         head="Sorcerer's petasos +1",neck="Orochi Nodowa +1",ear1="Sorcerer's Earring",ear2="Antivenom Earring",
  188.         body="Dalmatica +1",hands="Sorcerer's Gloves +1",ring1="Celestial Ring",ring2="Celestial Ring",
  189.         back="Umbra Cape",waist="Headlong Belt",legs="Mahatma Slops",feet="Herald's Gaiters"}
  190.     -- Town gear.
  191.     sets.idle.Town = {main="Terra's Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  192.         head="Sorcerer's petasos +1",neck="Orochi Nodowa +1",ear1="Sorcerer's Earring",ear2="Antivenom Earring",
  193.         body="Dalmatica +1",hands="Sorcerer's Gloves +1",ring1="Celestial Ring",ring2="Celestial Ring",
  194.         back="Umbra Cape",waist="Headlong Belt",legs="Mahatma Slops",feet="Herald's Gaiters"}
  195.     -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  196.     sets.idle.PDT = {main="Terra's Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  197.         head="Genie tiara",neck="Orochi Nodowa +1",ear1="Sorcerer's Earring",ear2="Loquacious Earring",
  198.         body="Sorcerer's Coat +1",hands="Genie Manillas",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  199.         back="Umbra Cape",waist="Headlong Belt",legs="Genie Lappas",feet="Herald's Gaiters"}
  200.      -- Idle mode when weak.
  201.     sets.idle.Weak = {main="Terra's Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  202.         head="Genie tiara",neck="Orochi Nodowa +1",ear1="Sorcerer's Earring",ear2="Loquacious Earring",
  203.         body="Sorcerer's Coat +1",hands="Genie Manillas",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  204.         back="Umbra Cape",waist="Headlong Belt",legs="Genie Lappas",feet="Herald's Gaiters"}
  205.    
  206.    
  207.        
  208.     -- Defense sets
  209.  
  210.     sets.defense.PDT = {main="Terra's Staff",sub="Vivid strap +1",ammo="Phtm. Tathlum",
  211.         head="Genie tiara",neck="Orochi Nodowa +1",ear1="Sorcerer's Earring",ear2="Loquacious Earring",
  212.         body="Sorcerer's Coat +1",hands="Genie Manillas",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  213.         back="Umbra Cape",waist="Headlong Belt",legs="Genie Lappas",feet="Herald's Gaiters"}
  214.     --MDT set needs update
  215.     sets.defense.MDT = {ammo="Demonry Stone",
  216.         head="Nahtirah Hat",neck="Twilight Torque",
  217.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  218.         back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
  219.  
  220.     sets.Kiting = {feet="Herald's Gaiters"}
  221.  
  222.     sets.latent_refresh = {waist="Fucho-no-obi"}
  223.     sets.midcast.pendant = {neck="Uggalepih Pendant"}
  224.     sets.midcast.ring = {ring1="Sorcerer's Ring"}
  225.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  226.    
  227.     sets.buff['Mana Wall'] = {feet="Goetia Sabots +2"}
  228.  
  229.     sets.magic_burst = {neck="Mizukage-no-Kubikazari"}
  230.  
  231.     -- Engaged sets
  232.  
  233.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  234.     -- sets if more refined versions aren't defined.
  235.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  236.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  237.    
  238.     -- Normal melee group needs update
  239.     sets.engaged = {
  240.         head="Zelus Tiara",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  241.         body="Hagondes Coat",hands="Bokwus Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
  242.         back="Umbra Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  243. end
  244.  
  245. -------------------------------------------------------------------------------------------------------------------
  246. -- Job-specific hooks for standard casting events.
  247. -------------------------------------------------------------------------------------------------------------------
  248.  
  249. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  250. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  251. function job_precast(spell, action, spellMap, eventArgs)
  252.     if spellMap == 'Cure' or spellMap == 'Curaga' then
  253.         gear.default.obi_waist = "Goading Belt"
  254.     elseif spell.skill == 'Elemental Magic' then
  255.         gear.default.obi_waist = "Sekhmet Corset"
  256.         if state.CastingMode.value == 'Proc' then
  257.             classes.CustomClass = 'Proc'
  258.         end
  259.     end
  260. end
  261.  
  262. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  263. function job_midcast(spell, action, spellMap, eventArgs)
  264.    
  265. end
  266.  
  267. function job_post_midcast(spell, action, spellMap, eventArgs)
  268.     -- Use Aquilo's if casting ice nukes.
  269.     if spell.element == "Ice" and spell.skill == "Elemental Magic" then
  270.         equip({main="Aquilo's Staff"})
  271.     end
  272.     --MAB +8 Active while MP is less than 51%.
  273.     if spell.skill == "Elemental Magic" and player.mpp < 51 then
  274.         equip({neck="Uggalepih Pendant"})
  275.     end
  276.     --MAB +10 Active while HP < 76% (yellow or lower) and TP < 100%.
  277.     if spell.skill == "Elemental Magic" and player.hpp < 76 and player.tp < 100 then
  278.         equip({ring1="Sorcerer's Ring"})
  279.     end
  280.     --Adds 5% to spells with same element as the current day.
  281.     if spell.skill == "Elemental Magic" and spell.element == world.day_element then
  282.         equip({legs="Sorcerer's Tonban +1"})
  283.     end
  284.     --Day/Weather/SCH buff check to equip the correct obi.
  285.     if spell and spell.element == world.day_element or spell.element == world.weather_element or spell.element == buffactive[elements.storm_of[spell.element]]then
  286.         equip({waist=gear.ElementalObi})
  287.     end
  288.     -- Ninjutsu
  289.     if spell.skill == "Ninjutsu" then
  290.         equip(sets.midcast.Recast)
  291.         if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' then
  292.             if buffactive['Copy Image'] then
  293.                 windower.ffxi.cancel_buff(66)
  294.             elseif buffactive['Copy Image (2)'] then
  295.                 windower.ffxi.cancel_buff(444)
  296.             elseif buffactive['Copy Image (3)'] then
  297.                 windower.ffxi.cancel_buff(445)
  298.             elseif buffactive['Copy Image (4+)'] then
  299.                 windower.ffxi.cancel_buff(446)
  300.             end
  301.         elseif spell.name == 'Monomi: Ichi' and buffactive.Sneak and spell.target.type == 'SELF' then
  302.             windower.ffxi.cancel_buff(71)
  303.         end
  304.     end
  305. end
  306.  
  307. function job_aftercast(spell, action, spellMap, eventArgs)
  308.     -- Lock feet after using Mana Wall.
  309.     if not spell.interrupted then
  310.         if spell.english == 'Mana Wall' then
  311.             enable('feet')
  312.             equip(sets.buff['Mana Wall'])
  313.             disable('feet')
  314.         elseif spell.skill == 'Elemental Magic' then
  315.             state.MagicBurst:reset()
  316.         end
  317.     end
  318.     -- Sleep Timers
  319.     if spell.name == "Sleep II" or spell.name == "Sleepga II" or spell.name == "Repose" or spell.name == "Dream Flower" then
  320.         windower.send_command('wait 75;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:15 ]')
  321.         windower.send_command('wait 80;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:10 ]')
  322.         windower.send_command('wait 85;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:05 ]')
  323.     elseif spell.name == "Sleep" or spell.name == "Sleepga" then
  324.         windower.send_command('wait 45;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:15 ]')
  325.         windower.send_command('wait 50;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:10 ]')
  326.         windower.send_command('wait 55;input /echo [ WARNING! '..spell.name..' : Will wear off within 0:05 ]')
  327.     end
  328.     -- Convert
  329.     if spell.name == 'Convert' then
  330.         windower.send_command('wait 2;input /ma "Cure IV" me')
  331.     end
  332.     -- Changes shadow type variable to allow cancel Copy Image if last cast was Utsusemi: Ni
  333.     if spell and spell.name == 'Utsusemi: Ni' then
  334.         ShadowType = 'Ni'
  335.     elseif spell and spell.name == 'Utsusemi: Ichi' then
  336.         ShadowType = 'Ichi'
  337.     end
  338. end
  339.  
  340. -------------------------------------------------------------------------------------------------------------------
  341. -- Job-specific hooks for non-casting events.
  342. -------------------------------------------------------------------------------------------------------------------
  343.  
  344. -- Called when a player gains or loses a buff.
  345. -- buff == buff gained or lost
  346. -- gain == true if the buff was gained, false if it was lost.
  347. function job_buff_change(buff, gain)
  348.     -- Unlock feet when Mana Wall buff is lost.
  349.     if buff == "Mana Wall" and not gain then
  350.         enable('feet')
  351.         handle_equipping_gear(player.status)
  352.     end
  353. end
  354.  
  355. -- Handle notifications of general user state change.
  356. function job_state_change(stateField, newValue, oldValue)
  357.     if stateField == 'Offense Mode' then
  358.         if newValue == 'Normal' then
  359.             disable('main','sub','range')
  360.         else
  361.             enable('main','sub','range')
  362.         end
  363.     end
  364. end
  365.  
  366.  
  367. -------------------------------------------------------------------------------------------------------------------
  368. -- User code that supplements standard library decisions.
  369. -------------------------------------------------------------------------------------------------------------------
  370.  
  371. -- Custom spell mapping.
  372. function job_get_spell_map(spell, default_spell_map)
  373.     if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  374.         --[[ No real need to differentiate with current gear.
  375.         if lowTierNukes:contains(spell.english) then
  376.             return 'LowTierNuke'
  377.         else
  378.             return 'HighTierNuke'
  379.         end
  380.         --]]
  381.     end
  382. end
  383.  
  384. -- Modify the default idle set after it was constructed.
  385. function customize_idle_set(idleSet)
  386.     if player.mpp < 51 then
  387.         idleSet = set_combine(idleSet, sets.latent_refresh)
  388.     end
  389.    
  390.     return idleSet
  391. end
  392.  
  393.  
  394. -- Function to display the current relevant user state when doing an update.
  395. function display_current_job_state(eventArgs)
  396.     display_current_caster_state()
  397.     eventArgs.handled = true
  398. end
  399.  
  400. -------------------------------------------------------------------------------------------------------------------
  401. -- Utility functions specific to this job.
  402. -------------------------------------------------------------------------------------------------------------------
  403.  
  404. -- Select default macro book on initial load or subjob change.
  405. function select_default_macro_book()
  406.     set_macro_page(1, 6)
  407. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement