From 15b6a4d2a746ed702c4cdc19a5241a00c4c40dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E6=B2=A2=E5=93=8D=E4=B9=9F?= <72963826+Hibiya615@users.noreply.github.com> Date: Sat, 5 Apr 2025 04:45:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=94=AF=E6=8C=81=E5=89=AF?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Trials-Extreme/Leviathan(Extreme).cs | 111 ++++++++++++------ OnlineRepo.json | 13 ++ README.md | 2 +- obj/rider.project.restore.info | 2 +- 4 files changed, 89 insertions(+), 39 deletions(-) diff --git a/02-A-Realm-Reborn/Trials-Extreme/Leviathan(Extreme).cs b/02-A-Realm-Reborn/Trials-Extreme/Leviathan(Extreme).cs index 51d3085..d74e409 100644 --- a/02-A-Realm-Reborn/Trials-Extreme/Leviathan(Extreme).cs +++ b/02-A-Realm-Reborn/Trials-Extreme/Leviathan(Extreme).cs @@ -16,6 +16,7 @@ using ECommons.DalamudServices; using ECommons.GameFunctions; using ECommons.MathHelpers; using System.Threading.Tasks; +using KodakkuAssist.Extensions; namespace the_Whorleater_Extreme; @@ -30,17 +31,40 @@ public class the_Whorleater_Extreme LV50 利维亚桑歼殛战 初版绘制 """; + [UserSetting("TTS开关")] + public bool isTTS { get; set; } = true; - // 阶段 - // P1:被光明所污染的人们,你们竟敢侵入我的领域! - // P2:蓝色清净的大海之水将会扫去一切污秽! - // P3:竟然对我卖弄小伎俩? - + [UserSetting("弹窗文本提示开关")] + public bool isText { get; set; } = true; + #region 记录 & 阶段转换 uint Dive = 0; + uint Phase = 0; public void Init(ScriptAccessory accessory) { Dive = 0; + Phase = 0; + } + + [ScriptMethod(name: "阶段转换:P1", eventType: EventTypeEnum.Chat, userControl: false,eventCondition: ["Type:NPCDialogueAnnouncements", + "Message:regex:^(被光明所污染的人们.*|You trespass upon my domain.*|我が海域を侵すか.*)$"])] + public void 阶段转换1(Event @event, ScriptAccessory accessory) + { + Phase = 1; + } + + [ScriptMethod(name: "阶段转换:P2", eventType: EventTypeEnum.Chat, userControl: false,eventCondition: ["Type:NPCDialogueAnnouncements", + "Message:regex:^(蓝色清净的大海之水将会扫去一切污秽.*|Drink deep of the sea's bitter draught.*|清浄なる青き水を以て、穢れ清めん.*)$"])] + public void 阶段转换2(Event @event, ScriptAccessory accessory) + { + Phase = 2; + } + + [ScriptMethod(name: "阶段转换:P3", eventType: EventTypeEnum.Chat, userControl: false,eventCondition: ["Type:NPCDialogueAnnouncements", + "Message:regex:^(竟然对我卖弄小伎俩.*|You challenge me with trickery.*|ぬぅ、小細工を弄したか.*)$"])] + public void 阶段转换3(Event @event, ScriptAccessory accessory) + { + Phase = 3; } [ScriptMethod(name: "下潜记录", eventType: EventTypeEnum.Targetable, eventCondition: ["SourceName:regex:^(利维亚桑|Leviathan|リヴァイアサン)$", "Targetable:False"],userControl: false)] @@ -54,39 +78,35 @@ public class the_Whorleater_Extreme { Dive = 0; } + #endregion [ScriptMethod(name: "开场提示", eventType: EventTypeEnum.Countdown, eventCondition: ["Type:Stop","SourceId:E0000000"])] public async void 开场提示(Event @event, ScriptAccessory accessory) { await Task.Delay(3000); - accessory.Method.TextInfo("难度:★★,TH不会建议退,小抄已发至聊天框 \nT:MT拉头,ST拉尾、小怪ST拉,晕波齿鱼人(60%血以下免晕)\nD:出黄球打黄球,小怪优先波齿鱼人,注意避开T的平A \nH:ST交给小仙女和再生奶,群抬错开ST,尽量避免水镜debuff" - , duration: 15000, true); + if (isText)accessory.Method.TextInfo("难度:★★,TH不会建议退,小抄已发至聊天框 \nT:MT拉头,ST拉尾、小怪ST拉,晕波齿鱼人(60%血以下免晕)\nD:出黄球打黄球,小怪优先波齿鱼人,注意避开T的平A \nH:ST交给小仙女和再生奶,群抬错开ST,尽量避免水镜debuff" + , duration: 10000, true); accessory.Method.SendChat("/e ————小抄————\nT:MT拉头,ST拉尾、小怪ST拉,晕波齿鱼人(60%血以下免晕)\n蓝球ST拉着溜,等一次拍击后拉离人群开大减炸掉 \nD:出黄球打黄球,小怪优先波齿鱼人,注意避开T的平A \nH:ST交给小仙女和再生奶,群抬错开ST,尽量避免水镜debuff"); } - [ScriptMethod(name: "猛撞销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2090"],userControl: false)] - public void 猛撞销毁(Event @event, ScriptAccessory accessory) - { - accessory.Method.RemoveDraw("猛撞"); // 销毁水柱击退 - } [ScriptMethod(name: "水神的面纱 提示", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2165"])] public void 水神的面纱(Event @event, ScriptAccessory accessory) { - accessory.Method.TextInfo("法系打头部,物理打尾巴\n龙骑舞者赤魔DK额外注意自己的技能!\n尾巴有身位!", duration: 5000, true); + if (isText)accessory.Method.TextInfo("法系打头部,物理打尾巴\n龙骑舞者赤魔DK额外注意自己的技能!\n尾巴有身位!", duration: 5000, true); } [ScriptMethod(name: "波齿鱼人 击杀提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:2807"])] public void 波齿鱼人提示(Event @event, ScriptAccessory accessory) { - accessory.Method.TextInfo("优先击杀 < 波齿鱼人 >", duration: 2500, true); + if (isText)accessory.Method.TextInfo("优先击杀 < 波齿鱼人 >", duration: 2500, true); } [ScriptMethod(name: "波齿鱼人_恐慌风暴", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1865"])] public void 恐慌风暴(Event @event, ScriptAccessory accessory) { - accessory.Method.EdgeTTS("不要踩进恐慌圈"); + if (isTTS)accessory.Method.EdgeTTS("不要踩进恐慌圈"); var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = "恐慌风暴"; @@ -101,7 +121,7 @@ public class the_Whorleater_Extreme [ScriptMethod(name: "波齿鱼人_恐慌洗礼", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1866"])] public void 恐慌洗礼(Event @event, ScriptAccessory accessory) { - accessory.Method.TextInfo("眩晕 < 波齿鱼人 >", duration: 3200, true); + if (isText)accessory.Method.TextInfo("眩晕 < 波齿鱼人 >", duration: 3200, true); var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = "恐慌洗礼"; @@ -112,16 +132,11 @@ public class the_Whorleater_Extreme accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); } - [ScriptMethod(name: "恐慌洗礼销毁", eventType: EventTypeEnum.CancelAction, eventCondition: ["ActionId:1866"],userControl: false)] - public void 恐慌洗礼销毁(Event @event, ScriptAccessory accessory) - { - accessory.Method.RemoveDraw("恐慌洗礼"); - } - [ScriptMethod(name: "下潜提示", eventType: EventTypeEnum.Targetable, eventCondition: ["SourceName:regex:^(利维亚桑|Leviathan|リヴァイアサン)$", "Targetable:False"])] public void 下潜提示(Event @event, ScriptAccessory accessory) { - accessory.Method.TextInfo("中间集合,躲开南北俯冲,远离东西水柱击退", duration: 5000, true); + if (isText && Phase == 1)accessory.Method.TextInfo("去水柱对侧击退", duration: 5000, true); + if (isText && Phase != 1)accessory.Method.TextInfo("中间集合,躲开南北俯冲,远离侧面水柱击退", duration: 5000, true); } [ScriptMethod(name: "旋转下潜 俯冲", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:2804"])] @@ -138,18 +153,21 @@ public class the_Whorleater_Extreme accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); } - [ScriptMethod(name: "旋转下潜销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2186"],userControl: false)] - public void 旋转下潜销毁(Event @event, ScriptAccessory accessory) + [ScriptMethod(name: "巨浪(击退)", eventType: EventTypeEnum.Chat,eventCondition: ["Type:NPCDialogueAnnouncements", + "Message:regex:^(竟然对我卖弄小伎俩.*|You challenge me with trickery.*|ぬぅ、小細工を弄したか.*)$"])] + public void 巨浪(Event @event, ScriptAccessory accessory) { - accessory.Method.RemoveDraw("旋转下潜"); - } - - // 巨浪击退距离 25m , 场地长 40m - - [ScriptMethod(name: "巨浪销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2094"],userControl: false)] - public void 巨浪销毁(Event @event, ScriptAccessory accessory) - { - accessory.Method.RemoveDraw("巨浪"); + // 击退距离为25m ,实际Scale宽=36m即为安全 + foreach (var item in accessory.Data.Objects.GetByDataId(2802)) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "巨浪"; + dp.Scale = new (40f, 30f); + dp.Owner = item.EntityId; + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 3000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } } [ScriptMethod(name: "巨浪泡沫 提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:2810"])] @@ -159,9 +177,30 @@ public class the_Whorleater_Extreme accessory.Method.EdgeTTS("ST拉蓝球,约半分钟后爆炸"); } + #region 绘制销毁 + // 巨浪击退距离 25m , 场地长 40m + [ScriptMethod(name: "猛撞销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2090"],userControl: false)] + public void 猛撞销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw("巨浪"); // 销毁水柱击退 + } + + [ScriptMethod(name: "恐慌洗礼销毁", eventType: EventTypeEnum.CancelAction, eventCondition: ["ActionId:1866"],userControl: false)] + public void 恐慌洗礼销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw("恐慌洗礼"); + } + + [ScriptMethod(name: "旋转下潜销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:2186"],userControl: false)] + public void 旋转下潜销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw("旋转下潜"); + } + + #endregion + } - public static class EventExtensions { private static bool ParseHexId(string? idStr, out uint id) @@ -275,8 +314,6 @@ public static class EventExtensions return JsonConvert.DeserializeObject(@event["Param"]); } } - - public static class Extensions { public static void TTS(this ScriptAccessory accessory, string text, bool isTTS, bool isDRTTS) diff --git a/OnlineRepo.json b/OnlineRepo.json index c16f799..e9068ac 100644 --- a/OnlineRepo.json +++ b/OnlineRepo.json @@ -220,6 +220,19 @@ 364 ] }, + { + "Name": "利维亚桑歼殛战", + "Guid": "07f20e0e-9463-4a10-9dd1-956fde6a9c46", + "Version": "0.0.0.2", + "Author": "Tetora", + "Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main", + "DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/02-A-Realm-Reborn/Trials-Extreme/Leviathan(Extreme).cs", + "Note": "v0.0.0.2:\r\nLV50 利维亚桑歼殛战 初版绘制", + "UpdateInfo": "", + "TerritoryIds": [ + 359 + ] + }, { "Name": "O4N", "Guid": "f24f9cef-717e-4a2a-9616-d470443d6d8a", diff --git a/README.md b/README.md index 163fe8a..a08b7f6 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ **讨伐歼殛战** -- `LV50 莫古力贤王歼殛战` +- `LV50 莫古力贤王歼殛战` `LV50 利维亚桑歼殛战` **大型任务 - Raid** diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info index a210e24..e6b39fa 100644 --- a/obj/rider.project.restore.info +++ b/obj/rider.project.restore.info @@ -1 +1 @@ -17378256062330333 \ No newline at end of file +17437957392858991 \ No newline at end of file