From 2828d096a7e6b69525fb11ea77855fcc46f79205 Mon Sep 17 00:00:00 2001 From: attick Date: Mon, 28 Oct 2019 16:30:09 -0400 Subject: [PATCH] Separate SMN a bit. Ready for 5.1 release. --- Dalamud/Configuration/CustomComboPreset.cs | 34 +++------------ .../ClientState/Structs/JobGauge/JobEnums.cs | 1 + .../ClientState/Structs/JobGauge/SMNGauge.cs | 4 +- Dalamud/Game/Internal/Gui/IconReplacer.cs | 42 +++++++++++++++++-- 4 files changed, 46 insertions(+), 35 deletions(-) diff --git a/Dalamud/Configuration/CustomComboPreset.cs b/Dalamud/Configuration/CustomComboPreset.cs index af5b010b8..903563642 100644 --- a/Dalamud/Configuration/CustomComboPreset.cs +++ b/Dalamud/Configuration/CustomComboPreset.cs @@ -68,7 +68,6 @@ namespace XIVLauncher.Dalamud // NINJA - [CustomComboInfo("Armor Crush Combo", "Replace Armor Crush with its combo chain", 30)] NinjaArmorCrushCombo = 1L << 17, @@ -92,7 +91,7 @@ namespace XIVLauncher.Dalamud [CustomComboInfo("Heated Clan Shot Combo/Heat", "Replace Heated Clan Shot with its combo chain or with Heat Blast when overheated.", 31)] MachinistHeatedClanShotFeature = 1L << 23, - [CustomComboInfo("Spread Shot Heat", "Replace Spread Shot with Heat Blast when overheated.", 31)] + [CustomComboInfo("Spread Shot Heat", "Replace Spread Shot with Auto Crossbow when overheated.", 31)] MachinistSpreadShotFeature = 1L << 24, // BLACK MAGE @@ -103,12 +102,12 @@ namespace XIVLauncher.Dalamud BlackManaFeature = 1L << 26, // ASTROLOGIAN - [CustomComboInfo("Cards on Draw", "Play your Astrologian Cards on Draw.", 33)] + [CustomComboInfo("Draw on Play", "Play turns into Draw when no card is drawn, as well as the usual Play behavior.", 33)] AstrologianCardsOnDrawFeature = 1L << 27, // SUMMONER - [CustomComboInfo("Dreadwyrm Combiner", "Now comes with Dreadwyrm Trance, Deathflare, Summon Bahamut, Enkindle Bahamut, FBT, and Enkindle Phoenix.", 27)] - SummonerDwtCombo = 1L << 28, + [CustomComboInfo("Demi-summon combiners", "Dreadwyrm Trance, Summon Bahamut, and Firebird Trance are now one button. Deathflare, Enkindle Bahamut, and Enkindle Phoenix are now one button.", 27)] + SummonerDemiCombo = 1L << 28, [CustomComboInfo("Brand of Purgatory Combo", "Replaces Fountain of Fire with Brand of Purgatory when under the affect of Hellish Conduit.", 27)] SummonerBoPCombo = 1L << 38, @@ -127,21 +126,12 @@ namespace XIVLauncher.Dalamud ScholarEnergyDrainFeature = 1L << 37, // DANCER - [CustomComboInfo("Standard Step Combo", "Standard Step on one button.", 38)] - DancerStandardStepCombo = 1L << 30, - - [CustomComboInfo("Technical Step Combo", "Technical Step on one button.", 38)] - DancerTechnicalStepCombo = 1L << 31, - [CustomComboInfo("AoE GCD procs", "Replaces all AoE GCDs with their procced version when available.", 38)] DancerAoeGcdFeature = 1L << 32, [CustomComboInfo("Fan Dance Combos", "Change Fan Dance and Fan Dance 2 into Fan Dance 3 while flourishing.", 38)] DancerFanDanceCombo = 1L << 33, - [CustomComboInfo("Fountain Combos", "Fountain changes into Fountain combo, prioritizing procs over combo, and Fountainfall over Reverse Cascade.", 38)] - DancerFountainCombo = 1L << 34, - // WHITE MAGE [CustomComboInfo("Solace into Misery", "Replaces Afflatus Solace with Afflatus Misery when Misery is ready to be used.", 24)] WhiteMageSolaceMiseryFeature = 1L << 35, @@ -157,22 +147,8 @@ namespace XIVLauncher.Dalamud BardStraightShotUpgradeFeature = 1L << 42, // MONK - [CustomComboInfo("Flank Positional Combo", "Replaces Snap Punch with flank positionals according to stance. When PB is active, prefer Snao (with non-max GL) > Twin (with no TS active) > Bootshine.", 20)] - MonkFlankCombo = 1L << 43, - - [CustomComboInfo("Rear Positional Combo", "Replaces Demolish with rear positionals according to stance. When PB is active, prefer Demo (with non-max GL) > Bootshine.", 20)] - MonkRearCombo = 1L << 44, - - [CustomComboInfo("Rockbreaker Combo", "Replaces Rockbreaker according to stance. When PB is active, prefer RB (with non-max GL) > Twin Snakes (with no TS active) > RB.", 20)] - MonkAoECombo = 1L << 16, - + // RED MAGE - [CustomComboInfo("One-button White Magic", "Replaces Verstone with the following priority: Scorch > Verholy > Dual/Swiftcast Veraero > Verstone proc > Opener Veraero > Jolt.", 35)] - RedMageWhiteMagicFeature = 1L << 46, - - [CustomComboInfo("One-button Black Magic", "Replaces Verfire with the following priority: Scorch > Verflare > Dual/Swiftcast Verthunder > Verfire proc > Opener Verthunder > Jolt.", 35)] - RedMageBlackMagicFeature = 1L << 47, - [CustomComboInfo("Red Mage AoE Combo", "Replaces Veraero/thunder 2 with Impact when Dualcast or Swiftcast are active.", 35)] RedMageAoECombo = 1L << 48, diff --git a/Dalamud/Game/ClientState/Structs/JobGauge/JobEnums.cs b/Dalamud/Game/ClientState/Structs/JobGauge/JobEnums.cs index c2252c8b3..69762e295 100644 --- a/Dalamud/Game/ClientState/Structs/JobGauge/JobEnums.cs +++ b/Dalamud/Game/ClientState/Structs/JobGauge/JobEnums.cs @@ -21,6 +21,7 @@ namespace Dalamud.Game.ClientState.Structs.JobGauge { } public enum SummonPet : byte { + NONE = 0, IFRIT = 3, TITAN, GARUDA diff --git a/Dalamud/Game/ClientState/Structs/JobGauge/SMNGauge.cs b/Dalamud/Game/ClientState/Structs/JobGauge/SMNGauge.cs index 89f22fe9c..1742f4d97 100644 --- a/Dalamud/Game/ClientState/Structs/JobGauge/SMNGauge.cs +++ b/Dalamud/Game/ClientState/Structs/JobGauge/SMNGauge.cs @@ -12,8 +12,8 @@ namespace Dalamud.Game.ClientState.Structs.JobGauge { //Unfinished [FieldOffset(0)] public short TimerRemaining; - [FieldOffset(2)] public byte ReturnSummon; - [FieldOffset(3)] public byte ReturnSummonGlam; + [FieldOffset(2)] public SummonPet ReturnSummon; + [FieldOffset(3)] public PetGlam ReturnSummonGlam; [FieldOffset(4)] public byte NumStacks; public bool IsPhoenixReady() { diff --git a/Dalamud/Game/Internal/Gui/IconReplacer.cs b/Dalamud/Game/Internal/Gui/IconReplacer.cs index 032c021d4..751a811ac 100644 --- a/Dalamud/Game/Internal/Gui/IconReplacer.cs +++ b/Dalamud/Game/Internal/Gui/IconReplacer.cs @@ -383,7 +383,9 @@ namespace Dalamud.Game.Internal.Gui { // For some reason the shots use their unheated IDs as combo moves if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.MachinistHeatedClanShotFeature)) { if (actionID == 7413) { - if (this.dalamud.ClientState.JobGauges.Get().IsOverheated() && level >= 35) return 7410; + MCHGauge gauge = this.dalamud.ClientState.JobGauges.Get(); + // End overheat slightly early to prevent eager button mashing clipping your gcd with a fake 6th HB. + if (gauge.IsOverheated() && level >= 35 && gauge.OverheatTimeRemaining > 30) return 7410; if (comboTime > 0) { if (lastMove == 2866) { if (level >= 60) return 7412; @@ -465,6 +467,7 @@ namespace Dalamud.Game.Internal.Gui { // DWT changes. // Now contains DWT, Deathflare, Summon Bahamut, Enkindle Bahamut, FBT, and Enkindle Phoenix. // What a monster of a button. + /* if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.SummonerDwtCombo)) { if (actionID == 3581) { SMNGauge gauge = this.dalamud.ClientState.JobGauges.Get(); @@ -482,6 +485,26 @@ namespace Dalamud.Game.Internal.Gui { } } } + */ + + if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.SummonerDemiCombo)) { + // Replace Deathflare with demi enkindles + if (actionID == 3582) { + SMNGauge gauge = this.dalamud.ClientState.JobGauges.Get(); + if (gauge.IsPhoenixReady()) return 16516; + if (gauge.TimerRemaining > 0 && gauge.ReturnSummon != SummonPet.NONE) return 7429; + return 3582; + } + + //Replace DWT with demi summons + if (actionID == 3581) { + SMNGauge gauge = this.dalamud.ClientState.JobGauges.Get(); + if (gauge.IsBahamutReady()) return 7427; + if (gauge.IsPhoenixReady() || + (gauge.TimerRemaining > 0 && gauge.ReturnSummon != SummonPet.NONE)) return 16513; + return 3581; + } + } // Ruin 1 now upgrades to Brand of Purgatory in addition to Ruin 3 and Fountain of Fire if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.SummonerBoPCombo)) { @@ -538,6 +561,8 @@ namespace Dalamud.Game.Internal.Gui { // DANCER + /* + // Standard Step is one button. if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.DancerStandardStepCombo)) { if (actionID == 15997) { @@ -586,6 +611,8 @@ namespace Dalamud.Game.Internal.Gui { } } + */ + // AoE GCDs are split into two buttons, because priority matters // differently in different single-target moments. Thanks yoship. // Replaces each GCD with its procced version. @@ -601,9 +628,8 @@ namespace Dalamud.Game.Internal.Gui { } } - + // Fan Dance changes into Fan Dance 3 while flourishing. if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.DancerFanDanceCombo)) { - // Fan Dance changes into Fan Dance 3 while flourishing. if (actionID == 16007) { if (SearchBuffArray(1820)) return 16009; @@ -663,6 +689,8 @@ namespace Dalamud.Game.Internal.Gui { // MONK + /* + // Replace Snap Punch with flank positional combo. // During PB, Snap (with sub-max stacks) > Twin (with no active Twin) > DK if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.MonkFlankCombo)) { @@ -737,8 +765,12 @@ namespace Dalamud.Game.Internal.Gui { } } + */ + // RED MAGE + /* + // Replace Verstone with White Magic spells. Priority order: // Scorch > Verholy > Verstone = Veraero (with Dualcast active) > opener Veraero > Jolt // Impact is not the first available spell to allow for precast openers. @@ -770,7 +802,7 @@ namespace Dalamud.Game.Internal.Gui { return 7503; } } - + */ // Replace Veraero/thunder 2 with Impact when Dualcast is active if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.RedMageAoECombo)) { if (actionID == 16525) { @@ -784,6 +816,8 @@ namespace Dalamud.Game.Internal.Gui { } } + + // Replace Redoublement with Redoublement combo, Enchanted if possible. if (this.dalamud.Configuration.ComboPresets.HasFlag(CustomComboPreset.RedMageMeleeCombo)) { if (actionID == 7516) {