Files
Hibiya615-TetoraKAScript/00-Other/NewDuty.cs
T
2026-09-18 02:28:21 +08:00

4468 lines
204 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 System.Collections.Generic;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Control;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using FFXIVClientStructs.FFXIV.Component.GUI;
namespace NewDuty;
[ScriptType(guid: "80890eac-4730-4708-ad1b-05aba469c2a1", name: "最新最热临时绘制",
territorys: [1307, 1346, 1339, 1340, 1341, 1342, 1343],
version: "0.0.3.1", author: "Tetora", note: noteStr)]
/* MapID
* 1307: 格莱杨拉波尔歼灭战
* 1346:新月岛北征
* 1339~1343 斗兽奇弈
*/
public class NewDuty
{
const string noteStr =
"""
v0.0.3.1:
最新最热副本绘制,可能会电,介意请关闭
别人的正式版发了这边就删
""";
#region 用户控制
[UserSetting("TTS开关")] public bool isTTS { get; set; } = true;
[UserSetting("弹窗文本提示开关")] public bool isText { get; set; } = true;
[UserSetting("下一次AOE预兆颜色")] public ScriptColor Next_AOEs { get; set; } = new() { V4 = new(1f, 1f, 0f, 1f) };
[UserSetting("下一次AOE预兆亮度(推荐小于1)")] public float Next_AOEsBrightness { get; set; } = 0.5f;
// dp.Color = Next_AOEs.V4.WithW(Next_AOEsBrightness);
[UserSetting("开发者模式")] public bool isDeveloper { get; set; } = false;
#endregion
#region 全局销毁
[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.TargetId()}");
}
#endregion
#region 记录与转换
public enum Beasts_Phase
{
Init, // 初始
Lauda // 高二尾王 魔斧之主 劳妲
}
Beasts_Phase phase = Beasts_Phase.Init;
[ScriptMethod(name: "高二尾王 劳妲", userControl: false, eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19742$"])]
public void 劳妲转换(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
phase = phase switch
{
Beasts_Phase.Init => Beasts_Phase.Lauda,
};
if(isDeveloper) accessory.Method.SendChat($"/e [Debug]:战斗进度:尾王劳妲");
}
uint WildSpeed = 0; // 普二 曼提克-猛冲重锤
uint Plaincracker = 0; // 高一 巨像 平原震裂
uint EarthenRing = 0; // 高一 巨像 核心环光
private int _chimeraRingType = 0; // 高二 奇美拉 0未知 1钢铁 2月环
private int _chimeraFanType = 0; // 高二 奇美拉 0未知 1寒冰 2雷鸣 3火焰
public void Init(ScriptAccessory accessory)
{
phase = Beasts_Phase.Init;
WildSpeed = 0;
Plaincracker = 0;
EarthenRing = 0;
_chimeraRingType = 0;
_chimeraFanType = 0;
}
#endregion
[ScriptMethod(name: "百虫肤防击退销毁", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^4620$"], userControl: false)]
public void 百虫肤防击退销毁(Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() != accessory.Data.Me) return;
accessory.Method.RemoveDraw(".*击退.*");
}
[ScriptMethod(name: "—————— 斗兽奇弈 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 斗兽奇弈(Event @event, ScriptAccessory accessory) { }
#region 斗兽奇弈 第一盘
[ScriptMethod(name: "—————— 第一盘 ——————", eventType: EventTypeEnum.StatusAdd, eventCondition: ["ActionId:"])]
public void 第一盘(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "奇子·主教_死亡螺旋(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46868$"])]
public void 主教_死亡螺旋(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"靠近主教月环", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"靠近主教月环");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"死亡螺旋{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.InnerScale = new Vector2(4f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·骑士_骨化(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46871$"])]
public void 骑士_骨化(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"打断骑士伤害提高(控制或借用-咒具碎魂)", duration: 7000, false);
if (isTTS) accessory.Method.TTS($"打断骑士");
}
[ScriptMethod(name: "奇子·骑士_物理伤害提高(驱散提示)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^2074$"])]
public void 骑士_物理伤害提高(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1339) return;
if (isText) accessory.Method.TextInfo($"驱散骑士(借用-水栖波)", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"驱散骑士");
}
[ScriptMethod(name: "奇子·主教_古代疾风(面前直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46870$"])]
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(8f, 40f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·骑士_前线护卫(魔兽吸引注意提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46864$"])]
public void 骑士_前线护卫(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"使用魔兽技 [吸引注意]", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"使用魔兽吸引注意");
}
[ScriptMethod(name: "奇子·骑士_古墓(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46866$"])]
public void 骑士_古墓(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"远离骑士");
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·上级恶魔_深渊贯穿(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4688(2|4)$"])]
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 = @event.ActionId() == 46882 ? new Vector2(6f) : new Vector2(3f);
dp.DestoryAt = @event.ActionId() == 46882 ? 3400 : 3200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·上级恶魔_深渊回转(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46886$"])]
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 = 180f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·夺灵魔_澄澈之心(驱散提示)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^1225$"])]
public void 夺灵魔_澄澈之心(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1339) return;
if (isText) accessory.Method.TextInfo($"驱散伤害提高(借用-水栖波)", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"驱散");
}
[ScriptMethod(name: "奇子·夺灵魔_魔力冲击(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46899$"])]
public void 夺灵魔_魔力冲击(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"驱散伤害提高(借用-水栖波)", duration: 7000, false);
if (isTTS) accessory.Method.TTS($"AOE");
}
[ScriptMethod(name: "奇子·夺灵魔_虚空暴风(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46897$"])]
public void 夺灵魔_虚空暴风(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"靠近月环", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"靠近月环");
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 = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·祸蛛蝎_地面隆起(地震钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46902$"])]
public void 祸蛛蝎_地面隆起(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"扩散地震");
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·祸蛛蝎_致命尾刺(带毒死刑TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46906$"])]
public void 祸蛛蝎_致命尾刺(Event @event, ScriptAccessory accessory)
{
// 回头得再看看毒耐的StatusID!
if (isText) accessory.Method.TextInfo($"带毒死刑,可用 <死尸净化> 驱散", duration: 4000, false);
if (isTTS) accessory.Method.TTS($"带毒死刑");
}
[ScriptMethod(name: "奇子·夺灵魔_虚空冰封(步进地火TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46887$"])]
public void 夺灵魔_虚空冰封(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"步进地火,二穿一", duration: 2000, true);
if (isTTS) accessory.Method.TTS($"准备穿地火");
}
[ScriptMethod(name: "奇子·夺灵魔_虚无耀星(核爆)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46895$"])]
public void 夺灵魔_虚无耀星(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"远离核爆", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"远离核爆");
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(30f);
dp.DestoryAt = 5700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·祸蛛蝎_毒蛛网(九连环TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46907$"])]
public void 祸蛛蝎_毒蛛网(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"九连环", duration: 2000, true);
if (isTTS) accessory.Method.TTS($"九连环");
}
[ScriptMethod(name: "奇子·食人魔_燃烧猛击(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(46912|49688)$"])]
public void 食人魔_燃烧猛击(Event @event, ScriptAccessory accessory)
{
if (isTTS & @event.ActionId() == 49688) accessory.Method.TTS($"去对侧");
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 = @event.ActionId() == 46912 ? 5700 : 9000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·食人魔_火球生成(TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46921$"])]
public void 食人魔_火球生成(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"躲避连线火球", duration: 3000, true);
if (isTTS) accessory.Method.TTS($"躲避连线火球");
}
[ScriptMethod(name: "奇子·食人魔_火球(追踪钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19343$"])]
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(10f);
dp.DestoryAt = 30000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "火球延烧触发销毁", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^46922$"], userControl: false)]
public void 火球延烧销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"火球延烧.*");
}
[ScriptMethod(name: "火球消失销毁", eventType: EventTypeEnum.RemoveCombatant, eventCondition: ["DataId:regex:^19343$"], userControl: false)]
public void 火球消失销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"火球延烧.*");
}
[ScriptMethod(name: "魅惑女妖 帕德索_血雨(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46926$"])]
public void 帕德索_血雨钢铁(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"远离", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"远离");
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 = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "魅惑女妖 帕德索_血雨(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46924$"])]
public void 帕德索_血雨(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"靠近月环", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"靠近月环");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"血雨月环{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "魅惑女妖 帕德索_虚空烈风(面前直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46932$"])]
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(8f, 60f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "魅惑女妖 帕德索_寒毒接触(带毒死刑TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46935$"])]
public void 帕德索_寒毒接触(Event @event, ScriptAccessory accessory)
{
// 回头得再看看毒耐的StatusID!
if (isText) accessory.Method.TextInfo($"带毒死刑,可用 <死尸净化> 驱散", duration: 4000, false);
if (isTTS) accessory.Method.TTS($"带毒死刑");
}
[ScriptMethod(name: "奇子·梦魔法师_盲信(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^46928$"])]
public void 梦魔法师_盲信(Event @event, ScriptAccessory accessory)
{
// 赋予BOSS 伤害提高 StatusID 1225
if (isText) accessory.Method.TextInfo($"打断 <梦魔法师> 伤害提高(借用-咒具碎魂)", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"打断梦魔法师");
}
// Todo. 46936 欺瞒雾 附加噩梦? 召唤两个连线爱心[信息素 DataId:19347] 随后释放 24m钢铁[46938 碎裂]
#endregion
#region 斗兽奇弈 第二盘
[ScriptMethod(name: "—————— 第二盘 ——————", eventType: EventTypeEnum.StatusAdd, eventCondition: ["ActionId:"])]
public void 第二盘(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "奇子·曼提克_臂锤(左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4812(3|5)$"])]
public void 曼提克_臂锤(Event @event, ScriptAccessory accessory)
{
var isR = @event.ActionId == 48123;
if (isR)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"臂锤_右{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30);
dp.Radian = 180f.DegToRad();
dp.Rotation = 270f.DegToRad();
dp.DestoryAt = 5300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
else
{
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"臂锤_左{@event.SourceId}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(30f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = 90f.DegToRad();
dp1.DestoryAt = 5300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
}
[ScriptMethod(name: "奇子·曼提克_重锤跃击(跳跃钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48137$"])]
public void 曼提克_重锤跃击(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"远离跳跃落点");
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 = 7800;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"重锤跃击描边{@event.SourceId}";
dp1.Color = new Vector4(1f, 1f, 0f, 10f);
dp1.Scale = new(30f);
dp1.InnerScale = new(29.96f);
dp1.Radian = float.Pi * 2;
dp1.Owner = @event.SourceId();
dp1.DestoryAt = 7800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·曼提克_利爪凶尾(前后刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4814(0|2)$"])]
public void 曼提克_利爪凶尾(Event @event, ScriptAccessory accessory)
{
var isF = @event.ActionId == 48140;
if (isF)
{
if (isText) accessory.Method.TextInfo($"后 > 前", duration: 6700, true);
if (isTTS) accessory.Method.TTS($"后,然后前");
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 = 0f.DegToRad();
dp.DestoryAt = 3600;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
else
{
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"利爪凶尾_后{@event.SourceId}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(40f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = 180f.DegToRad();
dp1.DestoryAt = 2100;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
}
[ScriptMethod(name: "奇子·曼提克_凶尾利爪(前后刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^5041(1|3)$"])]
public void 曼提克_凶尾利爪(Event @event, ScriptAccessory accessory)
{
var isF = @event.ActionId == 50413;
if (isF)
{
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 = 0f.DegToRad();
dp.DestoryAt = 2100;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
else
{
if (isText) accessory.Method.TextInfo($"前 > 后", duration: 6700, true);
if (isTTS) accessory.Method.TTS($"前,然后后");
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"凶尾利爪_后{@event.SourceId}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(40f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = 180f.DegToRad();
dp1.DestoryAt = 3600;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
}
[ScriptMethod(name: "奇子·曼提克_狂野冲锋(连续冲锋)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48128$"])]
public void 曼提克_狂野冲锋(Event @event, ScriptAccessory accessory)
{
if (@event.ActionId == 48128)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"狂野冲锋{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.Owner = @event.SourceId();
dp.TargetPosition = @event.EffectPosition;
dp.ScaleMode = ScaleMode.YByDistance;
dp.Scale = new(8f);
dp.DestoryAt = 8800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
WildSpeed = 1;
}
[ScriptMethod(name: "奇子·曼提克_猛冲重锤(冲锋左右刀)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^(2056|2193)$"], suppress: 9700)]
public void 曼提克_猛冲重锤(Event @event, ScriptAccessory accessory)
{
var isR = @event.StatusId == 2056; // Param分别为: 2056:1044 ; 2193:1043
// 右刀 ActionId 48132, 左刀 48134, 固定为反方向二连
if (WildSpeed != 1) return;
if (isText) accessory.Method.TextInfo(isR ? $"最后:左 > 右" : "最后:右 > 左", duration: 20300, true);
if (isTTS) accessory.Method.TTS(isR ? $"最后:左穿右" : "最后:右穿左");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = isR ? $"臂锤_右{@event.SourceId}" : $"臂锤_左{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(30f);
dp.Radian = 180f.DegToRad();
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.Delay = 16600;
dp.DestoryAt = 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = isR ? $"臂锤_左{@event.SourceId}" : $"臂锤_右{@event.SourceId}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.TargetId();
dp1.Scale = new Vector2(30f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = isR ? 90f.DegToRad() : 270f.DegToRad();
dp1.Delay = 18600;
dp1.DestoryAt = 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
WildSpeed = 0;
}
[ScriptMethod(name: "奇子·双足飞龙_台风(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48168$"])]
public void 双足飞龙_台风(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"台风击退预测{@event.SourceId}";
dp.Scale = new(1f, 10);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·双足飞龙_炽热弥漫(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48175$"])]
public void 双足飞龙_炽热弥漫(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"去背后");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"炽热弥漫{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 7700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·双足飞龙_风暴轨迹(扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48178$"])]
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 = 60f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·牛头魔_致命射线(死宣提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48143$"])]
public void 牛头魔_致命射线(Event @event, ScriptAccessory accessory)
{
// EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^5421$"]
// 虽然这副本有死宣抗性但是万一没有的话早踩早解除,还是用读条播报。地板为EnvControl但是没什么用感觉没必要写
if (isText) accessory.Method.TextInfo($"踩在地板上蓄力8秒解除死宣", duration: 8700, true);
if (isTTS) accessory.Method.TTS($"踩地板");
}
[ScriptMethod(name: "奇子·牛头魔_中心破灭(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^481(55|59|65)$"])]
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);
switch (@event.ActionId())
{
case 48155: // 普通单钢铁
dp.Delay = 0;
dp.DestoryAt = 5700;
break;
case 48159: // 双重先钢铁
dp.Delay = 5700;
dp.DestoryAt = 3500;
break;
case 48165: // 双重后钢铁
dp.Delay = 0;
dp.DestoryAt = 5700;
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·牛头魔_外环破灭(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^481(57|61|63)$"])]
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(50f);
dp.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
switch (@event.ActionId())
{
case 48157: // 普通单月环
dp.Delay = 0;
dp.DestoryAt = 5700;
break;
case 48161: // 双重后月环
dp.Delay = 5700;
dp.DestoryAt = 3500;
break;
case 48163: // 双重先月环
dp.Delay = 0;
dp.DestoryAt = 5700;
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·牛头魔_暗黑射线(点名放球)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:regex:^00EA$"])]
public void 牛头魔_暗黑射线(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() == 1340 && @event.TargetId() == accessory.Data.Me)
{
// if (isText)accessory.Method.TextInfo($"放球点名", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"放球点名");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"暗黑射线{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(6f);
dp.DestoryAt = 6000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[ScriptMethod(name: "奇子·牛头魔_以太波(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48150$"])]
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(10f, 50f);
dp.Delay = 2800;
dp.DestoryAt = 2900;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·虚灵法师_死亡驱动(复活提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48181$"])]
public void 虚灵法师_死亡驱动(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"尽可能避开小怪放圈", duration: 6000, false);
if (isTTS) accessory.Method.TTS($"放圈,避开小怪");
foreach (var item in accessory.Data.Objects.GetByDataId(19549))
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Owner = item.EntityId;
dp.Name = $"奇子·僵尸{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(2.5f);
dp.Scale = new Vector2(0.8f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[ScriptMethod(name: "奇子·虚灵法师_死亡驱动(地板圈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48182$"])]
public void 虚灵法师_死亡驱动绘制(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"死亡驱动{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.8f);
dp.Position = @event.EffectPosition;
dp.Scale = new Vector2(10f);
dp.DestoryAt = 3700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·虚灵法师_暗天球(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48186$"])]
public void 虚灵法师_暗天球(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"远离", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"远离");
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 = 7700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"暗天球描边{@event.SourceId}";
dp1.Color = new Vector4(1f, 1f, 0f, 10f);
dp1.Scale = new(18f);
dp1.InnerScale = new(17.95f);
dp1.Radian = float.Pi * 2;
dp1.Owner = @event.SourceId();
dp1.DestoryAt = 7700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·牛魔兄弟_千百一十吨回转(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4819(4|6)$"])]
public void 牛魔哥弟_千百一十吨回转(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = @event.ActionId == 48194 ? $"千百一十吨回转Fast{@event.SourceId}" : $"千百一十吨回转Slow{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(23f);
dp.Delay = @event.ActionId == 48194 ? 0 : 7700;
dp.DestoryAt = @event.ActionId == 48194 ? 7700 : 6000;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·牛魔兄弟_千吨横扫(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4819(0|2)$"])]
public void 牛魔哥弟_千吨横扫(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = @event.ActionId == 48190 ? $"千吨横扫Fast{@event.SourceId}" : $"千吨横扫Slow{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new(60f, 60f);
dp.Delay = @event.ActionId == 48190 ? 0 : 6700;
dp.DestoryAt = @event.ActionId == 48190 ? 6700 : 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·牛魔兄弟_十吨重踏 冲击波(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48(199|202)$"])]
public void 牛魔兄弟_十吨重踏_冲击波(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = @event.ActionId == 48199 ? $"冲击波击退Fast{@event.SourceId}" : $"冲击波击退Slow{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(4f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.Scale = new Vector2(1f, 20f);
dp.Delay = @event.ActionId == 48199 ? 0 : 6700;
dp.DestoryAt = @event.ActionId == 48199 ? 6700 : 3500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
if (@event.ActionId == 48199)
{
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(60f),
@event.SourcePosition(), @event.SourceRotation(), new Vector4(1f, 1f, 0f, 0.4f), 6700);
accessory.Method.VfxMethod.SetVfxSpeed(omenHandle, 1f);
}
}
[ScriptMethod(name: "奇子·牛魔老弟_声援(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48203$"])]
public void 牛魔老弟_声援(Event @event, ScriptAccessory accessory)
{
// 伤害提高 StatusID 1225
if (isText) accessory.Method.TextInfo($"打断 <牛魔老弟> 伤害提高(借用-咒具碎魂)", duration: 6000, false);
if (isTTS) accessory.Method.TTS($"打断牛魔老弟");
}
[ScriptMethod(name: "奇子·牛魔老哥_百吨挥打(直线死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48204$"])]
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.TargetObject = @event.TargetId;
dp.Scale = new(8f, 65f);
dp.DestoryAt = 8700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
// 48206 无尽回转 读条完变成不可选中状态,持续追踪玩家释放8m钢铁 48207
// Todo. 48210 无尽横扫 持续顺/逆时针顺劈 组合技,共约24.7s,转向后会有0.2s的读条,需要提前判断顺逆时针绘制,目前仅为模板
[ScriptMethod(name: "奇子·牛魔老弟_无尽横扫(大风车)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48210$"])]
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 = 60f.DegToRad();
dp.DestoryAt = 24700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·牛魔兄弟_无尽挥打(软狂暴)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48214$"])]
public void 牛魔兄弟_无尽挥打(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"[软狂暴] 大AOE伤害", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"大AOE伤害");
}
[ScriptMethod(name: "随机#1: 魔力球_魔力供给(连线提示)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^5406$", "Param:1"])]
public void 魔力球_魔力供给(Event @event, ScriptAccessory accessory)
{
// 魔力供给5层后,会赋予 5409 伤害提高
// if (isText)accessory.Method.TextInfo($"优先击杀连线目标", duration: 3000, false);
if (isTTS) accessory.Method.TTS($"优先击杀连线目标");
}
[ScriptMethod(name: "小地豆_黄沙吐息(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48227$"])]
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.Radian = 90f.DegToRad();
dp.DestoryAt = 8700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "路斯福洛克斯_哥布流回旋剑(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48229$"])]
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 = 5700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "路斯福洛克斯_小地豆肤(驱散提示)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^5423$"])]
public void 路斯福洛克斯_小地豆肤(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"驱散BOSS(借用-水栖波)", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"驱散BOSS");
}
[ScriptMethod(name: "路斯福洛克斯_哥布炸弹(提示)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19561$"], suppress: 1000)]
public void 路斯福洛克斯_哥布炸弹(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"将 <哥布炸弹> 推进小地豆在的流沙", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"将炸弹推进小地豆在的流沙");
}
[ScriptMethod(name: "路斯福洛克斯_哥布流回旋剑(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48231$"])]
public void 路斯福洛克斯_哥布流回旋剑月环(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"靠近月环", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"靠近月环");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"路斯福洛克斯_哥布流回旋剑月环{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.InnerScale = new Vector2(4f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "小地豆_地震(软狂暴)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48239$"])]
public void 小地豆_地震(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"[软狂暴] 大AOE伤害", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"大AOE伤害");
}
#endregion
#region 斗兽奇弈 第三盘
[ScriptMethod(name: "—————— 第三盘 ——————", eventType: EventTypeEnum.StatusAdd, eventCondition: ["ActionId:"])]
public void 第三盘(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "奇子·游侠骑士_钢铁裂斩(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48473$"])]
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.Radian = 130f.DegToRad();
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·游侠骑士的幻影_收割者的恐吓(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48464$"])]
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(20f);
dp.DestoryAt = 5700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"收割者的恐吓描边{@event.SourceId}";
dp1.Color = new Vector4(1f, 1f, 0f, 10f);
dp1.Scale = new(20f);
dp1.InnerScale = new(19.95f);
dp1.Radian = float.Pi * 2;
dp1.Owner = @event.SourceId();
dp1.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·游侠骑士的幻影_残杀(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48462$"])]
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(8f, 60f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·游侠骑士_粉碎剑(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48471$"])]
public void 游侠骑士_粉碎剑(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"粉碎剑击退预测{@event.SourceId}";
dp.Scale = new(1f, 15);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·鱼人_麻痹尖刺(反击提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50532$"])]
public void 鱼人_麻痹尖刺(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"停止攻击 <鱼人>", duration: 6000, true);
if (isTTS) accessory.Method.TTS($"停止攻击鱼人");
}
[ScriptMethod(name: "奇子·鱼人_恐慌洗礼(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48485$"])]
public void 鱼人_恐慌洗礼(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"使用 <咒具碎魂> 打断鱼人", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"打断鱼人");
}
[ScriptMethod(name: "奇子·鱼人_大海啸(击退安全区)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48481$"])]
public void 鱼人_大海啸(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"击退(可被壳阻挡)", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"击退");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"大海啸击退安全区{@event.SourceId}";
dp.Color = accessory.Data.DefaultSafeColor;
dp.Owner = @event.SourceId();
dp.Scale = new(40f, 7f); // 击退距离为35m,场地宽40m,电网2m
dp.DestoryAt = 8000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·尤弥尔_万雷(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48479$"])]
public void 尤弥尔_万雷(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"AOE", duration: 4000, false);
if (isTTS) accessory.Method.TTS($"AOE");
}
[ScriptMethod(name: "奇子·尤弥尔之壳 击杀止步提示", eventType: EventTypeEnum.Death, eventCondition: ["TargetDataId:regex:^19604$"])]
public void 尤弥尔_击杀止步提示(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"看时机止步 <尤弥尔>", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"止步尤弥尔");
}
[ScriptMethod(name: "奇子·卡托布莱帕斯_魔兽咆哮(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48504$"])]
public void 卡托布莱帕斯_魔兽咆哮(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"AOE", duration: 2000, false);
if (isTTS) accessory.Method.TTS($"AOE");
}
// Todo. 钢铁球 DataId 19612, 读条48506 ; 月环球 DataId 19613 , 读条48508。 钢铁+月环22飞的情况按开始飞动顺序沿固定直线飞行到场边后释放
// 魔眼移植 StatusID 2056 , Param 174; 带背对的情况固定一个个轮流来
// [Tether 00C3] [VFX Channeling 195] vfx/channeling/eff/chn_ice_mouth01x.avfx / vfx/common/eff/mon_status01et.avfx
[ScriptMethod(name: "奇子·祖的蛋_孵化(击杀提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48487$"])]
public void 祖的蛋_孵化(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"击杀孵化鸟蛋(别用突进)", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"击杀孵化鸟蛋");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"孵化连线{@event.SourceId}";
dp.Owner = accessory.Data.Me;
dp.Color = accessory.Data.DefaultSafeColor;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.TargetObject = @event.SourceId();
dp.Scale = new(1);
dp.DestoryAt = 10000;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·祖的蛋_孵化销毁", eventType: EventTypeEnum.CancelAction, eventCondition: ["ActionId:regex:^48487$"])]
public void 祖的蛋_孵化销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"孵化连线{@event.SourceId}");
}
[ScriptMethod(name: "奇子·祖_十字风(指路)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48491$"])]
public void 祖_十字风(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"十字风指路{@event.SourceId}";
dp.Owner = accessory.Data.Me;
dp.Color = accessory.Data.DefaultSafeColor.WithW(1f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.TargetPosition = new Vector3(120f, 0f, -420f);
dp.Scale = new(0.5f);
dp.DestoryAt = 8000;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·祖_前/后方猛袭乱流(拉线提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4849[34]$"])]
public void 祖_前后方猛袭方乱流(Event @event, ScriptAccessory accessory)
{
var dir = @event.ActionId == 48493 ? "背后" : "正面";
if (isText) accessory.Method.TextInfo($"远离扯线,然后去{dir}", duration: 5000, true);
if (isTTS) accessory.Method.TTS($"远离扯线,然后去{dir}");
}
[ScriptMethod(name: "奇子·祖_强袭滑空(拉线范围)", eventType: EventTypeEnum.Tether, eventCondition: ["Id:regex:^0039$"])]
public void 祖_强袭滑空(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1341) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"强袭滑空{@event.SourceId}"; // ActionId: 48495
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.TargetObject = @event.TargetId;
dp.Scale = new(3f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·祖_前方乱流(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48497$"])]
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.Radian = 180f.DegToRad();
dp.DestoryAt = 700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
// Todo. 奇子·祖_后方乱流(扫尾 )ActionId:regex:^48499$ 实体面向未确定
[ScriptMethod(name: "奇子·巨像_岩石崩溃(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48555$"])]
public void 巨像_岩石崩溃(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"岩石崩溃{@event.SourceId}";
dp.Color = new Vector4(1f, 0f, 0f, 2f);
dp.Owner = @event.SourceId();
dp.Scale = new(10f, 45f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "沙球_爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48562$"])]
public void 沙球_爆炸(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"沙球_爆炸{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(12f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·拉哈穆_大地摇动(扇形点名)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:0028"])]
public void 拉哈穆_大地摇动(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
var boss = accessory.Data.Objects.GetByDataId(19614).FirstOrDefault();
if (boss == null) return;
dp.Owner = boss.GameObjectId;
dp.Name = $"大地摇动{@event.TargetId}";
dp.TargetObject = @event.TargetId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Scale = new Vector2(50f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 4400;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·塞壬_混乱之歌(顺劈)", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^48565$"])]
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(50f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = 7400;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·塞壬_急袭(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48570$"])]
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(16f, 50f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·塞壬_亡者之歌(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48573$"])]
public void 塞壬_亡者之歌钢铁(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"亡者之歌钢铁{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(12f);
dp.DestoryAt = 6700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"亡者之歌描边{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp1.Scale = new(12f);
dp1.InnerScale = new(11.95f);
dp1.Radian = float.Pi * 2;
dp1.Owner = @event.SourceId();
dp1.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·塞壬_亡者之歌(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48575$"])]
public void 塞壬_亡者之歌月环(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"靠近月环");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"亡者之歌月环{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(50f);
dp.InnerScale = new Vector2(3f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
// Todo. 远音 三穿一水炮 ActionId 48577
[ScriptMethod(name: "贪食无厌 加特勒_垂直驱动(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48605$"])]
public void 加特勒_垂直驱动(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"去两侧");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"垂直驱动{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new(20f, 80f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "贪食无厌 加特勒_贪食啮噬(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48603$"])]
public void 加特勒_贪食啮噬(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"去对侧角落", duration: 10600, true);
if (isTTS) accessory.Method.TTS($"去对侧角落");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"贪食啮噬{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.DestoryAt = 11300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "贪食无厌 加特勒_贪食裂膛(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48600$"])]
public void 加特勒_贪食裂膛(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"去BOSS背后", duration: 10600, true);
if (isTTS) accessory.Method.TTS($"去BOSS背后");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"贪食裂膛{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new(40f, 50f);
dp.DestoryAt = 11300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "诱爆魔刃_魔力爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48597$"])]
public void 诱爆魔刃_魔力爆炸(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"诱爆魔刃_魔力爆炸{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(8f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "贪食无厌 加特勒_大奔流(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48607$"])]
public void 加特勒_大奔流(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"向南北击退", duration: 6000, true);
if (isTTS) accessory.Method.TTS($"向南北击退");
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(427, new Vector3(60f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f, 0.4f, 0f, 0.5f), 6700);
accessory.Method.VfxMethod.SetVfxSpeed(omenHandle, 0.8f);
}
[ScriptMethod(name: "贪食无厌 加特勒_霹雳(直线麻痹死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48620$"])]
public void 加特勒_霹雳(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"麻痹死刑", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"麻痹死刑");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"霹雳{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.TargetObject = @event.TargetId;
dp.Scale = new(6f, 50f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "贪食无厌 加特勒_支配魔刃(躲避提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48614$"])]
public void 加特勒_支配魔刃(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"快躲开");
}
[ScriptMethod(name: "贪食无厌 加特勒_拘束(结界方块)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add", "DataId:regex:^2015427$"])]
public void 加特勒_拘束(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1341) 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(10f, 10f);
dp.DestoryAt = 4200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "魔刃结界_剧毒魔刃(十字)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add", "DataId:regex:^2015427$"])]
public void 魔刃结界_剧毒魔刃(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1341) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"剧毒魔刃{@event.SourceId}";
dp.Scale = new(10f, 30f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Delay = 4200;
dp.DestoryAt = 8400;
float[] rotations = { 0f, 90f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
[ScriptMethod(name: "贪食无厌 加特勒_火焰魔刃(放置核爆提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48615$"])]
public void 加特勒_火焰魔刃(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"放置核爆", duration: 5200, true);
if (isTTS) accessory.Method.TTS($"放置核爆");
}
[ScriptMethod(name: "火焰魔刃_魔刃爆焰(核爆)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48619$"])]
public void 火焰魔刃_魔刃爆焰(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"魔刃爆焰{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(20f);
dp.DestoryAt = 7700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
#endregion
#region 斗兽奇弈 高段第一盘
[ScriptMethod(name: "—————— 高段 第一盘 ——————", eventType: EventTypeEnum.StatusAdd, eventCondition: ["ActionId:"])]
public void 高段一(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "奇子·博学林鸮_掉落(三穿一提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48654$"])]
public void 博学林鸮_掉落提示(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"三穿一", duration: 2000, false);
if (isTTS) accessory.Method.TTS($"三穿一");
}
[ScriptMethod(name: "奇子·博学林鸮_爆震之章(浮空提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48657$"])]
public void 博学林鸮_爆震之章(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"站在浮空圈", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"站在浮空圈");
}
[ScriptMethod(name: "奇子·博学林鸮_狂水之章(河童提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48658$"])]
public void 博学林鸮_狂水之章(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"站在河童圈", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"站在河童圈");
}
[ScriptMethod(name: "奇子·博学林鸮_魔法锤之章(史莱姆提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48659$"])]
public void 博学林鸮_魔法锤之章(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"站在粘液怪圈", duration: 7000, true);
if (isTTS) accessory.Method.TTS($"站在粘液怪圈");
}
[ScriptMethod(name: "奇子·博学林鸮_精神集中(驱散提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48668$"])]
public void 博学林鸮_精神集中(Event @event, ScriptAccessory accessory)
{
// 赋予 StatusID 5020 魔法伤害提高
if (isText) accessory.Method.TextInfo($"准备驱散(借用-水栖波)", duration: 2000, false);
if (isTTS) accessory.Method.TTS($"准备驱散");
}
[ScriptMethod(name: "奇子·博学林鸮_昏暗之章(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48669$"])]
public void 博学林鸮_昏暗之章(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"大AOE", duration: 7000, false);
if (isTTS) accessory.Method.TTS($"大AOE");
}
[ScriptMethod(name: "奇子·魔界花_恶臭气(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4867(3|5)$"])]
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(50f);
dp.Radian = 90f.DegToRad();
dp.DestoryAt = @event.ActionId == 48673 ? 4700 : 200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·魔界花_地震(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50758$"])]
public void 魔界花_地震(Event @event, ScriptAccessory accessory)
{
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(35f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f, 0.5f, 0f, 0.5f), 4700);
// Todo.击退距离没测
}
[ScriptMethod(name: "随机#1: 奇子·花苗_荆棘幼苗(危险区)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add", "Kind:EventObj", "DataId:2015458"])]
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 = 15000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "随机#1: 奇子·尸生花_吐出(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48683$"])]
public void 尸生花_吐出(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"吸引+击退", duration: 4000, true);
if (isTTS) accessory.Method.TTS($"吸引+击退");
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(10f), // 击退源为BOSS,距离10m
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f, 0.4f, 0f, 0.8f), 15000);
}
[ScriptMethod(name: "奇子·冰龙_冰寒折磨(辣翅辣尾直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4869(7|9)$"])]
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(15f, 100f);
dp.DestoryAt = 6200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "奇子·冰龙_白霜环绕(AOE+DOT)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48709$"])]
public void 冰龙_白霜环绕(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"AOE+DOT(可用 <死尸净化> 驱散冻伤)", duration: 4000, false);
if (isTTS) accessory.Method.TTS($"AOE+DOT");
}
[ScriptMethod(name: "奇子·冰龙_寒冰覆盖(诱导提示)", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^48707$"], suppress: 300000)]
public void 冰龙_寒冰覆盖(Event @event, ScriptAccessory accessory)
{
// 从 [48710 寒冰覆盖] 开始读条,到最后一个黄圈出现,共11s,但还是需要提早播报一下所以采用 [48707 无终的枯朽] 的判定,注意横幅入场动画需占0.7s
// 虽然 [48707 无终的枯朽] 后面不一定接黄圈,但是等 [48710 寒冰覆盖] 开始读条的时候第一个黄圈已经出来了,提示就太晚了,所以用 suppress 只让他报一次
if (isText) accessory.Method.TextInfo($"贴边诱导六连黄圈", duration: 18900, true);
if (isTTS) accessory.Method.TTS($"贴边诱导六连黄圈");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"寒冰覆盖诱导预测"; // 48712 寒冰覆盖
dp.Color = accessory.Data.DefaultDangerColor.WithW(10f);
dp.Owner = accessory.Data.Me;
dp.Scale = new Vector2(5f);
dp.InnerScale = new Vector2(4.97f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 18200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
/*
[ScriptMethod(name: "奇子·冰龙_低温俯冲(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48701$"])]
public void 冰龙_低温俯冲(Event @event, ScriptAccessory accessory)
{
// 这玩意第一次俯冲怎么Z轴高2m的
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"低温俯冲{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new (23f, 46f);
dp.DestoryAt = 15100;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
*/
[ScriptMethod(name: "奇子·冰龙_空降(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48702$"])]
public async void 冰龙_空降(Event @event, ScriptAccessory accessory)
{
await Task.Delay(19300);
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(60f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f, 0.5f, 0f, 0.8f), 3100);
accessory.Method.VfxMethod.SetVfxSpeed(omenHandle, 1f);
/*
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"空降击退安全区预测";
dp.Color = accessory.Data.DefaultSafeColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(5f);
dp.Radian = 90f.DegToRad();
dp.Rotation = 225f.DegToRad();
dp.DestoryAt = 3100;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"空降击退连线{@event.SourceId}";
dp1.Owner = accessory.Data.Me;
dp1.Color = accessory.Data.DefaultSafeColor;
dp1.ScaleMode |= ScaleMode.YByDistance;
dp1.TargetObject = @event.SourceId();
dp1.Scale = new(1);
dp1.DestoryAt = 3100;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp1);
*/
}
[ScriptMethod(name: "奇子·石像鬼_圆环连斩(钢铁月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4872[01]$"])]
public void 石像鬼_圆环连斩(Event @event, ScriptAccessory accessory)
{
// 48719 无意义读条钢铁月环,48720 短钢铁,48721 长月环,为什么他没有环圆连斩?
if (@event.ActionId == 48720)
{
if (isTTS) accessory.Method.TTS($"先远离,再靠近");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"圆环连斩钢铁{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(13f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
else if (@event.ActionId == 48721)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"圆环连斩月环{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(43f);
dp.InnerScale = new Vector2(13f);
dp.Radian = float.Pi * 2;
dp.Delay = 5700;
dp.DestoryAt = 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
}
[ScriptMethod(name: "奇子·石像鬼_突进连斩(远离提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48717$"])]
public void 石像鬼_突进连斩(Event @event, ScriptAccessory accessory)
{
// 48717 无意义本体读条,48718 二连顺劈
if (isText) accessory.Method.TextInfo($"远离BOSS,然后去BOSS背后(二连劈)", duration: 12300, true);
if (isTTS) accessory.Method.TTS($"远离BOSS,然后去背后");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"突进连斩{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 180f.DegToRad();
dp.Delay = 9000;
dp.DestoryAt = 4000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·石像鬼_瘴腐气(吃球提示)", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^48713$"])]
public void 石像鬼_瘴腐气(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"每轮吃4个球", duration: 5000, false);
if (isTTS) accessory.Method.TTS($"吃4个球");
}
[ScriptMethod(name: "瘴腐气_渐渐恐慌(等待提示)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^5178$", "StackCount:4"])]
public void 瘴腐气_渐渐恐慌(Event @event, ScriptAccessory accessory)
{
if (isTTS) accessory.Method.TTS($"等待Debuff结束");
var growingdreadtime = @event.DurationMilliseconds();
foreach (var item in accessory.Data.Objects.GetByDataId(19651))
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"瘴气{@event.SourceId}";
dp.Owner = item.EntityId;
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Scale = new Vector2(2f);
dp.DestoryAt = growingdreadtime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[ScriptMethod(name: "奇子·石像鬼_冲波五连斩(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50696$"])]
public void 石像鬼_冲波五连斩(Event @event, ScriptAccessory accessory)
{
// if (isText)accessory.Method.TextInfo($"AOE", duration: 2000, false);
if (isTTS) accessory.Method.TTS($"AOE");
}
[ScriptMethod(name: "奇子·石像鬼_冲波五连斩(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48725$"])]
public void 石像鬼_冲波五连斩击退(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"冲波五连斩击退预测{@event.SourceId}";
dp.Scale = new(1f, 20f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·石像鬼_荒芜新星(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48727$"])]
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(7f, 60f);
dp.DestoryAt = 3200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·树精_簌簌轻风(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^487(78|79|80)$"])]
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.DestoryAt = 6700;
switch (@event.ActionId())
{
case 48778:
dp.Radian = 90f.DegToRad();
dp.Rotation = 0f.DegToRad();
break;
case 48779:
dp.Radian = 150f.DegToRad();
dp.Rotation = 90f.DegToRad();
break;
case 48780:
dp.Radian = 150f.DegToRad();
dp.Rotation = 270f.DegToRad();
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·树精_巨木龙卷(步进地震)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4877[1-5]$"])]
public void 树精_巨木龙卷(Event @event, ScriptAccessory accessory)
{
// 48771 为可见的18m钢铁,之后48772~48775为轮流的步进地震
if (@event.ActionId == 48771 && isTTS) accessory.Method.TTS($"步进地震");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Radian = float.Pi * 2;
dp.DestoryAt = 2000;
switch (@event.ActionId())
{
case 48772:
dp.Name = $"巨木龙卷_步进月环1{@event.SourceId}";
dp.Scale = new Vector2(18f);
dp.InnerScale = new Vector2(12f);
dp.Delay = 4700;
break;
case 48773:
dp.Name = $"巨木龙卷_步进月环2{@event.SourceId}";
dp.Scale = new Vector2(24f);
dp.InnerScale = new Vector2(18f);
dp.Delay = 6700;
break;
case 48774:
dp.Name = $"巨木龙卷_步进月环3{@event.SourceId}";
dp.Scale = new Vector2(30f);
dp.InnerScale = new Vector2(24f);
dp.Delay = 8700;
break;
case 48775:
dp.Name = $"巨木龙卷_步进月环4{@event.SourceId}";
dp.Scale = new Vector2(36f);
dp.InnerScale = new Vector2(30f);
dp.Delay = 10700;
break;
}
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·树精_橡果炸弹(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50518$"])]
public void 树精_橡果炸弹(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"睡眠点名", duration: 4000, false);
if (isTTS) accessory.Method.TTS($"睡眠点名");
}
[ScriptMethod(name: "奇子·比洛克_治疗之水(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48782$"])]
public void 比洛克_治疗之水(Event @event, ScriptAccessory accessory)
{
if (isText) accessory.Method.TextInfo($"打断 <比洛克> (借用-咒具碎魂)", duration: 8000, false);
if (isTTS) accessory.Method.TTS($"打断比洛克");
}
[ScriptMethod(name: "奇子·巨像_平原震裂(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48755$"])]
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.DestoryAt = 6700;
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(20f);
dp1.InnerScale = new Vector2(19.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·巨像_核心环光(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48753$"])]
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(50f);
dp.InnerScale = new Vector2(5f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·巨像_钢铁月环记录", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^487(59|60)$"], userControl: false)]
public void 巨像_钢铁月环记录(Event @event, ScriptAccessory accessory)
{
if (@event.ActionId == 48759)
EarthenRing = 1;
else if (@event.ActionId == 48760)
Plaincracker = 1;
}
[ScriptMethod(name: "奇子·巨像_连线钢铁月环", eventType: EventTypeEnum.Tether, eventCondition: ["Id:01AF"])]
public void 巨像_连线钢铁月环(Event @event, ScriptAccessory accessory)
{
if (Plaincracker == 1)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"平原震裂{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(20f);
dp.DestoryAt = 12700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
Plaincracker = 0;
}
else if (EarthenRing == 1)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"核心环光{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(50f);
dp.InnerScale = new Vector2(5f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 12700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
EarthenRing = 0;
}
}
[ScriptMethod(name: "奇子·巨像_岩壁(TTS)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48748$"])]
public void 巨像_岩壁(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"去两侧石堆旁边", duration: 2000, true);
if (isTTS)accessory.Method.TTS($"去两侧石堆旁边");
}
[ScriptMethod(name: "奇子·巨像_冲击波(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48750$"])]
public void 巨像_冲击波(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"冲击波{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new (5f, 10f);
dp.DestoryAt = 3700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "奇子·巨像_岩雨(钢铁月环)", eventType: EventTypeEnum.ObjectEffect, eventCondition: ["Id1:regex:^(1|64)$","Id2:regex:^(2|128)$"])]
public void 巨像_岩雨钢铁月环(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1342) return;
if (@event.Id1() == 1 && @event.Id2() == 2)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"平原震裂{@event.SourceId}"; // 48757
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(8f);
dp.DestoryAt = 10000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
else if (@event.Id1() == 64 && @event.Id2() == 128)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"核心环光{@event.SourceId}"; // 48758
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(11f);
dp.InnerScale = new Vector2(3f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 10000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
}
[ScriptMethod(name: "奇子·巨像_岩突(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48768$"])]
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 = 60f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·巨像_破魔震(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50649$"])]
public void 巨像_破魔震(Event @event, ScriptAccessory accessory)
{
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(60f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f,0.4f,0f,0.6f), 5000);
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"破魔震{@event.SourceId}";
dp.Scale = new(1f, 17f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·爆弹之母_烈火怒骂(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48799$"])]
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 = 180f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
// 48801 奇子·爆弹之母_熔毁(击退直线死刑)
[ScriptMethod(name: "怨毒龙 博尔格尼_猛毒吐息(后跳顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48807$"])]
public void 博尔格尼_猛毒吐息 (Event @event, ScriptAccessory accessory)
{
// 实际上是读条5.4s后判定,但是实体飞走了.jpg
if (isTTS)accessory.Method.TTS($"后跃顺劈");
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(6f);
dp.Radian = 120f.DegToRad();
dp.Offset = new Vector3(0f, 0f, 19.5f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"博尔格尼_猛毒吐息2{@event.SourceId}";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(60f);
dp1.InnerScale = new Vector2(6f);
dp1.Radian = 120f.DegToRad();
dp1.Delay = 3700;
dp1.DestoryAt = 1400;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "怨毒龙 博尔格尼_猛毒粘液(放圈提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48809$"])]
public void 博尔格尼_猛毒粘液(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"四连放圈点名", duration: 12300, false);
if (isTTS)accessory.Method.TTS($"四连放圈点名");
}
[ScriptMethod(name: "怨毒龙 博尔格尼_蠕动的痰(放小怪提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4881(7|9)$"])]
public void 博尔格尼_蠕动的痰(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo (@event.ActionId == 48817 ? $"放置小怪点名" : "快躲开", duration: 6900, true);
if (isTTS)accessory.Method.TTS (@event.ActionId == 48817 ? $"放置小怪点名" : $"快躲开");
}
[ScriptMethod(name: "怨毒龙 博尔格尼_低温俯冲(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48814$"])]
public void 博尔格尼_低温俯冲(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"博尔格尼_低温俯冲{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new (20f, 48f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "怨毒龙 博尔格尼_空降(蓝圈击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48828$"])]
public void 博尔格尼_空降(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"博尔格尼_空降击退预测{@event.SourceId}";
dp.Scale = new(1f, 30f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 5200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
#endregion
#region 斗兽奇弈 高段第二盘
[ScriptMethod(name: "—————— 高段 第二盘 ——————", eventType: EventTypeEnum.StatusAdd, eventCondition: ["ActionId:"])]
public void 高段二(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "奇子·佛劳洛斯_蓄电雷击(前半场刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49193$"])]
public void 佛劳洛斯_蓄电雷击(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"蓄电雷击{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new (40f, 50f);
dp.DestoryAt = 5500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·佛劳洛斯_飘忽爆破(麻痹死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49189$"])]
public void 佛劳洛斯_飘忽爆破(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"麻痹死刑", duration: 6000, true);
if (isTTS)accessory.Method.TTS($"麻痹死刑");
}
[ScriptMethod(name: "奇子·佛劳洛斯_电流冲击(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49191$"])]
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(16f);
dp.DestoryAt = 5700;
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(16f);
dp1.InnerScale = new Vector2(15.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·夺心魔_虚空暴雷(十字)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49207$"])]
public void 夺心魔_虚空暴雷(Event @event, ScriptAccessory accessory)
{
// Omen的 ActionId是 [50939]
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"虚空暴雷{@event.SourceId}";
dp.Scale = new (10f, 100f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
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: "奇子·夺心魔_虚空强麻痹(麻痹AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49208$"])]
public void 夺心魔_虚空强麻痹(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"[雷] 麻痹AOE(可死尸净化)", duration: 6000, false);
if (isTTS)accessory.Method.TTS($"麻痹AOE");
}
[ScriptMethod(name: "立体魔法阵_黑暗奔流(小直线)", eventType: EventTypeEnum.SetObjPos, eventCondition: ["SourceDataId:regex:^19681$","Id:0197"])]
public void 立体魔法阵_黑暗奔流小(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"立体魔法阵_黑暗奔流小{@event.SourceId}"; // ActionId: 49203
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new (4f, 100f);
dp.DestoryAt = 11200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "立体魔法阵_黑暗奔流(大直线)", eventType: EventTypeEnum.Tether, eventCondition: ["Id:regex:^01AA$"])]
public void 立体魔法阵_黑暗奔流大(Event @event, ScriptAccessory accessory)
{
// 或者用 EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^3795$"] , dp.Owner = @event.TargetId(); dp.DestoryAt = 4200;
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"立体魔法阵_黑暗奔流大{@event.SourceId}"; // ActionId: 49204
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new (10f, 100f);
dp.DestoryAt = 10000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "奇子·夜魔人_突击(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^492(19|20)"])]
public void 夜魔人_突击(Event @event, ScriptAccessory accessory)
{
// 49219 突击钢铁,49220 突击顺劈
if (isText)accessory.Method.TextInfo (@event.ActionId == 49219 ? $"远离冲锋终点" : "靠近冲锋终点", duration: 5200, true);
if (isTTS)accessory.Method.TTS(@event.ActionId == 49219 ? $"远离冲锋终点" : "靠近冲锋终点");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"突击{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new (4f, 50f);
// dp.ScaleMode = ScaleMode.YByDistance;
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "奇子·夜魔人_回转击(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49222$"])]
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 = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// 49215 调配补给 长刀 打顺劈,突击 49220 , 49216 调配补给 棍棒
[ScriptMethod(name: "奇子·夜魔人_横扫(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49224$"])]
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 = 1200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·夜魔人_黑暗帷幕(解除提示)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19685$"],suppress:1000)]
public void 夜魔人_黑暗帷幕(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"使用光元精的扇形亡语对准BOSS", duration: 5000, true);
if (isTTS)accessory.Method.TTS($"使用光元精的扇形亡语对准BOSS");
}
[ScriptMethod(name: "奇子·爆弹怪_爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49210$"])]
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.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// Todo.49211 奇子·爆弹怪_自爆(狂暴)
[ScriptMethod(name: "奇子·光元精_光散射(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49212$"])]
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 = 45f.DegToRad();
// dp.FixRotation = true; // ←好像没用
dp.DestoryAt = 1200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
// Todo.49214 奇子·深瞳_石化视线(背对)
[ScriptMethod(name: "奇子·夜魔人_挥舞(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49226$"])]
public void 夜魔人_挥舞击退(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"挥舞击退预测{@event.SourceId}";
dp.Scale = new(1f, 20f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(203, new Vector3(40f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f,0.4f,0f,0.8f), 4700);
}
[ScriptMethod(name: "奇子·夜魔人_挥舞(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49228$"])]
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "奇子·夜魔人_暗黑冲击(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49231$"])]
public void 夜魔人_暗黑冲击(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"AOE");
}
[ScriptMethod(name: "奇子·火蛟_火龙卷(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49256$"])]
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(50f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "火球_延烧(钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19697$"])]
public void 火球_延烧(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"火球_延烧{@event.SourceId}"; // ActionId 49258
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(4f);
dp.DestoryAt = 55200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "火球_延烧销毁", eventType: EventTypeEnum.RemoveCombatant, eventCondition: ["DataId:regex:^19697$"],userControl: false)]
public void 火球_延烧销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"火球_延烧.*");
}
[ScriptMethod(name: "火焰旋风(月环连线)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:19699"])]
public void 火焰旋风连线(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"火焰旋风连线{@event.SourceId}";
dp.Owner = accessory.Data.Me;
dp.Color = accessory.Data.DefaultSafeColor;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.TargetObject = @event.SourceId();
dp.Scale = new(1);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "火焰旋风_火焰旋风(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49259$"])]
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(50f);
dp.InnerScale = new Vector2(3.5f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·火蛟_火棘屏障(读条驱散提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49253$"])]
public void 火蛟_火棘屏障(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"准备驱散 <火蛟>(借用-水栖波)", duration: 5000, false);
if (isTTS)accessory.Method.TTS($"准备驱散火蛟");
}
[ScriptMethod(name: "奇子·杜尔迦_雷气释放(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4926[56]$"])]
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 = @event.ActionId == 49265 ? new Vector2(20f) : new Vector2(6f);
dp.DestoryAt = 4900;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "导弹_突击(直线躲避提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50688$"],suppress:1000)]
public void 导弹_突击(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"快躲开");
}
[ScriptMethod(name: "奇子·杜尔迦_原子射线(AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49272$"])]
public void 杜尔迦_原子射线(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"[火] 大AOE", duration: 12000, true);
if (isTTS)accessory.Method.TTS($"大AOE");
}
[ScriptMethod(name: "奇子·杜尔迦_气化炸弹(放击退提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49273$"])]
public void 杜尔迦_气化炸弹(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"放置击退源", duration: 3200, true);
if (isTTS)accessory.Method.TTS($"放置击退源");
}
[ScriptMethod(name: "奇子·杜尔迦_气化炸弹(击退预测)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49274$"])]
public void 杜尔迦_气化炸弹击退预测(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"气化炸弹击退预测{@event.SourceId}";
dp.Scale = new(1f, 40f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·杜尔迦_扩散射线(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:49276$"])]
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 = 120f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·斯芬克斯_放逐(左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:493(39|41)$"])]
public void 斯芬克斯_放逐 (Event @event, ScriptAccessory accessory)
{
var isR = @event.ActionId == 49341;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"放逐{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 5700;
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·斯芬克斯_放逐(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49337$"])]
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 = 5700;
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.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·斯芬克斯_放逐(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49335$"])]
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(10f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·斯芬克斯_记忆的谜题(指路)", eventType: EventTypeEnum.Chat, eventCondition: ["Type:NPCDialogueAnnouncements",
"Message:regex:^(试问……\n哪一个是(有翼|甲鳞|百兽|水栖)纲的魔物?|問おう……\n「(有翼|甲鱗|百獣|水棲)綱」の魔物はいずれなりや?|Riddle me this─which child is kin of (cloud|scale|beast|wave)?)$"])]
public async void 记忆的谜题指路连线(Event @event, ScriptAccessory accessory)
{
var monsterDict = new Dictionary<string, uint>
{
{ "cloud", 19711 }, // 有翼纲 渡渡鸟
{ "scale", 19714 }, // 甲鳞纲 跳蜥
{ "beast", 19713 }, // 百兽纲 奥猴
{ "wave", 19712 }, // 水栖纲 陆鱼
};
var keywordMap = new (string keyword, string category)[]
{
("有翼", "cloud"), ("甲鳞", "scale"), ("百兽", "beast"), ("水栖", "wave"), // 中文
("甲鱗", "scale"), ("百獣", "beast"), ("水棲", "wave"), // 日文(「有翼」与中文相同,故省略)
("cloud", "cloud"), ("scale", "scale"), ("beast", "beast"), ("wave", "wave"), // 英文
};
// 从台词解析纲类别
string rawMessage = @event["Message"];
string category = null;
foreach (var (keyword, cat) in keywordMap)
{
if (rawMessage.Contains(keyword)) { category = cat; break; }
}
if (category == null) return;
try
{
await Task.Delay(1000);
// 重新获取,而不是依赖 await 前的引用
if (monsterDict.TryGetValue(category, out var dataId))
{
DrawMonsterLine(accessory, @event, dataId);
}
}
catch (Exception ex)
{
accessory.Log.Debug($"奇子连线失败: {ex}");
}
}
private void DrawMonsterLine(ScriptAccessory accessory, Event @event, uint dataId)
{
foreach (var item in accessory.Data.Objects.GetByDataId(dataId))
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"奇子连线_{dataId}_{item.EntityId}";
dp.Owner = accessory.Data.Me;
dp.TargetObject = item.EntityId;
dp.Color = accessory.Data.DefaultSafeColor;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Scale = new(1);
dp.DestoryAt = 60000; // 这机制最短持续有约35s,不如直接画一分钟然后销毁
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
}
[ScriptMethod(name: "奇子·斯芬克斯_记忆的谜题销毁", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:regex:^1433$"],userControl: false)]
public void 记忆的谜题销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"奇子连线.*");
}
[ScriptMethod(name: "奇子·奇美拉_毒性爆发(毒AOE)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49332$"])]
public void 奇美拉_毒性爆发(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"AOE+毒(可死尸净化)", duration: 4000, false);
if (isTTS)accessory.Method.TTS($"AOE+毒");
}
// 绘制钢铁月环扇形,留存
/*
[ScriptMethod(name: "奇子·奇美拉_冰结大咆哮(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49315$"])]
public void 奇美拉_冰结大咆哮(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"远离");
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 = 6700;
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(12f);
dp1.InnerScale = new Vector2(11.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·奇美拉_雷电大咆哮(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49316$"])]
public void 奇美拉_雷电大咆哮(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"靠近");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"雷电大咆哮{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "奇子·奇美拉_寒冰/雷鸣/火焰吐息(扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:4930(0|2|4)$"])]
public void 奇美拉_寒冰雷鸣火焰吐息 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
switch (@event.ActionId())
{
case 49300: // 寒冰吐息 右下方向
dp.Name = $"奇美拉_寒冰吐息{@event.SourceId}";
dp.Rotation = 240f.DegToRad();
break;
case 49302: // 雷鸣吐息 左下方向
dp.Name = $"奇美拉_雷鸣吐息{@event.SourceId}";
dp.Rotation = 120f.DegToRad();
break;
case 49304: // 火焰吐息 面前方向
dp.Name = $"奇美拉_火焰吐息{@event.SourceId}";
dp.Rotation = 0f.DegToRad();
break;
}
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 240f.DegToRad();
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
*/
[ScriptMethod(name: "奇子·奇美拉_冰结/雷冰大咆哮(扇形安全区)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^493(0[024]|1[56])$"])]
public void 奇美拉_大咆哮 (Event @event, ScriptAccessory accessory)
{
switch (@event.ActionId())
{
// 大咆哮 钢铁 / 月环
case 49315: _chimeraRingType = 1; break; // 冰结大咆哮 钢铁
case 49316: _chimeraRingType = 2; break; // 雷电大咆哮 月环
// 扇形吐息
case 49300: _chimeraFanType = 1; break; // 寒冰吐息 右下
case 49302: _chimeraFanType = 2; break; // 雷鸣吐息 左下
case 49304: _chimeraFanType = 3; break; // 火焰吐息 面前
}
if (_chimeraRingType == 0 || _chimeraFanType == 0) return;
string ringSafe = _chimeraRingType == 1 ? "远离" : "靠近";
string fanSafeDir = _chimeraFanType switch
{
1 => "左上", // 寒冰
2 => "右上", // 雷鸣
3 => "背后", // 火焰
_ => "未知"
};
if (isText)accessory.Method.TextInfo($"{ringSafe},{fanSafeDir}安全", duration: 6300, true);
if (isTTS)accessory.Method.TTS($"{ringSafe}加{fanSafeDir}安全");
var dp = accessory.Data.GetDefaultDrawProperties();
switch (_chimeraFanType)
{
case 1: dp.Rotation = 60f.DegToRad(); break; // 寒冰 左上安全
case 2: dp.Rotation = 300f.DegToRad(); break; // 雷鸣 右上安全
case 3: dp.Rotation = 180f.DegToRad(); break; // 火焰 背后安全
}
dp.Color = accessory.Data.DefaultSafeColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 6700;
if (_chimeraRingType == 1)
{
dp.Scale = new Vector2(23.7f);
dp.InnerScale = new Vector2(12f);
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
_chimeraRingType = 0;
_chimeraFanType = 0;
}
else if (_chimeraRingType == 2)
{
dp.Scale = new Vector2(8f);
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
_chimeraRingType = 0;
_chimeraFanType = 0;
}
}
[ScriptMethod(name: "奇子·奇美拉_强袭吐息(冲锋扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:4932[345]$"])]
public void 奇美拉_强袭吐息 (Event @event, ScriptAccessory accessory)
{
// 读条约6.2s后 [49322]冲锋伤害 判定,冲锋后约3.6s扇形判定
var dp = accessory.Data.GetDefaultDrawProperties();
switch (@event.ActionId())
{
case 49323: // 寒冰吐息 右下方向
if (isText)accessory.Method.TextInfo($"远离扯线,然后去左上", duration: 9100, true);
if (isTTS)accessory.Method.TTS($"远离扯线,然后去左上");
dp.Name = $"强袭寒冰吐息{@event.SourceId}";
dp.Rotation = 240f.DegToRad();
break;
case 49324: // 雷鸣吐息 左下方向
if (isText)accessory.Method.TextInfo($"远离扯线,然后去右上", duration: 9100, true);
if (isTTS)accessory.Method.TTS($"远离扯线,然后去右上");
dp.Name = $"强袭雷鸣吐息{@event.SourceId}";
dp.Rotation = 120f.DegToRad();
break;
case 49325: // 火焰吐息 面前方向
if (isText)accessory.Method.TextInfo($"远离扯线,然后去背后", duration: 9100, true);
if (isTTS)accessory.Method.TTS($"远离扯线,然后去背后");
dp.Name = $"强袭火焰吐息{@event.SourceId}";
dp.Rotation = 0f.DegToRad();
break;
}
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(60f);
dp.Radian = 240f.DegToRad();
dp.Delay = 5900;
dp.DestoryAt = 3900;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·奇美拉_寒冰眼(点名放置提示)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:regex:^029D$"])]
public void 奇美拉_寒冰眼(Event @event, ScriptAccessory accessory)
{
// 放置 49320 寒冰眼
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
if (@event.TargetId() != accessory.Data.Me) return;
if (isText)accessory.Method.TextInfo($"放置冰圈", duration: 3500, false);
if (isTTS)accessory.Method.TTS($"放置冰圈");
}
[ScriptMethod(name: "闪电球_无序的和声(钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19709$"])]
public void 闪电球_无序的和声(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"远离球");
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 = 9000;
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(6f);
dp1.InnerScale = new Vector2(5.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·巨人_巨躯狂怒(前后刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:4936(1|3)$"])]
public void 巨人_巨躯狂怒 (Event @event, ScriptAccessory accessory)
{
var isF = @event.ActionId == 49361;
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 = isF ? 0f.DegToRad() : 180f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "奇子·巨人_巨躯狂怒(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49359$"])]
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 = 5700;
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(15f);
dp1.InnerScale = new Vector2(14.95f);
dp1.Radian = float.Pi * 2;
dp1.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp1);
}
[ScriptMethod(name: "奇子·巨人_粉碎重踏(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49378$"])]
public void 巨人_粉碎重踏(Event @event, ScriptAccessory accessory)
{
// 使用 TargetIcon 00EA 对准异色史莱姆释放的直线
// 49379 疑似是武器打到会变色的位置
if (isTTS)accessory.Method.TTS($"快躲开");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"粉碎重踏{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new (8f, 40f);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "凝胶化火焰/雷电_炸裂(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4937(3|5)$"])]
public void 凝胶化_炸裂(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"打断史莱姆");
}
[ScriptMethod(name: "奇子·巨人_追雷(踩塔)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49364$"])]
public void 巨人_追雷(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"踩塔");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"追雷连线{@event.SourceId}";
dp.Owner = accessory.Data.Me;
dp.Color = accessory.Data.DefaultSafeColor;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.TargetObject = @event.SourceId();
dp.Scale = new(1);
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "奇子·独眼巨人_激励鼓舞(打断提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49368$"])]
public void 独眼巨人_激励鼓舞(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"打断小怪");
}
[ScriptMethod(name: "奇子·独眼巨人_怒视(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49367$"])]
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 (3f, 40f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
// 49420 死亡轮盘转转转
// 50940 怪光线 直线死刑 [TargetIcon 01D7]
[ScriptMethod(name: "奇子·冥鬼之眼王_双重视线(鸳鸯锅)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^553[67]$"])]
public void 冥鬼之眼王_双重视线(Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() != accessory.Data.Me) return;
var color = @event.StatusId == 5536 ? "红色" : "白色";
if (isText)accessory.Method.TextInfo($"去{color}半场", duration: 4500, true);
if (isTTS)accessory.Method.TTS($"去{color}半场");
}
[ScriptMethod(name: "奇子·肮脏之眼_死亡视线(背对提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49434$"])]
public void 肮脏之眼_死亡视线(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"背对 <肮脏之眼>", duration: 3000, true);
if (isTTS)accessory.Method.TTS($"背对肮脏之眼");
}
[ScriptMethod(name: "魔斧之主 劳妲_霹雳(直线麻痹死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49470$"])]
public void 劳妲_霹雳(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"麻痹死刑", duration: 4000, true);
if (isTTS)accessory.Method.TTS($"麻痹死刑");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"霹雳{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.TargetObject = @event.TargetId;
dp.Scale = new (6f, 50f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "隐蔽魔刃_突进(直线)", eventType: EventTypeEnum.PlayActionTimeline, eventCondition: ["Id:regex:^4576$","SourceDataId:19745"])]
public void 隐蔽魔刃_突进(Event @event, ScriptAccessory accessory)
{
// PlayActionTimeline 4562是出现,4576是隐藏
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"隐蔽魔刃_突进{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new (5f, 50f);
dp.Delay = 3700;
dp.DestoryAt = 4000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_大奔流(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49453$"])]
public void 劳妲_大奔流(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"向南北击退", duration: 6000, true);
if (isTTS)accessory.Method.TTS($"向南北击退");
IntPtr omenHandle = accessory.Method.VfxMethod.CreateOmen(427, new Vector3(60f),
@event.EffectPosition(), @event.SourceRotation(), new Vector4(1f,0.5f,0f,0.5f), 6700);
accessory.Method.VfxMethod.SetVfxSpeed(omenHandle,0.8f);
}
[ScriptMethod(name: "魔斧之主 劳妲_支配魔刃(引导提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49462$"])]
public void 劳妲_支配魔刃引导(Event @event, ScriptAccessory accessory)
{
// 另一个读条是 50846,引导预测再看需不需要画
if (isText)accessory.Method.TextInfo($"向南北引导直线(避开人偶)", duration: 14300, true);
if (isTTS)accessory.Method.TTS($"向南北引导直线(避开人偶)");
}
[ScriptMethod(name: "魔斧之主 劳妲_支配魔刃(躲避提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49464$"])]
public void 劳妲_支配魔刃躲避(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"快躲开");
}
[ScriptMethod(name: "魔斧之主 劳妲_支配魔刃(直线预兆)", eventType: EventTypeEnum.Tether, eventCondition: ["Id:regex:^0001$"])]
public void 劳妲_支配魔刃预兆(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
if (phase != Beasts_Phase.Lauda) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"支配魔刃预兆{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.2f);
dp.Owner = @event.SourceId();
dp.TargetObject = @event.TargetId;
dp.Scale = new (6f,60f);
dp.DestoryAt = 5200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_垂直驱动(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49451$"])]
public void 劳妲_垂直驱动(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"去两侧");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"垂直驱动{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new (20f, 80f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_贪食啮噬(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49449$"])]
public void 劳妲_贪食啮噬(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"对侧角落安全(注意击退)", duration: 12600, true);
if (isTTS)accessory.Method.TTS($"对侧角落安全(注意击退)");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"贪食啮噬{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.4f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(40f);
dp.DestoryAt = 13300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_贪食裂膛(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49446$"])]
public void 劳妲_贪食裂膛(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"BOSS背后安全(注意击退)", duration: 12600, true);
if (isTTS)accessory.Method.TTS($"BOSS背后安全(注意击退)");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"贪食裂膛{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new (40f, 50f);
dp.DestoryAt = 13300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_消失魔刃·冲波(提醒)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49484$"])]
public void 劳妲_消失魔刃冲波(Event @event, ScriptAccessory accessory)
{
// [Status 5341] 49485 瞬移?,打正打背怎么都是49487 , 49488没遇到,击退距离40m
if (isText)accessory.Method.TextInfo($"观察稍后击退方向", duration: 6000, true);
if (isTTS)accessory.Method.TTS($"观察击退方向");
}
// [Status 5341]消失魔刃·冲波 49484 本体无意义读条,49485 瞬移?,打正打背怎么都是49487 , 49488没遇到,击退距离40m
[ScriptMethod(name: "高段诱爆魔刃_魔力爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49443$"])]
public void 高段诱爆魔刃_魔力爆炸(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"高段诱爆魔刃_魔力爆炸{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(8f);
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_拘束(结界方块)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add","DataId:regex:^20154(28|53)$"])]
public void 劳妲_拘束(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1343) 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 (10f, 10f);
dp.DestoryAt = 4200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "高段魔刃结界_剧毒魔刃(十字)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add","DataId:regex:^2015428$"])]
public void 高段魔刃结界_剧毒魔刃(Event @event, ScriptAccessory accessory)
{
if (HelperExtensions.GetCurrentTerritoryId() != 1343) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"高段剧毒魔刃{@event.SourceId}";
dp.Scale = new (10f, 30f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Delay = 4200;
dp.DestoryAt = 8400;
float[] rotations = { 0f, 90f};
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
[ScriptMethod(name: "火焰魔刃·牢狱(钢铁)", eventType: EventTypeEnum.ObjectChanged, eventCondition: ["Operate:Add","DataId:regex:^2015453$"])]
public void 火焰魔刃牢狱(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"火焰魔刃·牢狱{@event.SourceId}"; // ActionId 49460
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(12f);
dp.DestoryAt = 11800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "魔斧之主 劳妲_火焰魔刃(放置核爆提示)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4946(5|8)$"])]
public void 劳妲_火焰魔刃(Event @event, ScriptAccessory accessory)
{
if (isText && @event.ActionId== 49465) accessory.Method.TextInfo ($"放置核爆点名", duration: 7000, true);
if (isTTS)accessory.Method.TTS (@event.ActionId== 49465 ? $"放置核爆点名" : $"快躲开");
}
[ScriptMethod(name: "高段火焰魔刃_魔刃爆焰(核爆)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49469$"])]
public void 高段火焰魔刃_魔刃爆焰(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"高段魔刃爆焰{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(20f);
dp.DestoryAt = 10700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
// 49473 暴食战斧 最后击退
#endregion
#region 蜃景幻界新月岛 北征之章
[ScriptMethod(name: "—————— 蜃景幻界新月岛 北征之章 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 蜃景幻界新月岛北征之章(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "[FATE] 忍耐基路伯_圆形魔法剑(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^5011[89]$"])]
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[FATE] 忍耐基路伯_环形魔法剑(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^5012[01]$"])]
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.InnerScale = new Vector2(12f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[FATE] 忍耐基路伯_神圣(步进地火)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49913$"])]
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: "[FATE] 妖艳魔花珊迪_藤条抽打(四向)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4894[567]$"])]
public void 妖艳魔花珊迪_藤条抽打(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"妖艳魔花珊迪_藤条抽打{@event.SourceId}";
dp.Scale = new (6f, 60f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.DestoryAt = @event.ActionId() == 48947 ? 2700 : 4700;
float[] rotations = { 45f, 135f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
[ScriptMethod(name: "[FATE] 妖艳魔花珊迪_毒气团 飞散(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48950$"])]
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[FATE] 邪瞳_诅咒目光(背对连线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47152$"])]
public void 邪瞳_诅咒目光背对连线(Event @event, ScriptAccessory accessory)
{
if (isDeveloper) accessory.Method.SendChat($"/e [DEBUG]: 测试成功");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"邪瞳_诅咒目光背对连线{@event.SourceId}";
dp.Color = new Vector4(1f, 0f, 0f, 1f);
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Scale = new(2);
dp.Delay = 1800;
dp.DestoryAt = 2900;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"邪瞳_诅咒目光判定时间{@event.SourceId}";
dp1.Color = new Vector4(1f, 0f, 0f, 2f);
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(2f);
dp1.DestoryAt = 4700;
dp1.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp1);
}
[ScriptMethod(name: "[FATE] 邪瞳_诅咒目光(背对范围)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47152$"])]
public void 邪瞳_诅咒目光(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"邪瞳_诅咒目光{@event.SourceId}";
dp.Color = new Vector4(1f, 0f, 0f, 10f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(50f);
dp.InnerScale = new Vector2(49.8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[FATE] 遗迹冰狼_内吹雪(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49756$"])]
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[FATE] 遗迹冰狼_外吹雪(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49757$"])]
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.InnerScale = new Vector2(10f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[FATE] 新月女王_王权闪光(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49494$"])]
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 = 180f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[FATE] 新月女王_王权闪光(扫尾)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49495$"])]
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.Rotation = 180f.DegToRad();
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[FATE] 统领奇美拉_寒冰咆哮(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48633$"])]
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.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
/* 暂时废弃
[ScriptMethod(name: "[FATE] 雷球_寒冰咆哮(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48635$"])]
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(12);
dp.DestoryAt = 700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
[ScriptMethod(name: "[FATE] 统领奇美拉_雷电咆哮(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48634$"])]
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.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[FATE] 雷球_雷电咆哮(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48636$"])]
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.InnerScale = new Vector2(8f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
/* 显示时间不确定,且没看到Remove日志 暂时废弃
[ScriptMethod(name: "[FATE] 嘈杂的噪音_无序的和声(钢铁)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:regex:^19313$"])]
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(12);
dp.DestoryAt = 20000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
[ScriptMethod(name: "无序的和声销毁", eventType: EventTypeEnum.RemoveCombatant, eventCondition: ["DataId:regex:^19313$"], userControl: false)]
public void 无序的和声销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"无序的和声{@event.TargetId()}");
}
/* 抓不到 Status 5106?
[ScriptMethod(name: "[FATE] 伊阿姆柏的种子_爆炸(钢铁)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^5106$"])]
public void 伊阿姆柏的种子_爆炸(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"伊阿姆柏的种子_爆炸{@event.TargetId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15);
dp.DestoryAt = 1800;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
[ScriptMethod(name: "伊阿姆柏的种子_爆炸销毁", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48033$"], userControl: false)]
public void 伊阿姆柏的种子_爆炸销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($"伊阿姆柏的种子_爆炸{@event.SourceId()}");
}
[ScriptMethod(name: "[FATE] 缺陷拉米亚_诅咒目光(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48253$"])]
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.Radian = 60f.DegToRad();
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 诅咒的继承者——惨白魔人] 咒力的替身_臭气(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49777$"])]
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(50f);
dp.Radian = 100f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 诅咒的继承者——惨白魔人] 咒力的替身_平原震裂(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^49779$"])]
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 = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 天道好轮回——魔亡灵法师] 古代探险家的亡灵_爆炸(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47175$"])]
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 = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 天道好轮回——魔亡灵法师] 古代海贼的亡灵_爆炸(十字)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47176$"])]
public void 古代海贼的亡灵_爆炸(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"古代海贼的亡灵_爆炸";
dp.Scale = new (7f, 80f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
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: "[CE 天道好轮回——魔亡灵法师] 魔法阵展开_昏暗奔流(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47180$"])]
public void 魔法阵展开_昏暗奔流(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"魔法阵展开_昏暗奔流";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new (12f, 70f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "[CE 禁书化形——古术魔典] 魔力书写_草书(步进地火)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47306$"])]
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 (6f, 50f);
dp.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "[CE 苏醒的多头龙——魔许德拉] 近远冲击波_元素冲击波(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(47199|4720[0123])$"])]
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 = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 四颚斧花——提蔛] 中央鞭打(辣尾)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47220$"])]
public void 中央鞭打(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"中央鞭打";
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.6f);
dp.Owner = @event.SourceId();
dp.Scale = new (10f, 52f);
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "[CE 四颚斧花——提蔛] 侧方鞭打(辣翅)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(47221|49729)$"])]
public void 侧方鞭打(Event @event, ScriptAccessory accessory)
{
var isR = @event.ActionId == 47221;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"侧方鞭打{@event.SourceId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(26f);
dp.Radian = 180f.DegToRad();
dp.Offset = isR ? new Vector3(5f, 0f, 0f) : new Vector3(-5f, 0f, 0f);
dp.Rotation = isR ? 270f.DegToRad() : 90f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 四颚斧花——提蔛] 毒雾喷射(扇形)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(47228|5054[789])$"])]
public void 毒雾喷射(Event @event, ScriptAccessory accessory)
{
// 猜测:50547 左 ; 50548 下
// 已验证:47228 正 ; 50549 右
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 = 90f.DegToRad();
switch (@event.ActionId())
{
case 47228:
dp.Rotation = 0f.DegToRad();
break;
case 50547:
dp.Rotation = 90f.DegToRad();
break;
case 50548:
dp.Rotation = 180f.DegToRad();
break;
case 50549:
dp.Rotation = 270f.DegToRad();
break;
}
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 纯白守护者——雪石膏之剑] 称誉(四连攻击命令_顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47158$"])]
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 = 90f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 纯白守护者——雪石膏之剑] 连续斩(二连左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4716[67]$"])]
public void 连续斩(Event @event, ScriptAccessory accessory)
{
var isR = @event.ActionId == 47166;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"连续斩1";
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);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"连续斩2";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(40f);
dp1.Radian = 180f.DegToRad();
dp1.Rotation = isR ? 90f.DegToRad() : 270f.DegToRad();
dp1.Delay = 4700;
dp1.DestoryAt = 2300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
[ScriptMethod(name: "[CE 暴食咒鬼——阿尔戈尔] 捕食(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^50469$"])]
public void 捕食 (Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"捕食";
dp.Color = accessory.Data.DefaultDangerColor.WithW(2f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(8f);
dp.Radian = 120f.DegToRad();
dp.DestoryAt = 6500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 暴食咒鬼——阿尔戈尔] 吸引(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48104$"])]
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(60f);
dp.Radian = 30f.DegToRad();
dp.DestoryAt = 3200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 暴食咒鬼——阿尔戈尔] 洋葱瘴气(顺劈)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48112$"])]
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(60f);
dp.Radian = 30f.DegToRad();
dp.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 暴食咒鬼——阿尔戈尔] 番茄瘴气(直线)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48111$"])]
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 (6f, 50f);
dp.DestoryAt = 1700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
[ScriptMethod(name: "[CE 魔法军团——小小法师] 小小核爆(钢铁预兆)", eventType: EventTypeEnum.StatusAdd,
eventCondition: ["StatusID:regex:^3795$","Param:2","TargetName:regex:^(核爆球|フレアスフィア|flare sphere)$"])]
public void 小小核爆预兆(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"小小核爆预兆{@event.TargetId}";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.TargetId();
dp.Scale = new Vector2(18f);
dp.DestoryAt = 3500;
// dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 魔法军团——小小法师] 小小神圣(水击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48312$"])]
public void 小小神圣(Event @event, ScriptAccessory accessory)
{
if (isDeveloper) accessory.Method.SendChat($"/e [DEBUG]: 测试成功");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "小小神圣";
dp.Scale = new(1f, 15f);
dp.Color = accessory.Data.DefaultDangerColor.WithW(3f);
dp.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId();
dp.Rotation = float.Pi;
dp.DestoryAt = 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "[CE 魔法军团——小小法师] 立体魔法阵_彗星 连线", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^3445$", "Param:21"])]
public void 立体魔法阵_彗星(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"立体魔法阵_{@event.TargetId}";
dp.Owner = accessory.Data.Me;
dp.Color = accessory.Data.DefaultSafeColor;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.TargetObject = @event.TargetId();
dp.Scale = new(1);
dp.DestoryAt = 30000;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "[CE 魔法军团——小小法师] 小小爆炎(钢铁动画)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48318$"])]
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(14f);
dp.DestoryAt = 5700;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 魔女复制体——卡洛菲斯提莉二重身] 双重魔发斩(左右刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^5069[12]$"])]
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.Radian = 180f.DegToRad();
dp.Delay = @event.ActionId() == 50691 ? 0 : 2500;
dp.DestoryAt = @event.ActionId() == 50691 ? 2500 : 2000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 魔女复制体——卡洛菲斯提莉二重身] 发牢(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47072$"])]
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 = 5200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 魔女复制体——卡洛菲斯提莉二重身] 剪发(冰花)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4707[67]$"])]
public void 剪发(Event @event, ScriptAccessory accessory)
{
if (@event.ActionId() == 47076)
{
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 = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
else if (@event.ActionId() == 47077)
{
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"剪发冰花{@event.SourceId}";
dp1.Scale = new (4f, 120f);
dp1.Owner = @event.SourceId();
dp1.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp1.DestoryAt = 4700;
float[] rotations = { 0f, 90f };
foreach (float rotation in rotations)
{
dp1.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp1);
}
}
else
{
}
}
[ScriptMethod(name: "[CE 叛逆使魔——负隅宝石兽] 黄宝石射线(贴墙钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48281$"])]
public void 黄宝石射线(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"黄宝石射线{@event.SourceId}";
dp.Color = new Vector4(1f, 0f, 0f, 5f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(5f);
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 2700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
[ScriptMethod(name: "[CE 叛逆使魔——负隅宝石兽] 利爪凶尾(前后刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48294$"])]
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(45f);
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"利爪凶尾_后";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(45f);
dp1.Rotation = 180f.DegToRad();
dp1.Radian = 180f.DegToRad();
dp1.Delay = 5700;
dp1.DestoryAt = 3300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
[ScriptMethod(name: "[CE 叛逆使魔——负隅宝石兽] 凶尾利爪(后前刀)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48295$"])]
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(45f);
dp.Rotation = 180f.DegToRad();
dp.Radian = 180f.DegToRad();
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = $"凶尾利爪_后";
dp1.Color = accessory.Data.DefaultDangerColor;
dp1.Owner = @event.SourceId();
dp1.Scale = new Vector2(45f);
dp1.Radian = 180f.DegToRad();
dp1.Delay = 5700;
dp1.DestoryAt = 3300;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp1);
}
[ScriptMethod(name: "[CE 拟态使魔——变形法师] 圆火(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48341$"])]
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(15f);
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 拟态使魔——变形法师] 旋风环(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48354$"])]
public void 变形法师_旋风环(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"变形法师_旋风环";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(25f);
dp.InnerScale = new Vector2(10f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 天降(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47448$"])]
public void 天降(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"远离");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"天降";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.DestoryAt = 5200;
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 旋风环(月环)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47449$"])]
public void 诱拐魔_旋风环(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"靠近");
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"诱拐魔_旋风环";
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 = 5200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 散羽(钢铁)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47443$"])]
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 = 4200;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 突风(击退)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^48250$"])]
public void 突风(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "突风";
dp.Scale = new(1f, 24);
dp.Color = new Vector4(0f, 1f, 1f, 4f);
dp.Owner = accessory.Data.Me;
dp.Rotation = @event.SourceRotation();
dp.FixRotation = true;
dp.DestoryAt = 3700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
/* 不准 用不了
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 撕裂之风(移动冰花)", eventType: EventTypeEnum.TargetIcon, eventCondition: ["Id:regex:^01FA$"])]
public void 撕裂之风预备(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"撕裂之风预备{@event.SourceId}";
dp.Scale = new (8f, 120f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(0.5f);
dp.DestoryAt = 5100;
float[] rotations = { 52f, 97f, 142f, 187f};
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
*/
[ScriptMethod(name: "[CE 孤岛的绑架犯——诱拐魔] 撕裂之风(冰花读条)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^47439$"])]
public void 撕裂之风(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"撕裂之风{@event.SourceId}";
dp.Scale = new (8f, 120f);
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor.WithW(1f);
dp.DestoryAt = 700;
float[] rotations = { 0f, 90f };
foreach (float rotation in rotations)
{
dp.Rotation = rotation.DegToRad();
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Straight, dp);
}
}
#endregion
#region 7.4 格莱杨拉波尔歼灭战
[ScriptMethod(name: "—————— 7.4 格莱杨拉波尔歼灭战 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 格莱杨拉波尔歼灭战(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "雷电爆发 双死刑", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45660"])]
public void 雷电爆发(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"双死刑");
}
[ScriptMethod(name: "雷光急行 击退提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45618"])]
public void 雷光急行(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"击退", duration: 5000, true);
if (isTTS)accessory.Method.TTS($"击退");
}
[ScriptMethod(name: "抽雾 吸引提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45625"])]
public void 抽雾(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"吸引", duration: 5000, true);
if (isTTS)accessory.Method.TTS($"吸引");
}
[ScriptMethod(name: "抽雾 吸引(吸引预测)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45625"])]
public void 抽雾_吸引预测(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "抽雾_吸引预测";
dp.Scale = new(1f, 19f);
dp.Color = new Vector4(0f, 1f, 1f, 3f);
dp.Owner = accessory.Data.Me;
dp.Rotation = 180f.DegToRad();
dp.FixRotation = true;
dp.DestoryAt = 5700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Displacement, dp);
}
[ScriptMethod(name: "抽雾吸引防击退销毁", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^(160|1209|2663)$"],userControl: false)]
public void 抽雾吸引防击退销毁(Event @event, ScriptAccessory accessory)
{
if ( @event.TargetId() != accessory.Data.Me) return;
accessory.Method.RemoveDraw("抽雾_吸引预测");
}
[ScriptMethod(name: "排雾 吸引矩形危险区", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45667"])]
public void 排雾(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "排雾";
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.Scale = new(20f, 20f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "无控急行 AOE", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45624"])]
public void 无控急行(Event @event, ScriptAccessory accessory)
{
if (isTTS)accessory.Method.TTS($"AOE");
}
/* 无法判断高低VFX
[ScriptMethod(name: "雷光环_雷转质射线(直线)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:18993"])]
public void 雷光环_雷转质射线(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "雷光环_雷转质射线";
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.Scale = new(5f, 30f);
dp.DestoryAt = 7000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
*/
[ScriptMethod(name: "护卫炮塔_雷转质射线(直线危险区)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(45629|4563[0-3])$"])]
public void 护卫炮塔_雷转质射线Danger(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "护卫炮塔_雷转质射线";
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.Scale = new(5f, 50f);
switch (@event.ActionId())
{
case 45629:
dp.Scale = new(5f, 25f);
break;
case 45630:
dp.Scale = new(5f, 10f); // 实际为25m,但是只有一格高台 不画太多
break;
case 45631:
dp.Scale = new(5f, 20f);
break;
case 45632:
dp.Scale = new(5f, 15f);
break;
case 45633:
dp.Scale = new(5f, 10f);
break;
}
dp.DestoryAt = 4700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
[ScriptMethod(name: "前照光 提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45637"])]
public void 前照光(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"下安全", duration: 6000, false);
if (isTTS)accessory.Method.TTS($"下下下");
}
/* 无法判断VFX高低
[ScriptMethod(name: "前照光/雷鸣吐息 上下AOE", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^4563[57]$"])]
public void 上下AOE(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "上下AOE";
dp.Owner = @event.SourceId();
dp.Color = accessory.Data.DefaultDangerColor;
dp.Scale = new(20f, 60f);
dp.DestoryAt = 6700;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Rect, dp);
}
*/
[ScriptMethod(name: "雷鸣吐息 提示", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45635"])]
public void 雷鸣吐息(Event @event, ScriptAccessory accessory)
{
if (isText)accessory.Method.TextInfo($"上安全", duration: 6000, true);
if (isTTS)accessory.Method.TTS($"上上上");
}
[ScriptMethod(name: "雷光雨(魔法阵钢铁最终位置)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:45659"])]
public void 雷光雨(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"雷光雨";
dp.Color = accessory.Data.DefaultDangerColor;
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(16f);
dp.DestoryAt = 2900;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
#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 uint Id1(this Event @event)
{
return JsonConvert.DeserializeObject<uint>(@event["Id1"]);
}
public static uint Id2(this Event @event)
{
return JsonConvert.DeserializeObject<uint>(@event["Id2"]);
}
}
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判断
}
}
#region 特殊函数
public unsafe static class ExtensionVisibleMethod
{
public static bool IsCharacterVisible(this ICharacter chr)
{
var v = (IntPtr)(((FFXIVClientStructs.FFXIV.Client.Game.Character.Character*)chr.Address)->GameObject.DrawObject);
if (v == IntPtr.Zero) return false;
return Bitmask.IsBitSet(*(byte*)(v + 136), 0);
}
public static class Bitmask
{
public static bool IsBitSet(ulong b, int pos)
{
return (b & (1UL << pos)) != 0;
}
public static void SetBit(ref ulong b, int pos)
{
b |= 1UL << pos;
}
public static void ResetBit(ref ulong b, int pos)
{
b &= ~(1UL << pos);
}
public static bool IsBitSet(byte b, int pos)
{
return (b & (1 << pos)) != 0;
}
public static bool IsBitSet(short b, int pos)
{
return (b & (1 << pos)) != 0;
}
}
}
#endregion 特殊函数