Use 64bit bitmask for CustomComboPreset

This commit is contained in:
goat 2019-10-26 02:11:51 +09:00
parent 42c325cb4d
commit 09c5f0841d
2 changed files with 84 additions and 67 deletions

View file

@ -9,178 +9,177 @@ namespace XIVLauncher.Dalamud
//CURRENT HIGHEST FLAG IS 45 //CURRENT HIGHEST FLAG IS 45
[Flags] [Flags]
public enum CustomComboPreset public enum CustomComboPreset : long
{ {
None = 0, None = 0,
// DRAGOON // DRAGOON
[CustomComboInfo("Coerthan Torment Combo", "Replace Coearthan Torment with its combo chain", 22)] [CustomComboInfo("Coerthan Torment Combo", "Replace Coearthan Torment with its combo chain", 22)]
DragoonCoerthanTormentCombo = 1 << 0, DragoonCoerthanTormentCombo = 1L << 0,
[CustomComboInfo("Chaos Thrust Combo", "Replace Chaos Thrust with its combo chain", 22)] [CustomComboInfo("Chaos Thrust Combo", "Replace Chaos Thrust with its combo chain", 22)]
DragoonChaosThrustCombo = 1 << 1, DragoonChaosThrustCombo = 1L << 1,
[CustomComboInfo("Full Thrust Combo", "Replace Full Thrust with its combo chain", 22)] [CustomComboInfo("Full Thrust Combo", "Replace Full Thrust with its combo chain", 22)]
DragoonFullThrustCombo = 1 << 2, DragoonFullThrustCombo = 1L << 2,
// DARK KNIGHT // DARK KNIGHT
[CustomComboInfo("Souleater Combo", "Replace Souleater with its combo chain", 32)] [CustomComboInfo("Souleater Combo", "Replace Souleater with its combo chain", 32)]
DarkSouleaterCombo = 1 << 3, DarkSouleaterCombo = 1L << 3,
[CustomComboInfo("Stalwart Soul Combo", "Replace Stalwart Soul with its combo chain", 32)] [CustomComboInfo("Stalwart Soul Combo", "Replace Stalwart Soul with its combo chain", 32)]
DarkStalwartSoulCombo = 1 << 4, DarkStalwartSoulCombo = 1L << 4,
// PALADIN // PALADIN
[CustomComboInfo("Goring Blade Combo", "Replace Goring Blade with its combo chain", 19)] [CustomComboInfo("Goring Blade Combo", "Replace Goring Blade with its combo chain", 19)]
PaladinGoringBladeCombo = 1 << 5, PaladinGoringBladeCombo = 1L << 5,
[CustomComboInfo("Royal Authority Combo", "Replace Royal Authority with its combo chain", 19)] [CustomComboInfo("Royal Authority Combo", "Replace Royal Authority with its combo chain", 19)]
PaladinRoyalAuthorityCombo = 1 << 6, PaladinRoyalAuthorityCombo = 1L << 6,
[CustomComboInfo("Prominence Combo", "Replace Prominence with its combo chain", 19)] [CustomComboInfo("Prominence Combo", "Replace Prominence with its combo chain", 19)]
PaladinProminenceCombo = 1 << 7, PaladinProminenceCombo = 1L << 7,
// WARRIOR // WARRIOR
[CustomComboInfo("Storms Path Combo", "Replace Storms Path with its combo chain", 21)] [CustomComboInfo("Storms Path Combo", "Replace Storms Path with its combo chain", 21)]
WarriorStormsPathCombo = 1 << 8, WarriorStormsPathCombo = 1L << 8,
[CustomComboInfo("Storms Eye Combo", "Replace Storms Eye with its combo chain", 21)] [CustomComboInfo("Storms Eye Combo", "Replace Storms Eye with its combo chain", 21)]
WarriorStormsEyeCombo = 1 << 9, WarriorStormsEyeCombo = 1L << 9,
[CustomComboInfo("Mythril Tempest Combo", "Replace Mythril Tempest with its combo chain", 21)] [CustomComboInfo("Mythril Tempest Combo", "Replace Mythril Tempest with its combo chain", 21)]
WarriorMythrilTempestCombo = 1 << 10, WarriorMythrilTempestCombo = 1L << 10,
// SAMURAI // SAMURAI
[CustomComboInfo("Yukikaze Combo", "Replace Yukikaze with its combo chain", 34)] [CustomComboInfo("Yukikaze Combo", "Replace Yukikaze with its combo chain", 34)]
SamuraiYukikazeCombo = 1 << 11, SamuraiYukikazeCombo = 1L << 11,
[CustomComboInfo("Gekko Combo", "Replace Gekko with its combo chain", 34)] [CustomComboInfo("Gekko Combo", "Replace Gekko with its combo chain", 34)]
SamuraiGekkoCombo = 1 << 12, SamuraiGekkoCombo = 1L << 12,
[CustomComboInfo("Kasha Combo", "Replace Kasha with its combo chain", 34)] [CustomComboInfo("Kasha Combo", "Replace Kasha with its combo chain", 34)]
SamuraiKashaCombo = 1 << 13, SamuraiKashaCombo = 1L << 13,
[CustomComboInfo("Mangetsu Combo", "Replace Mangetsu with its combo chain", 34)] [CustomComboInfo("Mangetsu Combo", "Replace Mangetsu with its combo chain", 34)]
SamuraiMangetsuCombo = 1 << 14, SamuraiMangetsuCombo = 1L << 14,
[CustomComboInfo("Oka Combo", "Replace Oka with its combo chain", 34)] [CustomComboInfo("Oka Combo", "Replace Oka with its combo chain", 34)]
SamuraiOkaCombo = 1 << 15, SamuraiOkaCombo = 1L << 15,
// NINJA // NINJA
[CustomComboInfo("Shadow Fang Combo", "Replace Shadow Fang with its combo chain", 30)] [CustomComboInfo("Shadow Fang Combo", "Replace Shadow Fang with its combo chain", 30)]
NinjaShadowFangCombo = 1 << 16, NinjaShadowFangCombo = 1L << 16,
[CustomComboInfo("Armor Crush Combo", "Replace Armor Crush with its combo chain", 30)] [CustomComboInfo("Armor Crush Combo", "Replace Armor Crush with its combo chain", 30)]
NinjaArmorCrushCombo = 1 << 17, NinjaArmorCrushCombo = 1L << 17,
[CustomComboInfo("Aeolian Edge Combo", "Replace Aeolian Edge with its combo chain", 30)] [CustomComboInfo("Aeolian Edge Combo", "Replace Aeolian Edge with its combo chain", 30)]
NinjaAeolianEdgeCombo = 1 << 18, NinjaAeolianEdgeCombo = 1L << 18,
[CustomComboInfo("Hakke Mujinsatsu Combo", "Replace Hakke Mujinsatsu with its combo chain", 30)] [CustomComboInfo("Hakke Mujinsatsu Combo", "Replace Hakke Mujinsatsu with its combo chain", 30)]
NinjaHakkeMujinsatsuCombo = 1 << 19, NinjaHakkeMujinsatsuCombo = 1L << 19,
// GUNBREAKER // GUNBREAKER
[CustomComboInfo("Solid Barrel Combo", "Replace Solid Barrel with its combo chain", 37)] [CustomComboInfo("Solid Barrel Combo", "Replace Solid Barrel with its combo chain", 37)]
GunbreakerSolidBarrelCombo = 1 << 20, GunbreakerSolidBarrelCombo = 1L << 20,
[CustomComboInfo("Gnashing Fang Combo", "Replace Gnashing Fang with its combo chain", 37)] [CustomComboInfo("Gnashing Fang Combo", "Replace Gnashing Fang with its combo chain", 37)]
GunbreakerGnashingFangCombo = 1 << 21, GunbreakerGnashingFangCombo = 1L << 21,
[CustomComboInfo("Demon Slaughter Combo", "Replace Demon Slaughter with its combo chain", 37)] [CustomComboInfo("Demon Slaughter Combo", "Replace Demon Slaughter with its combo chain", 37)]
GunbreakerDemonSlaughterCombo = 1 << 22, GunbreakerDemonSlaughterCombo = 1L << 22,
// MACHINIST // MACHINIST
[CustomComboInfo("Heated Clan Shot Combo/Heat", "Replace Heated Clan Shot with its combo chain or with Heat Blast when overheated.", 31)] [CustomComboInfo("Heated Clan Shot Combo/Heat", "Replace Heated Clan Shot with its combo chain or with Heat Blast when overheated.", 31)]
MachinistHeatedClanShotFeature = 1 << 23, MachinistHeatedClanShotFeature = 1L << 23,
[CustomComboInfo("Spread Shot Heat", "Replace Spread Shot with Heat Blast when overheated.", 31)] [CustomComboInfo("Spread Shot Heat", "Replace Spread Shot with Heat Blast when overheated.", 31)]
MachinistSpreadShotFeature = 1 << 24, MachinistSpreadShotFeature = 1L << 24,
// BLACK MAGE // BLACK MAGE
[CustomComboInfo("Enochian Stance Switcher", "Change Enochian to Fire 4 or Blizzard 4 depending on stance.", 25)] [CustomComboInfo("Enochian Stance Switcher", "Change Enochian to Fire 4 or Blizzard 4 depending on stance.", 25)]
BlackEnochianFeature = 1 << 25, BlackEnochianFeature = 1L << 25,
[CustomComboInfo("Umbral Soul/Transpose Switcher", "Change between Umbral Soul and Transpose automatically.", 25)] [CustomComboInfo("Umbral Soul/Transpose Switcher", "Change between Umbral Soul and Transpose automatically.", 25)]
BlackManaFeature = 1 << 26, BlackManaFeature = 1L << 26,
// ASTROLOGIAN // ASTROLOGIAN
[CustomComboInfo("Cards on Draw", "Play your Astrologian Cards on Draw.", 33)] [CustomComboInfo("Cards on Draw", "Play your Astrologian Cards on Draw.", 33)]
AstrologianCardsOnDrawFeature = 1 << 27, AstrologianCardsOnDrawFeature = 1L << 27,
// SUMMONER // SUMMONER
[CustomComboInfo("Dreadwyrm Combiner", "Now comes with Dreadwyrm Trance, Deathflare, Summon Bahamut, Enkindle Bahamut, FBT, and Enkindle Phoenix.", 27)] [CustomComboInfo("Dreadwyrm Combiner", "Now comes with Dreadwyrm Trance, Deathflare, Summon Bahamut, Enkindle Bahamut, FBT, and Enkindle Phoenix.", 27)]
SummonerDwtCombo = 1 << 28, SummonerDwtCombo = 1L << 28,
[CustomComboInfo("Brand of Purgatory Combo", "Replaces Fountain of Fire with Brand of Purgatory when under the affect of Hellish Conduit.", 27)] [CustomComboInfo("Brand of Purgatory Combo", "Replaces Fountain of Fire with Brand of Purgatory when under the affect of Hellish Conduit.", 27)]
SummonerBoPCombo = 1 << 38, SummonerBoPCombo = 1L << 38,
[CustomComboInfo("ED Fester", "Change Energy Drain into Fester while you have Aetherflow stacks.", 27)] [CustomComboInfo("ED Fester", "Change Energy Drain into Fester while you have Aetherflow stacks.", 27)]
SummonerEDFesterCombo = 1 << 39, SummonerEDFesterCombo = 1L << 39,
[CustomComboInfo("ES Painflare", "Change Energy Siphon into Painflare while you have Aetherflow stacks.", 27)] [CustomComboInfo("ES Painflare", "Change Energy Siphon into Painflare while you have Aetherflow stacks.", 27)]
SummonerESPainflareCombo = 1 << 40, SummonerESPainflareCombo = 1L << 40,
// SCHOLAR // SCHOLAR
[CustomComboInfo("Seraph Fey Blessing/Consolation", "Change Fey Blessing into Consolation when Seraph is out.", 28)] [CustomComboInfo("Seraph Fey Blessing/Consolation", "Change Fey Blessing into Consolation when Seraph is out.", 28)]
ScholarSeraphConsolationFeature = 1 << 29, ScholarSeraphConsolationFeature = 1L << 29,
[CustomComboInfo("ED Aetherflow", "Change Energy Drain into Aetherflow when you have no more Aetherflow stacks.", 28)] [CustomComboInfo("ED Aetherflow", "Change Energy Drain into Aetherflow when you have no more Aetherflow stacks.", 28)]
ScholarEnergyDrainFeature = 1 << 37, ScholarEnergyDrainFeature = 1L << 37,
// DANCER // DANCER
[CustomComboInfo("Standard Step Combo", "Standard Step on one button.", 38)] [CustomComboInfo("Standard Step Combo", "Standard Step on one button.", 38)]
DancerStandardStepCombo = 1 << 30, DancerStandardStepCombo = 1L << 30,
[CustomComboInfo("Technical Step Combo", "Technical Step on one button.", 38)] [CustomComboInfo("Technical Step Combo", "Technical Step on one button.", 38)]
DancerTechnicalStepCombo = 1 << 31, DancerTechnicalStepCombo = 1L << 31,
[CustomComboInfo("AoE GCD procs", "Replaces all AoE GCDs with their procced version when available.", 38)] [CustomComboInfo("AoE GCD procs", "Replaces all AoE GCDs with their procced version when available.", 38)]
DancerAoeGcdFeature = 1 << 32, DancerAoeGcdFeature = 1L << 32,
[CustomComboInfo("Fan Dance Combos", "Change Fan Dance and Fan Dance 2 into Fan Dance 3 while flourishing.", 38)] [CustomComboInfo("Fan Dance Combos", "Change Fan Dance and Fan Dance 2 into Fan Dance 3 while flourishing.", 38)]
DancerFanDanceCombo = 1 << 33, DancerFanDanceCombo = 1L << 33,
[CustomComboInfo("Fountain Combos", "Fountain changes into Fountain combo, prioritizing procs over combo, and Fountainfall over Reverse Cascade.", 38)] [CustomComboInfo("Fountain Combos", "Fountain changes into Fountain combo, prioritizing procs over combo, and Fountainfall over Reverse Cascade.", 38)]
DancerFountainCombo = 1 << 34, DancerFountainCombo = 1L << 34,
// WHITE MAGE // WHITE MAGE
[CustomComboInfo("Solace into Misery", "Replaces Afflatus Solace with Afflatus Misery when Misery is ready to be used.", 24)] [CustomComboInfo("Solace into Misery", "Replaces Afflatus Solace with Afflatus Misery when Misery is ready to be used.", 24)]
WhiteMageSolaceMiseryFeature = 1 << 35, WhiteMageSolaceMiseryFeature = 1L << 35,
[CustomComboInfo("Rapture into Misery", "Replaces Afflatus Rapture with Afflatus Misery when Misery is ready to be used.", 24)] [CustomComboInfo("Rapture into Misery", "Replaces Afflatus Rapture with Afflatus Misery when Misery is ready to be used.", 24)]
WhiteMageRaptureMiseryFeature = 1 << 36, WhiteMageRaptureMiseryFeature = 1L << 36,
// BARD // BARD
[CustomComboInfo("Wanderer's into Pitch Perfect", "Replaces Wanderer's Minuet with Pitch Perfect while in WM.", 23)] [CustomComboInfo("Wanderer's into Pitch Perfect", "Replaces Wanderer's Minuet with Pitch Perfect while in WM.", 23)]
BardWandererPPFeature = 1 << 41, BardWandererPPFeature = 1L << 41,
[CustomComboInfo("Heavy Shot into Straight Shot", "Replaces Heavy Shot/Burst Shot with Straight Shot/Refulgent Arrow when procced.", 23)] [CustomComboInfo("Heavy Shot into Straight Shot", "Replaces Heavy Shot/Burst Shot with Straight Shot/Refulgent Arrow when procced.", 23)]
BardStraightShotUpgradeFeature = 1 << 42, BardStraightShotUpgradeFeature = 1L << 42,
// MONK // 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)] [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 = 1 << 43, 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)] [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 = 1 << 44, 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) > AotD.", 20)] [CustomComboInfo("Rockbreaker Combo", "Replaces Rockbreaker according to stance. When PB is active, prefer RB (with non-max GL) > Twin Snakes (with no TS active) > AotD.", 20)]
MonkAoECombo = 1 << 45, MonkAoECombo = 1L << 45,
// RED MAGE // RED MAGE
[CustomComboInfo("One-button White Magic", "Replaces Verstone with the following priority: Scorch > Verholy > Dual/Swiftcast Veraero > Verstone proc > Opener Veraero > Jolt.", 35)] [CustomComboInfo("One-button White Magic", "Replaces Verstone with the following priority: Scorch > Verholy > Dual/Swiftcast Veraero > Verstone proc > Opener Veraero > Jolt.", 35)]
RedMageWhiteMagicFeature = 1 << 46, 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)] [CustomComboInfo("One-button Black Magic", "Replaces Verfire with the following priority: Scorch > Verflare > Dual/Swiftcast Verthunder > Verfire proc > Opener Verthunder > Jolt.", 35)]
RedMageBlackMagicFeature = 1 << 47, RedMageBlackMagicFeature = 1L << 47,
[CustomComboInfo("Red Mage AoE Combo", "Replaces Veraero/thunder 2 with Impact when Dualcast or Swiftcast are active.", 35)] [CustomComboInfo("Red Mage AoE Combo", "Replaces Veraero/thunder 2 with Impact when Dualcast or Swiftcast are active.", 35)]
RedMageAoECombo = 1 << 48, RedMageAoECombo = 1L << 48,
[CustomComboInfo("Redoublement combo", "Replaces Redoublement with its combo chain, following enchantment rules.", 35)] [CustomComboInfo("Redoublement combo", "Replaces Redoublement with its combo chain, following enchantment rules.", 35)]
RedMageMeleeCombo = 1 << 49 RedMageMeleeCombo = 1L << 49
} }
public class CustomComboInfoAttribute : Attribute public class CustomComboInfoAttribute : Attribute

View file

@ -1,25 +1,36 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dalamud.Game.ClientState.Structs.JobGauge { namespace Dalamud.Game.ClientState.Structs.JobGauge {
public enum SealType : byte { public enum SealType : byte {
NONE = 0, SUN, MOON, CELESTIAL NONE = 0,
SUN,
MOON,
CELESTIAL
} }
public enum CardType : byte { public enum CardType : byte {
NONE = 0, BALANCE, BOLE, ARROW, SPEAR, EWER, SPIRE, NONE = 0,
LORD = 0x70, LADY = 0x80 BALANCE,
BOLE,
ARROW,
SPEAR,
EWER,
SPIRE,
LORD = 0x70,
LADY = 0x80
} }
public enum SummonPet : byte { public enum SummonPet : byte {
IFRIT = 3, TITAN, GARUDA IFRIT = 3,
TITAN,
GARUDA
} }
public enum PetGlam : byte { public enum PetGlam : byte {
NONE = 0, EMERALD, TOPAZ, RUBY NONE = 0,
EMERALD,
TOPAZ,
RUBY
} }
[Flags] [Flags]
@ -27,22 +38,29 @@ namespace Dalamud.Game.ClientState.Structs.JobGauge {
NONE = 0, NONE = 0,
SETSU = 1 << 0, SETSU = 1 << 0,
GETSU = 1 << 1, GETSU = 1 << 1,
KA = 1 << 2, KA = 1 << 2
} }
public enum BOTDState : byte { public enum BOTDState : byte {
NONE = 0, BOTD, LOTD NONE = 0,
BOTD,
LOTD
} }
public enum CurrentSong : byte { public enum CurrentSong : byte {
MAGE = 5, ARMY = 0xA, WANDERER = 0xF MAGE = 5,
ARMY = 0xA,
WANDERER = 0xF
} }
public enum DismissedFairy : byte { public enum DismissedFairy : byte {
EOS = 6, SELENE EOS = 6,
SELENE
} }
public enum Mudras : byte { public enum Mudras : byte {
TEN = 1, CHI = 2, JIN = 3 TEN = 1,
CHI = 2,
JIN = 3
} }
} }