From 1640d2e1a59a261d2ef59e220f51c9dd2123e42a 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: Sun, 23 Mar 2025 03:50:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E5=9C=BA=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E6=8F=90=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Thornmarch-Extreme.cs | 10 +- .../High-end-Trials/the_Whorleater-Extreme.cs | 202 ++++++++++++++++++ 02-A-Realm-Reborn/the_Whorleater-Extreme.cs | 6 - OnlineRepo.json | 4 +- 4 files changed, 209 insertions(+), 13 deletions(-) rename 02-A-Realm-Reborn/{ => High-end-Trials}/Thornmarch-Extreme.cs (99%) create mode 100644 02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs delete mode 100644 02-A-Realm-Reborn/the_Whorleater-Extreme.cs diff --git a/02-A-Realm-Reborn/Thornmarch-Extreme.cs b/02-A-Realm-Reborn/High-end-Trials/Thornmarch-Extreme.cs similarity index 99% rename from 02-A-Realm-Reborn/Thornmarch-Extreme.cs rename to 02-A-Realm-Reborn/High-end-Trials/Thornmarch-Extreme.cs index 60fca87..f77c0fd 100644 --- a/02-A-Realm-Reborn/Thornmarch-Extreme.cs +++ b/02-A-Realm-Reborn/High-end-Trials/Thornmarch-Extreme.cs @@ -15,18 +15,17 @@ using ECommons.DalamudServices; using ECommons.GameFunctions; using ECommons.MathHelpers; using System.Threading.Tasks; -using FFXIVClientStructs.FFXIV.Client.Game.Character; namespace Thornmarch_Extreme; [ScriptType(guid: "fc6a6125-4a1d-4669-be4c-9b375dc70ae0", name: "莫古力贤王歼殛战", territorys: [364], - version: "0.0.0.1", author: "Tetora", note: noteStr)] + version: "0.0.0.11", author: "Tetora", note: noteStr)] public class ThornmarchExtreme { const string noteStr = """ - v0.0.0.1: + v0.0.0.11: LV50 莫古力贤王歼殛战 初版绘制 不看攻略基本能打,没有做职能限制,不需要的提示自行关闭 """; @@ -53,9 +52,10 @@ public class ThornmarchExtreme timeMooglesseOblige=0; } - [ScriptMethod(name: "开场提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:236"])] - public void 开场提示(Event @event, ScriptAccessory accessory) + [ScriptMethod(name: "开场提示", eventType: EventTypeEnum.Countdown, eventCondition: ["Type:Stop","SourceId:E0000000"])] + public async void 开场提示(Event @event, ScriptAccessory accessory) { + await Task.Delay(3000); accessory.Method.TextInfo("难度:☆\n重点机制:修小怪血,并一起击杀 ", duration: 5000, true); accessory.Method.TTS("出啥躲啥,注意修血"); accessory.Method.SendChat("/e T:MT拉斧 & 贤王,ST拉壁,注意顺劈面向\nD:注意修血,前两次需要同时击杀\nH:组合技时注意驱散[莫古乱乱乱]与[怒发冲冠]、注意AOE"); diff --git a/02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs b/02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs new file mode 100644 index 0000000..ef82977 --- /dev/null +++ b/02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs @@ -0,0 +1,202 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using Dalamud.Game.ClientState.Objects.Types; +using Newtonsoft.Json; +using Dalamud.Utility.Numerics; +using KodakkuAssist.Script; +using KodakkuAssist.Module.GameEvent; +using KodakkuAssist.Module.Draw; +using ECommons; +using ECommons.DalamudServices; +using ECommons.GameFunctions; +using ECommons.MathHelpers; + +namespace the_Whorleater_Extreme; + +[ScriptType(guid: "07f20e0e-9463-4a10-9dd1-956fde6a9c46", name: "利维亚桑歼殛战", territorys: [359], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class the_Whorleater_Extreme +{ + const string noteStr = + """ + v0.0.0.1: + LV50 利维亚桑歼殛战 初版绘制 + """; + + + [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: 10000, true); + } + + [ScriptMethod(name: "波齿鱼人 击杀提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:2807"])] + public void 波齿鱼人提示(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("优先击杀 < 波齿鱼人 >", duration: 2500, true); + } + + [ScriptMethod(name: "波齿鱼人_恐慌洗礼", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1866"])] + public void 恐慌洗礼(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("眩晕 < 波齿鱼人 >", duration: 3200, true); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "恐慌洗礼"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(1.5f); + dp.DestoryAt = 3200; + 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("恐慌洗礼"); + } + + +} + + +public static class EventExtensions +{ + private static bool ParseHexId(string? idStr, out uint id) + { + id = 0; + if (string.IsNullOrEmpty(idStr)) return false; + try + { + var idStr2 = idStr.Replace("0x", ""); + id = uint.Parse(idStr2, System.Globalization.NumberStyles.HexNumber); + return true; + } + catch (Exception) + { + return false; + } + } + + public static uint ActionId(this Event @event) + { + return JsonConvert.DeserializeObject(@event["ActionId"]); + } + + public static uint SourceId(this Event @event) + { + return ParseHexId(@event["SourceId"], out var id) ? id : 0; + } + + public static uint SourceDataId(this Event @event) + { + return JsonConvert.DeserializeObject(@event["SourceDataId"]); + } + + public static uint Command(this Event @event) + { + return ParseHexId(@event["Command"], out var cid) ? cid : 0; + } + + public static uint DurationMilliseconds(this Event @event) + { + return JsonConvert.DeserializeObject(@event["DurationMilliseconds"]); + } + + public static float SourceRotation(this Event @event) + { + return JsonConvert.DeserializeObject(@event["SourceRotation"]); + } + + public static float TargetRotation(this Event @event) + { + return JsonConvert.DeserializeObject(@event["TargetRotation"]); + } + + public static byte Index(this Event @event) + { + return (byte)(ParseHexId(@event["Index"], out var index) ? index : 0); + } + + public static uint State(this Event @event) + { + return ParseHexId(@event["State"], out var state) ? state : 0; + } + + public static string SourceName(this Event @event) + { + return @event["SourceName"]; + } + + public static string TargetName(this Event @event) + { + return @event["TargetName"]; + } + + public static uint TargetId(this Event @event) + { + return ParseHexId(@event["TargetId"], out var id) ? id : 0; + } + + public static Vector3 SourcePosition(this Event @event) + { + return JsonConvert.DeserializeObject(@event["SourcePosition"]); + } + + public static Vector3 TargetPosition(this Event @event) + { + return JsonConvert.DeserializeObject(@event["TargetPosition"]); + } + + public static Vector3 EffectPosition(this Event @event) + { + return JsonConvert.DeserializeObject(@event["EffectPosition"]); + } + + public static uint DirectorId(this Event @event) + { + return ParseHexId(@event["DirectorId"], out var id) ? id : 0; + } + + public static uint StatusId(this Event @event) + { + return JsonConvert.DeserializeObject(@event["StatusId"]); + } + + public static uint StackCount(this Event @event) + { + return JsonConvert.DeserializeObject(@event["StackCount"]); + } + + public static uint Param(this Event @event) + { + return JsonConvert.DeserializeObject(@event["Param"]); + } +} + + +public static class Extensions +{ + public static void TTS(this ScriptAccessory accessory, string text, bool isTTS, bool isDRTTS) + { + if (isDRTTS) + { + accessory.Method.SendChat($"/pdr tts {text}"); + } + else if (isTTS) + { + accessory.Method.TTS(text); + } + } +} diff --git a/02-A-Realm-Reborn/the_Whorleater-Extreme.cs b/02-A-Realm-Reborn/the_Whorleater-Extreme.cs deleted file mode 100644 index b220c93..0000000 --- a/02-A-Realm-Reborn/the_Whorleater-Extreme.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace The_Navel___EX._02_A_Realm_Reborn; - -public class the_Whorleater_Extreme -{ - -} \ No newline at end of file diff --git a/OnlineRepo.json b/OnlineRepo.json index cb8777d..dd27780 100644 --- a/OnlineRepo.json +++ b/OnlineRepo.json @@ -119,11 +119,11 @@ { "Name": "莫古力贤王歼殛战", "Guid": "fc6a6125-4a1d-4669-be4c-9b375dc70ae0", - "Version": "0.0.0.1", + "Version": "0.0.0.11", "Author": "Tetora", "Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main", "DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/02-A-Realm-Reborn/Thornmarch-Extreme.cs", - "Note": "v0.0.0.1:\r\nLV50 莫古力贤王歼殛战 初版绘制", + "Note": "v0.0.0.11:\r\nLV50 莫古力贤王歼殛战 初版绘制", "UpdateInfo": "", "TerritoryIds": [ 364