mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-13 12:14:18 +01:00
Improve festivals and add dolphins.
This commit is contained in:
parent
1fefe7366c
commit
42ac507b86
3 changed files with 48 additions and 5 deletions
|
|
@ -29,10 +29,11 @@ public class CodeService
|
||||||
World = 0x010000,
|
World = 0x010000,
|
||||||
Elephants = 0x020000,
|
Elephants = 0x020000,
|
||||||
Crown = 0x040000,
|
Crown = 0x040000,
|
||||||
|
Dolphins = 0x080000,
|
||||||
}
|
}
|
||||||
|
|
||||||
public const CodeFlag DyeCodes = CodeFlag.Clown | CodeFlag.World | CodeFlag.Elephants;
|
public const CodeFlag DyeCodes = CodeFlag.Clown | CodeFlag.World | CodeFlag.Elephants | CodeFlag.Dolphins;
|
||||||
public const CodeFlag GearCodes = CodeFlag.Emperor | CodeFlag.World | CodeFlag.Elephants;
|
public const CodeFlag GearCodes = CodeFlag.Emperor | CodeFlag.World | CodeFlag.Elephants | CodeFlag.Dolphins;
|
||||||
|
|
||||||
public const CodeFlag RaceCodes = CodeFlag.OopsHyur
|
public const CodeFlag RaceCodes = CodeFlag.OopsHyur
|
||||||
| CodeFlag.OopsElezen
|
| CodeFlag.OopsElezen
|
||||||
|
|
@ -114,7 +115,9 @@ public class CodeService
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var badFlags = ~GetMutuallyExclusive(flag);
|
var badFlags = ~GetMutuallyExclusive(flag);
|
||||||
return v => _enabled = v ? (_enabled | flag) & badFlags : _enabled & ~flag;;
|
return v => _enabled = v ? (_enabled | flag) & badFlags : _enabled & ~flag;
|
||||||
|
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CodeFlag GetCode(string name)
|
public CodeFlag GetCode(string name)
|
||||||
|
|
@ -173,6 +176,7 @@ public class CodeService
|
||||||
CodeFlag.World => (DyeCodes | GearCodes) & ~CodeFlag.World,
|
CodeFlag.World => (DyeCodes | GearCodes) & ~CodeFlag.World,
|
||||||
CodeFlag.Elephants => (DyeCodes | GearCodes) & ~CodeFlag.Elephants,
|
CodeFlag.Elephants => (DyeCodes | GearCodes) & ~CodeFlag.Elephants,
|
||||||
CodeFlag.Crown => 0,
|
CodeFlag.Crown => 0,
|
||||||
|
CodeFlag.Dolphins => (DyeCodes | GearCodes) & ~CodeFlag.Dolphins,
|
||||||
_ => 0,
|
_ => 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -198,6 +202,7 @@ public class CodeService
|
||||||
CodeFlag.World => [ 0xFD, 0xA2, 0xD2, 0xBC, 0xD9, 0x8A, 0x7E, 0x2B, 0x52, 0xCB, 0x57, 0x6E, 0x3A, 0x2E, 0x30, 0xBA, 0x4E, 0xAE, 0x42, 0xEA, 0x5C, 0x57, 0xDF, 0x17, 0x37, 0x3C, 0xCE, 0x17, 0x42, 0x43, 0xAE, 0xD0 ],
|
CodeFlag.World => [ 0xFD, 0xA2, 0xD2, 0xBC, 0xD9, 0x8A, 0x7E, 0x2B, 0x52, 0xCB, 0x57, 0x6E, 0x3A, 0x2E, 0x30, 0xBA, 0x4E, 0xAE, 0x42, 0xEA, 0x5C, 0x57, 0xDF, 0x17, 0x37, 0x3C, 0xCE, 0x17, 0x42, 0x43, 0xAE, 0xD0 ],
|
||||||
CodeFlag.Elephants => [ 0x9F, 0x4C, 0xCF, 0x6D, 0xC4, 0x01, 0x31, 0x46, 0x02, 0x05, 0x31, 0xED, 0xED, 0xB2, 0x66, 0x29, 0x31, 0x09, 0x1E, 0xE7, 0x47, 0xDE, 0x7B, 0x03, 0xB0, 0x3C, 0x06, 0x76, 0x26, 0x91, 0xDF, 0xB2 ],
|
CodeFlag.Elephants => [ 0x9F, 0x4C, 0xCF, 0x6D, 0xC4, 0x01, 0x31, 0x46, 0x02, 0x05, 0x31, 0xED, 0xED, 0xB2, 0x66, 0x29, 0x31, 0x09, 0x1E, 0xE7, 0x47, 0xDE, 0x7B, 0x03, 0xB0, 0x3C, 0x06, 0x76, 0x26, 0x91, 0xDF, 0xB2 ],
|
||||||
CodeFlag.Crown => [ 0x43, 0x8E, 0x34, 0x56, 0x24, 0xC9, 0xC6, 0xDE, 0x2A, 0x68, 0x3A, 0x5D, 0xF5, 0x8E, 0xCB, 0xEF, 0x0D, 0x4D, 0x5B, 0xDC, 0x23, 0xF9, 0xF9, 0xBD, 0xD9, 0x60, 0xAD, 0x53, 0xC5, 0xA0, 0x33, 0xC4 ],
|
CodeFlag.Crown => [ 0x43, 0x8E, 0x34, 0x56, 0x24, 0xC9, 0xC6, 0xDE, 0x2A, 0x68, 0x3A, 0x5D, 0xF5, 0x8E, 0xCB, 0xEF, 0x0D, 0x4D, 0x5B, 0xDC, 0x23, 0xF9, 0xF9, 0xBD, 0xD9, 0x60, 0xAD, 0x53, 0xC5, 0xA0, 0x33, 0xC4 ],
|
||||||
|
CodeFlag.Dolphins => [ 0x64, 0xC6, 0x2E, 0x7C, 0x22, 0x3A, 0x42, 0xF5, 0xC3, 0x93, 0x4F, 0x70, 0x1F, 0xFD, 0xFA, 0x3C, 0x98, 0xD2, 0x7C, 0xD8, 0x88, 0xA7, 0x3D, 0x1D, 0x0D, 0xD6, 0x70, 0x15, 0x28, 0x2E, 0x79, 0xE7 ],
|
||||||
_ => [],
|
_ => [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,8 @@ internal class FunEquipSet
|
||||||
new Group(0000, 0, 0137, 2, 0000, 0, 0000, 0, 0000, 0), // Wailing Spirit
|
new Group(0000, 0, 0137, 2, 0000, 0, 0000, 0, 0000, 0), // Wailing Spirit
|
||||||
new Group(0232, 1, 0232, 1, 0279, 1, 0232, 1, 0232, 1), // Eerie Attire
|
new Group(0232, 1, 0232, 1, 0279, 1, 0232, 1, 0232, 1), // Eerie Attire
|
||||||
new Group(0232, 1, 6036, 1, 0279, 1, 0232, 1, 0232, 1), // Vampire
|
new Group(0232, 1, 6036, 1, 0279, 1, 0232, 1, 0232, 1), // Vampire
|
||||||
new Group(0505, 6, 0505, 6, 0505, 6, 0505, 6, 0505, 6) // Manusya Casting
|
new Group(0505, 6, 0505, 6, 0505, 6, 0505, 6, 0505, 6), // Manusya Casting
|
||||||
|
new Group(6147, 1, 6147, 1, 6147, 1, 6147, 1, 6147, 1) // Tonberry
|
||||||
);
|
);
|
||||||
|
|
||||||
public static readonly FunEquipSet AprilFirst = new
|
public static readonly FunEquipSet AprilFirst = new
|
||||||
|
|
@ -94,7 +95,13 @@ internal class FunEquipSet
|
||||||
new Group(0159, 1, 0000, 0, 0000, 0, 0000, 0, 0000, 0), // Slime Crown
|
new Group(0159, 1, 0000, 0, 0000, 0, 0000, 0, 0000, 0), // Slime Crown
|
||||||
new Group(6117, 1, 6117, 1, 6117, 1, 6117, 1, 6117, 1), // Clown
|
new Group(6117, 1, 6117, 1, 6117, 1, 6117, 1, 6117, 1), // Clown
|
||||||
new Group(6169, 3, 6169, 3, 0279, 1, 6169, 3, 6169, 3), // Chocobo Pajama
|
new Group(6169, 3, 6169, 3, 0279, 1, 6169, 3, 6169, 3), // Chocobo Pajama
|
||||||
new Group(6169, 2, 6169, 2, 0279, 2, 6169, 2, 6169, 2) // Cactuar Pajama
|
new Group(6169, 2, 6169, 2, 0279, 2, 6169, 2, 6169, 2), // Cactuar Pajama
|
||||||
|
new Group(6023, 1, 6023, 1, 0000, 0, 0000, 0, 0000, 0), // Swine
|
||||||
|
new Group(5040, 1, 0000, 0, 0000, 0, 0000, 0, 0000, 0), // Namazu only
|
||||||
|
new Group(5040, 1, 6023, 1, 0000, 0, 0000, 0, 0000, 0), // Namazu lean
|
||||||
|
new Group(5040, 1, 6023, 1, 0000, 0, 0000, 0, 0000, 0), // Namazu chonk
|
||||||
|
new Group(6182, 1, 6182, 1, 0000, 0, 0000, 0, 0000, 0), // Imp
|
||||||
|
new Group(6147, 1, 6147, 1, 6147, 1, 6147, 1, 6147, 1) // Tonberry
|
||||||
);
|
);
|
||||||
|
|
||||||
private FunEquipSet(params Group[] groups)
|
private FunEquipSet(params Group[] groups)
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ public unsafe class FunModule : IDisposable
|
||||||
SetRandomItem(slot, ref armor);
|
SetRandomItem(slot, ref armor);
|
||||||
break;
|
break;
|
||||||
case CodeService.CodeFlag.Elephants:
|
case CodeService.CodeFlag.Elephants:
|
||||||
|
case CodeService.CodeFlag.Dolphins:
|
||||||
case CodeService.CodeFlag.World when actor.Index != 0:
|
case CodeService.CodeFlag.World when actor.Index != 0:
|
||||||
KeepOldArmor(actor, slot, ref armor);
|
KeepOldArmor(actor, slot, ref armor);
|
||||||
break;
|
break;
|
||||||
|
|
@ -168,6 +169,10 @@ public unsafe class FunModule : IDisposable
|
||||||
SetElephant(EquipSlot.Body, ref armor[1], stainId);
|
SetElephant(EquipSlot.Body, ref armor[1], stainId);
|
||||||
SetElephant(EquipSlot.Head, ref armor[0], stainId);
|
SetElephant(EquipSlot.Head, ref armor[0], stainId);
|
||||||
break;
|
break;
|
||||||
|
case CodeService.CodeFlag.Dolphins:
|
||||||
|
SetDolphin(EquipSlot.Body, ref armor[1]);
|
||||||
|
SetDolphin(EquipSlot.Head, ref armor[0]);
|
||||||
|
break;
|
||||||
case CodeService.CodeFlag.World when actor.Index != 0:
|
case CodeService.CodeFlag.World when actor.Index != 0:
|
||||||
_worldSets.Apply(actor, _rng, armor);
|
_worldSets.Apply(actor, _rng, armor);
|
||||||
break;
|
break;
|
||||||
|
|
@ -227,6 +232,32 @@ public unsafe class FunModule : IDisposable
|
||||||
7, // Rose Pink
|
7, // Rose Pink
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private static IReadOnlyList<CharacterArmor> DolphinBodies
|
||||||
|
=>
|
||||||
|
[
|
||||||
|
new CharacterArmor(6089, 1, 4), // Toad
|
||||||
|
new CharacterArmor(6089, 1, 4), // Toad
|
||||||
|
new CharacterArmor(6089, 1, 4), // Toad
|
||||||
|
new CharacterArmor(6023, 1, 4), // Swine
|
||||||
|
new CharacterArmor(6023, 1, 4), // Swine
|
||||||
|
new CharacterArmor(6023, 1, 4), // Swine
|
||||||
|
new CharacterArmor(6133, 1, 4), // Gaja
|
||||||
|
new CharacterArmor(6182, 1, 3), // Imp
|
||||||
|
new CharacterArmor(6182, 1, 3), // Imp
|
||||||
|
new CharacterArmor(6182, 1, 4), // Imp
|
||||||
|
new CharacterArmor(6182, 1, 4), // Imp
|
||||||
|
];
|
||||||
|
|
||||||
|
private void SetDolphin(EquipSlot slot, ref CharacterArmor armor)
|
||||||
|
{
|
||||||
|
armor = slot switch
|
||||||
|
{
|
||||||
|
EquipSlot.Body => DolphinBodies[_rng.Next(0, DolphinBodies.Count - 1)],
|
||||||
|
EquipSlot.Head => new CharacterArmor(5040, 1, 0),
|
||||||
|
_ => armor,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void SetElephant(EquipSlot slot, ref CharacterArmor armor, StainId stainId)
|
private void SetElephant(EquipSlot slot, ref CharacterArmor armor, StainId stainId)
|
||||||
{
|
{
|
||||||
armor = slot switch
|
armor = slot switch
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue