From c5efb183343511e590649d7c216a7785dd48f9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E6=B2=A2=E5=93=8D=E4=B9=9F?= <1903657172@qq.com> Date: Mon, 21 Jul 2025 00:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-Stormblood/Dungeon/AlaMhigo.cs | 278 ++++++++++++++++++ .../Trials-Extreme/Golbez(Extreme).cs | 260 ++++++++++++++++ .../CosmicExploration/SinusArdorum.cs | 164 +++++++++++ Celestium/Celestium.cs | 36 ++- OnlineRepo.json | 4 +- ...toraKodakkuScript.csproj.nuget.dgspec.json | 3 +- obj/TetoraKodakkuScript.csproj.nuget.g.props | 2 +- obj/project.assets.json | 3 +- obj/project.nuget.cache | 2 +- obj/project.packagespec.json | 2 +- obj/rider.project.model.nuget.info | 2 +- obj/rider.project.restore.info | 2 +- 12 files changed, 744 insertions(+), 14 deletions(-) create mode 100644 04-Stormblood/Dungeon/AlaMhigo.cs create mode 100644 06-EndWalker/Trials-Extreme/Golbez(Extreme).cs create mode 100644 07-Dawntrail/CosmicExploration/SinusArdorum.cs diff --git a/04-Stormblood/Dungeon/AlaMhigo.cs b/04-Stormblood/Dungeon/AlaMhigo.cs new file mode 100644 index 0000000..5f49a95 --- /dev/null +++ b/04-Stormblood/Dungeon/AlaMhigo.cs @@ -0,0 +1,278 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +// using Dalamud.Game.ClientState.Objects.Subkinds; +// 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 KodakkuAssist.Data; +using KodakkuAssist.Extensions; +using ECommons; +using ECommons.DalamudServices; +using ECommons.GameFunctions; +using ECommons.MathHelpers; +using System.Threading.Tasks; + +namespace Ala_Mhigo; + +[ScriptType(guid: "aa0ae191-da3f-48f1-9340-46a56cfeeabf", name: "鏖战红莲阿拉米格", territorys: [1146], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class Ala_Mhigo +{ + const string noteStr = + """ + v0.0.0.1: + LV70 鏖战红莲阿拉米格 初版绘制 + TTS请在“用户设置”中二选一启用,请勿同时开启 + """; + + [UserSetting("TTS开关(TTS请二选一开启)")] + public bool isTTS { get; set; } = false; + + [UserSetting("EdgeTTS开关(TTS请二选一开启)")] + public bool isEdgeTTS { get; set; } = true; + + [UserSetting("弹窗文本提示开关")] + public bool isText { get; set; } = true; + + + [ScriptMethod(name: "BOSS1_守卫机蝎 锁定目标", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:8263"])] + public void 锁定目标(Event @event, ScriptAccessory accessory) + { + if (isTTS)accessory.Method.TTS("快躲开"); + if (isEdgeTTS)accessory.Method.EdgeTTS("快躲开"); + } + + [ScriptMethod(name: "BOSS3_芝诺斯 不动三段(扇形死刑)", eventType: EventTypeEnum.NpcYell, eventCondition: ["Id:5372"])] + public void 不动三段死刑(Event @event, ScriptAccessory accessory) + { + if(isText) accessory.Method.TextInfo("扇形死刑", duration: 2500, true); + if(isTTS) accessory.Method.TTS("扇形死刑"); + if(isEdgeTTS) accessory.Method.EdgeTTS("扇形死刑"); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "不动三段死刑"; + dp.Scale = new Vector2(10f); + dp.Radian = 120f.DegToRad(); + dp.Owner = @event.SourceId(); + dp.TargetResolvePattern = PositionResolvePatternEnum.OwnerEnmityOrder; + dp.TargetOrderIndex = 1; + dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f); + dp.DestoryAt = 3200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [ScriptMethod(name: "BOSS3_芝诺斯 不动三段(扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:8290"])] + public void 不动三段扇形(Event @event, ScriptAccessory accessory) + { + if(isTTS) accessory.Method.TTS("快躲开"); + if(isEdgeTTS) accessory.Method.EdgeTTS("快躲开"); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "不动三段直线"; + dp.Scale = new Vector2(10f); + dp.Radian = 120f.DegToRad(); + dp.Owner = @event.SourceId(); + dp.Color = new Vector4(1f, 0f, 0f, 1.2f); + dp.DestoryAt = 1800; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [ScriptMethod(name: "BOSS3_芝诺斯 雷切一闪(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(8294|9607)$"])] + public void 雷切一闪(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "雷切一闪"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(8f); + dp.DestoryAt = @event.ActionId() == 8294 ? 5700 : 7700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "BOSS3_芝诺斯 风断一闪(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(8293|9606)$"])] + public void 风断一闪(Event @event, ScriptAccessory accessory) + { + if(isText) accessory.Method.TextInfo("向安全方向击退", duration: 5000, true); + if(isTTS) accessory.Method.TTS("击退"); + if(isEdgeTTS) accessory.Method.EdgeTTS("击退"); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "风断一闪"; + dp.Owner = accessory.Data.Me; + dp.Color = accessory.Data.DefaultSafeColor; + dp.ScaleMode |= ScaleMode.YByDistance; + dp.TargetObject = @event.SourceId(); + dp.Scale = new(1); + dp.DestoryAt = 5700; + accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp); + } + + [ScriptMethod(name: "防击退销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^(7548|7559)$"],userControl: false)] + public void 防击退销毁(Event @event, ScriptAccessory accessory) + { + if ( @event.TargetId() != accessory.Data.Me) return; + accessory.Method.RemoveDraw("风断一闪"); + } + + [ScriptMethod(name: "BOSS3_芝诺斯 妖刀一闪(直线分散)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(8296|9608)$"])] + public void 妖刀一闪(Event @event, ScriptAccessory accessory) + { + if(isText) accessory.Method.TextInfo("分散", duration: 4500, true); + if(isTTS) accessory.Method.TTS("分散"); + if(isEdgeTTS) accessory.Method.EdgeTTS("分散"); + + for (var i = 0; i <4;i++) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = $"妖刀一闪{i}"; + dp.Scale = new(6, 41); + dp.Owner = @event.SourceId(); + dp.TargetObject = accessory.Data.PartyList[i]; + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 5200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } + } + + [ScriptMethod(name: "BOSS3_芝诺斯 无明闪(连线诱导扇形)", eventType: EventTypeEnum.Tether, eventCondition: ["Id:0029"])] + public void 无明闪(Event @event, ScriptAccessory accessory) + { + if (@event.TargetId() == accessory.Data.Me) + { + if (isText) accessory.Method.TextInfo("诱导扇形至场外", duration: 7400, true); + if (isTTS) accessory.Method.TTS("诱导扇形至场外"); + if (isEdgeTTS) accessory.Method.EdgeTTS("诱导扇形至场外"); + } + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "无明闪"; + dp.Color = accessory.Data.DefaultDangerColor.WithW(0.5f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(41); + dp.Radian = 90f.DegToRad(); + dp.DestoryAt = 8100; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + +} + +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"]); + } +} \ No newline at end of file diff --git a/06-EndWalker/Trials-Extreme/Golbez(Extreme).cs b/06-EndWalker/Trials-Extreme/Golbez(Extreme).cs new file mode 100644 index 0000000..e3d9ba0 --- /dev/null +++ b/06-EndWalker/Trials-Extreme/Golbez(Extreme).cs @@ -0,0 +1,260 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +// using Dalamud.Game.ClientState.Objects.Subkinds; +// 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 KodakkuAssist.Data; +using KodakkuAssist.Extensions; +using ECommons; +using ECommons.DalamudServices; +using ECommons.GameFunctions; +using ECommons.MathHelpers; +using System.Threading.Tasks; + +namespace the_Voidcast_Dais_Extreme; + +[ScriptType(guid: "ef5d2622-37eb-45ba-a40a-b93f494dd097", name: "高贝扎歼殛战", territorys: [1141], + version: "0.0.0.3", author: "Tetora", note: noteStr)] + +public class Golbez_Extreme +{ + const string noteStr = + """ + v0.0.0.3: + LV90 高贝扎歼殛战 初版绘制 + """; + + [ScriptMethod(name: "虚空陨石(死刑)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:0158"])] + public void 虚空陨石(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = $"虚空陨石{@event.TargetId()}"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.TargetId(); + dp.Scale = new Vector2(6f); + dp.DestoryAt = 5000; + dp.Delay = 4700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "虚空陨石销毁", eventType: EventTypeEnum.Death, eventCondition: ["TargetDataId:0"],userControl: false)] + public void 虚空陨石销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw($"虚空陨石{@event.TargetId()}"); + } + + [ScriptMethod(name: "迟缓地暴(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33894"])] + public void 迟缓地暴(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "迟缓地暴"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(16f); + dp.DestoryAt = 7700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "迟缓电火花(暗天顶)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33898"])] + public void 迟缓电火花(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "迟缓电火花"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(5f); + dp.DestoryAt = 2700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "弦月连剑(半场刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(34523|34546)$"])] + public void 弦月连剑(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "弦月连剑"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.TargetId(); + dp.Scale = new Vector2(22); + dp.Radian = 180f.DegToRad(); + dp.DestoryAt = 4700; // 34546 为 8100 + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [ScriptMethod(name: "升龙烽火(组合钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33935"])] + public void 升龙烽火(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "升龙烽火"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(10f); + dp.DestoryAt = 6900; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "极寒突袭", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33888"])] + public void 极寒突袭(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "极寒突袭"; + dp.Scale = new(15, 15f); + dp.Owner = @event.SourceId(); + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 3700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } + + [ScriptMethod(name: "风晶球", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(3387[6-9])$"])] + public void 风晶球(Event @event, ScriptAccessory accessory) + { + var dura = @event.DurationMilliseconds(); + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "风晶球"; + dp.Scale = new (5, 30f); + dp.Owner = @event.SourceId(); + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 3700; + dp.Delay = dura - 3500; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } + +} + +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/07-Dawntrail/CosmicExploration/SinusArdorum.cs b/07-Dawntrail/CosmicExploration/SinusArdorum.cs new file mode 100644 index 0000000..2331c76 --- /dev/null +++ b/07-Dawntrail/CosmicExploration/SinusArdorum.cs @@ -0,0 +1,164 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +// using Dalamud.Game.ClientState.Objects.Subkinds; +// 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 KodakkuAssist.Data; +using KodakkuAssist.Extensions; +using ECommons; +using ECommons.DalamudServices; +using ECommons.GameFunctions; +using ECommons.MathHelpers; +using System.Threading.Tasks; + +namespace SinusArdorum; + +[ScriptType(guid: "8f9e094e-2aa2-4dfc-9020-ac9dac53e525", name: "宇宙探索小工具", territorys: [1237], + version: "0.0.0.3", author: "Tetora", note: noteStr)] + +public class SinusArdorum +{ + const string noteStr = + """ + v0.0.0.1: + 宇宙探索小工具 + """; + + +} + +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/Celestium/Celestium.cs b/Celestium/Celestium.cs index ede040c..f31b4b3 100644 --- a/Celestium/Celestium.cs +++ b/Celestium/Celestium.cs @@ -22,13 +22,13 @@ namespace Celestium; [ScriptType(guid: "7703f1a9-5698-4896-8908-bb8e415c1321", name: "天青斗场", territorys: [796], - version: "0.0.0.4", author: "Tetora", note: noteStr)] + version: "0.0.0.5", author: "Tetora", note: noteStr)] public class Celestium { const string noteStr = """ - v0.0.0.4: - 天青斗场绘制,随缘更新中 + v0.0.0.5: + 天青斗场绘制及机制提醒,随缘更新中 若无法更新请删除后刷新重新下载 目前支持层数:18 [爆破死斗] """; @@ -46,6 +46,36 @@ public class Celestium { #endregion + #region 03:最初的岩壁——希帕克纳 + + [ScriptMethod(name: "—————— 03:最初的岩壁——希帕克纳 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第3层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "破魔震(打断)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:14365"])] + public void 破魔震(Event @event, ScriptAccessory accessory) + { + if(isText)accessory.Method.TextInfo("打断BOSS", duration: 3000, true); + if(isTTS) accessory.Method.TTS("打断BOSS"); + if(isEdgeTTS) accessory.Method.EdgeTTS("打断BOSS"); + } + + #endregion + + #region 08:青之牙、红之牙 + + [ScriptMethod(name: "—————— 08:青之牙、红之牙 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第8层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "大爆炸(打断)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:14680"])] + public void 大爆炸(Event @event, ScriptAccessory accessory) + { + if(isText)accessory.Method.TextInfo("打断BOSS", duration: 3000, true); + if(isTTS) accessory.Method.TTS("打断BOSS"); + if(isEdgeTTS) accessory.Method.EdgeTTS("打断BOSS"); + } + + #endregion + #region 18:爆破死斗 [ScriptMethod(name: "—————— 18:爆破死斗 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] diff --git a/OnlineRepo.json b/OnlineRepo.json index 4824b1b..2612e79 100644 --- a/OnlineRepo.json +++ b/OnlineRepo.json @@ -647,12 +647,12 @@ { "Name": "天青斗场", "Guid": "7703f1a9-5698-4896-8908-bb8e415c1321", - "Version": "0.0.0.4", + "Version": "0.0.0.5", "Author": "Tetora", "Repo": "https://github.com/Hibiya615/TetoraKAScript", "DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/Celestium/Celestium.cs", "Note": "天青斗场绘制,随缘更新中", - "UpdateInfo": "v0.0.0.4:重命名脚本并增加部分选项, 若无法更新请删除后刷新重新下载", + "UpdateInfo": "v0.0.0.5:增加部分关卡小提醒。", "TerritoryIds": [ 796 ] diff --git a/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json b/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json index e948bc5..d8db0ed 100644 --- a/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json +++ b/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json @@ -13,7 +13,6 @@ "packagesPath": "C:\\Users\\19036\\.nuget\\packages\\", "outputPath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\obj\\", "projectStyle": "PackageReference", - "UsingMicrosoftNETSdk": false, "configFilePaths": [ "C:\\Users\\19036\\AppData\\Roaming\\NuGet\\NuGet.Config" ], @@ -59,7 +58,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Users\\19036\\.dotnet\\sdk\\8.0.404/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\19036\\.dotnet\\sdk\\8.0.410/PortableRuntimeIdentifierGraph.json" } } } diff --git a/obj/TetoraKodakkuScript.csproj.nuget.g.props b/obj/TetoraKodakkuScript.csproj.nuget.g.props index 4ba230c..9713305 100644 --- a/obj/TetoraKodakkuScript.csproj.nuget.g.props +++ b/obj/TetoraKodakkuScript.csproj.nuget.g.props @@ -7,7 +7,7 @@ $(UserProfile)\.nuget\packages\ C:\Users\19036\.nuget\packages\ PackageReference - 6.12.0 + 6.13.2 diff --git a/obj/project.assets.json b/obj/project.assets.json index 4b9bd4b..d3d4a8d 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -19,7 +19,6 @@ "packagesPath": "C:\\Users\\19036\\.nuget\\packages\\", "outputPath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\obj\\", "projectStyle": "PackageReference", - "UsingMicrosoftNETSdk": false, "configFilePaths": [ "C:\\Users\\19036\\AppData\\Roaming\\NuGet\\NuGet.Config" ], @@ -65,7 +64,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Users\\19036\\.dotnet\\sdk\\8.0.404/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\19036\\.dotnet\\sdk\\8.0.410/PortableRuntimeIdentifierGraph.json" } } } diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache index b303876..56fa6cb 100644 --- a/obj/project.nuget.cache +++ b/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "fHx+6n9/CFM=", + "dgSpecHash": "kUvm0N5m7gw=", "success": true, "projectFilePath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", "expectedPackageFiles": [], diff --git a/obj/project.packagespec.json b/obj/project.packagespec.json index 3b91d85..61a4499 100644 --- a/obj/project.packagespec.json +++ b/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj","projectName":"TetoraKodakkuScript","projectPath":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj","outputPath":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\obj\\","projectStyle":"PackageReference","UsingMicrosoftNETSdk":false,"originalTargetFrameworks":["net8.0-windows"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0-windows7.0":{"targetAlias":"net8.0-windows","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0-windows7.0":{"targetAlias":"net8.0-windows","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\19036\\.dotnet\\sdk\\8.0.404/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj","projectName":"TetoraKodakkuScript","projectPath":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj","outputPath":"E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0-windows"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0-windows7.0":{"targetAlias":"net8.0-windows","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0-windows7.0":{"targetAlias":"net8.0-windows","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\19036\\.dotnet\\sdk\\8.0.410/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/obj/rider.project.model.nuget.info b/obj/rider.project.model.nuget.info index e6b39fa..584602e 100644 --- a/obj/rider.project.model.nuget.info +++ b/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17437957392858991 \ No newline at end of file +17493168311712713 \ No newline at end of file diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info index e6b39fa..584602e 100644 --- a/obj/rider.project.restore.info +++ b/obj/rider.project.restore.info @@ -1 +1 @@ -17437957392858991 \ No newline at end of file +17493168311712713 \ No newline at end of file