Skip to content

Commit 0f600d2

Browse files
committed
2 parents b8be578 + b7d6723 commit 0f600d2

File tree

5 files changed

+475
-147
lines changed

5 files changed

+475
-147
lines changed

Presets/Dawntrail/Raids/The Arcadion 12 Savage Phase 2.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Replication 1 Debuff and aoe size highlight
1717
# 2
1818
[Script] [Beta] Clones 1 (Replication 1) script
1919

20-
** KNOWN ISSUE: Tether position may not be valid, work in progress, look for your tether yourself **
20+
Version 4 should have tether fixed and now both tethers are highlighted, but still watch it and verify it
2121

2222
> [!Warning]
2323
>
24-
> Default configuration is for Banana Codex raidplan. You may reconfigure this script for ANY strat, however, it's not easy.
24+
> Configuration required. You may reconfigure this script for ANY strat, however, it's not easy.
2525
2626
```
2727
https://github.com/PunishXIV/Splatoon/raw/refs/heads/main/SplatoonScripts/Duties/Dawntrail/M12S%20P2%20Clones%202.cs
@@ -34,3 +34,14 @@ Netherworld-far and Netherworld-near
3434
~Lv2~{"Name":"三运 alpha 远近分摊","Group":"M12S P2","ZoneLockH":[1327],"ElementsL":[{"Name":"buff alpha1","type":1,"refActorRequireBuff":true,"refActorBuffId":[4769],"refActorType":1,"Conditional":true,"Nodraw":true},{"Name":"阴界远景","type":1,"radius":5.0,"color":3355508525,"Filled":false,"fillIntensity":0.5,"overlayFScale":3.0,"thicc":20.0,"overlayText":"靠近","overlayTextIntl":{"En":"In"},"refActorModelID":4659,"refActorRequireCast":true,"refActorCastId":[46380,46380],"refActorComparisonType":1,"onlyVisible":true},{"Name":"buff alpha2","type":1,"refActorRequireBuff":true,"refActorBuffId":[4769],"refActorType":1,"Conditional":true,"Nodraw":true},{"Name":"阴界近景","type":1,"radius":5.0,"color":3355508570,"Filled":false,"fillIntensity":0.5,"overlayFScale":3.0,"thicc":20.0,"overlayText":"远离","overlayTextIntl":{"En":"Out"},"refActorModelID":4659,"refActorRequireCast":true,"refActorCastId":[46379,46379],"refActorComparisonType":1,"onlyVisible":true}]}
3535
~Lv2~{"Name":"三运 beta 远近分摊","Group":"M12S P2","ZoneLockH":[1327],"ElementsL":[{"Name":"buff beta1","type":1,"refActorRequireBuff":true,"refActorBuffId":[4771],"refActorType":1,"Conditional":true,"Nodraw":true},{"Name":"阴界远景","type":1,"radius":5.0,"color":3372155132,"Filled":false,"fillIntensity":0.5,"overlayFScale":3.0,"thicc":20.0,"overlayText":"远离分摊","overlayTextIntl":{"En":"Out + Stack"},"refActorModelID":4659,"refActorRequireCast":true,"refActorCastId":[46380,46380],"refActorComparisonType":1,"onlyVisible":true},{"Name":"buff beta2","type":1,"refActorRequireBuff":true,"refActorBuffId":[4771],"refActorType":1,"Conditional":true,"Nodraw":true},{"Name":"阴界近景","type":1,"radius":5.0,"color":3371564800,"Filled":false,"fillIntensity":0.5,"overlayFScale":3.0,"thicc":20.0,"overlayText":"靠近分摊","overlayTextIntl":{"En":"In + Stack"},"refActorModelID":4659,"refActorRequireCast":true,"refActorCastId":[46379,46379],"refActorComparisonType":1,"onlyVisible":true}]}
3636
```
37+
38+
# Idyllic Dream
39+
> [!Warning]
40+
>
41+
> Testing versions may fail
42+
43+
Stored AOEs:
44+
```
45+
~Lv2~{"Name":"M12S P2 Twisted Vision (1st set of stored aoes)","Group":"M12S P2","ZoneLockH":[1327],"ConditionalAnd":true,"Freezing":true,"FreezeFor":33.0,"IntervalBetweenFreezes":5.0,"FreezeDisplayDelay":28.0,"ElementsL":[{"Name":"","type":1,"refActorNPCNameID":14379,"refActorRequireCast":true,"refActorCastId":[48098],"refActorUseCastTime":true,"refActorCastTimeMin":1.0,"refActorCastTimeMax":2.0,"refActorComparisonType":6,"Conditional":true,"Nodraw":true},{"Name":"","type":4,"radius":40.0,"coneAngleMin":-45,"coneAngleMax":45,"fillIntensity":0.4,"refActorNPCNameID":14379,"refActorRequireCast":true,"refActorCastId":[46354],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true},{"Name":"","type":1,"radius":10.0,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[46353],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6}]}
46+
~Lv2~{"Name":"M12S P2 Twisted Vision (2nd set of stored aoes)","Group":"M12S P2","ZoneLockH":[1327],"Freezing":true,"FreezeFor":25.0,"IntervalBetweenFreezes":5.0,"FreezeDisplayDelay":11.0,"ElementsL":[{"Name":"","type":1,"refActorNPCNameID":14379,"refActorRequireCast":true,"refActorCastId":[48098],"refActorUseCastTime":true,"refActorCastTimeMin":1.0,"refActorCastTimeMax":2.0,"refActorComparisonType":6,"Conditional":true,"Nodraw":true},{"Name":"","type":4,"radius":40.0,"coneAngleMin":-45,"coneAngleMax":45,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[46352],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true},{"Name":"","type":1,"radius":10.0,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[48303],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6},{"Name":"","type":4,"radius":40.0,"coneAngleMin":-45,"coneAngleMax":45,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[46352],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true,"AdditionalRotation":3.1415927},{"Name":"","type":1,"offY":28.0,"radius":10.0,"Donut":40.0,"color":3355506687,"fillIntensity":0.2,"thicc":4.0,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[48303],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true,"RotationOverride":true,"RotationOverridePoint":{"X":100.0,"Y":100.0}},{"Name":"","type":4,"radius":40.0,"coneAngleMin":-45,"coneAngleMax":45,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[46351],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true,"AdditionalRotation":1.5707964},{"Name":"","type":4,"radius":40.0,"coneAngleMin":-45,"coneAngleMax":45,"fillIntensity":0.4,"refActorNPCNameID":14380,"refActorRequireCast":true,"refActorCastId":[46351],"refActorCastTimeMin":1.0,"refActorCastTimeMax":999.0,"refActorComparisonType":6,"includeRotation":true,"AdditionalRotation":4.712389}],"ForcedProjectorActions":[48303]}
47+
```

SplatoonScripts/Duties/Dawntrail/M11S Majestic Meteor.cs

Lines changed: 93 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Numerics;
@@ -26,6 +26,14 @@ public class M11S_Majestic_Meteor : SplatoonScript
2626
private readonly uint _actionPuddleTick = 46145;
2727
private readonly uint _actionTowerResolve = 46148;
2828
private readonly uint _castChampionsMeteorStart = 46144;
29+
private readonly HashSet<uint> _castArcadianCrash = new() { 46154, 46156, 46158, 46160 };
30+
private static readonly Dictionary<uint, Vector2> MapEffectToPos = new()
31+
{
32+
{ 22, new(79f, 75f) },
33+
{ 23, new(89f, 75f) },
34+
{ 24, new(111f, 75f) },
35+
{ 25, new(121f, 75f) }
36+
};
2937

3038
private readonly Vector2 _center = new(100f, 100f);
3139
private readonly float _finalLateralXOffset = 1.5f;
@@ -37,7 +45,6 @@ public class M11S_Majestic_Meteor : SplatoonScript
3745
private readonly float _puddleStep1Offset = 0.0f;
3846
private readonly float _puddleStep2Offset = 6.0f;
3947
private readonly float _puddleStep3Offset = 12.0f;
40-
private readonly List<Vector3> _tetherOrigins = new();
4148
private readonly Vector2 _towerNWBase = new(84f, 89f);
4249
private readonly float _towerStandOff = 2f;
4350
private readonly string _vfxPuddleStartPrefix = "vfx/lockon/eff/lockon8_t0w.avfx";
@@ -53,9 +60,12 @@ public class M11S_Majestic_Meteor : SplatoonScript
5360
private List<(uint, Direction)> _lineOrder = new();
5461
private List<uint> _noLineOrder = new();
5562
private int _puddleCount;
63+
private readonly Dictionary<uint, Direction> _finalSafeTowerDir = new();
64+
private bool _showFinalTowerBait;
65+
private readonly List<Vector2> _mapEffectPositions = new();
5666

5767
private State _state = State.Idle;
58-
public override Metadata Metadata => new(2, "Garume");
68+
public override Metadata Metadata => new(5, "Garume");
5969
public override HashSet<uint>? ValidTerritories { get; } = [1325];
6070
private Config C => Controller.GetConfig<Config>();
6171

@@ -77,7 +87,8 @@ public override void OnSetup()
7787
radius = 1.5f,
7888
thicc = 10f,
7989
overlayVOffset = 3f,
80-
overlayFScale = 3f
90+
overlayFScale = 3f,
91+
tether = true
8192
});
8293

8394
_eGuide ??= Controller.GetElementByName("Guide");
@@ -110,6 +121,10 @@ private void ResetAll()
110121

111122
_latchedTethers = false;
112123
_flipLR = false;
124+
_gimmicCount = 0;
125+
_finalSafeTowerDir.Clear();
126+
_showFinalTowerBait = false;
127+
_mapEffectPositions.Clear();
113128

114129
if (_eGuide != null)
115130
_eGuide.Enabled = false;
@@ -125,22 +140,27 @@ public override void OnStartingCast(uint source, uint castId)
125140
_noLineOrder = new List<uint>();
126141
_latchedTethers = false;
127142
_flipLR = false;
143+
_mapEffectPositions.Clear();
128144
}
129145
else if (castId == _actionPuddleTick && _state is State.Puddles1 or State.Puddles2 or State.Puddles3)
130146
{
131147
_puddleCount++;
132148
if (_puddleCount >= 8)
133149
{
134150
_puddleCount = 0;
135-
_state = _state switch
136-
{
137-
State.Puddles1 => State.Puddles2,
138-
State.Puddles2 => State.Puddles3,
139-
State.Puddles3 => State.FinalSafe,
140-
_ => _state
141-
};
151+
_state = _state switch
152+
{
153+
State.Puddles1 => State.Puddles2,
154+
State.Puddles2 => State.Puddles3,
155+
State.Puddles3 => State.FinalSafe,
156+
_ => _state
157+
};
142158
}
143159
}
160+
else if (_state == State.FinalTowerBait && _castArcadianCrash.Contains(castId))
161+
{
162+
_showFinalTowerBait = true;
163+
}
144164
}
145165

146166
public override void OnTetherCreate(uint source, uint target, uint data2, uint data3, uint data5)
@@ -159,12 +179,10 @@ public override void OnTetherCreate(uint source, uint target, uint data2, uint d
159179
else
160180
dir = srcObj.Position.Z > _center.Y ? Direction.SouthWest : Direction.NorthWest;
161181
_linePlayers.Add((target, dir));
162-
_tetherOrigins.Add(srcObj.Position);
163182

164183
if (_linePlayers.Count >= 4)
165184
{
166185
_latchedTethers = true;
167-
_flipLR = _tetherOrigins.Any(pos => pos.X < _center.X && pos.Y < 90f);
168186

169187
BuildRoleOrders();
170188
_state = State.TowerBait;
@@ -198,16 +216,32 @@ public override void OnActionEffectEvent(ActionEffectSet set)
198216
_state = State.WaitTethers;
199217
_linePlayers.Clear();
200218
_lineOrder.Clear();
201-
_tetherOrigins.Clear();
202219
_noLineOrder.Clear();
203220
_latchedTethers = false;
204221
_flipLR = false;
222+
_mapEffectPositions.Clear();
205223
}
206224
else
207225
{
208-
_state = State.Done;
226+
_state = State.FinalTowerBait;
227+
_showFinalTowerBait = false;
209228
}
210229
}
230+
else if (_state == State.FinalTowerBait && _castArcadianCrash.Contains(actionId))
231+
{
232+
_state = State.Done;
233+
}
234+
}
235+
236+
public override void OnMapEffect(uint position, ushort data1, ushort data2)
237+
{
238+
if (_state is State.Idle or State.Done) return;
239+
if (position is < 22 or > 25) return;
240+
if (data1 != 1) return;
241+
if (!MapEffectToPos.TryGetValue(position, out var pos)) return;
242+
243+
_mapEffectPositions.Add(pos);
244+
_flipLR = _mapEffectPositions.Any(p => Math.Abs(p.X - 79f) < 0.01f);
211245
}
212246

213247
public override void OnUpdate()
@@ -380,6 +414,25 @@ public override void OnUpdate()
380414
pos = new Vector2(posX, posY);
381415
}
382416

417+
SetGuide(pos);
418+
_finalSafeTowerDir[myId] = GetDirectionFromPosition(pos);
419+
return;
420+
}
421+
422+
if (_state == State.FinalTowerBait)
423+
{
424+
if (!C.ShowFinalTowerBait) return;
425+
if (!_showFinalTowerBait) return;
426+
if (!_finalSafeTowerDir.TryGetValue(myId, out var dir)) return;
427+
428+
var pos = dir switch
429+
{
430+
Direction.NorthEast => TowerNE(),
431+
Direction.SouthEast => TowerSE(),
432+
Direction.SouthWest => TowerSW(),
433+
_ => TowerNW()
434+
};
435+
383436
SetGuide(pos);
384437
}
385438
}
@@ -502,11 +555,32 @@ private Vector2 MirrorXZ(Vector2 p)
502555
return new Vector2(2f * _center.X - p.X, 2f * _center.Y - p.Y);
503556
}
504557

558+
private Direction GetDirectionFromPosition(Vector2 pos)
559+
{
560+
var isEast = pos.X > _center.X;
561+
var isSouth = pos.Y > _center.Y;
562+
if (isEast && !isSouth) return Direction.NorthEast;
563+
if (isEast && isSouth) return Direction.SouthEast;
564+
if (!isEast && isSouth) return Direction.SouthWest;
565+
return Direction.NorthWest;
566+
}
567+
505568

506569
public override void OnSettingsDraw()
507570
{
508571
ImGuiEx.Text("■ 設定 / Settings");
509572
ImGui.Checkbox("Tether should go North", ref C.TetherShouldGoNorth);
573+
ImGui.Checkbox("Show Final Tower bait (after Arcadian Crash cast)", ref C.ShowFinalTowerBait);
574+
ImGui.SameLine();
575+
ImGuiEx.HelpMarker("""
576+
アルカディアンクラッシュの詠唱後
577+
2回目ギミック終了時に立っていた方角の塔の位置にガイドを出します。
578+
オフにするとこの再表示を行いません。
579+
580+
After Arcadian Crash starts casting,
581+
shows a marker on the same tower side where you stood when the second tower mechanic ended.
582+
Turn off to disable this re-display.
583+
""");
510584

511585
ImGuiEx.Text("Gradient (2 colors)");
512586
ImGui.ColorEdit4("Color A", ref C.GradientA, ImGuiColorEditFlags.NoInputs);
@@ -575,6 +649,7 @@ public class Config : IEzConfig
575649
public Vector4 GradientB = ImGuiColors.DalamudRed;
576650
public PriorityData PlayerData = new();
577651
public bool TetherShouldGoNorth;
652+
public bool ShowFinalTowerBait = true;
578653
}
579654

580655

@@ -588,6 +663,8 @@ private enum State
588663
Puddles2,
589664
Puddles3,
590665
FinalSafe,
666+
FinalTowerBait,
591667
Done
592668
}
593-
}
669+
}
670+

0 commit comments

Comments
 (0)