commit bf3ca8e8a6e29f98e7b7f17b204ab9d71b5a8a36 Author: Hibiya615 <72963826+Hibiya615@users.noreply.github.com> Date: Tue Feb 11 04:41:51 2025 +0800 初次提交 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dcafc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.csproj +*.sln +*.user diff --git a/02-A-Realm-Reborn/the Bowl of Embers (Hard).cs b/02-A-Realm-Reborn/the Bowl of Embers (Hard).cs new file mode 100644 index 0000000..5002181 --- /dev/null +++ b/02-A-Realm-Reborn/the Bowl of Embers (Hard).cs @@ -0,0 +1,232 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +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 theBowlofEmbers_Hard; + +[ScriptType(guid: "d3d532f1-0707-427f-ac04-871a22022c11", name: "伊弗利特歼灭战", territorys: [292], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class theBowlofEmbers_Hard +{ + const string noteStr = + """ + v0.0.0.1: + LV50 真火神 初版绘制 + """; + + [UserSetting("顺劈死刑预测")] + public static bool 烈焰焚烧 { get; set; } = true; + + [ScriptMethod(name: "烈焰焚烧(仅开场)", eventType: EventTypeEnum.Chat, userControl:false, eventCondition: ["Type:NPCDialogueAnnouncements", "Message:regex:^勇猛无比.*", "Sender:伊弗利特"])] + public void 烈焰焚烧绘制(Event @event, ScriptAccessory accessory) + { + if (!烈焰焚烧) return; + var dp = accessory.Data.GetDefaultDrawProperties(); + var ifrits = Svc.Objects.Where(x => x.DataId == 209); + foreach (var ifrit in ifrits) + { + if (ifrit.IsTargetable) + { + dp.Owner = ifrit.EntityId; + } + } + dp.Name = "烈焰焚烧"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Scale = new Vector2(15); + dp.Radian = 120f.DegToRad(); + dp.DestoryAt = 2600; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [UserSetting("击退预测")] + public static bool 火神爆裂 { get; set; } = false; + + [ScriptMethod(name: "火神爆裂(仅开场)", eventType: EventTypeEnum.Chat, userControl:false, eventCondition: ["Type:NPCDialogueAnnouncements", "Message:regex:^勇猛无比.*", "Sender:伊弗利特"])] + public void 火神爆裂绘制(Event @event, ScriptAccessory accessory) + { + if (!火神爆裂) return; + var dp = accessory.Data.GetDefaultDrawProperties(); + var ifrits = Svc.Objects.Where(x => x.DataId == 209); + foreach (var ifrit in ifrits) + { + if (ifrit.IsTargetable) + { + dp.Owner = ifrit.EntityId; + } + } + dp.Name = "火神爆裂"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Scale = new Vector2(21f); + dp.DestoryAt = 2500; + dp.Delay = 7000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "地火喷发", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1358"])] + public void 地火喷发(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "地火喷发"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Position = @event.EffectPosition(); + dp.Scale = new Vector2(8f); + dp.DestoryAt = 2700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "深红旋风(火神冲)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:457"])] + public void 深红旋风(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "深红旋风"; + dp.Scale = new (12, 43f); + dp.Owner = @event.SourceId(); + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 2700; + 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 string DurationMilliseconds(this Event @event) + { + return JsonConvert.DeserializeObject(@event["DurationMilliseconds"]) ?? string.Empty; + } + + 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); + } + } +} \ No newline at end of file diff --git a/02-A-Realm-Reborn/the Hydra.cs b/02-A-Realm-Reborn/the Hydra.cs new file mode 100644 index 0000000..88df61f --- /dev/null +++ b/02-A-Realm-Reborn/the Hydra.cs @@ -0,0 +1,190 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +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 A_Relic_Reborn_the_Hydra; + +[ScriptType(guid: "d32d7489-a1bb-4117-98dd-ee895390804d", name: "海德拉讨伐战", territorys: [369], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class theBowlofEmbers_Hard +{ + const string noteStr = + """ + v0.0.0.1: + LV50 海德拉讨伐战 初版绘制 + """; + + [ScriptMethod(name: "三头政权(顺劈死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1278"])] + public void 三头政权(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "三头政权"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Scale = new Vector2(15); + dp.Radian = 120f.DegToRad(); + dp.DestoryAt = 200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [ScriptMethod(name: "恐惧迷雾", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:1280"])] + public void 恐惧迷雾(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("去中间", duration: 5700, true); + accessory.Method.TTS("去中间"); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "恐惧迷雾"; + dp.Color = new Vector4(1f, 0.5f, 0f, 0.5f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(34f); // 实际应为 54 + 2.4 + dp.InnerScale = new Vector2(4f); + dp.Radian = float.Pi * 2; + dp.DestoryAt = 5700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, 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 string DurationMilliseconds(this Event @event) + { + return JsonConvert.DeserializeObject(@event["DurationMilliseconds"]) ?? string.Empty; + } + + 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); + } + } +} \ No newline at end of file diff --git a/05-Eden/Normal/E10n.cs b/05-Eden/Normal/E10n.cs new file mode 100644 index 0000000..455e0c6 --- /dev/null +++ b/05-Eden/Normal/E10n.cs @@ -0,0 +1,410 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +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 E10n; + +[ScriptType(guid: "038e00e8-d378-4f43-89ab-e27df5561d5a", name: "E10N", territorys: [943], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class E10n +{ + const string noteStr = + """ + v0.0.0.1: + 伊甸希望乐园 再生之章2(影之王)初版绘制 + """; + + public enum ImplosionType { + FRONT, // 22196 + BACK, // 22199 + LEFT, // 22193 + RIGHT, // 22190 + SHADOWY_FRONT, // 22197 + SHADOWY_BACK, // 22200 + SHADOWY_LEFT, // 22194 + SHADOWY_RIGHT // 22191 + + } + + [ScriptMethod(name: "向心聚爆 & 十亿斩击", eventType: EventTypeEnum.StartCasting, + eventCondition:["ActionId:regex:^(2219[0134679]|22200)$"])] + public void 半场刀判断(Event @event, ScriptAccessory accessory) { + uint decimalActionID = Convert.ToUInt32(@event["ActionId"], 10); + + ImplosionType implosionType = ImplosionType.FRONT; + bool actionIDConfirmed = false; + + switch (decimalActionID) + { + case 22196: + { + implosionType = ImplosionType.FRONT; + actionIDConfirmed = true; + break; + } + + case 22199: + { + implosionType = ImplosionType.BACK; + actionIDConfirmed = true; + break; + } + + case 22193: + { + implosionType = ImplosionType.LEFT; + actionIDConfirmed = true; + break; + } + + case 22190: + { + implosionType = ImplosionType.RIGHT; + actionIDConfirmed = true; + break; + } + + case 22197: + { + implosionType = ImplosionType.SHADOWY_FRONT; + actionIDConfirmed = true; + break; + } + + case 22200: + { + implosionType = ImplosionType.SHADOWY_BACK; + actionIDConfirmed = true; + break; + } + + case 22194: + { + implosionType = ImplosionType.SHADOWY_LEFT; + actionIDConfirmed = true; + break; + } + + case 22191: + { + implosionType = ImplosionType.SHADOWY_RIGHT; + actionIDConfirmed = true; + break; + } + + default: + { + accessory.Method.SendChat("/e 技能ID解析失败!"); + break; + } + } + + if (actionIDConfirmed) { + 向心聚爆_十亿斩击(accessory, @event.SourceId(), implosionType); + } + } + public void 向心聚爆_十亿斩击(ScriptAccessory accessory,uint entityId,ImplosionType implosionType) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + bool directionConfirmed = false; + + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = entityId; + dp.Scale = new Vector2(70); + dp.Radian = 180f.DegToRad(); + dp.DestoryAt = 5700; + + switch(implosionType) { + + case ImplosionType.FRONT: { + dp.Name = "前向心聚爆"; + directionConfirmed = true; + break; + } + + case ImplosionType.SHADOWY_FRONT: { + dp.Name = "影·前向心聚爆"; + directionConfirmed = true; + break; + } + + case ImplosionType.BACK: { + dp.Name = "后向心聚爆"; + dp.Rotation = 180f.DegToRad(); + directionConfirmed = true; + break; + } + + case ImplosionType.SHADOWY_BACK: { + dp.Name = "影·后向心聚爆"; + dp.Rotation = 180f.DegToRad(); + directionConfirmed = true; + break; + } + + case ImplosionType.LEFT: { + dp.Name = "左十亿斩击"; + dp.Rotation = 90f.DegToRad(); + directionConfirmed = true; + break; + } + + case ImplosionType.SHADOWY_LEFT: { + dp.Name = "影·左十亿斩击"; + dp.Rotation = 90f.DegToRad(); + directionConfirmed = true; + break; + } + + case ImplosionType.RIGHT: { + dp.Name = "右十亿斩击"; + dp.Rotation = -90f.DegToRad(); + directionConfirmed = true; + break; + } + + case ImplosionType.SHADOWY_RIGHT: { + dp.Name = "影·右十亿斩击"; + dp.Rotation = -90f.DegToRad(); + directionConfirmed = true; + break; + } + + default: { + accessory.Method.SendChat("/e 画图范围确定失败了!"); + break; + } + + } + if (directionConfirmed) { + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + } + + [ScriptMethod(name: "痛苦钩刺(连线狗狗半场)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:22233"])] + public void 痛苦钩刺(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "痛苦钩刺"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(40); //实际范围应为70m,此处为了方便看时间填充故设为场边半径 + dp.ScaleMode = ScaleMode.ByTime; + dp.Radian = 180f.DegToRad(); + dp.DestoryAt = 5700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + [ScriptMethod(name: "潜影(钻地钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:23313"])] + 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(20f); + dp.DestoryAt = 7200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "影之王权(起身钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:22215"])] + public void 影之王权(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "影之王权"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(16f); + dp.ScaleMode = ScaleMode.ByTime; + dp.DestoryAt = 6200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + + dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "影之王权描边"; + dp.Color = new Vector4(1f, 1f, 0f, 8f); + dp.Scale = new(16.08f); + dp.InnerScale = new(16); + dp.Radian = float.Pi * 2; + dp.Owner = @event.SourceId(); + dp.DestoryAt = 6200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp); + + dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "影之王权填充"; + dp.Color = new Vector4(1f, 1f, 0.2f, .8f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(16f); + dp.DestoryAt = 6200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "影之斩击(直线死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:23307"])] + public void 影之斩击(Event @event, ScriptAccessory accessory) + { + var pos = JsonConvert.DeserializeObject(@event["EffectPosition"]); + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "影之斩击"; + dp.Scale = new (8, 50f); + dp.Owner = @event.TargetId(); + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 3700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } + + [ScriptMethod(name: "影之喷发(脚下黄圈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:22241"])] + 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(6f); + dp.DestoryAt = 2700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, 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 string DurationMilliseconds(this Event @event) + { + return JsonConvert.DeserializeObject(@event["DurationMilliseconds"]) ?? string.Empty; + } + + 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); + } + } +} \ No newline at end of file diff --git a/06-EndWalker/the Voidcast Dais.cs b/06-EndWalker/the Voidcast Dais.cs new file mode 100644 index 0000000..afb9595 --- /dev/null +++ b/06-EndWalker/the Voidcast Dais.cs @@ -0,0 +1,254 @@ +using System; +using System.ComponentModel; +using System.Linq; +using System.Numerics; +using System.Collections.Generic; +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_Voidcast_Dais; + +[ScriptType(guid: "8a526afb-eefd-44ec-a105-7dc8fcd28e47", name: "高贝扎歼灭战", territorys: [1140], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class the_Voidcast_Dais +{ + const string noteStr = + """ + v0.0.0.1: + LV90 高贝扎(真神)初版绘制 + """; + + [ScriptMethod(name: "虚空陨石(死刑)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:0158"])] + public void 虚空陨石(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "虚空陨石"; + 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.StartCasting, eventCondition: ["ActionId:33893"])] + 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:regex:^(33899|33927)$"])] + 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; + 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); + } + + /* 实体ID会重复利用,无法Freeze 暂时作废 + [ScriptMethod(name: "虚空彗星雨(地火)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33959"])] + 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(6f); + dp.DestoryAt = 1500; + dp.Delay = 3000; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, 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/Deep Dungeon/Eureka_Orthos.cs b/Deep Dungeon/Eureka_Orthos.cs new file mode 100644 index 0000000..e2ca7a2 --- /dev/null +++ b/Deep Dungeon/Eureka_Orthos.cs @@ -0,0 +1,429 @@ +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 Eureka_Orthos; + +[ScriptType(guid: "5e8a4051-53f7-4eb3-bb32-b18df8b113aa", name: "正统优雷卡", territorys: [1099,1100,1101,1102,1103,1104,1105,1106,1107,1108], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class Eureka_Orthos { + const string noteStr = + """ + v0.0.0.1: + 正统优雷卡绘制 + 注:方法设置中的层数仅做分割线效果,并不是批量开关 + 现支持层数:1~20、99(BOSS) + 严重错误:暂未支持【缓速】【形态变化】【石化】【眩晕】【催眠】等限制 + 错误:第20层扇形绘制会有偏差 + """; + + //眩晕、催眠、石化1511、无法发动技能1113等状态都需要销毁绘图,缓速3493需要额外注意没有omen的技能 + + // 通用内容 + [ScriptMethod(name: "拟态怪_怨念提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32798"])] + public void 拟态怪_怨念(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("打断拟态怪", duration: 2700, true); + accessory.Method.TTS("打断拟态怪"); + } + + //精英怪 + [ScriptMethod(name: "\ue0c0 美拉西迪亚复制体 亚拉戈陨石", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^327(1[89]|20)$"])] + 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(25f); // 目标圈为 3.6 + dp.DestoryAt = 7700; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue0c0 亚灵智慧之灵 起源(狂暴)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^327(0[89]|10)$"])] + 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(82.6f); // 目标圈为 2.6 + dp.DestoryAt = 9700; //32710为9700,3270[89]为14700 + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue0c0 拉米亚女王 回旋斩(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^3272[789]$"])] + 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); // 目标圈为 2.0 + dp.DestoryAt = 2700; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + // 1~10层 小怪 + [ScriptMethod(name: "—————— \ue061 ~ \ue061\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第1层(Event @event, ScriptAccessory accessory) { } + [ScriptMethod(name: "正统贝希摩斯 黄道陨石(狂暴卡墙提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:33043"])] + public void 正统贝希摩斯_黄道陨石(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("狂暴,躲在墙壁后", duration: 2700, true); + accessory.Method.TTS("躲在墙壁后"); + } + + [ScriptMethod(name: "正统榴弹怪 大爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32381"])] + 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(6f); + dp.DestoryAt = 3200; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue05e 正统幽鬼之眼 恐怖视线(顺劈背对)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32386"])] + public void 正统幽鬼之眼_恐怖视线(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "正统幽鬼之眼_恐怖视线"; + dp.Color = new Vector4(1f, 0f, 1f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(8f); + dp.Radian = 90f.DegToRad(); + dp.DestoryAt = 2700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + // 10 BOSS 蜜言妖 + [ScriptMethod(name: "\ue061\ue060 蜜言妖 蔓德拉地雷(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:31478"])] + 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 = 4700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue061\ue060 蜜言妖 蔓德拉地雷(麻将)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32700"])] + public void 蜜言妖_蔓德拉地雷II(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "蜜言妖_蔓德拉地雷II"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(10f); + dp.Delay = 3700; + dp.DestoryAt = 4000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + // 11~20层 小怪 + [ScriptMethod(name: "—————— \ue061\ue061 ~ \ue062\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第11层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "正统锯齿花 均衡打击(扫尾)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32403"])] + 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(10); + dp.Radian = 180f.DegToRad(); + dp.Rotation = 180f.DegToRad(); + dp.DestoryAt = 2200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + // 20 BOSS 盾龙复制体 + [ScriptMethod(name: "\ue062\ue060 盾龙复制体_火焰吐息", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:32864"])] + //顺劈范围需要一定偏移 + //需要捕获 “vfx/channeling/eff/gard_pow00bf.avfx” 连线对场外的小龙进行4秒的提前绘制(距离场中24~45m) + //对于已经跳下来的场内小龙,需要在 32544 32864读条时取消绘制(距离场中23m) + 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(50); + dp.Radian = 30f.DegToRad(); + dp.DestoryAt = 3200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + // 21~30层 小怪 + + // 30 BOSS 提亚马特复制体 + + // 31~40层 小怪 + + // 40 BOSS 双塔尼亚复制体 + + // 41~50层 小怪 + + // 50 BOSS 自控化奇美拉 + + // 51~60层 小怪 + + // 60 BOSS 自控化弥诺陶洛斯 + + // 61~70层 小怪 + + // 70 BOSS 永恒 + + // 71~80层 小怪 + + // 80 BOSS 原形卡利亚 + + // 81~90层 小怪 + + // 90 BOSS 管理者 + + // 91~100层 小怪 + + + // 99 BOSS 王者之剑 + [ScriptMethod(name: "\ue069\ue069 王者之剑 魂剑之实(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:31327"])] + 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 = 5700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue069\ue069 王者之剑 魂剑之虚(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:31328"])] + 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(20f); + dp.InnerScale = new Vector2(4f); + dp.Radian = float.Pi * 2; + dp.DestoryAt = 5700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp); + } + + [ScriptMethod(name: "真空斩(四向顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:31342"])] + 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(20); + dp.Radian = 60f.DegToRad(); + dp.DestoryAt = 6700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp); + } + + /* + [ScriptMethod(name: "【未完成】次元斩(扇环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(31339|3134[01])$"])] + public void 次元斩(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "次元斩"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(7,12,22); + dp.InnerScale = new Vector2(2,7,17f); + dp.Radian = 180f.DegToRad(); + dp.DestoryAt = 6700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp); + } + */ + + [ScriptMethod(name: "【未完成】极寒冰川 (冰花) ", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:31347"])] + public void 极寒冰川(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "极寒冰川"; + dp.Scale = new (5, 40f); + 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:31344"])] + public void 极热炎流(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "极热炎流"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(8f); + dp.DestoryAt = 1500; + dp.Delay = 3200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, 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); + } + } +} \ No newline at end of file diff --git a/Deep Dungeon/the Palace of the Dead.cs b/Deep Dungeon/the Palace of the Dead.cs new file mode 100644 index 0000000..c965084 --- /dev/null +++ b/Deep Dungeon/the Palace of the Dead.cs @@ -0,0 +1,408 @@ +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_Palace_of_the_Dead; + + +[ScriptType(guid: "4210c323-eba4-4d67-a7e7-b90799494729", name: "死者宫殿", territorys: [561,562,563,564,565,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + + +public class the_Palace_of_the_Dead +{ + const string noteStr = + """ + v0.0.0.1: + 死者宫殿绘制 + 注:方法设置中的层数仅做分割线效果,并不是批量开关 + 现支持层数:171~200 + 严重错误:暂未支持【形态变化】【眩晕】【催眠】等限制 + """; + + //眩晕、催眠、无法发动技能1113等状态都需要销毁绘图 + + // 通用内容 + [ScriptMethod(name: "拟态怪_怨念提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:6397"])] + public void 拟态怪_怨念(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("打断拟态怪", duration: 2700, true); + accessory.Method.TTS("打断拟态怪"); + } + + // 21~30层 小怪 + [ScriptMethod(name: "\ue05b 地宫斯卡尼特 唧唧咋咋(睡眠钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:6365"])] + public void 地宫斯卡尼特_唧唧咋咋(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "地宫斯卡尼特_唧唧咋咋"; + dp.Color = new Vector4(1f, 0f, 1f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(3f); //表格里的范围是20,待证实 还需要加目标圈 + dp.DestoryAt = 2200; + dp.ScaleMode = ScaleMode.ByTime; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + // 101~110层 小怪 + [ScriptMethod(name: "—————— \ue061\ue060\ue061 ~ \ue061\ue061\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第101层(Event @event, ScriptAccessory accessory) { } + + // 111~120层 小怪 + [ScriptMethod(name: "—————— \ue061\ue061\ue061 ~ \ue061\ue062\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第111层(Event @event, ScriptAccessory accessory) { } + + // 121~130层 小怪 + [ScriptMethod(name: "—————— \ue061\ue062\ue061 ~ \ue061\ue063\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第121层(Event @event, ScriptAccessory accessory) { } + + // 131~140层 小怪 + [ScriptMethod(name: "—————— \ue061\ue063\ue061 ~ \ue061\ue064\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第131层(Event @event, ScriptAccessory accessory) { } + + // 141~150层 小怪 + [ScriptMethod(name: "—————— \ue061\ue064\ue061 ~ \ue061\ue065\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第141层(Event @event, ScriptAccessory accessory) { } + + // 151~160层 小怪 + [ScriptMethod(name: "—————— \ue061\ue065\ue061 ~ \ue061\ue066\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第151层(Event @event, ScriptAccessory accessory) { } + + // 161~170层 小怪 + [ScriptMethod(name: "—————— \ue061\ue066\ue061 ~ \ue061\ue067\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第161层(Event @event, ScriptAccessory accessory) { } + + // 171~180层 小怪 + [ScriptMethod(name: "—————— \ue061\ue067\ue061 ~ \ue061\ue068\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第171层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "深宫独眼雪巨人 怒视(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7061"])] + public void 深宫独眼雪巨人_怒视(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "深宫独眼雪巨人_怒视"; + dp.Scale = new (7, 21f); + dp.Owner = @event.SourceId(); + dp.Color = accessory.Data.DefaultDangerColor; + dp.DestoryAt = 3200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp); + } + + [ScriptMethod(name: "深宫独眼雪巨人 百吨回转(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:6971"])] + 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(12f); + dp.DestoryAt = 4700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "深宫大脚巨猿 捶胸(脱战钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:6973"])] + public void 深宫大脚巨猿_捶胸(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = $"深宫大脚巨猿_捶胸{@event.SourceId()}"; + dp.Color = new Vector4(1f, 0.8f, 0f, 0.3f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(53.6f); + dp.Delay = 1700; + dp.DestoryAt = 15300; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "深宫大脚巨猿 捶胸销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:6499"], userControl: false)] + public void 深宫大脚巨猿_捶胸销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw($"深宫大脚巨猿_捶胸{@event.SourceId()}"); + } + + [ScriptMethod(name: "\ue061\ue068\ue060 丹代恩索涅 吸引(钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:6384"])] + public void 丹代恩索涅_吸引(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = $"丹代恩索涅_吸引{@event.SourceId()}"; + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(10f); + dp.DestoryAt = 44000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "丹代恩索涅 吸引销毁", eventType: EventTypeEnum.RemoveCombatant, eventCondition: ["DataId:6384"], userControl: false)] + public void 深宫大脚巨猿_吸引销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw($"丹代恩索涅_吸引{@event.SourceId()}"); + } + + [ScriptMethod(name: "\ue061\ue068\ue060 丹代恩索涅 黄道陨石", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7166"])] + public void 丹代恩索涅_黄道陨石(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("80%真伤", duration: 5, true); + accessory.Method.TTS("80%真伤"); + } + + // 181~190层 小怪 + [ScriptMethod(name: "—————— \ue061\ue068\ue061 ~ \ue061\ue069\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第181层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "\ue05e 深宫加姆 寒冰咆哮(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7078"])] + 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(10.4f); + dp.DestoryAt = 2700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue05e 深宫加姆 雷电咆哮(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7079"])] + 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(30f); + dp.InnerScale = new Vector2(7f); + dp.Radian = float.Pi * 2; + dp.DestoryAt = 4200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp); + } + + // 190层 BOSS 爆弹怪教父 + [ScriptMethod(name: "\ue061\ue069\ue060 眩晕爆弹怪 冰碎(钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:6387"])] + public void 眩晕爆弹怪_冰碎(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "眩晕爆弹怪_冰碎"; + dp.Color = new Vector4(1f, 0.5f, 0f, 1.5f); + dp.Color = accessory.Data.DefaultDangerColor; + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(6.6f); + dp.DestoryAt = 8400; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue061\ue069\ue060 治疗爆弹怪 击杀提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:6385"])] + public void 治疗爆弹怪_击杀提示(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("击杀治疗爆弹怪", duration: 5, true); + accessory.Method.TTS("击杀治疗爆弹怪"); + } + + [ScriptMethod(name: "\ue061\ue069\ue060 熔岩爆弹怪 震撼弹提示", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:6386"])] + public void 熔岩爆弹怪_震撼弹(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("将熔岩爆弹怪推至BOSS脚下", duration: 5, true); + accessory.Method.TTS("将熔岩爆弹怪推至BOSS脚下"); + + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "熔岩爆弹怪_震撼弹"; + dp.Color = new Vector4(1f, 0f, 0f, 3f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(7.2f); + dp.DestoryAt = 24700; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "熔岩爆弹怪 震撼弹销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:7170"], userControl: false)] + public void 熔岩爆弹怪_震撼弹销毁(Event @event, ScriptAccessory accessory) + { + accessory.Method.RemoveDraw($"熔岩爆弹怪_震撼弹"); + } + + [ScriptMethod(name: "\ue061\ue069\ue060 爆弹怪教父 特大爆炸提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7103"])] + public void 爆弹怪教父_特大爆炸提示(Event @event, ScriptAccessory accessory) + { + accessory.Method.TextInfo("99.9%真伤,注意瞬回", duration: 10, true); + accessory.Method.TTS("99.9%真伤,注意瞬回"); + } + + [ScriptMethod(name: "特大爆炸打断销毁", eventType: EventTypeEnum.CancelAction, eventCondition: ["ActionId:7103"], userControl: false)] + public void 特大爆炸打断销毁(Event @event, ScriptAccessory accessory) + { + /* 判断读条时间: + if 7103 读条至14.8s时 :触发方法 + else:取消对应方法触发 + */ + } + + // 191~200层 小怪 + [ScriptMethod(name: "—————— \ue061\ue069\ue061 ~ \ue062\ue060\ue060 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])] + public void 第191层(Event @event, ScriptAccessory accessory) { } + + [ScriptMethod(name: "奥尼克斯龙 邪视(背对)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7043"])] + public void 奥尼克斯龙_邪视(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + dp.Name = "奥尼克斯龙_邪视"; + dp.Color = new Vector4(1f, 0f, 1f, 0.6f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(13f); + dp.DestoryAt = 2200; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); + } + + [ScriptMethod(name: "\ue05e 深宫幽鬼之眼 5级即死 (扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:7084"])] + public void 深宫幽鬼之眼_5级即死(Event @event, ScriptAccessory accessory) + { + var dp = accessory.Data.GetDefaultDrawProperties(); + + dp.Name = "深宫幽鬼之眼_5级即死"; + dp.Color = new Vector4(1f, 0f, 0f, 1f); + dp.Owner = @event.SourceId(); + dp.Scale = new Vector2(7.1f); + dp.Radian = 120f.DegToRad(); + dp.DestoryAt = 3200; + 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"]); + } +} + + +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/TetoraKodakkuScript.csproj b/TetoraKodakkuScript.csproj new file mode 100644 index 0000000..cae46c0 --- /dev/null +++ b/TetoraKodakkuScript.csproj @@ -0,0 +1,50 @@ + + + + net8.0-windows + The_Navel___EX + enable + enable + true + + + + $(appdata)\XIVLauncherCN\addon\Hooks\dev\ + $(appdata)\XIVLauncherCN\installedPlugins\KodakkuAssist\0.1.15.0\ + + + + + $(DalamudLibPath)Dalamud.dll + + + $(DalamudLibPath)Dalamud.Common.dll + + + $(DalamudLibPath)FFXIVClientStructs.dll + + + $(DalamudLibPath)ImGui.NET.dll + + + $(DalamudLibPath)Newtonsoft.Json.dll + + + $(DalamudLibPath)Lumina.dll + + + $(DalamudLibPath)Lumina.Excel.dll + + + $(KodakkuLibPath)ECommons.dll + + + $(KodakkuLibPath)KodakkuAssist.dll + + + + + + + + diff --git a/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfo.cs b/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfo.cs new file mode 100644 index 0000000..7d79a81 --- /dev/null +++ b/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfo.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyTitleAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.RequiresPreviewFeaturesAttribute()] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfoInputs.cache b/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfoInputs.cache new file mode 100644 index 0000000..6ee167b --- /dev/null +++ b/obj/Debug/net8.0-windows/TetoraKodakkuScript.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +e248aaba51f9da6c4cbe43f630732475a8624bee967167753409fa04c7a515cf diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0-windows/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..643be91 --- /dev/null +++ b/obj/Debug/net8.0-windows/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = The_Navel___EX +build_property.ProjectDir = E:\Rider Programs\TetoraKodakkuScript\TetoraKodakkuScript\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.GlobalUsings.g.cs b/obj/Debug/net8.0-windows/TetoraKodakkuScript.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net8.0-windows/TetoraKodakkuScript.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.assets.cache b/obj/Debug/net8.0-windows/TetoraKodakkuScript.assets.cache new file mode 100644 index 0000000..66a67f6 Binary files /dev/null and b/obj/Debug/net8.0-windows/TetoraKodakkuScript.assets.cache differ diff --git a/obj/Debug/net8.0-windows/TetoraKodakkuScript.csproj.AssemblyReference.cache b/obj/Debug/net8.0-windows/TetoraKodakkuScript.csproj.AssemblyReference.cache new file mode 100644 index 0000000..5789b27 Binary files /dev/null and b/obj/Debug/net8.0-windows/TetoraKodakkuScript.csproj.AssemblyReference.cache differ diff --git a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfo.cs b/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfo.cs new file mode 100644 index 0000000..1344834 --- /dev/null +++ b/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyTitleAttribute("TetoraKodakkuScript")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfoInputs.cache b/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfoInputs.cache new file mode 100644 index 0000000..7b71e85 --- /dev/null +++ b/obj/Debug/net8.0/TetoraKodakkuScript.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +5831351f7281039c350c7f4b64391d53a119d0663104c981a711a463f51c9d54 diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f1e1e8c --- /dev/null +++ b/obj/Debug/net8.0/TetoraKodakkuScript.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = TetoraKodakkuScript +build_property.ProjectDir = E:\Rider Programs\TetoraKodakkuScript\TetoraKodakkuScript\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.GlobalUsings.g.cs b/obj/Debug/net8.0/TetoraKodakkuScript.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net8.0/TetoraKodakkuScript.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.assets.cache b/obj/Debug/net8.0/TetoraKodakkuScript.assets.cache new file mode 100644 index 0000000..dab40e2 Binary files /dev/null and b/obj/Debug/net8.0/TetoraKodakkuScript.assets.cache differ diff --git a/obj/Debug/net8.0/TetoraKodakkuScript.csproj.AssemblyReference.cache b/obj/Debug/net8.0/TetoraKodakkuScript.csproj.AssemblyReference.cache new file mode 100644 index 0000000..e51aa66 Binary files /dev/null and b/obj/Debug/net8.0/TetoraKodakkuScript.csproj.AssemblyReference.cache differ diff --git a/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json b/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json new file mode 100644 index 0000000..e948bc5 --- /dev/null +++ b/obj/TetoraKodakkuScript.csproj.nuget.dgspec.json @@ -0,0 +1,67 @@ +{ + "format": 1, + "restore": { + "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj": {} + }, + "projects": { + "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", + "projectName": "TetoraKodakkuScript", + "projectPath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", + "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" + ], + "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 diff --git a/obj/TetoraKodakkuScript.csproj.nuget.g.props b/obj/TetoraKodakkuScript.csproj.nuget.g.props new file mode 100644 index 0000000..4ba230c --- /dev/null +++ b/obj/TetoraKodakkuScript.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\19036\.nuget\packages\ + PackageReference + 6.12.0 + + + + + \ No newline at end of file diff --git a/obj/TetoraKodakkuScript.csproj.nuget.g.targets b/obj/TetoraKodakkuScript.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/obj/TetoraKodakkuScript.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/obj/project.assets.json b/obj/project.assets.json new file mode 100644 index 0000000..4b9bd4b --- /dev/null +++ b/obj/project.assets.json @@ -0,0 +1,72 @@ +{ + "version": 3, + "targets": { + "net8.0-windows7.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net8.0-windows7.0": [] + }, + "packageFolders": { + "C:\\Users\\19036\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", + "projectName": "TetoraKodakkuScript", + "projectPath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", + "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" + ], + "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 diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache new file mode 100644 index 0000000..b303876 --- /dev/null +++ b/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "fHx+6n9/CFM=", + "success": true, + "projectFilePath": "E:\\Rider Programs\\TetoraKodakkuScript\\TetoraKodakkuScript\\TetoraKodakkuScript.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/obj/project.packagespec.json b/obj/project.packagespec.json new file mode 100644 index 0000000..3b91d85 --- /dev/null +++ b/obj/project.packagespec.json @@ -0,0 +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 diff --git a/obj/rider.project.model.nuget.info b/obj/rider.project.model.nuget.info new file mode 100644 index 0000000..a210e24 --- /dev/null +++ b/obj/rider.project.model.nuget.info @@ -0,0 +1 @@ +17378256062330333 \ No newline at end of file diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info new file mode 100644 index 0000000..a210e24 --- /dev/null +++ b/obj/rider.project.restore.info @@ -0,0 +1 @@ +17378256062330333 \ No newline at end of file