AshitaCast - Automation or not

A place for the community to collaborate on the current and upcoming development of the server.

Moderator: Moderator

mcoops
Posts: 14
Joined: Wed Nov 21, 2018 7:09 pm

Re: AshitaCast - Automation or not

Post by mcoops » Wed Mar 13, 2019 2:22 am

gweivyth wrote:
Tue Mar 12, 2019 12:59 pm
I personally don't like the macro system that much, it's really clunky. I'm a big typer or menu-selector. That being said, I like that I can set up Ashitacast to catch things when I use both of those perfectly legitimate means of using spells and abilities without being forced to make macros for things that might not get used enough to warrant it. Like am I really putting Flat Blade on my macro bar? No, probably not, but I do want it to do max damage when I need to use it to stun certain spells or abilities.
Which also seems perfectly fine since it's an input from you. Macros, typing or using the menu for abilities and having a gear swap occur seems fine since you initiate it.

Corla
Posts: 146
Joined: Sun Dec 23, 2018 9:04 pm

Re: AshitaCast - Automation or not

Post by Corla » Thu Mar 14, 2019 10:38 am

Using Ashitacast for gear swapping should be fine.

Using Ashitacast for automations (like using an antidote if you are poisoned, or refresh if your refresh buff wears off, etc) should be a bannable offense, as that is the same as botting.

Kurma
Posts: 112
Joined: Thu Jan 03, 2019 11:03 pm

Re: AshitaCast - Automation or not

Post by Kurma » Fri Mar 15, 2019 5:28 pm

Corla wrote:
Thu Mar 14, 2019 10:38 am
Using Ashitacast for gear swapping should be fine.

Using Ashitacast for automations (like using an antidote if you are poisoned, or refresh if your refresh buff wears off, etc) should be a bannable offense, as that is the same as botting.
I agree with part of what you say. I think even using it for gear swapping is a slippery slope.

There are different "LUAs" which will check your haste % and put you into different sets.

Some will /check your ACC and swap you in and out of Low ACC/High Attack...mid/mid, High ACC/low attack.

Some will will check if a spell is being cast onto you like say Stonega and put you into your MDT and -Earth Resistance sets.

Another thing is the "If slept>>>equip Frenzy Sallet" (it wakes you)

If you change gear at the exact correct time, you can not get knocked back, this is how anti-knockback stuff plugin works.

I honestly think Spellcast should be linked to manual macros or commands, but it is easy to bypass and and create bots that fix your efficiency to a point where it would not be capable.

SE gave us Equipsets as a way to manually have "Equipsets" inside the game w/o a third party tool that can be abused.
Last edited by Kurma on Fri Mar 15, 2019 5:38 pm, edited 2 times in total.

Kurma
Posts: 112
Joined: Thu Jan 03, 2019 11:03 pm

Re: AshitaCast - Automation or not

Post by Kurma » Fri Mar 15, 2019 5:30 pm

Here is an example of a current RDM LUA that you can copy/paste and just change the gear to make it work for you.

https://www.ffxiah.com/forum/topic/5263 ... se-assist/

-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff.Saboteur = buffactive.saboteur or false
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.HybridMode:options('Normal', 'PhysicalDef', 'MagicalDef')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT', 'MDT')
gear.default.obi_waist = "Sekhmet Corset"
select_default_macro_book()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Atrophy Chapeau +1",
body="Atrophy Tabard +1",hands="Yaoyotl Gloves",
back="Refraction Cape",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Fast cast sets for spells
-- 80% Fast Cast (including trait) for all spells, plus 5% quick cast
-- No other FC sets necessary.

sets.precast.FC = {
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
legs="Aya. Cosciales +1",
feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+21','Magic burst dmg.+8%','INT+10','Mag. Acc.+9',}},
neck="Voltsurge torque",
waist="Witful Belt",
left_ear="Loquac. Earring",
right_ear="Bladeborn Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back="Swith Cape",}
sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})

sets.precast.FC['Enfeebling Magic'] = {
ammo="Hydrocera",
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
legs="Aya. Cosciales +1",
feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+21','Magic burst dmg.+8%','INT+10','Mag. Acc.+9',}},
neck="Lissome Necklace",
waist="Witful Belt",
left_ear="Loquac. Earring",
right_ear="Bladeborn Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back="Swith Cape",}
sets.precast.FC['Healing Magic'] = sets.precast.FC

sets.precast.Cure = {
ammo="Hydrocera",
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
legs="Aya. Cosciales +1",
feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+21','Magic burst dmg.+8%','INT+10','Mag. Acc.+9',}},
neck="Lissome Necklace",
waist="Witful Belt",
left_ear="Loquac. Earring",
right_ear="Bladeborn Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back="Swith Cape",}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS,
{ ammo="Jukukik Feather",
head={ name="Vitivation Chapeau", augments={'Enhances "Dia III" effect','Enhances "Slow II" effect',}},
body="Artsieq Jubbah",
hands={ name="Hagondes Cuffs", augments={'Phys. dmg. taken -1%',}},
legs="Orvail Pants +1",
feet="Weather. Souliers",
neck="Soil Gorget",
waist="Soil Belt",
left_ear="Steelflash Earring",
right_ear="Bladeborn Earring",
left_ring="Rajas Ring",
right_ring="Karka Ring",
back="Atheling Mantle",})
sets.precast.WS['Savage Blade'] = { ammo="Focal Orb",
head="Jhakri Coronal +1",
body="Jhakri Robe +1",
hands="Jhakri Cuffs +1",
legs="Jhakri Slops +1",
feet="Jhakri Pigaches +1",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear="Brutal Earring",
left_ring="Apate Ring",
right_ring="Rufescent Ring",
back={ name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
}

sets.precast.WS['Sanguine Blade'] = {ammo="Witchstone",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Acumen Ring",
back="Toro Cape",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Atrophy Chapeau",ear2="Loquacious Earring",
body="Vitivation Tabard",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}

sets.midcast.Cure = {
ammo="Hydrocera",
head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands={ name="Telchine Gloves", augments={'"Cure" spellcasting time -6%',}},
legs="Atrophy Tights +1",
feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
neck="Phalaina Locket",
waist="Witful Belt",
left_ear="Mendi. Earring",
right_ear="Roundel Earring",
left_ring="Ephedra Ring",
right_ring="Sirona's Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.midcast.Curaga = sets.midcast.Cure

sets.midcast['Enhancing Magic'] = {main="Pukulatmuj",
sub="Arendsi Fleuret",
ammo="Ginsen",
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands="Atrophy Gloves +1",
legs="Atrophy Tights +1",
feet="Leth. Houseaux +1",
neck="Lissome Necklace",
waist="Olympus Sash",
left_ear="Loquac. Earring",
right_ear="Mendi. Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}

sets.midcast['Haste II'] = {
ammo="Ginsen",
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands="Atrophy Gloves +1",
legs="Atrophy Tights +1",
feet="Leth. Houseaux +1",
neck="Lissome Necklace",
waist="Olympus Sash",
left_ear="Loquac. Earring",
right_ear="Mendi. Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.buff.ComposureOther = {
ammo="Ginsen",
head="Leth. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands="Atrophy Gloves +1",
legs="Atrophy Tights +1",
feet="Leth. Houseaux +1",
neck="Lissome Necklace",
waist="Olympus Sash",
left_ear="Loquac. Earring",
right_ear="Mendi. Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.midcast['Refresh II'] = sets.midcast['Haste II']
sets.midcast['Temper'] = sets.midcast['Enhancing Magic']
sets.midcast['Barfire'] = sets.midcast['Enhancing Magic']
sets.midcast['Barblizzard'] = sets.midcast['Enhancing Magic']
sets.midcast['Barstone'] = sets.midcast['Enhancing Magic']
sets.midcast['Barthunder'] = sets.midcast['Enhancing Magic']
sets.midcast['Baraero'] = sets.midcast['Enhancing Magic']
sets.midcast['Barwater'] = sets.midcast['Enhancing Magic']
sets.midcast['Barsleep'] = sets.midcast['Enhancing Magic']
sets.midcast['Barpoison'] = sets.midcast['Enhancing Magic']
sets.midcast['Barparalyze'] = sets.midcast['Enhancing Magic']
sets.midcast['Barblind'] = sets.midcast['Enhancing Magic']
sets.midcast['Barsilence'] = sets.midcast['Enhancing Magic']
sets.midcast['Barpetrify'] = sets.midcast['Enhancing Magic']
sets.midcast['Barvirus'] = sets.midcast['Enhancing Magic']
sets.midcast['Baramnesia'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-STR'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-VIT'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-DEX'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-AGI'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-MND'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-INT'] = sets.midcast['Enhancing Magic']
sets.midcast['Gain-CHR'] = sets.midcast['Enhancing Magic']
sets.midcast['Enfire'] = sets.midcast['Enhancing Magic']
sets.midcast['Enwater'] = sets.midcast['Enhancing Magic']
sets.midcast['Enaero'] = sets.midcast['Enhancing Magic']
sets.midcast['Enstone'] = sets.midcast['Enhancing Magic']
sets.midcast['Enthunder'] = sets.midcast['Enhancing Magic']
sets.midcast['Enblizzard'] = sets.midcast['Enhancing Magic']
sets.midcast['Enfire II'] = sets.midcast['Enhancing Magic']
sets.midcast['Enwater II'] = sets.midcast['Enhancing Magic']
sets.midcast['Enaero II'] = sets.midcast['Enhancing Magic']
sets.midcast['Enstone II'] = sets.midcast['Enhancing Magic']
sets.midcast['Enthunder II'] = sets.midcast['Enhancing Magic']
sets.midcast['Enblizzard II'] = sets.midcast['Enhancing Magic']
sets.midcast.Trust = sets.midcast['Haste II']
sets.midcast['Sheep Song'] = sets.midcast['Enfeebling Magic']
sets.midcast['Erase'] = sets.midcast['Haste II']
sets.midcast.CureWithLightWeather = {main="Chatoyant Staff",
sub="Niobid Strap",
ammo="Ginsen",
head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands={ name="Telchine Gloves", augments={'"Cure" spellcasting time -6%',}},
legs="Atrophy Tights +1",
feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
neck="Phalaina Locket",
waist="Hachirin-no-Obi",
left_ear="Mendi. Earring",
right_ear="Roundel Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back="Twilight Cape",
}

sets.midcast.Stoneskin = sets.midcast['Enhancing Magic']
sets.midcast['Enfeebling Magic'] = { ammo="Hydrocera",
head={ name="Merlinic Hood", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','INT+6','Mag. Acc.+3','"Mag.Atk.Bns."+15',}},
body="Jhakri Robe +1",
hands="Jhakri Cuffs +1",
legs="Aya. Cosciales +1",
feet="Aya. Gambieras +1",
neck="Sanctity Necklace",
waist="Eschan Stone",
left_ear="Loquac. Earring",
right_ear="Psystorm Earring",
left_ring="Solemn Ring",
right_ring="Fenrir Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.midcast['Dia III'] = set_combine(sets.midcast['Enfeebling Magic'], {head="Vitiation Chapeau +1"})
sets.midcast['Slow II'] = set_combine(sets.midcast['Enfeebling Magic'], {head="Vitiation Chapeau +1"})
sets.midcast['Elemental Magic'] = {
ammo="Witchstone",
head={ name="Merlinic Hood", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','INT+6','Mag. Acc.+3','"Mag.Atk.Bns."+15',}},
body="Jhakri Robe +1",
hands={ name="Amalric Gages", augments={'INT+10','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+28','Magic burst dmg.+1%','INT+7','Mag. Acc.+10',}},
feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+21','Magic burst dmg.+8%','INT+10','Mag. Acc.+9',}},
neck="Mizu. Kubikazari",
waist="Refoccilation Stone",
left_ear="Hecate's Earring",
right_ear="Friomisi Earring",
left_ring="Acumen Ring",
right_ring="Jhakri Ring",
back="Toro Cape"}
sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {head=empty,body="Twilight Cloak"})
sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Kalboron Stone",
head="Atrophy Chapeau",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Goading Belt",legs="Bokwus Slops",feet="Bokwus Boots"}
--sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {})
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {ring1="Excelsis Ring", waist="Fucho-no-Obi"})
sets.midcast.Aspir = sets.midcast.Drain
-- Sets for special buff conditions on spells.
sets.midcast.EnhancingDurationSelf = {main="Pukulatmuj",
sub="Arendsi Fleuret",
ammo="Ginsen",
head="Atro. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands="Atrophy Gloves +1",
legs="Atrophy Tights +1",
feet="Leth. Houseaux +1",
neck="Lissome Necklace",
waist="Olympus Sash",
left_ear="Loquac. Earring",
right_ear="Mendi. Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.buff.ComposureOther = {ammo="Ginsen",
head="Leth. Chapeau +1",
body={ name="Viti. Tabard +1", augments={'Enhances "Chainspell" effect',}},
hands="Atrophy Gloves +1",
legs="Leth. Tights +1",
feet="Leth. Houseaux +1",
neck="Lissome Necklace",
waist="Olympus Sash",
left_ear="Loquac. Earring",
right_ear="Mendi. Earring",
left_ring="Lebeche Ring",
right_ring="Jhakri Ring",
back={ name="Ghostfyre Cape", augments={'Enfb.mag. skill +7','Enha.mag. skill +7','Mag. Acc.+10','Enh. Mag. eff. dur. +14',}},
}
sets.buff.Saboteur = {hands="Estoqueur's Gantherots +2"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="iridal Staff",
head="Vitivation Chapeau",neck="Wiglen Gorget",
body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets
sets.idle.Field = {ammo="Ginsen",
head="Vitiation Chapeau +1",
body="Jhakri Robe +1",
hands="Serpentes Cuffs",
legs="Atrophy Tights +1",
feet="Serpentes Sabots",
neck="Lissome Necklace",
waist="Witful Belt",
left_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
right_ear="Mendi. Earring",
left_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -5%',}},
right_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -6%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+49%','AGI+2','Attack+1','DEF+4',}},
}
sets.idle.Town = {ammo="Ginsen",
head="Vitiation Chapeau +1",
body="Jhakri Robe +1",
hands="Serpentes Cuffs",
legs="Atrophy Tights +1",
feet="Serpentes Sabots",
neck="Lissome Necklace",
waist="Witful Belt",
left_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
right_ear="Mendi. Earring",
left_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -5%',}},
right_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -6%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+49%','AGI+2','Attack+1','DEF+4',}},
}
sets.idle.Weak = {}
sets.idle.PDT = {}
sets.idle.MDT = {}
-- Defense sets
sets.defense.PDT = {
main="Mafic Cudgel",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','Lightning resistance+8','"Cure" spellcasting time -7%',}},
ammo="Ginsen",
head="Aya. Zucchetto +1",
body="Ayanmo Corazza +1",
hands="Aya. Manopolas +1",
legs="Aya. Cosciales +1",
feet="Aya. Gambieras +1",
neck="Twilight Torque",
waist="Sailfi Belt +1",
left_ear="Steelflash Earring",
right_ear="Bladeborn Earring",
left_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -5%',}},
right_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -6%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+49%','AGI+2','Attack+1','DEF+4',}},
}
sets.Kiting = {legs="Crimson Cuisses"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {
main={ name="Vampirism", augments={'STR+6','INT+5','"Occult Acumen"+6','DMG:+10',}},
sub="Fettering Blade",
ammo="Ginsen",
head="Aya. Zucchetto +1",
body="Jhakri Robe +1",
hands="Aya. Manopolas +1",
legs="Jhakri Slops +1",
feet="Jhakri Pigaches +1",
neck="Lissome Necklace",
waist="Sailfi Belt +1",
left_ear="Steelflash Earring",
right_ear="Bladeborn Earring",
left_ring="Petrov Ring",
right_ring="Apate Ring",
back={ name="Mecisto. Mantle", augments={'Cap. Point+49%','AGI+2','Attack+1','DEF+4',}},
}
sets.engaged.Defense = {main="Mafic Cudgel",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','Lightning resistance+8','"Cure" spellcasting time -7%',}},
ammo="Ginsen",
head="Aya. Zucchetto +1",
body="Ayanmo Corazza +1",
hands="Aya. Manopolas +1",
legs="Aya. Cosciales +1",
feet="Aya. Gambieras +1",
neck="Twilight Torque",
waist="Sailfi Belt +1",
left_ear="Steelflash Earring",
right_ear="Bladeborn Earring",
left_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -5%',}},
right_ring={ name="Dark Ring", augments={'Magic dmg. taken -3%','Phys. dmg. taken -6%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+49%','AGI+2','Attack+1','DEF+4',}},
}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
equip(sets.buff.Saboteur)
if spell.skill == 'Enhancing Magic' then
equip(sets.midcast.EnhancingDuration)
elseif buffactive.Composure and spell.target.type == 'PLAYER, NPC' then
equip(sets.buff.ComposureOther)
end
elseif spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
end
if spell.skill == 'Elemental Magic' then
if spell.element == world.day_element or spell.element == world.weather_element then
equip(sets.midcast['Elemental Magic'], {waist="Hachirin-No-Obi"})
end
elseif spell.skill == 'Healing Magic' then
if spell.name:startswith('Cure') and world.weather_element == 'Light' then
equip(sets.midcast.Cure, {waist="Hachirin-No-Obi", back="Twilight Cape", main="Chatoyant Staff", sub="Niobid strap"})
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Offense Mode' then
if newValue == 'None' then
enable('main','sub','range')
else
disable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'WHM' then
set_macro_page(2, 3)
elseif player.sub_job == 'NIN' then
set_macro_page(9, 2)
elseif player.sub_job == 'THF' then
set_macro_page(4, 3)
elseif player.sub_job == 'SCH' then
set_macro_page (8, 3)
else
set_macro_page(1, 3)
end
end

Kurma
Posts: 112
Joined: Thu Jan 03, 2019 11:03 pm

Re: AshitaCast - Automation or not

Post by Kurma » Fri Mar 15, 2019 5:32 pm

This is a 491 line command set.

You can 100% change stuff for casting spells.

Example:

Start: with Fast Cast and haste gear

Midcast: MND, INT Magic Accuracy, Skill bonuses

End: Conserve MP and recast/fast cast stuff.

Before people say Spellcast was "Era", because it was...

So was BroSale, Clipper (flee and POS hacking), FFXIClaim, IGE, IGXE and Napolean Dynamite memes. Do we want this stuff in our game?

Kurma
Posts: 112
Joined: Thu Jan 03, 2019 11:03 pm

Re: AshitaCast - Automation or not

Post by Kurma » Fri Mar 15, 2019 5:41 pm

Here is a page talking about these things:

https://www.bluegartr.com/threads/12958 ... ternative)

Let me highlight some things:

What are addons?
Addons are scripts written in Lua that have access to the Ashita plugin ADK (Ashita Developer Kit). Addons can allow users and developers to easily and quickly create new features for their game.

Given that addons are written in a scripted language, they can be easily and rapidly created, modified, and extended to create all kinds of unique features, adjustments to the game, as well as create new endless possibilities for players to automate various tasks.

What are plugins?
Plugins allow developers to create applications that can extend, better, or automate game play in endless ways. Ashita exposes a feature rich plugin interface that has a handful of useful things already done for developers to allow them to quickly create new things. This helps make the process of getting setup and running a new plugin extremely quick and painless.

Plugins have countless possibilities and endless limits. Developers can reach deep into their creativity and bring out some massive potential to create new, amazing, and helpful tools that will ultimately change their experience while playing the game.

Best of all, Ashita's development kit (ADK) is fully open source and anyone can develop for it!

The ADK is designed to work specifically with C/C++ but any language that can properly import the interfaces should be able to create plugins, such as Delphi, ASM, etc.

What are scripts?
Scripts allow non-programmers the ability to easily use pre-defined commands to perform various actions. Scripts can be bound to various keys to extend it's functionality. Scripts can be used to perform simple tasks such as changing various equipment slots at once then performing actions such as a weapon skills or magic abilities.

Kurma
Posts: 112
Joined: Thu Jan 03, 2019 11:03 pm

Re: AshitaCast - Automation or not

Post by Kurma » Fri Mar 15, 2019 5:44 pm

Here is a page where it tells you how to use Ashitacast so the program checks moonphase, weather, day for Obis and Torques.

https://supernovaffxi.fandom.com/wiki/A ... le_XML%27s

Basically this stuff automates everything.

Idle sets (puts you in regen, refresh, -PDT, -MDT, +Movement Speed)

Engage Sets (when you engage it automatically changes your gear)

This program makes it super super easy to to do things that are conflicting with Eden's mission statement.

Not saying everyone using it is cheating. But it is super easy to cheat with this.

User avatar
demi
Posts: 23
Joined: Mon Dec 10, 2018 6:49 pm

Re: AshitaCast - Automation or not

Post by demi » Fri Mar 15, 2019 8:07 pm

Thank you for the informative posts! I've never been too savvy with when to gear swap for things like precast/mid-cast/aftercast, but I have been wanting to learn these systems a bit better. I understand even SE's /equipset, while a great replacement for line-by-line macroing in gear, is still cumbersome in certain practices. That being said, Ashitacast has the potential to cross the line from consolidation to automation. The automation part is the most troublesome when it is acting in response to an action or event that is done by something that is not the player. Kurma's examples above about the Frenzy Helm to bust out of sleep or swapping in MDF gear in response to an incoming damage spell are right on point.

The /equipset is most clunky when it comes to interrupting the macros that use them. My alt is 31 RDM, and I only use basic /equipset to swap between MND, INT, and TP sets. If I have it set so that each Nuke equips the Int set, casts the nuke, waits some amount of time, and then returns to, say, TP, I can't use any other macros (like a macro that moves me to different bars to set up my next action) without interrupting prior to the "Return to TP". I'm sure it's also less efficient since /wait (or inline <wait>) will end up waiting of unnecessary fractions of a second before getting to the next line.

pseudomacro
/equipset INT
/ma "Nuke II"
/wait 4 -- any other macro used during the cast time and before the next line interrupts the next line from occurring
/equipset TP

Alternatively, I may have manual macros to swap between TP, INT, and MND sets manually based off of my next anticipated action/need, but this is enormously tedious with macros, limited space, using a controller, etc... Ashitacast can 100% alleviate this tedium. But yeah, it *can* alleviate it a little too well.

Isn't active player knowledge and awareness a component of what makes a player stand out in those moments? Having the presence of mind to know the moonphase, switch to Nighttime gear, equip MDF in response to the incoming spell on reaction... acting on that knowledge is rewarded with performance, but even with /equipset it is difficult to pull off. Thinking about a game like DotA where a player has enough mana for one of their damage spells: one does medium Pure damage - unmitigated by resistances - and another does heavy Magic damage which *is* reduced by resistance amongst other things. That clutch assessment of knowing what items the opponent has, what their current HP is, what the damage values are of their own two spells, and then making the one decision that makes the killing blow: that kind of play is extolled! It would be much less interesting if that kind of evaluation was determined for the player by a script in advance.

On the other hand, consider TParty: at some point, players justified its existence against the native behavior of having it obscured. Skillchains previously asked for both timing and communication from the players, but the communication aspect of that information was taken out. We determined it is better that we should just know.

Furthermore, an outstanding quality of FFXI is horizontal gear progression: a wide variety of lateral swaps for circumstances. Shouldn't we be able to apply it if we have it? Shouldn't it be leveraged if it's available? Is the limitation incidentally caused by interface or is it by design?

Thanks for reading, I have a lot of thoughts on this and can see it going either way! I'm no expert on any of this and have never used Gearswap or Ashitacast, so please correct me if I have mucked up any of these concepts or applications. Have a great day!

kittycat
Posts: 11
Joined: Thu Jan 17, 2019 2:46 pm

Re: AshitaCast - Automation or not

Post by kittycat » Fri Mar 15, 2019 11:13 pm

Having used GS and Ashitacast for gear swaps previously, I'd hate to see them go leaving us with just equipsets (which were introduced in like 2014 from what I remember - so even that would be OOE). I understand the danger about some of the extra automation that some can provide though. Maybe we could create some approved xmls for each job for people to use - although I'd have no idea how you could enforce whether someone adds more automated actions to it.

User avatar
Zuri
Posts: 46
Joined: Mon Jan 28, 2019 6:01 pm

Re: AshitaCast - Automation or not

Post by Zuri » Sat Mar 16, 2019 3:15 am

gweivyth wrote:
Tue Mar 12, 2019 12:59 pm
I personally don't like the macro system that much, it's really clunky. I'm a big typer or menu-selector. That being said, I like that I can set up Ashitacast to catch things when I use both of those perfectly legitimate means of using spells and abilities without being forced to make macros for things that might not get used enough to warrant it. Like am I really putting Flat Blade on my macro bar? No, probably not, but I do want it to do max damage when I need to use it to stun certain spells or abilities.
I'm with Gwei here. I earned the gear, I should be able to use it where it benefits me. Whether I equip it via a clunky ingame script (i.e. macro -- using equipsets which are OOE by the way), or a far more reliable script (my own AC XML files) should be irrelevant.

The day spellcast becomes bannable is the day I give my accounts away and never look back.

Post Reply