Files
Hibiya615-TetoraKAScript/Deep_Dungeon/Pilgrims_Traverse.cs
南沢响也 4f39282f12 更新妖宫
2025-11-09 03:14:55 +08:00

3020 lines
137 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.ComponentModel;
using System.Linq;
using System.Numerics;
using System.Collections.Generic;
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 System.Threading.Tasks;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Control;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
namespace Pilgrims_Traverse;
[ScriptType(guid: "3f65b3c0-df48-4ef8-89ae-b8091b7690f1", name: "朝圣交错路", author: "Tetora",
territorys: [1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1311, 1333],
version: "0.0.0.7",note: noteStr)]
public class Pilgrims_Traverse
{
const string noteStr =
"""
v0.0.0.7:
dc
线
ARR反馈
""";
#region
/* StatusID
* 变身 4708 [StackCount:54 Param:566 泥球 ] [StackCount:55 Param:567 爆弹之母 ]
* 极速冲刺 4709
* 禁止使用杜松香 4591
* 诅咒 1087 (拟态怪 - 怨念)
* 失明 1088
* 最大体力减少 1089
* 伤害降低 1090
* 加速 1091
* 能力封印 1092
* 最大体力魔力提升 1093
* 禁止使用道具 1094
* 禁止冲刺 1095
* 击退无效 1096
* 禁止体力自然恢复 1097
* 无法发动技能 1113 (形态变化)
*/
/* DataId
* 传送装置 2014756
* 再生祭坛 2014755
* 光耀烛台 2014759
* 埋藏的宝藏 2007542
*
* 金宝箱 2007358
* 银宝箱 2007357
* 铜宝箱拟态怪2006020
* 铜宝箱 [1~10层] 1882 [11~20层] 1881 [21~30层] 1883 1884 [31~40层] 1885 1886 [41~50层] 1887 1888
* [51~60层] 1889 1906 [61~70层] 1890 1907 [71~80层] 1891 1908 [81~90层] 1892 [91~100层] 1893
*
* 地雷陷阱 2007182
* 诱饵陷阱 2007183
* 弱化陷阱 2007184
* 妨碍陷阱 2007185
* 妖灵陷阱 2014939
*/
#endregion
#region
[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;
[UserSetting("是否启用遁地特殊绘制")]
public bool isUnderGround { get; set; } = true;
[UserSetting("遁地能打到的AOE颜色")]
public ScriptColor UnderGround_AOEs { get; set; } = new() { V4 = new(1f, 0f, 0f, 1f) };
[UserSetting("启用小工具(已确认设置完毕)")]
public bool isMiniTools { get; set; } = false;
[UserSetting("设置传送装置查找颜色")]
public ScriptColor teleporter { get; set; } = new() { V4 = new(0f, 1f, 0f, 2f) };
[UserSetting("设置光耀烛台查找颜色")]
public ScriptColor votiveCandelabra { get; set; } = new() { V4 = new(1f, 0f, 1f, 1.4f) };
[UserSetting(note: "选择自动苏生之炎对象")]
public RekindleEnum Rekindle { get; set; } = RekindleEnum.TargetsTarget;
public enum RekindleEnum
{
[Description("<tt>")]
TargetsTarget = 0,
[Description("<2>")]
PartyList2 = 1,
[Description("<me>")]
Me = 2,
}
[UserSetting("启用底裤(需要对应插件与权限)")]
public bool isHack { get; set; } = false;
[UserSetting(note: "选择默认遁地深度")]
public DepthsEnum Depths { get; set; } = DepthsEnum.Default;
public enum DepthsEnum
{
[Description("0")]
Default = 0,
[Description("2")]
Depths2 = 1,
[Description("3")]
Depths3 = 2,
[Description("5")]
Depths5 = 3,
[Description("7")]
Depths7 = 4,
[Description("20")]
Depths20 = 5,
[Description("50")]
Depths50 = 6,
}
[UserSetting("开发者模式")]
public bool isDeveloper { get; set; } = false;
#endregion
#region
public static class MapIds
{
public const uint PilgrimsTraverse0 = 1281; // 第 1~10朝圣路
public const uint PilgrimsTraverse1 = 1282;
public const uint PilgrimsTraverse2 = 1283;
public const uint PilgrimsTraverse3 = 1284;
public const uint PilgrimsTraverse4 = 1285;
public const uint PilgrimsTraverse5 = 1286;
public const uint PilgrimsTraverse6 = 1287;
public const uint PilgrimsTraverse7 = 1288;
public const uint PilgrimsTraverse8 = 1289;
public const uint PilgrimsTraverse9 = 1290;
public const uint TheFinalVerse = 1333; // 卓异的悲寂歼灭战
public const uint TheFinalVerseQuantum = 1311; // 卓异的悲寂深想战
}
[ScriptMethod(name: "伤头&插言 打断销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^75(38|51)$"], userControl: false)]
public void (Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($".*{@event.TargetId()}");
}
[ScriptMethod(name: "特殊状态销毁", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^(2|3|1511|1113)$"], userControl: false)]
public void (Event @event, ScriptAccessory accessory)
{
// 赋予对应怪物 眩晕[2]、睡眠[3]、石化[1511]、(形态变化)无法发动技能[1113] 等状态都需要销毁绘图
accessory.Method.RemoveDraw($".*{@event.TargetId()}");
}
[ScriptMethod(name: "咏唱中断销毁", eventType: EventTypeEnum.CancelAction, eventCondition: [], userControl: false)]
public void (Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($".*{@event.SourceId()}");
}
[ScriptMethod(name: "死亡销毁", eventType: EventTypeEnum.Death, eventCondition: [], userControl: false)]
public void (Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($".*{@event.SourceId()}");
}
[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(".*(击退|吸蚀).*");
}
public bool KnockPenalty = false;
[ScriptMethod(name: "天气:击退无效添加", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:1096"],userControl: false)]
public void 退buff(Event @event, ScriptAccessory accessory)
{
KnockPenalty = true;
}
[ScriptMethod(name: "天气:击退无效移除", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:1096"],userControl: false)]
public void 退buff(Event @event, ScriptAccessory accessory)
{
KnockPenalty = false;
}
/*
[ScriptMethod(name: "死亡重置", eventType: EventTypeEnum.Death, eventCondition: ["TargetDataId:0"], userControl: false)]
public void 死亡重置(Event @event, ScriptAccessory accessory)
{
if (isDeveloper) accessory.Method.SendChat($"/e 调试信息:检测到死亡,已重置变量");
}
*/
#endregion
// 通用内容
[ScriptMethod(name: "拟态怪_怨念提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44852"])]
public void _怨念(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo("打断拟态怪", duration: 2000, true);
if (isTTS) accessory.Method.TTS("打断拟态怪");
if (isEdgeTTS)accessory.Method.EdgeTTS("打断拟态怪");
}
#region
[ScriptMethod(name: "—————— 小工具部分(先自行关闭不需要的功能) ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void (Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "自身爆弹之母 大爆炸范围绘制", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44629"])]
public void _大爆炸Self (Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() != accessory.Data.Me) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"爆弹之母_大爆炸{@event.SourceId()}";
dp.Color = accessory.Data.DefaultSafeColor.WithW(0.8f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.DestoryAt = 1500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "传送装置查找", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["DataId:2014756", "Operate:Add"])]
public void (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"传送装置查找";
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Scale = new (1f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Color = teleporter.V4;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "光耀烛台查找", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["DataId:2014759", "Operate:Add"])]
public void 耀(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"光耀烛台";
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Scale = new (1f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Color = votiveCandelabra.V4;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "光耀烛台销毁", eventType: EventTypeEnum.ObjectEffect, eventCondition: ["Id1:16", "Id2:32"], userControl: false)]
public void 耀(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"光耀烛台");
}
/*
[ScriptMethod(name: "光耀烛台 温暖气息提示", eventType: EventTypeEnum.Chat, eventCondition: ["Type:SystemMessage", "Message:察觉到了灯火般温暖的神秘气息……"])]
public void 光耀烛台_温暖气息提示(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS("本层有烛台");
if (isEdgeTTS)accessory.Method.EdgeTTS("本层有烛台");
}
*/
/*
[ScriptMethod(name: "队友爆弹之母 大爆炸范围绘制", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44629"])]
public void 爆弹之母_大爆炸Party (Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() == accessory.Data.Me) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"爆弹之母_大爆炸{@event.SourceId()}";
dp.Color = accessory.Data.DefaultSafeColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.DestoryAt = 1500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
[ScriptMethod(name: "自动取消二段火神冲(防止遁地打不到导致自动循环卡死)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4403"])]
public void AutoRemoveCrimsonStrike(Event @event, ScriptAccessory accessory)
{
if(!isMiniTools || @event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/statusoff 深红强袭预备");
if (isDeveloper) accessory.Method.SendChat($"/e 鸭鸭:已取消《深红强袭预备》");
}
[ScriptMethod(name: "自动尝试挂不死鸟热水遁地了也很team", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:1868"])]
public void AutoUseRekindle(Event @event, ScriptAccessory accessory)
{
string rekindleValue = Rekindle.GetDescription();
if(!isMiniTools || @event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/ac 星极超流 {rekindleValue}");
accessory.Method.SendChat($"/e 鸭鸭:已尝试自动给《{rekindleValue}》挂上不死鸟热水");
}
#endregion
#region 1~10
[ScriptMethod(name: "—————— 1 ~ 10 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 1(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "10 花小人_百花齐放钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44855"])]
public void _百花齐放 (Event @event, ScriptAccessory accessory)
{
// 44054 为无意义读条 (应是黄圈生成的过程), 伤害源为 44855 二者读条时间不同
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"花小人_百花齐放";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(14f);
dp.DestoryAt = 13200;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"花小人_百花齐放描边";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(14f);
dp1.InnerScale = new Vector2(13.9f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 13200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "10 花人_压花跳跃钢铁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:44058"])]
public void _压花 (Event @event, ScriptAccessory accessory)
{
// 花人本体读条 [ ActionId: 44055 ; Cast 9.7s] ,四连跳跃标记为 [ ActionId: 44058 ] 约在释放后 8.9s 造成伤害 每次间隔约 1.8s, 伤害源 [ ActionId: 44057 ; Cast 1.6s]
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"花人_压花";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(15f);
dp.Delay = 2700;
dp.DestoryAt = 6200;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"花人_压花描边";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Position = @event.EffectPosition();
dp1.Scale = new Vector2(15f);
dp1.InnerScale = new Vector2(14.94f);
dp1.Radian = float.Pi * 2;
dp1.Delay = 2700;
dp1.DestoryAt = 6200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
#endregion
#region 11~20
[ScriptMethod(name: "—————— 11 ~ 20 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 11(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "20 得到宽恕的模仿_爆炸四连钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4345[6-9]$"])]
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(11f);
switch (@event.ActionId())
{
case 43456:
dp.Delay = 0;
dp.DestoryAt = 1700;
break;
case 43457:
dp.Delay = 1700;
dp.DestoryAt = 1300;
break;
case 43458:
dp.Delay = 3000;
dp.DestoryAt = 1300;
break;
case 43459:
dp.Delay = 4300;
dp.DestoryAt = 1300;
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "20 树根_缠绕冰花", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["DataId:2014795", "Operate:Add"])]
public void _缠绕(Event @event, ScriptAccessory accessory)
{
// 放置的头标点名 TargetIconId: 0017 , 缠绕 ActionId: 43462
float[] degrees = { 0f, 45f, 90f, 135f };
foreach (float degree in degrees)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"树根_缠绕_{degree}°";
dp.Scale = new (6f, 60f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.DestoryAt = 19200;
dp.Rotation = degree * (float)Math.PI / 180f;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
#endregion
#region 21~30
[ScriptMethod(name: "—————— 21 ~ 30 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 21(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "フォーギヴン・トレチャリー_光耀讃詞月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^3964[2-4]$"])]
public void 光耀讃詞 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_光耀讃詞";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
switch (@event.ActionId())
{
case 39642:
dp.Scale = new Vector2(14f);
dp.InnerScale = new Vector2(9f);
break;
case 39643:
dp.Scale = new Vector2(19f);
dp.InnerScale = new Vector2(14f);
break;
case 39644:
dp.Scale = new Vector2(24f);
dp.InnerScale = new Vector2(19f);
break;
}
dp.Radian = float.Pi * 2;
dp.Delay = 7000;
dp.DestoryAt = @event.DurationMilliseconds() - 7000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "フォーギヴン・トレチャリー_救済の拳左右刀", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(40401|40549)$"])]
public void (Event @event, ScriptAccessory accessory)
{
// 右刀 40401 左刀 40549
// var aid = JsonConvert.DeserializeObject<uint>(@event["ActionId"]);
var isR = @event.ActionId == 40401;
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var hitboxRadius = IbcHelper.GetHitboxRadius(obj);
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・トレチャリー_救済の拳";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30f + hitboxRadius); // 30m + 目标圈
dp.Radian = 180f.DegToRad();
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
#endregion
#region 31~40
[ScriptMethod(name: "—————— 31 ~ 40 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 31(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "トラバース・ペガサス_天馬のいななき钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44703"])]
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(12f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "フォーギヴン・ナイヴテイ_ブレッシングブロウ(黄)(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42129"])]
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 = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "フォーギヴン・ナイヴテイ_ラウンドタイド钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45169"])]
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(13f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "フォーギヴン・ナイヴテイ_リングタイド月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45170"])]
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(28f);
dp.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "フォーギヴン・ペチュランス_テンタクル左右刀", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4469[01]$"])]
public void テンタクル(Event @event, ScriptAccessory accessory)
{
// 右刀 44691 左刀 44690
var isR = @event.ActionId == 44691;
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_テンタクル";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f + IbcHelper.GetHitboxRadius(obj)); // 60m + 目标圈
dp.Radian = 180f.DegToRad();
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "トラバース・ストーンライオン_キャッチクロウ顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44698"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"トラバース・ストーンライオン_キャッチクロウ{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(6.5f + IbcHelper.GetHitboxRadius(obj)); // 6.5m + 目标圈
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "トラバース・インクイジター_葬送击直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44694"])]
public void (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"トラバース・インクイジター_葬送击{@event.SourceId()}";
dp.Scale = new (2f, 21f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
#endregion
#region 41~50
[ScriptMethod(name: "—————— 41 ~ 50 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 41(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "トラバース・ウェポン_怒りの旋風钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44715"])]
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(6f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・トルバ_トータスストンプ钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:41724"])]
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(8f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
#endregion
#region 51~59
[ScriptMethod(name: "—————— 51 ~ 60 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 51(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "トラバース・ギガント_ヘビーラリアット钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44737"])]
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(8f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・サンドサーペント_アースオーガー扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42091"])]
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(30f);
dp.Radian = 270f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "トラバース・ハウラー_サイズテール钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44731"])]
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 = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・ハウラー_外环雷月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44732"])]
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(5f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "トラバース・サイカニア_トラウンス扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42147"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"トラバース・サイカニア_トラウンス{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f + IbcHelper.GetHitboxRadius(obj)); // 40m + 目标圈
dp.Radian = 60f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "トラバース・サイカニア_マイティスピン钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42148"])]
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(14f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
#endregion
#region 60 BOSS
[ScriptMethod(name: "60 始祖马利克巨人掌_飞针射击前后扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44866"])]
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.Radian = 60f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
float[] rotations = { 0f, 180f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
}
[ScriptMethod(name: "60 始祖马利克巨人掌_飞针回旋旋转扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44868"])]
public void _飞针回旋 (Event @event, ScriptAccessory accessory)
{
// 飞针回旋 [ ActionId: 44868 - Cast: 4.7s ] ; 共判定 10 次,每次旋转 60° , 间隔约 1s , 伤害来源 ActionId: 44909
// 顺时针旋转 [ TargetIcon: 00A7 ] ; 逆时针旋转 [ TargetIcon: 00A7 ]
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"始祖马利克巨人掌_飞针回旋";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 60f.DegToRad();
dp.DestoryAt = 15200;
float[] rotations = { 0f, 180f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
}
[ScriptMethod(name: "60 始祖马利克巨人掌_分株仙人掌方形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4485[89]$"])]
public void 始祖马利克巨人掌_分株(Event @event, ScriptAccessory accessory)
{
// 本体读条: 44857
var isBig = @event.ActionId == 44859;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_分株";
dp.Scale = isBig? new (30f, 30f): new (10f, 10f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
#endregion
#region 61~70
[ScriptMethod(name: "—————— 61 ~ 70 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 61(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "61~64 得到宽恕的疑念 潜伏透视", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:18832"])]
public void _潜伏 (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的疑念_潜伏{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(IbcHelper.GetHitboxRadius(obj)); // 目标圈为2.4m,只有在+5m内才可见开怪后状态消失
dp.DestoryAt = 600000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "61~64 得到宽恕的疑念 潜伏面向", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:18832"])]
public void _潜伏面向 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的疑念_潜伏面向{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10f); // 参考视觉引战范围
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 600000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "得到宽恕的疑念 潜伏销毁", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:676"],userControl: false)]
public void _潜伏销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"得到宽恕的疑念_潜伏.*{@event.SourceId()}");
}
[ScriptMethod(name: "得到宽恕的疑念 潜伏备用销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^(44749|45130)"],userControl: false)]
public void _潜伏备用销毁(Event @event, ScriptAccessory accessory)
{
// 44749 滑跃 ; 45130 平A攻击
accessory.Method.RemoveDraw($"得到宽恕的疑念_潜伏.*{@event.SourceId()}");
}
[ScriptMethod(name: "61~69 交错路塔罗斯_执行贯穿钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42516"])]
public void _执行贯穿 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路塔罗斯_执行贯穿{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(6f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "61~69 交错路塔罗斯_地层俯冲二段月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42516"])]
public void _地层俯冲 (Event @event, ScriptAccessory accessory)
{
// 在 执行贯穿 [ActionId:42516 / 3.7s] 4s后 显示第2段月环 两次判定间隔约3.1s
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路塔罗斯_地层俯冲{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(11f);
dp.InnerScale = new Vector2(5f);
dp.Radian = float.Pi * 2;
dp.Delay = 3700;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "61~64 得到宽恕的疑念_躯体重压钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44748"])]
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(7f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "61~63 交错路诺姆_平地捶打钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44753"])]
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(6f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "61~63 交错路壁崖鼹鼠_冲顶顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44740"])]
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(6f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "62~65 得到宽恕的暴动_左/右侧震荡波(二连左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4221[46]$"])]
public void 得到宽恕的暴动_左右侧震荡波(Event @event, ScriptAccessory accessory)
{
// 先右刀 42214 先左刀 42216
var isR = @event.ActionId == 42214;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_左右侧震荡波1{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30f);
dp.Radian = 180f.DegToRad();
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"得到宽恕的暴动_左右侧震荡波2{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(30f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = isR ? 90f.DegToRad() : 270f.DegToRad();
dp1.Delay = 4700;
dp1.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
[ScriptMethod(name: "63~66 得到宽恕的怨恨_冰雹发射直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42515"])]
public void _冰雹发射(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的怨恨_冰雹发射{@event.SourceId()}";
dp.Scale = new (4f, 45f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "64~66 得到宽恕的不公_岩石崩溃十字", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44743"])]
public void _岩石崩溃(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的不公_岩石崩溃{@event.SourceId()}";
dp.Scale = new (10f, 80f); // 范围待确定可能是10,40
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 3700;
float[] rotations = { 0f, 90f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
[ScriptMethod(name: "65~67 得到宽恕的依恋_臭水前后刀", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4475[01]$"])]
public void 得到宽恕的依恋_臭水(Event @event, ScriptAccessory accessory)
{
// 前刀 44750 后刀 44751
var isF = @event.ActionId == 44750;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_臭水";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(12f);
dp.Radian = 180f.DegToRad();
dp.Rotation = isF ? 0f.DegToRad() : 180f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "65~68 交错路蜂后_未终针直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42510"])]
public void _未终针(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路蜂后_未终针{@event.SourceId()}";
dp.Scale = new (3f, 8f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "66~69 得到宽恕的主见_几千针刺直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42220"])]
public void _几千针刺(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的主见_几千针刺{@event.SourceId()}";
dp.Scale = new (8f, 20f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "67~69 交错路恩戈齐_泥石流顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44755"])]
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(13f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "67~69 得到宽恕的贪食_石化凝视顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44746"])]
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.Radian = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "67~69 得到宽恕的贪食_猛撞钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44747"])]
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(8f);
dp.DestoryAt = 2200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// 70 BOSS 得到宽恕的热忱
[ScriptMethod(name: "70 得到宽恕的热忱_热忱怒视直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^434(06|11)$"])]
public void _热忱怒视(Event @event, ScriptAccessory accessory)
{
// 两个 ActionId对应 从近到远 (43406) / 从远到近 (43411)
var ZealousGlower = @event.ActionId == 43411 ? "从远到近" : "从近到远";
if (isText)accessory.Method.TextInfo($"光球月环: {ZealousGlower}", duration: 4500, true);
if (isTTS)accessory.Method.TTS($"{ZealousGlower}");
if (isEdgeTTS)accessory.Method.EdgeTTS($"{ZealousGlower}");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的热忱_热忱怒视";
dp.Scale = new (10f, 25f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 5200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "70 得到宽恕的热忱_光球 光轮(月环安全区)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43417"])]
public void _光球_光轮安全区 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的热忱_光球 光轮安全区";
dp.Color = accessory.Data.DefaultSafeColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(3f);
dp.DestoryAt = 1700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"得到宽恕的热忱_光球 光轮描边";
dp.Color = accessory.Data.DefaultSafeColor.WithW(20f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(3f);
dp1.InnerScale = new Vector2(2.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
/*
[ScriptMethod(name: "70 得到宽恕的热忱_光球 光轮(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43417"])]
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(3f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
*/
[ScriptMethod(name: "70 得到宽恕的热忱_热忱之眼月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:^434(18|26)$"])]
public void _热忱之眼 (Event @event, ScriptAccessory accessory)
{
// 两个技能ID应该是对应 顺时针 (43418) / 逆时针 (43423)
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的热忱_热忱之眼";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10f);
dp.InnerScale = new Vector2(5f);
dp.Radian = float.Pi * 2;
dp.Delay = 5000;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "70 得到宽恕的热忱_二千迈纳回转钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43429"])]
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 = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// 八重横扫 ActionId: 43432 从开始读条到第8下判定约 26.2s , 预兆读条 43437 , 伤害源 4343[3456] 估计对应四个方向
#endregion
#region 71~80
[ScriptMethod(name: "—————— 71 ~ 80 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 71(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "フォーギヴン・アンビリーフ_グラベルシャワー直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44763"])]
public void _グラベルシャワー(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・アンビリーフ_グラベルシャワー{@event.SourceId()}";
dp.Scale = new (4f, 10f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "交错路爆岩怪_炸裂钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42770"])]
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(6f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "交错路爆岩怪_自爆距离衰减", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42771"])]
public void _自爆 (Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo("远离自爆(距离衰减)", duration: 4000, true);
if (isTTS)accessory.Method.TTS("远离自爆");
if (isEdgeTTS)accessory.Method.EdgeTTS("远离自爆");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路爆岩怪_自爆{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(20f);
dp.DestoryAt = 4700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・フルドゥ_自爆钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44771"])]
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(15f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・シザージョウ_サンドブラスト顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44769"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"トラバース・シザージョウ_サンドブラスト{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(3.3f + IbcHelper.GetHitboxRadius(obj)); // ??m + 目标圈
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "得到宽恕的恶意_双水流钢铁月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(42578|42748)$"])]
public void _双水流 (Event @event, ScriptAccessory accessory)
{
// 先钢铁: 42578 ; 先月环: 42748
if (@event.ActionId == 42578)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的恶意_圆环双水流_钢铁{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"得到宽恕的恶意_圆环双水流_月环{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(40);
dp1.InnerScale = new Vector2(10);
dp1.Radian = float.Pi * 2;
dp1.Delay = 4700;
dp1.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
else
{
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"得到宽恕的恶意_环圆双水流_月环{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(40);
dp1.InnerScale = new Vector2(10);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的恶意_环圆双水流_钢铁{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10);
dp.Delay = 4700;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[ScriptMethod(name: "フォーギヴン・アロガンス_連蹴り顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44759"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・アロガンス_連蹴り{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(6f + IbcHelper.GetHitboxRadius(obj)); // 6m + 目标圈
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 10000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "トラバース・ウォーム_地震钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44767"])]
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 = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "トラバース・アメミット_トップル钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44765"])]
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(7f);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "フォーギヴン・ディセンション_トラウンス顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42522"])]
public void _トラウンス(Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・ディセンション_トラウンス{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f + IbcHelper.GetHitboxRadius(obj)); // 40m + 目标圈
dp.Radian = 60f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "得到宽恕的诋毁_造山风暴点名圆形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44762"])]
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 = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "得到宽恕的诋毁_变质岩波顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44761"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・スランダー_メタモーフィックブラスト{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "得到宽恕的腐败_旋转火力脱战大钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42523"])]
public void _旋转火力 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"得到宽恕的腐败_旋转火力{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.5f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(45f);
dp.DestoryAt = 15700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"得到宽恕的腐败_旋转火力描边{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(45f);
dp1.InnerScale = new Vector2(44.94f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 15700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "フォーギヴン・コラプション_フロントバラージ顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:42577"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・コラプション_フロントバラージ{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(5f + IbcHelper.GetHitboxRadius(obj)); // 5m + 目标圈
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "フォーギヴン・ヴァニティー_サークルレーザー月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44758"])]
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(60f);
dp.InnerScale = new Vector2(5f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "フォーギヴン・ヴァニティー_クロスレーザー十字", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44757"])]
public void (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・ヴァニティー_クロスレーザー{@event.SourceId()}";
dp.Scale = new (10f, 120f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = @event.DurationMilliseconds();
float[] rotations = { 0f, 90f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
// 80 BOSS
[ScriptMethod(name: "80 フォーギヴン・プロファニティー_紫雷の輪戒月环", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43468"])]
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(48f);
dp.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "80 フォーギヴン・プロファニティー_痛傷の円戒钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43472"])]
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 = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "80 フォーギヴン・プロファニティー_冒涜の光顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43473"])]
public void (Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"フォーギヴン・プロファニティー_冒涜の光";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f + IbcHelper.GetHitboxRadius(obj)); // 40m + 目标圈
dp.Radian = 180f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
/*
[ScriptMethod(name: "フォーギヴン・プロファニティー_雷気循環钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43476"])]
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.DestoryAt = 8000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
// フォーギヴン・プロファニティー_死出の道行き
#endregion
#region 81~90
[ScriptMethod(name: "—————— 81 ~ 90 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 81(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "81~83 召引格雷姆林_利爪顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44770"])]
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(6f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "81~83 交错路异豺_夜冲击顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44774"])]
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.Radian = 120f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "81~84 交错路卡部斯_昏暗顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44775"])]
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(40f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "81~84 交错路骑兵_风暴斩顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43321"])]
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(8f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "81~84 交错路骑兵_残杀冲锋击退", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43319"])]
public void _残杀(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS("冲锋击退+三连击退");
if (isEdgeTTS)accessory.Method.EdgeTTS("冲锋击退+三连击退");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路骑兵_残杀{@event.SourceId()}";
dp.Owner = @event.SourceId();
dp.TargetObject = @event.TargetId();
dp.Scale = new (6f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "83~85 召引小恶灵_冰结陷阱钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44779"])]
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(8f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "84~86 召引上级恶魔_深渊回转顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44780"])]
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(8f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "84~88 交错路卡玛_飞踢后摆尾直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43132"])]
public void _飞踢后摆尾1(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路卡玛_飞踢后摆尾1{@event.SourceId()}";
dp.Scale = new (3f, 8f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "84~88 交错路卡玛_飞踢后摆尾扫尾", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43132"])]
public void _飞踢后摆尾2(Event @event, ScriptAccessory accessory)
{
// 二段扫尾 ActionId: 43131
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路卡玛_飞踢后摆尾2{@event.SourceId()}";
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10f);
dp.Radian = 120f.DegToRad();
dp.Rotation = 180f.DegToRad();
dp.Delay = 2700;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
/*
[ScriptMethod(name: "インヴォークド・カイム_大凶眼背对", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44782"])]
public void 大凶眼(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo("背对", duration: 2000, true);
// if (isTTS)accessory.Method.TTS("背对");
// if (isEdgeTTS)accessory.Method.EdgeTTS("背对");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"インヴォークド・カイム_大凶眼{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId;
dp.TargetObject = accessory.Data.Me;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Scale = new(1);
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
*/
[ScriptMethod(name: "86~89 召引洪巴巴_三/四重强击 提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4332[34]$"])]
public void 召引洪巴巴_三四重强击(Event @event, ScriptAccessory accessory)
{
string skullDasherCount = @event.ActionId == 43323 ? "" : "";
if (isText) accessory.Method.TextInfo($"{skullDasherCount}连平A + 大顺劈", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"{skullDasherCount}连平A接顺劈");
if (isEdgeTTS) accessory.Method.EdgeTTS($"{skullDasherCount}连平A接顺劈");
}
[ScriptMethod(name: "86~89 召引洪巴巴_长啸顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44293"])]
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(25f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 1200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "84~86 召引梦魔_攻心欲火热病点名", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43322"])]
public void _攻心欲火 (Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"踢晕 <召引梦魔> 范围热病", duration: 4300, true);
if (isTTS) accessory.Method.TTS($"踢晕梦魔热病");
if (isEdgeTTS) accessory.Method.EdgeTTS($"踢晕梦魔热病");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引梦魔_攻心欲火{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(10f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "86~89 召引行吟诗人_昏暗顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44787"])]
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(20f);
dp.Radian = 60f.DegToRad();
dp.DestoryAt = 2200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "86~89 召引行吟诗人_心魔钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44788"])]
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(8f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "86~89 召引刻耳柏洛斯_闪电面前圆形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44784"])]
public void _闪电 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引刻耳柏洛斯_闪电{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(8f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "86~89 召引刻耳柏洛斯_地狱爪袭顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44785"])]
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(9f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "86-89 召引刻耳柏洛斯_摆尾背后扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44786"])]
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(19f);
dp.Radian = 90f.DegToRad();
dp.Rotation = 180f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "86-89 召引巴尔_火山泥流爆脱战大钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43133"])]
public void _火山泥流爆 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引巴尔_火山泥流爆{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(46f);
dp.DestoryAt = 15700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"召引巴尔_火山泥流爆描边{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(46f);
dp1.InnerScale = new Vector2(45.96f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 15700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "86~89 召引巴尔_深渊射线穿墙直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:43134"])]
public void _深渊射线(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引巴尔_深渊射线{@event.SourceId()}";
dp.Scale = new (20f, 40f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
// 90 BOSS
[ScriptMethod(name: "90 马纳果达_旋背击扇形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4425[01]$"])]
public void 马纳果达_旋背击(Event @event, ScriptAccessory accessory)
{
// 左下安全: 44250 ; 右下安全: 44251
var isR = @event.ActionId == 44250;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_旋背击";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30f);
dp.Radian = 270f.DegToRad();
dp.Rotation = isR ? 315f.DegToRad() : 45f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "90 马纳果达_纵断击/横断击(前后/左右扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44262"])]
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(35f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 7300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
/* 90 马纳果达_纵断击/横断击(前后/左右扇形) - 遗产
[ScriptMethod(name: "90 马纳果达_纵断击/横断击(前后/左右扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4425[89]$"])]
public void 马纳果达_纵断横断击(Event @event, ScriptAccessory accessory)
{
var obj = IbcHelper.GetById(accessory, @event.SourceId);
if (obj == null) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"马纳果达_纵断横断击";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30f + IbcHelper.GetHitboxRadius(obj));
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.DurationMilliseconds();
// 44258 前后(0°,180°)44259 左右(90°,270°)
float[] rotations = @event.ActionId == 44258
? new[] { 0f, 180f }
: new[] { 90f, 270f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
}
*/
[ScriptMethod(name: "90 指向魔法阵_魔阵光直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(43796|44257)$"])]
public void _魔阵光(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"指向魔法阵_魔阵光";
dp.Scale = new (10f, 50f);
dp.Rotation = 180f.DegToRad(); // 实体为朝场外发射, 需要旋转回场内
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = @event.ActionId == 43796 ? 5300 : 7300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "90 马纳果达_陨星地面黄圈判定时间", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44268"])]
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(6f);
dp.DestoryAt = 2700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "90 马纳果达_灭尽 击退安全区", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44266"])]
public void _灭尽安全区(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"马纳果达_灭尽安全区";
dp.Scale = new (40f, 10f); // 场地40m (10m x 4格), 击退距离30m, BOSS面前一行即为击退安全区
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultSafeColor.WithW(0.8f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "90 马纳果达_灭尽 击退预测", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44266"])]
public void _灭尽击退预测(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo("靠近击退", duration: 4300, true);
if (isTTS)accessory.Method.TTS("靠近击退");
if (isEdgeTTS)accessory.Method.EdgeTTS("靠近击退");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "马纳果达_灭尽击退预测";
dp.Scale = new(1.5f, 30);
dp.Color = new Vector4(0f, 1f, 1f, 3f);
dp.Owner = accessory.Data.Me;
dp.Rotation = @event.SourceRotation();
dp.FixRotation = true;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
#endregion
#region 91~98
[ScriptMethod(name: "—————— 91 ~ 100 层 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 91(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "91~94 召引玩偶_呀一一钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44512"])]
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(6f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "91~98 召引梦祸_梦祸视线穿墙直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44349"])]
public void _梦祸视线(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS("穿墙直线");
if (isEdgeTTS)accessory.Method.EdgeTTS("穿墙直线");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引梦祸_梦祸视线{@event.SourceId()}";
dp.Scale = new (5f, 41f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "91~98 召引梦祸_死重爆自爆钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44350"])]
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(18f);
dp.DestoryAt = 4700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"召引梦祸_死重爆描边{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(18f);
dp1.InnerScale = new Vector2(17.96f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "91~93 交错路紫罗兰三尖树_藤枝伏地顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44499"])]
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(9f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "91~93 交错路食人花_腐烂恶臭穿墙直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44500"])]
public void _腐烂恶臭(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS("穿墙直线");
if (isEdgeTTS)accessory.Method.EdgeTTS("穿墙直线");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路食人花_腐烂恶臭{@event.SourceId()}";
dp.Scale = new (12f, 45f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "93~95 交错路座狼_三/四重猛击 提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^443(39|40)$"])]
public void _三四重猛击(Event @event, ScriptAccessory accessory)
{
string skullDasherCount = @event.ActionId == 44339 ? "三" : "四";
if (isText) accessory.Method.TextInfo($"{skullDasherCount}连平A + 钢铁", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"{skullDasherCount}连平A接钢铁");
if (isEdgeTTS) accessory.Method.EdgeTTS($"{skullDasherCount}连平A接钢铁");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"交错路座狼_重挥碎击预测{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(6f);
dp.InnerScale = new Vector2(5.98f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "93~95 交错路座狼_重挥碎击钢铁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44342"])]
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(6f);
dp.DestoryAt = 1200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "93~95 召引扎哈克_石化吐息顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44508"])]
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(28f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "93~95 召引扎哈克_尾部打击瞬发扫尾", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:18854"])]
public void _尾部打击(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引扎哈克_尾部打击{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(10.5f); // 参考值, 目标圈 3.5m
dp.Radian = 90f.DegToRad();
dp.Rotation = 180f.DegToRad();
dp.DestoryAt = 600000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "召引扎哈克_尾部打击销毁", eventType: EventTypeEnum.RemoveCombatant, eventCondition: ["DataId:18854"],userControl: false)]
public void _尾部打击销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"召引扎哈克_尾部打击{@event.SourceId()}");
}
[ScriptMethod(name: "召引扎哈克_尾部打击备用销毁", eventType: EventTypeEnum.Death, eventCondition: ["TargetDataId:18854"],userControl: false)]
public void _尾部打击备用销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"召引扎哈克_尾部打击{@event.SourceId()}");
}
[ScriptMethod(name: "93~98 召引锯齿花_前方/左侧/右侧花蜜喷吐", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4435[6-8]$"])]
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(30f);
dp.DestoryAt = 6700;
switch (@event.ActionId())
{
case 44356: // 前方扇形
dp.Name = $"召引锯齿花_前方花蜜喷吐{@event.SourceId()}";
dp.Radian = 120f.DegToRad();
dp.Rotation = 0f;
break;
case 44357: // 左下半场
dp.Name = $"召引锯齿花_左侧花蜜喷吐{@event.SourceId()}";
dp.Radian = 180f.DegToRad();
dp.Rotation = 135f.DegToRad();
break;
case 44358: // 右下半场
dp.Name = $"召引锯齿花_右侧花蜜喷吐{@event.SourceId()}";
dp.Radian = 180f.DegToRad();
dp.Rotation = 225f.DegToRad();
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "95~97 交错路恶意灵_碎震强击顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44513"])]
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(14f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "95~98 召引古恶魔_黑暗神圣点名圆形", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44514"])]
public void _黑暗神圣 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引古恶魔_黑暗神圣{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(8f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "95_98 召引古恶魔_生命停止顺劈", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44515"])]
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(35f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "96~98 召引阿刻戎_权威斩左右刀", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^445(09|10)$"])]
public void _权威斩(Event @event, ScriptAccessory accessory)
{
// 右刀 44509 左刀 44510
var isR = @event.ActionId == 44509;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引阿刻戎_权威斩{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.Radian = 180f.DegToRad();
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "96~98 召引古辛_左/右侧震击(二连左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4434[57]$"])]
public void 召引古辛_左右侧震击(Event @event, ScriptAccessory accessory)
{
// 先右刀 44345 先左刀 44347
// 该小怪原形为 雪山奥窟冥魂石洞 的 BOSS1_白雪兽 其技能名及 (XAxis, EffectRange) 也一致,冥魂石洞中的场地为矩形,更方便看实际范围
var isR = @event.ActionId == 44345;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"_左右侧震击{@event.SourceId()}";
dp.Scale = new (40f, 80f);
dp.Offset = new Vector3(isR ? 20f : -20f, 0f, 0f);
// dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"召引古辛_右左侧震击{@event.SourceId()}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new (40f, 80f);
dp1.Offset = new Vector3(isR ? -20f : 20f, 0f, 0f);
// dp1.Rotation = isR ? 90f.DegToRad() : 270f.DegToRad();
dp1.Delay = 5000;
dp1.DestoryAt = 4000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp1);
}
[ScriptMethod(name: "96~98 召引破坏本能_怪光线穿墙直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44354"])]
public void _怪光线(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS("穿墙直线");
if (isEdgeTTS)accessory.Method.EdgeTTS("穿墙直线");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引破坏本能_怪光线{@event.SourceId()}";
dp.Scale = new (8f, 60f);
dp.Owner = @event.SourceId();
if (isUnderGround) {dp.Color = UnderGround_AOEs.V4; }
else {dp.Color = accessory.Data.DefaultDangerColor; }
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "96~98 召引破坏本能_死亡视线背对连线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44355"])]
public void _死亡视线连线(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo("背对 <召引破坏本能>", duration: 2300, true);
if (isTTS)accessory.Method.TTS("背对大眼");
if (isEdgeTTS)accessory.Method.EdgeTTS("背对大眼");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"召引破坏本能_死亡视线连线{@event.SourceId()}";
dp.Color = new Vector4(1f, 0f, 1f, 1f);
dp.Owner = @event.SourceId;
dp.TargetObject = accessory.Data.Me;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Scale = new(1);
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "96~98 召引破坏本能_死亡视线背对范围描边", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44355"])]
public void _死亡视线(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "召引破坏本能_死亡视线";
dp.Color = new Vector4(1f, 0f, 1f, 10f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.InnerScale = new Vector2(59.95f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
#endregion
#region 99 BOSS
// 卓异的悲寂 NPCID: 14037 目标圈 28.5m
// 被侵蚀的食罪灵 NPCID: 14038 目标圈 15.0m
// 深渊烈焰步进地火Q0 先上下 ActionId: 44075 / 后左右 ActionId: 44076 / 召唤晶体: 44078 / 晶体爆炸: 44079
// 深渊烈焰步进地火Y99 先左右 ActionId: 44074 / 后上下 ActionId: 44077 / 召唤晶体: 44078 / 晶体爆炸: 44079
// 以太吸取 Q0&Y99 暗 6.7s ActionId: 44088 / 光 10.7s ActionId: 44092 [无范围] / 暗 11.7s ActionId: 44093 (但是暗比光快)
[ScriptMethod(name: "99 烈焰锢(热病)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4406[39]$"])]
public void 烈焰锢(Event @event, ScriptAccessory accessory)
{
// 本体无意义读条 快: 44063 源: 44064 / 慢: 44069 源:44070 , 其中 源 比 无意义 读条更多 0.7s
// 烈焰锢 (热病) StatusID: 4562 , 赋予时间约 2.6s
var chara = accessory.Data.Objects.OfType<IBattleChara>().FirstOrDefault();
var nameId = chara?.NameId;
if (chara == null) return;
int duration = @event.ActionId == 44069 ? 10900 : 7900;
if (isText) accessory.Method.TextInfo("", duration: duration, true);
if (isTTS) accessory.Method.TTS("停止移动");
if (isEdgeTTS) accessory.Method.EdgeTTS("停止移动");
}
[ScriptMethod(name: "99 火球(旋风)预备提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4406[18]$"])]
public void 火球预备(Event @event, ScriptAccessory accessory)
{
int duration = @event.ActionId == 44061 ? 5000 : 8000;
if (isText) accessory.Method.TextInfo("", duration: duration, true);
if (isTTS) accessory.Method.TTS("旋风预备");
if (isEdgeTTS) accessory.Method.EdgeTTS("旋风预备");
}
[ScriptMethod(name: "99 火球(旋风)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44062"])]
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(6f);
dp.DestoryAt = 1800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "99 卓异的悲寂_棘刺尾穿刺点名直线预兆", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:00EA"])]
public void (Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != MapIds.TheFinalVerse) return;
var dp = accessory.Data.GetDefaultDrawProperties();
var boss = accessory.Data.Objects.GetByDataId(18666).FirstOrDefault(); // 歼灭战 - 卓异的悲寂 DataId: 18666
if (boss == null) return;
dp.Owner = boss.GameObjectId;
dp.Name = $"棘刺尾预兆";
dp.Scale = new (4f, 60f);
dp.Color = accessory.Data.DefaultSafeColor.WithW(0.6f);
dp.FixRotation = true;
dp.DestoryAt = 6400;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "99 卓异的悲寂_棘刺尾穿刺点名直线", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45118"])]
public void (Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo("快躲开", duration: 800, true);
if (isTTS)accessory.Method.TTS("快躲开");
if (isEdgeTTS)accessory.Method.EdgeTTS("快躲开");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"棘刺尾";
dp.Scale = new (4f, 60f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 1500;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "99 光耀之剑(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^440(67|73)$"])]
public void 耀(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"光耀之剑";
dp.Scale = new (15f, 30f);
dp.Owner = @event.SourceId();
dp.Offset = new Vector3 (0, 0 ,15); // 原本实体在直线中间,应用 Straight但考虑到omen效果还是选用 Rect偏移
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = @event.DurationMilliseconds();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "99 净罪之环 TTS", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44082"])]
public void (Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo("抓人牢狱", duration: 3000, true);
if (isTTS)accessory.Method.TTS("抓人牢狱");
if (isEdgeTTS)accessory.Method.EdgeTTS("抓人牢狱");
}
[ScriptMethod(name: "99 净罪之环(抓人牢狱 - 判定动画)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44083"])]
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(3f);
dp.DestoryAt = 2700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
#endregion
#region Q40
[ScriptMethod(name: "—————— 卓异的悲寂深想战 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void (Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "火球(旋风)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44098"])]
public void Q40_火球 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"Q40_火球";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Position = @event.EffectPosition();
dp.Scale = new Vector2(6f);
dp.DestoryAt = 1800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "深渊爆焰(地火)读条提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4479[78]$"])]
public void Q40_深渊爆焰提示(Event @event, ScriptAccessory accessory)
{
// 44797 先东西 ; 44798 先南北 ; 水晶DataId: 2014832
var isFirst = @event.ActionId == 44797 ? "" : "";
var isSecond = @event.ActionId == 44797 ? "上下" : "左右";
if (isText) accessory.Method.TextInfo($"地火: 先{isFirst} 再{isSecond}", duration: 16700, true);
if (isTTS) accessory.Method.TTS($"先{isFirst}, 后{isSecond}");
if (isEdgeTTS) accessory.Method.EdgeTTS($"先{isFirst}, 后{isSecond}");
accessory.Method.SendChat($"/e [Kodakku] 地火记录: 先{isFirst},再{isSecond}");
}
[ScriptMethod(name: "净罪之环抓人牢狱读条TTS提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4479[78]$"])]
public void Q40_净罪之环提示(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"");
if (isEdgeTTS) accessory.Method.EdgeTTS($"抓人牢狱");
}
[ScriptMethod(name: "净罪之环(抓人牢狱 - 判定动画)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44122"])]
public void Q40_净罪之环 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"Q40_净罪之环";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(3f);
dp.DestoryAt = 2700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// TargetIconId: 0061 拉线预兆
uint Spinelash = 0; // 棘刺尾 读条点名直线记录
public void Init(ScriptAccessory accessory) {
Spinelash = 0;
}
[ScriptMethod(name: "棘刺尾(点名分摊提示)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:020F"])]
public void Q40_棘刺尾提示(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != MapIds.TheFinalVerseQuantum) return; // 深想战 - 卓异的悲寂 DataId: 18670
Spinelash++;
if (isTTS)accessory.Method.TTS("挡枪分摊");
if (isEdgeTTS)accessory.Method.EdgeTTS("挡枪分摊");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"棘刺尾预兆";
dp.Scale = new (1f, 30f);
dp.Color = accessory.Data.DefaultSafeColor.WithW(1.4f);
switch (Spinelash)
{
case 1 :
dp.Position = new Vector3(-613.4f, 0f, -315f); // 左
break;
case 2 :
dp.Position = new Vector3(-586.6f, 0f, -315f); // 右
break;
case 3 :
dp.Position = new Vector3(-600f, 0f, -315f); // 中
break;
}
dp.DestoryAt = 6400;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
if (isDeveloper) accessory.Method.SendChat($"/e [DEBUG] 当前点名次数:{Spinelash}");
}
[ScriptMethod(name: "棘刺尾(直线分摊)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45119"])]
public void Q40_棘刺尾(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"棘刺尾";
dp.Scale = new (8f, 60f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultSafeColor;
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "戒律的光链:恢复 [奶妈治疗热风]", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4564"])]
public void Q40_戒律的光链_恢复 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"Q40_戒律的光链_恢复";
dp.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(21f);
dp.InnerScale = new Vector2(20.95f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 65000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "戒律的光链:能力 [DPS]", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4565"])]
public void Q40_戒律的光链_能力 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"Q40_戒律的光链_能力{@event.SourceId()}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(6f);
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(8f);
dp.InnerScale = new Vector2(7.96f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 65000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "戒律的光链备用销毁", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:regex:^456[45]$"],userControl: false)]
public void 戒律的光链备用销毁(Event @event, ScriptAccessory accessory)
{
if (@event.StatusId == 4564) accessory.Method.RemoveDraw("Q40_戒律的光链_恢复");
if (@event.StatusId == 4565) accessory.Method.RemoveDraw($"Q40_戒律的光链_能力{@event.SourceId()}");
}
[ScriptMethod(name: "尾连击(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:44161"])]
public void Q40_尾连击(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"尾连击";
dp.Scale = new (9f, 42f);
dp.Offset = new Vector3(0f, 0f, 10f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.DestoryAt = 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
#endregion
#region
[ScriptMethod(name: "—————— 底裤部分(需要对应插件与权限) ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void (Event @event, ScriptAccessory accessory) { }
// 这次 BOSS房 不可能变身 不用考虑 由于变身全是烛台给的buff, 也不用考虑过层时触发的 Duration
[ScriptMethod(name: "[DR] 1.2", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4708", "StackCount:54"])]
public void AddMudPieSpeed(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/pdrspeed 1.2");
accessory.Method.SendChat($"/e 鸭鸭:[DR] 移速已更改1.2x");
if (isTTS)accessory.Method.TTS("移速已更改至1.2倍");
if (isEdgeTTS)accessory.Method.EdgeTTS("移速已更改至1.2倍");
}
[ScriptMethod(name: "[DR] ", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:4708", "StackCount:54"])]
public void RemoveMudPieSpeed(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/pdrspeed -1");
accessory.Method.SendChat($"/e 鸭鸭:[DR] 移速已更改:默认");
if (isTTS)accessory.Method.TTS("移速已复原至默认值");
if (isEdgeTTS)accessory.Method.EdgeTTS("移速已复原至默认值");
}
[ScriptMethod(name: "[DR] 1.5", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4708", "StackCount:55"])]
public void AddProgenitrixSpeed(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/pdrspeed 1.5");
accessory.Method.SendChat($"/e 鸭鸭:[DR] 移速已更改1.5x");
if (isTTS)accessory.Method.TTS("移速已更改至1.5倍");
if (isEdgeTTS)accessory.Method.EdgeTTS("移速已更改至1.5倍");
}
[ScriptMethod(name: "[DR] ", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:4708", "StackCount:55"])]
public void RemoveProgenitrixSpeed(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/pdrspeed -1");
accessory.Method.SendChat($"/e 鸭鸭:[DR] 移速已更改:默认");
if (isTTS)accessory.Method.TTS("移速已复原至默认值");
if (isEdgeTTS)accessory.Method.EdgeTTS("移速已复原至默认值");
}
[ScriptMethod(name: "[IC] ", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4708", "StackCount:54"])]
public void AddMudPieDepths(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/i-ching-commander y_adjust 0");
accessory.Method.SendChat($"/e 鸭鸭:[IC] 已取消遁地");
if (isText) accessory.Method.TextInfo("已取消遁地", duration: 1300, true);
// if (isTTS)accessory.Method.TTS("已取消遁地");
// if (isEdgeTTS)accessory.Method.EdgeTTS("已取消遁地");
}
[ScriptMethod(name: "[IC] ", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:4708", "StackCount:54"])]
public void RemoveMudPieDepths(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
// 获取深度的描述值
string depthValue = Depths.GetDescription();
accessory.Method.SendChat($"/i-ching-commander y_adjust -{depthValue}");
accessory.Method.SendChat($"/e 鸭鸭:[IC] 已自动遁地 -{depthValue}m");
if (isText) accessory.Method.TextInfo($"已自动遁地 -{depthValue}m", duration: 1300, true);
// if (isTTS)accessory.Method.TTS("已自动遁地");
// if (isEdgeTTS)accessory.Method.EdgeTTS("已自动遁地");
}
[ScriptMethod(name: "[IC] ", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:4708", "StackCount:55"])]
public void AddProgenitrixDepths(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.SendChat($"/i-ching-commander y_adjust 0");
accessory.Method.SendChat($"/e 鸭鸭:[IC] 已取消遁地");
if (isText) accessory.Method.TextInfo("已取消遁地", duration: 1300, true);
// if (isTTS)accessory.Method.TTS("已取消遁地");
// if (isEdgeTTS)accessory.Method.EdgeTTS("已取消遁地");
}
[ScriptMethod(name: "[IC] ", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:4708", "StackCount:55"])]
public void RemoveProgenitrixDepths(Event @event, ScriptAccessory accessory)
{
if(!isHack) return;
if (@event.TargetId() != accessory.Data.Me) return;
// 获取深度的描述值
string depthValue = Depths.GetDescription();
accessory.Method.SendChat($"/i-ching-commander y_adjust -{depthValue}");
accessory.Method.SendChat($"/e 鸭鸭:[IC] 已自动遁地 -{depthValue}m");
if (isText) accessory.Method.TextInfo($"已自动遁地 -{depthValue}m", duration: 1300, true);
// if (isTTS)accessory.Method.TTS("已自动遁地");
// if (isEdgeTTS)accessory.Method.EdgeTTS("已自动遁地");
}
#endregion
}
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<uint>(@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<uint>(@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<uint>(@event["DurationMilliseconds"]);
}
public static float SourceRotation(this Event @event)
{
return JsonConvert.DeserializeObject<float>(@event["SourceRotation"]);
}
public static float TargetRotation(this Event @event)
{
return JsonConvert.DeserializeObject<float>(@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<Vector3>(@event["SourcePosition"]);
}
public static Vector3 TargetPosition(this Event @event)
{
return JsonConvert.DeserializeObject<Vector3>(@event["TargetPosition"]);
}
public static Vector3 EffectPosition(this Event @event)
{
return JsonConvert.DeserializeObject<Vector3>(@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<uint>(@event["StatusId"]);
}
public static uint StackCount(this Event @event)
{
return JsonConvert.DeserializeObject<uint>(@event["StackCount"]);
}
public static uint Param(this Event @event)
{
return JsonConvert.DeserializeObject<uint>(@event["Param"]);
}
}
public static class EnumExtensions
{
public static string GetDescription(this Enum value)
{
var field = value.GetType().GetField(value.ToString());
var attribute = field?.GetCustomAttributes(typeof(DescriptionAttribute), false)
.FirstOrDefault() as DescriptionAttribute;
return attribute?.Description ?? value.ToString();
}
}
public static class MathTools
{
public static float DegToRad(this float deg) => (deg + 360f) % 360f / 180f * float.Pi;
public static float RadToDeg(this float rad) => (rad + 2 * float.Pi) % (2 * float.Pi) / float.Pi * 180f;
/// <summary>
/// 获得任意点与中心点的弧度值,以(0, 0, 1)方向为0以(1, 0, 0)方向为pi/2。
/// 即,逆时针方向增加。
/// </summary>
/// <param name="point">任意点</param>
/// <param name="center">中心点</param>
/// <returns></returns>
public static float GetRadian(this Vector3 point, Vector3 center)
=> MathF.Atan2(point.X - center.X, point.Z - center.Z);
/// <summary>
/// 获得任意点与中心点的长度。
/// </summary>
/// <param name="point">任意点</param>
/// <param name="center">中心点</param>
/// <returns></returns>
public static float GetLength(this Vector3 point, Vector3 center)
=> new Vector2(point.X - center.X, point.Z - center.Z).Length();
/// <summary>
/// 将任意点以中心点为圆心,逆时针旋转并延长。
/// </summary>
/// <param name="point">任意点</param>
/// <param name="center">中心点</param>
/// <param name="radian">旋转弧度</param>
/// <param name="length">基于该点延伸长度</param>
/// <returns></returns>
public static Vector3 RotateAndExtend(this Vector3 point, Vector3 center, float radian, float length)
{
var baseRad = point.GetRadian(center);
var baseLength = point.GetLength(center);
var rotRad = baseRad + radian;
return new Vector3(
center.X + MathF.Sin(rotRad) * (length + baseLength),
center.Y,
center.Z + MathF.Cos(rotRad) * (length + baseLength)
);
}
/// <summary>
/// 获得某角度所在划分区域
/// </summary>
/// <param name="radian">输入弧度</param>
/// <param name="regionNum">区域划分数量</param>
/// <param name="baseRegionIdx">0度所在区域的初始Idx</param>>
/// <param name="isDiagDiv">是否为斜分割默认为false</param>
/// <param name="isCw">是否顺时针增加默认为false</param>
/// <returns></returns>
public static int RadianToRegion(this float radian, int regionNum, int baseRegionIdx = 0, bool isDiagDiv = false, bool isCw = false)
{
var sepRad = float.Pi * 2 / regionNum;
var inputAngle = radian * (isCw ? -1 : 1) + (isDiagDiv ? sepRad / 2 : 0);
var rad = (inputAngle + 4 * float.Pi) % (2 * float.Pi);
return ((int)Math.Floor(rad / sepRad) + baseRegionIdx + regionNum) % regionNum;
}
/// <summary>
/// 将输入点左右折叠
/// </summary>
/// <param name="point">待折叠点</param>
/// <param name="centerX">中心折线坐标点</param>
/// <returns></returns>
public static Vector3 FoldPointHorizon(this Vector3 point, float centerX)
=> point with { X = 2 * centerX - point.X };
/// <summary>
/// 将输入点上下折叠
/// </summary>
/// <param name="point">待折叠点</param>
/// <param name="centerZ">中心折线坐标点</param>
/// <returns></returns>
public static Vector3 FoldPointVertical(this Vector3 point, float centerZ)
=> point with { Z = 2 * centerZ - point.Z };
/// <summary>
/// 将输入点中心对称
/// </summary>
/// <param name="point">输入点</param>
/// <param name="center">中心点</param>
/// <returns></returns>
public static Vector3 PointCenterSymmetry(this Vector3 point, Vector3 center)
=> point.RotateAndExtend(center, float.Pi, 0);
/// <summary>
/// 获取给定数的指定位数
/// </summary>
/// <param name="val">给定数值</param>
/// <param name="x">对应位数个位为1</param>
/// <returns></returns>
public static int GetDecimalDigit(this int val, int x)
{
var valStr = val.ToString();
var length = valStr.Length;
if (x < 1 || x > length) return -1;
var digitChar = valStr[length - x]; // 从右往左取第x位
return int.Parse(digitChar.ToString());
}
}
public enum MarkType
{
None = -1,
Attack1 = 0,
Attack2 = 1,
Attack3 = 2,
Attack4 = 3,
Attack5 = 4,
Bind1 = 5,
Bind2 = 6,
Bind3 = 7,
Ignore1 = 8,
Ignore2 = 9,
Square = 10,
Circle = 11,
Cross = 12,
Triangle = 13,
Attack6 = 14,
Attack7 = 15,
Attack8 = 16,
Count = 17
}
public static class IbcHelper
{
public static IGameObject? GetById(this ScriptAccessory sa, ulong gameObjectId)
{
return sa.Data.Objects.SearchById(gameObjectId);
}
public static IGameObject? GetMe(this ScriptAccessory sa)
{
return sa.Data.Objects.LocalPlayer;
}
public static IEnumerable<IGameObject?> GetByDataId(this ScriptAccessory sa, uint dataId)
{
return sa.Data.Objects.Where(x => x.DataId == dataId);
}
public static string GetPlayerJob(this ScriptAccessory sa, IPlayerCharacter? playerObject, bool fullName = false)
{
if (playerObject == null) return "None";
return fullName ? playerObject.ClassJob.Value.Name.ToString() : playerObject.ClassJob.Value.Abbreviation.ToString();
}
public static float GetStatusRemainingTime(this ScriptAccessory sa, IBattleChara? battleChara, uint statusId)
{
if (battleChara == null || !battleChara.IsValid()) return 0;
unsafe
{
BattleChara* charaStruct = (BattleChara*)battleChara.Address;
var statusIdx = charaStruct->GetStatusManager()->GetStatusIndex(statusId);
return charaStruct->GetStatusManager()->GetRemainingTime(statusIdx);
}
}
public static bool HasStatus(this ScriptAccessory sa, IBattleChara? battleChara, uint statusId)
{
if (battleChara == null || !battleChara.IsValid()) return false;
unsafe
{
BattleChara* charaStruct = (BattleChara*)battleChara.Address;
var statusIdx = charaStruct->GetStatusManager()->GetStatusIndex(statusId);
return statusIdx != -1;
}
}
/// <summary>
/// 获取指定标记索引的对象EntityId
/// </summary>
public static unsafe ulong GetMarkerEntityId(uint markerIndex)
{
var markingController = MarkingController.Instance();
if (markingController == null) return 0;
if (markerIndex >= 17) return 0;
return markingController->Markers[(int)markerIndex];
}
/// <summary>
/// 获取对象身上的标记
/// </summary>
/// <returns>MarkType</returns>
public static MarkType GetObjectMarker(IGameObject? obj)
{
if (obj == null || !obj.IsValid()) return MarkType.None;
ulong targetEntityId = obj.EntityId;
for (uint i = 0; i < 17; i++)
{
var markerEntityId = GetMarkerEntityId(i);
if (markerEntityId == targetEntityId)
{
return (MarkType)i;
}
}
return MarkType.None;
}
/// <summary>
/// 检查对象是否有指定的标记
/// </summary>
public static bool HasMarker(IGameObject? obj, MarkType markType)
{
return GetObjectMarker(obj) == markType;
}
/// <summary>
/// 检查对象是否有任何标记
/// </summary>
public static bool HasAnyMarker(IGameObject? obj)
{
return GetObjectMarker(obj) != MarkType.None;
}
private static ulong GetMarkerForObject(IGameObject? obj)
{
if (obj == null) return 0;
unsafe
{
for (uint i = 0; i < 17; i++)
{
var markerEntityId = GetMarkerEntityId(i);
if (markerEntityId == obj.EntityId)
{
return markerEntityId;
}
}
}
return 0;
}
private static MarkType GetMarkerTypeForObject(IGameObject? obj)
{
if (obj == null) return MarkType.None;
unsafe
{
for (uint i = 0; i < 17; i++)
{
var markerEntityId = GetMarkerEntityId(i);
if (markerEntityId == obj.EntityId)
{
return (MarkType)i;
}
}
}
return MarkType.None;
}
/// <summary>
/// 获取标记的名称
/// </summary>
public static string GetMarkerName(MarkType markType)
{
return markType switch
{
MarkType.Attack1 => "攻击1",
MarkType.Attack2 => "攻击2",
MarkType.Attack3 => "攻击3",
MarkType.Attack4 => "攻击4",
MarkType.Attack5 => "攻击5",
MarkType.Bind1 => "止步1",
MarkType.Bind2 => "止步2",
MarkType.Bind3 => "止步3",
MarkType.Ignore1 => "禁止1",
MarkType.Ignore2 => "禁止2",
MarkType.Square => "方块",
MarkType.Circle => "圆圈",
MarkType.Cross => "十字",
MarkType.Triangle => "三角",
MarkType.Attack6 => "攻击6",
MarkType.Attack7 => "攻击7",
MarkType.Attack8 => "攻击8",
_ => "无标记"
};
}
public static float GetHitboxRadius(IGameObject obj)
{
if (obj == null || !obj.IsValid()) return -1;
return obj.HitboxRadius;
}
}
public static class HelperExtensions
{
public static unsafe uint GetCurrentTerritoryId()
{
return AgentMap.Instance()->CurrentTerritoryId; // 额外进行地图ID判断
}
}