Skip to content

Commit b8cbae0

Browse files
committed
Merge remote-tracking branch 'upstream/main' into resources-7.3
2 parents 742f79f + 6b72511 commit b8cbae0

15 files changed

Lines changed: 444 additions & 46 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "cactbot",
3-
"version": "0.34.7",
4-
"releaseSummary": "more Cruiserweight, south horn support, 7.2 cn resources, i18n",
3+
"version": "0.34.8",
4+
"releaseSummary": "7.2 ko resources, i18n",
55
"releaseInDraft": "false",
66
"license": "Apache-2.0",
77
"type": "module",

plugin/CactbotEventSource/FFXIVProcessKo.cs

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@
88

99
namespace Cactbot {
1010
public class FFXIVProcessKo : FFXIVProcess {
11-
// Last updated for FFXIV 7.1
11+
// Last updated for FFXIV 7.2
12+
// Per aers/FFXIVClientStructs, what we call EntityMemory is actually:
13+
// Client::Game::Character::Character (0x22E0)
14+
// Client::Game::Object::GameObject (0x190)
15+
// Client::Game::Character::CharacterData (0x50)
16+
// ...
1217

1318
[StructLayout(LayoutKind.Explicit)]
1419
public unsafe struct EntityMemory {
1520
public static int Size => Marshal.SizeOf(typeof(EntityMemory));
1621

17-
// Unknown size, but this is the bytes up to the next field.
18-
public const int nameBytes = 68;
22+
// 64 bytes per both OverlayPlugin & aers/FFXIVClientStructs
23+
public const int nameBytes = 64;
1924

2025
[FieldOffset(0x30)]
2126
public fixed byte Name[nameBytes];
@@ -29,55 +34,56 @@ public unsafe struct EntityMemory {
2934
[FieldOffset(0x92)]
3035
public ushort distance;
3136

32-
[FieldOffset(0xB0)]
37+
[FieldOffset(0xA0)]
3338
public Single pos_x;
3439

35-
[FieldOffset(0xB4)]
40+
[FieldOffset(0xA4)]
3641
public Single pos_z;
3742

38-
[FieldOffset(0xB8)]
43+
[FieldOffset(0xA8)]
3944
public Single pos_y;
4045

41-
[FieldOffset(0xC0)]
46+
[FieldOffset(0xB0)]
4247
public Single rotation;
4348

44-
[FieldOffset(0x1AC)]
49+
[FieldOffset(0x190)]
4550
public CharacterDetails charDetails;
46-
47-
[FieldOffset(0x1D6)]
48-
public byte shieldPercentage;
4951
}
5052

5153
[StructLayout(LayoutKind.Explicit)]
5254
public struct CharacterDetails {
5355

54-
[FieldOffset(0x00)]
56+
[FieldOffset(0x0C)]
5557
public int hp;
5658

57-
[FieldOffset(0x04)]
59+
[FieldOffset(0x10)]
5860
public int max_hp;
5961

60-
[FieldOffset(0x08)]
62+
[FieldOffset(0x14)]
6163
public short mp;
6264

63-
[FieldOffset(0x10)]
65+
[FieldOffset(0x1C)]
6466
public short gp;
6567

66-
[FieldOffset(0x12)]
68+
[FieldOffset(0x1E)]
6769
public short max_gp;
6870

69-
[FieldOffset(0x14)]
71+
[FieldOffset(0x20)]
7072
public short cp;
7173

72-
[FieldOffset(0x16)]
74+
[FieldOffset(0x22)]
7375
public short max_cp;
7476

75-
[FieldOffset(0x1E)]
77+
[FieldOffset(0x2A)]
7678
public EntityJob job;
7779

78-
[FieldOffset(0x1F)]
80+
[FieldOffset(0x2B)]
7981
public byte level;
82+
83+
[FieldOffset(0x2E)]
84+
public byte shieldPercentage;
8085
}
86+
8187
public FFXIVProcessKo(ILogger logger) : base(logger) { }
8288

8389
// TODO: all of this could be refactored into structures of some sort
@@ -177,7 +183,7 @@ public unsafe override EntityData GetEntityDataFromByteArray(byte[] source) {
177183
// This doesn't exist in memory, so just send the right value.
178184
// As there are other versions that still have it, don't change the event.
179185
entity.max_mp = 10000;
180-
entity.shield_value = mem.shieldPercentage * entity.max_hp / 100;
186+
entity.shield_value = mem.charDetails.shieldPercentage * entity.max_hp / 100;
181187

182188
if (IsGatherer(entity.job)) {
183189
entity.gp = mem.charDetails.gp;
@@ -506,9 +512,6 @@ public struct NinjaJobMemory {
506512
[StructLayout(LayoutKind.Explicit)]
507513
public struct ThaumaturgeJobMemory {
508514
[FieldOffset(0x02)]
509-
public ushort umbralMilliseconds; // Number of ms left in umbral fire/ice.
510-
511-
[FieldOffset(0x04)]
512515
public sbyte umbralStacks; // Positive = Umbral Fire Stacks, Negative = Umbral Ice Stacks.
513516
};
514517

@@ -524,19 +527,16 @@ public enum EnochianFlags : byte {
524527
public ushort nextPolyglotMilliseconds; // Number of ms left before polyglot proc.
525528

526529
[FieldOffset(0x02)]
527-
public ushort umbralMilliseconds; // Number of ms left in umbral fire/ice.
528-
529-
[FieldOffset(0x04)]
530530
public sbyte umbralStacks; // Positive = Umbral Fire Stacks, Negative = Umbral Ice Stacks.
531531

532-
[FieldOffset(0x05)]
532+
[FieldOffset(0x03)]
533533
public byte umbralHearts;
534534

535-
[FieldOffset(0x06)]
535+
[FieldOffset(0x04)]
536536
public byte polyglot;
537537

538538
[NonSerialized]
539-
[FieldOffset(0x07)]
539+
[FieldOffset(0x05)]
540540
private EnochianFlags enochian_state;
541541

542542
public bool enochian {

plugin/CactbotEventSource/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
// - Revision
2222
// GitHub has only 3 version components, so Revision should always be 0.
2323
// CactbotOverlay and CactbotEventSource version should match.
24-
[assembly: AssemblyVersion("0.34.7.0")]
25-
[assembly: AssemblyFileVersion("0.34.7.0")]
24+
[assembly: AssemblyVersion("0.34.8.0")]
25+
[assembly: AssemblyFileVersion("0.34.8.0")]

plugin/CactbotOverlay/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
// - Build Number
2121
// - Revision
2222
// GitHub has only 3 version components, so Revision should always be 0.
23-
[assembly: AssemblyVersion("0.34.7.0")]
24-
[assembly: AssemblyFileVersion("0.34.7.0")]
23+
[assembly: AssemblyVersion("0.34.8.0")]
24+
[assembly: AssemblyFileVersion("0.34.8.0")]

resources/outputs.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,10 +481,12 @@ export default {
481481
sidesThenFrontBack: {
482482
en: 'Sides => Front/Back',
483483
cn: '两侧 => 前/后',
484+
ko: '양옆 => 앞/뒤',
484485
},
485486
frontBackThenSides: {
486487
en: 'Front/Back => Sides',
487488
cn: '前/后 => 两侧',
489+
ko: '앞/뒤 => 양옆',
488490
},
489491
goIntoMiddle: {
490492
en: 'Get Middle',

ui/jobs/jobs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ UserConfig.getUserConfigLocation('jobs', defaultOptions, () => {
2626
'de': 720,
2727
'fr': 720,
2828
'ja': 720,
29-
'cn': 710,
30-
'ko': 710,
29+
'cn': 720,
30+
'ko': 720,
3131
};
3232
const ffxivVersion = ffxivlanguageToVersion[options.ParserLanguage];
3333

ui/raidboss/data/07-dt/dungeon/the_underkeep.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ const triggerSet: TriggerSet<Data> = {
100100
en: 'Watch boss for dash',
101101
fr: 'Regardez la position du boss pour la ruée',
102102
cn: '观察 BOSS 冲锋',
103+
ko: '보스 돌진 위치 확인하기',
103104
},
104105
},
105106
},
@@ -160,6 +161,7 @@ const triggerSet: TriggerSet<Data> = {
160161
en: 'Spread in ${quad} quadrant',
161162
fr: 'Écartez-vous dans le quandrant ${quad}',
162163
cn: '在 ${quad} 象限分散',
164+
ko: '${quad}쪽 사분면에서 산개',
163165
},
164166
dirNE: Outputs.dirNE,
165167
dirSE: Outputs.dirSE,
@@ -226,6 +228,7 @@ const triggerSet: TriggerSet<Data> = {
226228
en: '${dir} half safe',
227229
fr: '${dir} moitié sûre',
228230
cn: '${dir} 半安全',
231+
ko: '${dir}쪽 절반 안전',
229232
},
230233
},
231234
},
@@ -251,6 +254,7 @@ const triggerSet: TriggerSet<Data> = {
251254
en: 'Dodge wall turrets',
252255
fr: 'Esquivez les tourelles murales',
253256
cn: '躲避墙壁炮台',
257+
ko: '벽 포탑 피하기',
254258
},
255259
},
256260
},
@@ -264,6 +268,7 @@ const triggerSet: TriggerSet<Data> = {
264268
en: 'Spread (all cones expand!)',
265269
fr: 'Écartez-vous (les cônes s\'agrandissent)',
266270
cn: '分散 (所有扇形扩大!)',
271+
ko: '산개 (모든 부채꼴 장판 커짐!)',
267272
},
268273
},
269274
},
@@ -277,6 +282,7 @@ const triggerSet: TriggerSet<Data> = {
277282
en: 'Get behind + Spread',
278283
fr: 'Allez derrière + Dispersion',
279284
cn: '后 + 分散',
285+
ko: '보스 뒤로 + 산개',
280286
},
281287
},
282288
},
@@ -378,16 +384,19 @@ const triggerSet: TriggerSet<Data> = {
378384
en: 'Inner ${first} => Inner ${second} ${move}',
379385
fr: 'Intérieur ${first} => Intérieur ${second} ${move}',
380386
cn: '内 ${first} => 内 ${second} ${move}',
387+
ko: '안쪽 ${first} => 안쪽 ${second} ${move}',
381388
},
382389
moveAfterLaser: {
383390
en: '(after wall laser)',
384391
fr: '(après les lasers)',
385392
cn: '(然后墙壁激光)',
393+
ko: '(벽면 레이저 이후)',
386394
},
387395
moveAfterOrb: {
388396
en: '(after orb explosion)',
389397
fr: '(après les explosions des orbes)',
390398
cn: '(然后球爆炸)',
399+
ko: '(구슬 폭발 이후)',
391400
},
392401
},
393402
},
@@ -447,6 +456,42 @@ const triggerSet: TriggerSet<Data> = {
447456
'Trap Jaws': '捕猎钳',
448457
},
449458
},
459+
{
460+
'locale': 'ko',
461+
'replaceSync': {
462+
'Coordinate Bit': '발리아 비트',
463+
'Coordinate Turret': '발리아 포탑',
464+
'Gargant': '가르간트',
465+
'Sand Sphere': '모래 구체',
466+
'Soldier S0': '병사 S0',
467+
'Valia Pira': '발리아 피라',
468+
},
469+
'replaceText': {
470+
'\\(cast\\)': '(시전)',
471+
'Aerial Ambush': '매복',
472+
'Almighty Racket': '굉음',
473+
'Bloodmarch': '요홍주 전송',
474+
'Chilling Chirp': '오싹한 울음소리',
475+
'Coordinate March': '기동 지령',
476+
'Deterrent Pulse': '발리아 광선',
477+
'Earthsong': '흙노래',
478+
'Electric Excess': '일렉트로 스파크',
479+
'Electric Field': '발리아 스파크',
480+
'Electray': '일렉트로레이',
481+
'Enforcement Ray': '강화 광선',
482+
'Entropic Sphere': '엔트로피 영역',
483+
'Field of Scorn': '파멸의 충격파',
484+
'Hypercharged Light': '일렉트로라이트',
485+
'Neutralize Front Lines': '전방 상쇄',
486+
'Ordered Fire': '지원 포격',
487+
'Sector Bisector': '환영 절반베기',
488+
'Sedimentary Debris': '낙하',
489+
'Sphere Shatter': '파열',
490+
'Static Force': '참격파',
491+
'Thunderous Slash': '번개 참격',
492+
'Trap Jaws': '날카로운 턱',
493+
},
494+
},
450495
],
451496
};
452497

ui/raidboss/data/07-dt/raid/r5n.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,32 @@ const triggerSet: TriggerSet<Data> = {
502502
'Stone': '',
503503
},
504504
},
505+
{
506+
'locale': 'ko',
507+
'replaceSync': {
508+
'Dancing Green': '댄싱 그린',
509+
},
510+
'replaceText': {
511+
'\\(opposite\\)': '(반대)',
512+
'2-snap Twist': '두 번 흔들고 포즈',
513+
'4-snap Twist': '네 번 흔들고 포즈',
514+
'Arcady Night Fever': '아르카디아의 밤의 열기',
515+
'Celebrate Good Times': '이 순간을 즐기자',
516+
'Deep Cut': '숨은 명곡',
517+
'Disco Infernal': '디스코 지옥',
518+
'Do the Hustle': '신나게 춤추자',
519+
'Eighth Beats': '8비트',
520+
'Ensemble Assemble': '댄서 집합',
521+
'Frogtourage': '컴 온! 개구리 댄서',
522+
'Full Beat': '1비트',
523+
'Funky Floor': '댄싱 필드',
524+
'Let\'s Dance!': '레츠 댄스!',
525+
'Let\'s Pose!': '레츠 포즈!',
526+
'Moonburn': '달볕 걸음',
527+
'Ride the Waves': '박자 타기',
528+
'Stone': '',
529+
},
530+
},
505531
],
506532
};
507533

0 commit comments

Comments
 (0)