From 3978d5f286c50d93a16e2c5805651d31ff6b72ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E6=B2=A2=E5=93=8D=E4=B9=9F?= <72963826+Hibiya615@users.noreply.github.com> Date: Tue, 25 Mar 2025 03:42:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=91=BD=E5=90=8D=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...arch(Hard).cs => Good_King_Moggle-Hard.cs} | 0 ...xtreme.cs => Good_King_Moggle(Extreme).cs} | 0 ...eater-Extreme.cs => Leviathan(Extreme).cs} | 0 02-A-Realm-Reborn/{the_Hydra.cs => Hydra.cs} | 0 ...Bowl_of_Embers(Hard).cs => Ifrit(Hard).cs} | 0 .../{Urth's_Fount.cs => Odin.cs} | 0 ...heStrikingTree(Hard).cs => Ramuh(Hard).cs} | 0 .../High-end-Trials/Ravana-Extreme.cs | 161 ++++++++++++++++++ 04-Stormblood/{Emanation.cs => Lakshmi.cs} | 2 +- .../{theRoyalMenagerie.cs => Shinryu.cs} | 2 +- .../{the_Voidcast_Dais.cs => Golbez.cs} | 4 +- 11 files changed, 165 insertions(+), 4 deletions(-) rename 02-A-Realm-Reborn/{Thornmarch(Hard).cs => Good_King_Moggle-Hard.cs} (100%) rename 02-A-Realm-Reborn/High-end-Trials/{Thornmarch-Extreme.cs => Good_King_Moggle(Extreme).cs} (100%) rename 02-A-Realm-Reborn/High-end-Trials/{the_Whorleater-Extreme.cs => Leviathan(Extreme).cs} (100%) rename 02-A-Realm-Reborn/{the_Hydra.cs => Hydra.cs} (100%) rename 02-A-Realm-Reborn/{the_Bowl_of_Embers(Hard).cs => Ifrit(Hard).cs} (100%) rename 02-A-Realm-Reborn/{Urth's_Fount.cs => Odin.cs} (100%) rename 02-A-Realm-Reborn/{theStrikingTree(Hard).cs => Ramuh(Hard).cs} (100%) create mode 100644 03-Heavensward/High-end-Trials/Ravana-Extreme.cs rename 04-Stormblood/{Emanation.cs => Lakshmi.cs} (99%) rename 04-Stormblood/{theRoyalMenagerie.cs => Shinryu.cs} (99%) rename 06-EndWalker/{the_Voidcast_Dais.cs => Golbez.cs} (99%) diff --git a/02-A-Realm-Reborn/Thornmarch(Hard).cs b/02-A-Realm-Reborn/Good_King_Moggle-Hard.cs similarity index 100% rename from 02-A-Realm-Reborn/Thornmarch(Hard).cs rename to 02-A-Realm-Reborn/Good_King_Moggle-Hard.cs diff --git a/02-A-Realm-Reborn/High-end-Trials/Thornmarch-Extreme.cs b/02-A-Realm-Reborn/High-end-Trials/Good_King_Moggle(Extreme).cs similarity index 100% rename from 02-A-Realm-Reborn/High-end-Trials/Thornmarch-Extreme.cs rename to 02-A-Realm-Reborn/High-end-Trials/Good_King_Moggle(Extreme).cs diff --git a/02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs b/02-A-Realm-Reborn/High-end-Trials/Leviathan(Extreme).cs similarity index 100% rename from 02-A-Realm-Reborn/High-end-Trials/the_Whorleater-Extreme.cs rename to 02-A-Realm-Reborn/High-end-Trials/Leviathan(Extreme).cs diff --git a/02-A-Realm-Reborn/the_Hydra.cs b/02-A-Realm-Reborn/Hydra.cs similarity index 100% rename from 02-A-Realm-Reborn/the_Hydra.cs rename to 02-A-Realm-Reborn/Hydra.cs diff --git a/02-A-Realm-Reborn/the_Bowl_of_Embers(Hard).cs b/02-A-Realm-Reborn/Ifrit(Hard).cs similarity index 100% rename from 02-A-Realm-Reborn/the_Bowl_of_Embers(Hard).cs rename to 02-A-Realm-Reborn/Ifrit(Hard).cs diff --git a/02-A-Realm-Reborn/Urth's_Fount.cs b/02-A-Realm-Reborn/Odin.cs similarity index 100% rename from 02-A-Realm-Reborn/Urth's_Fount.cs rename to 02-A-Realm-Reborn/Odin.cs diff --git a/02-A-Realm-Reborn/theStrikingTree(Hard).cs b/02-A-Realm-Reborn/Ramuh(Hard).cs similarity index 100% rename from 02-A-Realm-Reborn/theStrikingTree(Hard).cs rename to 02-A-Realm-Reborn/Ramuh(Hard).cs diff --git a/03-Heavensward/High-end-Trials/Ravana-Extreme.cs b/03-Heavensward/High-end-Trials/Ravana-Extreme.cs new file mode 100644 index 0000000..5e36042 --- /dev/null +++ b/03-Heavensward/High-end-Trials/Ravana-Extreme.cs @@ -0,0 +1,161 @@ +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 Ravana; + +[ScriptType(guid: "336990c6-8686-4691-8b7a-3ec8ffedfc19", name: "罗波那歼殛战", territorys: [446], + version: "0.0.0.1", author: "Tetora", note: noteStr)] + +public class Ravana +{ + const string noteStr = + """ + v0.0.0.1: + LV60 罗波那歼殛战 初版绘制 + """; +} + + +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/04-Stormblood/Emanation.cs b/04-Stormblood/Lakshmi.cs similarity index 99% rename from 04-Stormblood/Emanation.cs rename to 04-Stormblood/Lakshmi.cs index 4e333c8..13930c9 100644 --- a/04-Stormblood/Emanation.cs +++ b/04-Stormblood/Lakshmi.cs @@ -19,7 +19,7 @@ namespace Emanation; [ScriptType(guid: "a7bacd3e-834f-41ba-a210-c66e2c12d208", name: "吉祥天女歼灭战", territorys: [719], version: "0.0.0.2", author: "Tetora", note: noteStr)] -public class Emanation +public class Lakshmi { const string noteStr = """ diff --git a/04-Stormblood/theRoyalMenagerie.cs b/04-Stormblood/Shinryu.cs similarity index 99% rename from 04-Stormblood/theRoyalMenagerie.cs rename to 04-Stormblood/Shinryu.cs index cbcebba..b29ec48 100644 --- a/04-Stormblood/theRoyalMenagerie.cs +++ b/04-Stormblood/Shinryu.cs @@ -20,7 +20,7 @@ namespace theRoyalMenagerie; [ScriptType(guid: "da23fd13-2d1f-41d3-b2c9-91fd8d948a98", name: "神龙歼灭战", territorys: [679], version: "0.0.0.1", author: "Tetora", note: noteStr)] -public class theRoyalMenagerie +public class Shinryu { const string noteStr = """ diff --git a/06-EndWalker/the_Voidcast_Dais.cs b/06-EndWalker/Golbez.cs similarity index 99% rename from 06-EndWalker/the_Voidcast_Dais.cs rename to 06-EndWalker/Golbez.cs index afb9595..eb3fd50 100644 --- a/06-EndWalker/the_Voidcast_Dais.cs +++ b/06-EndWalker/Golbez.cs @@ -19,12 +19,12 @@ 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 +public class Golbez { const string noteStr = """ v0.0.0.1: - LV90 高贝扎(真神)初版绘制 + LV90 高贝扎歼灭战 初版绘制 """; [ScriptMethod(name: "虚空陨石(死刑)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:0158"])]