|
The Last Dance II: The Show Must Go On
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10065
By Asura.Sechs 2019-01-22 01:17:42
I don't see why the set bonus should be updated Kaat.
Not that I would complain eh, but to date not a single set bonus or augment bonus (relics) has ever been updated, I don't see any reason why they should do it this time.
Also your STP values are a bit too optimistic, doubt they're gonna give such big (+5 each upgrade) increases to STP.
Again: not that I would complain but I don't see it happening.
Same for DualWield, I think it's gonna be +12 for the +2 and +13 for the +3.
The rest of your guesstimates are very optimistic but I guess "possible".
You forgot a new stat on most slots other than the body though.
If they're gonna follow the Artifact and Relic model, each piece will see not just increases to the existing stats, but also one new stat for each piece.
Could be WSD for the Body like you said, but there's gonna be 4 new stats for the other slots.
Leviathan.Katriina
Server: Leviathan
Game: FFXI
Posts: 860
By Leviathan.Katriina 2019-01-22 03:11:26
Also your STP values are a bit too optimistic, doubt they're gonna give such big (+5 each upgrade) increases to STP.
Again: not that I would complain but I don't see it happening.
Same for DualWield, I think it's gonna be +12 for the +2 and +13 for the +3. Yeah possibly it will be +1 STP each update, and not +5.
I will modify it now.
I also added the extra stat for each piece.
By SimonSes 2019-01-22 03:14:00
In the end the damage is pretty similar if you're in a WS spam situation, and for skillchaining it doesn't matter because I usually go Evis > PK > Rudra for 3-step, on Apex bats tho, you normally kill in 2 shots.
But I normally prefer to keep my accuracy up on both weapons so that way I can focus my buffs on attack, so even if Twash/Centovente combo wins for Raw damage, I find that combo to be very situational.
As for Rudra damage, since with Terp I normally just use it when I can stack it with Climactic, I don't see that TP bonus such a changer, as normally I would be WSing at higher TP anyway, and with Terpsichore's AM3, doing the 2nd Climactic Rudra at higher TP is also possible (normally can make a Evis > Rudra > Rudra with both rudra's at ~2k TP), getting a 3rd in is also possible but reduces the amount of TP used.
On this second screenshot my 2nd rudra got screwed because my gearswap failed to swap to RF set, so I only got 950 TP but still was decent.
Well it was said from the start that Centovente won't work everywhere, but in 95% of endgame content you don't need to focus on accuracy for Centovente. The main accuracy "swap" would be to use sushi instead of attack food.
When I was talking about Centeovente having the highest impact, I was talking about 1hr zerg situation, where you would do 6+ Climatic Rudras in a row, without doing any TP hits at all, so all your TP would come from RF, so you would be limited in having high TP and Centovente lower accuracy wont matter at all too.
What I find odd tho is that I couldn't get even close to 99999 Rudra on bats, even with 3000TP. I'm not sure if your 99999 Rudras are just because it's something like 80k main hit and 20k from sub hand and multihit proc or my climatic set is broken... hmmm...
EDIT: I tried with disable gearswap. Highest I can pull off is ~91000. My neck is rank 14, Twashtar is rank 10, so im still missing 21DEX and 5% Rudra damage and 5%PDL. All that should boost me to 99999 probably.
I really think that 99999 you do is because of AM3 proc and offhand hits. How often you do 99999 Rudra? Can you try 3000TP Climactic rudra without AM3? Do you have r25 neck?
Carbuncle.Kukiki
Server: Carbuncle
Game: FFXI
Posts: 12
By Carbuncle.Kukiki 2019-01-22 07:21:48
That 99999 is with fully augmented Terpsichore (base dmg of 144) and fully augmented neck. It also gets the 20% weapon skill damage boost from Building Flourish from Job Points. I'll do more testing but it's pretty consistent with capped attack.
Also I doubt offhand will add more than 2k damage, because when main hand hit misses I hardly see more damage than that. Same with AM3, pretty sure fTP and Climactic bonus only apply to first hit. Same with WSD
By Andromida 2019-01-22 07:38:04
Quetzalcoatl.Xilkk said: »I really like seeing Ruau's job guide video's tips and tricks section for the jobs I"m not so familiar with.
I'd love to see a career Dnc show what the job can really do.
I have actually talked to Ruau about this a little while ago, and I would like to do something like that. I am the dancer who was in his video for the January update. I just don't feel like I am experienced enough to do this yet. Maybe I should start putting something together.
By SimonSes 2019-01-22 07:44:10
That 99999 is with fully augmented Terpsichore (base dmg of 144) and fully augmented neck. It also gets the 20% weapon skill damage boost from Building Flourish from Job Points. I'll do more testing but it's pretty consistent with capped attack.
Also I doubt offhand will add more than 2k damage, because when main hand hit misses I hardly see more damage than that. Same with AM3, pretty sure fTP and Climactic bonus only apply to first hit. Same with WSD
Ok mystery solved, my numbers are without building flourish :)
By SimonSes 2019-01-22 07:48:01
Phoenix.Dabackpack said: »This has been a long-time coming, but I think Dancer is the most balanced, engaging, and fun job to play in this game.
It's one of the most satisfying in that it epitomizes the notion of "horizontal progression" in FFXI. At any time, you can be fulfilling one of many roles: healer, tank, DD, support, debuffer, and often multiple simultaneously. And, of course, these roles all differ depending on whether you are soloing, lowmanning, or in a larger party, so the number of roles and options you have available at any given time is massive... and you can master each of these skills and swap between them at will. Jobs like BLU and PUP also have these options but are more-or-less locked into one set of roles per fight, since they cannot change spell-sets and automaton attachments at will. The only other job in this game that has this similar amount of horizontal progression is RDM... moreso Lv75 RDM.
For me personally, this game has always been about "breaking limits." It's even built into the story. Dancer is the job that, to me, leaves the most experimentation with this idea. The aforementioned horizontal progression means you have so many dimensions by which you can expand your capacity for difficult tasks. And one of my favorite things is breaking those limits. Can I keep up with SAMs and DRKs in my Dynamis groups? Can I solo all of the T2 Ru'Aun NMs? Can I duo Old Shuck? Can I main tank AND main heal for the avatar HTMBs? How much utility can I pack into this one party slot?
I know most of the endgame doesn't benefit from this kind of utility since the hardest content relies on pretty streamlined strategies, but it's still deeply entertaining to find ways to test your limits in this game... and Dancer is perhaps the single job best-equipped to do that.
I would love to see career dnc upload their gameplay video about the "break the limit" aspect of the job. I believe every job can do crazy things when played to max potential, but we just dont see them often enough!
I'm planning to start adding video on YT and DNC will be there too, but I don't think it will be in form of guide, more like Rua's videos with exhibition in title.
Asura.Arico
Server: Asura
Game: FFXI
Posts: 535
By Asura.Arico 2019-01-24 18:30:15
How do I want to be using my finishing moves with terp for WS spam fights? My guess is:
Reverse when AM is down, Building+Striking PK whenever I can? Climactic seems unnecessary.
By Zeota 2019-01-24 18:40:57
That's more or less what I do. I tend to keep CF handy for if I overflow past like 1500, then I'll crack off a rudra's.
Server: Sylph
Game: FFXI
Posts: 116
By Sylph.Ticktick 2019-01-26 04:48:06
does the crit chance on striking from empy body work on WS that can't crit?
By SimonSes 2019-01-26 05:53:32
How do I want to be using my finishing moves with terp for WS spam fights? My guess is:
Reverse when AM is down, Building+Striking PK whenever I can? Climactic seems unnecessary.
Striking is barely any improvement for PK with mythic imo. I doubt it's worth 1sec ability delay. You have very high chance to double-triple attack on main hand with AM3 up, so forcing double attack seems almost useless.
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10065
By Asura.Sechs 2019-01-26 06:54:55
does the crit chance on striking from empy body work on WS that can't crit? It doesn't.
Server: Asura
Game: FFXI
Posts: 731
By Asura.Lunafreya 2019-01-26 10:21:08
So is the striking/ternary PK set on the BG Wiki guide invalid? Would you just use Horos +3 body instead of Maculele?
By ScaevolaBahamut 2019-01-26 11:49:19
How do I want to be using my finishing moves with terp for WS spam fights? My guess is:
Reverse when AM is down, Building+Striking PK whenever I can? Climactic seems unnecessary.
Striking is basically never worth burning your Group 3 cooldown in a world where Climactic exists.
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10065
By Asura.Sechs 2019-01-26 14:21:24
Would you just use Horos +3 body instead of Maculele? I'm not getting this part of the question.
Why do you have to pick one OR the other?
Maculele+1 still decent in situations where you're extremely buff starved.
Considering a +3 version is incoming, that will be even more true.
You just don't use Maculele in the situations where you want to use Horos, and vice-versa.
Probably you meant something else I dunno, but they're just options for very different and non-concurrent situations.
Server: Asura
Game: FFXI
Posts: 731
By Asura.Lunafreya 2019-01-26 16:30:29
Would you just use Horos +3 body instead of Maculele? I'm not getting this part of the question.
Why do you have to pick one OR the other?
Maculele+1 still decent in situations where you're extremely buff starved.
Considering a +3 version is incoming, that will be even more true.
You just don't use Maculele in the situations where you want to use Horos, and vice-versa.
Probably you meant something else I dunno, but they're just options for very different and non-concurrent situations.
A little confused as well xD
I meant specifically for Striking flourish + PK. Are you saying to use maculele only for low buff situations for that specifically, otherwise Horos?
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10065
By Asura.Sechs 2019-01-26 16:52:05
Oooh ok, sorry bout that.
Well as someone else said atm Striking Flourish is not worth using 99,9% of the times, period.
So it's not much a matter of Maculele or not, but a matter of Striking or not :-P
That put aside, the augment on Maculele+1 only works if you wear the piece with Striking Flourish active. It's not one of those pieces that you only need to wear when activating the JA.
As such, I'd say it's not worth it, not until Maculele+3 comes out at least.
But really, as things are now you shouldn't really be overthinking about Striking Flourish, most of the time the right answer to all your doubts concerning it will be: do not use it.
Server: Sylph
Game: FFXI
Posts: 116
By Sylph.Ticktick 2019-01-26 17:21:23
has anyone fixed refine_waltz so it will upgrade or downgrade depending on the target's missing hp and what is off cooldown? also divine waltz II -> I when on CD.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-26 20:33:21
has anyone fixed refine_waltz so it will upgrade or downgrade depending on the target's missing hp and what is off cooldown? also divine waltz II -> I when on CD.
Nope. I asked here, I asked in the GS support thread, I've tried to do it on my own every way I can think of, and can't get it to work.
By SimonSes 2019-01-26 21:05:43
Hmmmm I edited it for myself and I think it works.
Code if player.main_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 200 then
if spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
end
elseif missingHP < 600 then
if spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1100 then
if spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1500 then
if spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
else
if spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
end
I commented out "Downgrade the spell to what we can afford" completely, since I moved TP to code above.
You can actually test it and let me know if that 100% works, I havent had enough time to do it myself more than at one dynamis run.
Leviathan.Katriina
Server: Leviathan
Game: FFXI
Posts: 860
By Leviathan.Katriina 2019-01-26 23:46:52
So is the striking/ternary PK set on the BG Wiki guide invalid? Would you just use Horos +3 body instead of Maculele?
If you're a Terp user, then don't use it, also; Climactic is better off if timer is up.
Unless you're strictly spamming PK.
Will add tis note on Guide, thanks for raising this.
[+]
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10065
By Asura.Sechs 2019-01-27 07:04:38
The part on BG wiki isn't necessary wrong, but it's worded in a slightly convoluted way, I can see it raising up a bit of confusion like it did for Lunafreya.
Maybe it should be re-worded for the sake of clarity.
Oh and also adding a line that says how the power up granted by Maculele is only active if the piece is actively worn when the buff is up, and not simply when you activate the JA.
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-27 12:10:16
Leviathan.Katriina said: »
Will add tis note on Guide, thanks for raising this.
If you're updating the wiki, Unmoving Collar +1 (10) is a higher enmity neck piece than Warders Charm +1 (1~8) for the Emnity Set.
You can actually test it and let me know if that 100% works, I havent had enough time to do it myself more than at one dynamis run.
I'll toss it in and report back, thanks.
Any possibility you can do the Divine Waltz as well?
If spell Divine Waltz II and recast > 1 or player.tp < 800 then
new waltz = 'divine waltz'
waltz id = ??
Something simple like that.
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-27 13:54:58
Hmmmm I edited it for myself and I think it works.
Code if player.main_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 200 then
if spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
end
elseif missingHP < 600 then
if spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1100 then
if spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1500 then
if spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
else
if spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
end
I commented out "Downgrade the spell to what we can afford" completely, since I moved TP to code above.
You can actually test it and let me know if that 100% works, I havent had enough time to do it myself more than at one dynamis run.
Currently doesn't work.
Part of it is because it's not a complete code start to finish, it looks like it's missing an end, or the opening line originally included in motes code "if missingHP ~= nil then"
I altered a few things to get it to load properly, and then I get the following:
mote-utility line 206: attempt to index global spell_recasts (a nil value).
Line 206 reads as follows:
if spell_recasts[192] < 1 and player.tp > 500 then
It will still do the original waltz, but doesn't downgrade.
So if I'm hitting my waltz macro (waltz 3 is the only one I have) it will just continually try to waltz 3, won't downgrade, or account for the timer.
By SimonSes 2019-01-27 15:21:13
XD
I pasted only the part of the code that I changed from original function. I tho it's obvious since the question had name of the function in it XD
The whole function after changes look like this:
Code function refine_waltz(spell, action, spellMap, eventArgs)
if spell.type ~= 'Waltz' then
return
end
-- Don't modify anything for Healing Waltz or Divine Waltzes
if spell.english == "Healing Waltz" or spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local spell_recasts = windower.ffxi.get_spell_recasts()
--if spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
-- if spell_recasts[spell.recast_id] < 1 and player.tp > 400 then
-- return
-- else if spell_recasts[spell.recast_id] < 1 and player.tp > 400 then
--end
local missingHP
-- If curing ourself, get our exact missing HP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
-- If curing someone in our alliance, we can estimate their missing HP
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
-- If we have an estimated missing HP value, we can adjust the preferred tier used.
if missingHP ~= nil then
if player.main_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 200 then
if spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
end
elseif missingHP < 600 then
if spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1100 then
if spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1500 then
if spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
else
if spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
end
elseif player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
-- Not dnc main or sub; bail out
return
end
end
local tpCost = waltz_tp_cost[newWaltz]
local downgrade
-- Downgrade the spell to what we can afford
--if player.tp < tpCost and not buffactive.trance then
--[[ Costs:
Curing Waltz: 200 TP
Curing Waltz II: 350 TP
Curing Waltz III: 500 TP
Curing Waltz IV: 650 TP
Curing Waltz V: 800 TP
Divine Waltz: 400 TP
Divine Waltz II: 800 TP
--]]
-- if player.tp < 200 then
-- add_to_chat(122, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
-- eventArgs.cancel = true
-- return
-- elseif player.tp < 350 then
-- newWaltz = 'Curing Waltz'
-- elseif player.tp < 500 then
-- newWaltz = 'Curing Waltz II'
-- elseif player.tp < 650 then
-- newWaltz = 'Curing Waltz III'
-- elseif player.tp < 800 then
-- newWaltz = 'Curing Waltz IV'
-- end
--
-- downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
--end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
--if downgrade then
-- add_to_chat(122, downgrade)
--end
eventArgs.cancel = true
return
end
if missingHP and missingHP > 0 then
add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
I was trying to make Divine waltz change, but i dont know ID for Divine Waltz II and I and im too lazy to search for it XD
I also havent changed waltzes for sub job.
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-27 16:41:06
I tho it's obvious since the question had name of the function in it XD
I was trying to make Divine waltz change, but i dont know ID for Divine Waltz II and I and im too lazy to search for it XD
Well I'm an idiot, and I'm SORRY! ;)
Testing it, and so far seems to work, I'll put it through the paces this week and report back.
Can anyone find the Divine Waltz IDs or know where I can begin looking?
By Andromida 2019-01-29 10:38:42
Was wondering when it comes to the refine_waltz function would you prefer under or over curing your target?
For example if Curing Waltz 1 does 200 HP and Curing Waltz 2 does 600 HP and your target is missing 400 HP which Waltz would you use?
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-31 03:01:31
The whole function after changes look like this:
Code function refine_waltz(spell, action, spellMap, eventArgs)
if spell.type ~= 'Waltz' then
return
end
-- Don't modify anything for Healing Waltz or Divine Waltzes
if spell.english == "Healing Waltz" or spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local spell_recasts = windower.ffxi.get_spell_recasts()
--if spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
-- if spell_recasts[spell.recast_id] < 1 and player.tp > 400 then
-- return
-- else if spell_recasts[spell.recast_id] < 1 and player.tp > 400 then
--end
local missingHP
-- If curing ourself, get our exact missing HP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
-- If curing someone in our alliance, we can estimate their missing HP
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
-- If we have an estimated missing HP value, we can adjust the preferred tier used.
if missingHP ~= nil then
if player.main_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 200 then
if spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
end
elseif missingHP < 600 then
if spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1100 then
if spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
elseif missingHP < 1500 then
if spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
else
if spell_recasts[194] < 1 and player.tp > 800 then
newWaltz = 'Curing Waltz V'
waltzID = 194
elseif spell_recasts[193] < 1 and player.tp > 650 then
newWaltz = 'Curing Waltz IV'
waltzID = 193
elseif spell_recasts[192] < 1 and player.tp > 500 then
newWaltz = 'Curing Waltz III'
waltzID = 192
elseif spell_recasts[191] < 1 and player.tp > 350 then
newWaltz = 'Curing Waltz II'
waltzID = 191
elseif spell_recasts[190] < 1 and player.tp > 200 then
newWaltz = 'Curing Waltz'
waltzID = 190
end
end
elseif player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
-- Not worth curing yourself for so little.
-- Don't block when curing others to allow for waking them up.
add_to_chat(122,'Full HP!')
eventArgs.cancel = true
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
-- Not dnc main or sub; bail out
return
end
end
local tpCost = waltz_tp_cost[newWaltz]
local downgrade
-- Downgrade the spell to what we can afford
--if player.tp < tpCost and not buffactive.trance then
--[[ Costs:
Curing Waltz: 200 TP
Curing Waltz II: 350 TP
Curing Waltz III: 500 TP
Curing Waltz IV: 650 TP
Curing Waltz V: 800 TP
Divine Waltz: 400 TP
Divine Waltz II: 800 TP
--]]
-- if player.tp < 200 then
-- add_to_chat(122, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
-- eventArgs.cancel = true
-- return
-- elseif player.tp < 350 then
-- newWaltz = 'Curing Waltz'
-- elseif player.tp < 500 then
-- newWaltz = 'Curing Waltz II'
-- elseif player.tp < 650 then
-- newWaltz = 'Curing Waltz III'
-- elseif player.tp < 800 then
-- newWaltz = 'Curing Waltz IV'
-- end
--
-- downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
--end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
--if downgrade then
-- add_to_chat(122, downgrade)
--end
eventArgs.cancel = true
return
end
if missingHP and missingHP > 0 then
add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
I was trying to make Divine waltz change, but i dont know ID for Divine Waltz II and I and im too lazy to search for it XD
Based on what I've been told:
Divine Waltz 1 = 195
Divine Waltz 2 = 262
I tried to use the following: Code if spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then
if spell_recasts[262] < 1 and player.tp > 800 then
newWaltz = 'Divine Waltz II'
waltzID = 262
elseif spell_recasts[262] > 1 and player.tp > 400 then
newWaltz = 'Divine Waltz'
waltzID = 195
return
end
end
But still can't get it to work. I assume it's due to a conflict on the lines above, so I tried altering Divine out of the exempt, then into the waltz.type etc, but not having any luck.
By Andromida 2019-02-02 05:36:35
I have written my own refine waltz function, I don't use motes so it may not play right as a drop in replacement
Code
function get_target_missing_hp(target)
if target.type == "SELF" then
return player.max_hp - player.hp
end
if not target.isallymember then
return
end
local target = find_player_in_alliance(target.name)
return math.floor((target.hp / (target.hpp / 100)) - target.hp)
end
function get_dnc_level()
if player.sub_job == "DNC" then
return player.sub_job_level
end
return player.main_job_level
end
function refine_waltz(spell)
if player.tp < 200 then
add_to_chat(122, "No TP!")
cancel_spell()
return
end
local dncLevel = get_dnc_level()
local spellRecasts = windower.ffxi.get_spell_recasts()
local missingHP = get_target_missing_hp(spell.target)
if not missingHP then
return true
end
if spell.target.type == "SELF" and missingHP < 40 then
add_to_chat(122, "Full HP!")
cancel_spell()
return
end
local waltzes =
table.filter(
{
{id = 190, name = "Curing Waltz", level = 15, tp = 200, hp = 300},
{id = 191, name = "Curing Waltz II", level = 30, tp = 350, hp = 600},
{id = 192, name = "Curing Waltz III", level = 45, tp = 500, hp = 1000},
{id = 193, name = "Curing Waltz IV", level = 70, tp = 650, hp = 1500},
{id = 194, name = "Curing Waltz V", level = 87, tp = 800, hp = 2000}
},
function(waltz)
return waltz.level <= dncLevel and waltz.tp <= player.tp and spellRecasts[waltz.id] < 1
end
)
local newWaltz = "Curing Waltz"
for _, waltz in ipairs(waltzes) do
if waltz.hp > missingHP then
break
end
newWaltz = waltz.name
end
if newWaltz ~= spell.english then
send_command('@input /ja "' .. newWaltz .. '" ' .. tostring(spell.target.raw))
cancel_spell()
return
end
return true
end
I use it in my precast like so:
Code
if spell.english:startswith("Curing Waltz") and not refine_waltz(spell) then
return
end
https://gist.github.com/mattwells/300af25fb07a7939ffd8d0f97886706e
|
|