Files
test/Assets/PerfectWorld/Scripts/Skills/skill.cs
T
2026-05-05 14:38:10 +07:00

975 lines
67 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 BrewMonster.Assets.PerfectWorld.Scripts.Skills;
using System.Collections.Generic;
using System.Text;
namespace BrewMonster.Scripts.Skills
{
public static class GNET
{
public static readonly Dictionary<int, TeamStateImp> TeamState;
public static readonly Dictionary<int, VisibleStateImp> VisibleState;
// [中文] 首次访问 GNET 时由 CLR 调用,无需手动 Init
// [English] Populated on first access to GNET; no manual Init() required.
/// <summary>Same as C++ TeamStateImp::Query — returns null if id is not registered.</summary>
public static TeamStateImp QueryTeamState(int id) =>
TeamState.TryGetValue(id, out var s) ? s : null;
/// <summary>Same as C++ VisibleStateImp::Query(prof,id) — prof unused; null if id missing.</summary>
public static VisibleStateImp QueryVisibleState(int prof, int id) =>
VisibleState.TryGetValue(id, out var v) ? v : null;
public static VisibleStateImp QueryVisibleState(int id) =>
VisibleState.TryGetValue(id, out var v) ? v : null;
static GNET()
{
var team = new Dictionary<int, TeamStateImp>();
var visible = new Dictionary<int, VisibleStateImp>();
visible.Add(1, new VisibleStateImp(1, "强化","属性增强.gfx",""));
visible.Add(2, new VisibleStateImp(2, "弱化","属性下降.gfx",""));
visible.Add(3, new VisibleStateImp(3, "反震","物理反震.gfx","HH_Spine"));
visible.Add(4, new VisibleStateImp(4, "迟滞","迟滞.gfx",""));
visible.Add(5, new VisibleStateImp(5, "昏迷","震晕.gfx","HH_Head"));
visible.Add(6, new VisibleStateImp(6, "睡眠","睡眠.gfx",""));
visible.Add(7, new VisibleStateImp(7, "定身","定身.gfx",""));
visible.Add(8, new VisibleStateImp(8, "麻痹","封印.gfx",""));
visible.Add(9, new VisibleStateImp(9, "受诅","特殊不利状态.gfx","HH_Head"));
visible.Add(10, new VisibleStateImp(10, "雷击","持续金系攻击.gfx","HH_Head"));
visible.Add(11, new VisibleStateImp(11, "中毒","中毒.gfx","HH_Head"));
visible.Add(12, new VisibleStateImp(12, "燃烧","持续火攻击.gfx","HH_Head"));
visible.Add(13, new VisibleStateImp(13, "落石","持续土系伤害.gfx",""));
visible.Add(14, new VisibleStateImp(14, "放血","放血.gfx","HH_Head"));
visible.Add(15, new VisibleStateImp(15, "魔力燃烧","魔力燃烧.gfx","HH_Head"));
visible.Add(16, new VisibleStateImp(16, "霜刃","霜刃状态.gfx","HH_RighthandWeapon"));
visible.Add(17, new VisibleStateImp(17, "爆气","爆气效果状态.gfx","HH_RighthandWeapon"));
visible.Add(18, new VisibleStateImp(18, "附火伤","烈焰之矢.gfx","HH_RighthandWeapon"));
visible.Add(19, new VisibleStateImp(19, "鲜花1","康乃馨环绕.gfx",""));
visible.Add(20, new VisibleStateImp(20, "鲜花2","百合环绕.gfx",""));
visible.Add(21, new VisibleStateImp(21, "鲜花3","菊花环绕.gfx",""));
visible.Add(22, new VisibleStateImp(22, "鲜花4","玫瑰环绕.gfx",""));
visible.Add(23, new VisibleStateImp(23, "弱魂","弱魂咒状态.gfx","HH_Head"));
// 法师特有
visible.Add(24, new VisibleStateImp(24, "烈焰护甲","烈焰护甲.gfx","HH_Spine"));
visible.Add(25, new VisibleStateImp(25, "寒冰护甲","寒冰护甲.gfx","HH_Spine"));
visible.Add(26, new VisibleStateImp(26, "磐石护甲","磐石护甲.gfx","HH_Spine"));
visible.Add(27, new VisibleStateImp(27, "避水诀","避水诀.gfx","HH_Spine"));
// 羽灵特有
visible.Add(28, new VisibleStateImp(28, "羽盾","羽盾.gfx","HH_Spine"));
// 羽芒特有
visible.Add(29, new VisibleStateImp(29, "翼盾","翼盾.gfx","HH_Spine"));
visible.Add(30, new VisibleStateImp(30, "烈焰之矢","烈焰之矢.gfx","HH_LefthandWeapon"));
// 妖精特有
visible.Add(31, new VisibleStateImp(31, "荆棘阵","魔法反震.gfx","HH_Spine"));
visible.Add(32, new VisibleStateImp(32, "妖狐变","妖狐附体状态.gfx","HH_Spine"));
// 怪物特有
visible.Add(33, new VisibleStateImp(33, "目盲","主动变被动.gfx",""));
visible.Add(34, new VisibleStateImp(34, "封印免疫","封印免疫.gfx",""));
visible.Add(35, new VisibleStateImp(35, "睡眠免疫","睡眠免疫.gfx",""));
visible.Add(36, new VisibleStateImp(36, "火系免疫","火系免疫.gfx","HH_Spine"));
visible.Add(37, new VisibleStateImp(37, "水系免疫","水系免疫.gfx","HH_Spine"));
visible.Add(38, new VisibleStateImp(38, "金系免疫","金系免疫.gfx","HH_Spine"));
visible.Add(39, new VisibleStateImp(39, "木系免疫","木系免疫.gfx","HH_Spine"));
visible.Add(40, new VisibleStateImp(40, "土系免疫","土系免疫.gfx","HH_Spine"));
visible.Add(41, new VisibleStateImp(41, "风盾术","风盾术.gfx","HH_Spine"));
visible.Add(42, new VisibleStateImp(42, "气流锁","气流锁.gfx","HH_Spine"));
visible.Add(43, new VisibleStateImp(43, "元素虚弱","元素虚弱状态.gfx",""));
visible.Add(44, new VisibleStateImp(44, "伤害加深免疫","伤害加深免疫.gfx",""));
visible.Add(45, new VisibleStateImp(45, "冻结 ","冻结.gfx","HH_Spine"));
visible.Add(46, new VisibleStateImp(46, "真空","真空.gfx","HH_Spine"));
visible.Add(47, new VisibleStateImp(47, "水火护甲","水火护甲.gfx","HH_Spine"));
visible.Add(48, new VisibleStateImp(48, "法师之星","法师之星.gfx","HH_Spine"));
visible.Add(49, new VisibleStateImp(49, "无敌","无敌.gfx","HH_Spine"));
visible.Add(50, new VisibleStateImp(50, "持续增加元气","持续增加元气.gfx",""));
visible.Add(51, new VisibleStateImp(51, "持续降低元气","持续降低元气.gfx",""));
visible.Add(52, new VisibleStateImp(52, "攻击等级增加","攻击等级增加.gfx",""));
// visible.Add(53, new VisibleStateImp(53, "防御等级增加", "防御等级增加.gfx", ""));
visible.Add(54, new VisibleStateImp(54, "吸收物理伤害","吸收物理伤害.gfx","HH_Spine"));
visible.Add(55, new VisibleStateImp(55, "吸收法术伤害","吸收法术伤害.gfx","HH_Spine"));
visible.Add(56, new VisibleStateImp(56, "免疫流血","流血免疫.gfx",""));
visible.Add(57, new VisibleStateImp(57, "坚壁","坚壁.gfx","HH_Spine"));
visible.Add(58, new VisibleStateImp(58, "遁隐","遁隐.gfx","HH_Spine"));
visible.Add(59, new VisibleStateImp(59, "反弹","复仇惩戒.gfx","HH_Spine"));
visible.Add(60, new VisibleStateImp(60, "封印","复仇封印.gfx","HH_Spine"));
visible.Add(61, new VisibleStateImp(61, "反击","复仇镜像.gfx","HH_Spine"));
visible.Add(62, new VisibleStateImp(62, "击晕","复仇雷霆.gfx","HH_Spine"));
visible.Add(63, new VisibleStateImp(63, "反噬","复仇反噬.gfx","HH_Spine"));
visible.Add(64, new VisibleStateImp(64, "三世明王咒","三世明王咒.gfx","HH_Spine"));
visible.Add(65, new VisibleStateImp(65, "金刚轮印咒","金刚轮印咒.gfx","HH_Spine"));
visible.Add(66, new VisibleStateImp(66, "黑巫咒","黑巫咒.gfx","HH_Spine"));
visible.Add(67, new VisibleStateImp(67, "白巫咒","白巫咒.gfx","HH_Spine"));
visible.Add(68, new VisibleStateImp(68, "深度冰刺","深度冰刺.gfx","HH_右大臂"));
visible.Add(69, new VisibleStateImp(69, "玄武剑诀","玄武剑诀.gfx","HH_righthandweapon"));
visible.Add(70, new VisibleStateImp(70, "饮血剑诀","饮血剑诀.gfx","HH_righthandweapon"));
visible.Add(71, new VisibleStateImp(71, "磐龙剑诀","磐龙剑诀.gfx","HH_righthandweapon"));
visible.Add(72, new VisibleStateImp(72, "八方剑影","八方剑影.gfx","HH_Spine"));
visible.Add(73, new VisibleStateImp(73, "火神","火神.gfx","HH_righthandweapon"));
visible.Add(74, new VisibleStateImp(74, "毒种","碧云术.gfx","HH_spine"));
visible.Add(75, new VisibleStateImp(75, "回血种","回风拂柳.gfx","HH_spine"));
visible.Add(76, new VisibleStateImp(76, "增加木水物防","铁木衫.gfx","HH_spine"));
visible.Add(77, new VisibleStateImp(77, "特殊的减速","腐蔓咒.gfx","HH_spine"));
visible.Add(78, new VisibleStateImp(78, "向自己的宠物传输mp","电弧同气连枝.gfx",""));
visible.Add(79, new VisibleStateImp(79, "加快吟唱增加法攻","风竹秋韵.gfx","HH_spine"));
visible.Add(80, new VisibleStateImp(80, "增加物防暴击","魔神蚩尤牺牲.gfx","HH_spine"));
visible.Add(81, new VisibleStateImp(81, "增加法防法攻","金光电母牺牲.gfx","HH_spine"));
visible.Add(82, new VisibleStateImp(82, "向施放者(宠物)传输伤害","分担伤害.gfx","HH_spine"));
visible.Add(83, new VisibleStateImp(83, "吸伤害加物法防","护盾.gfx","HH_spine"));
visible.Add(84, new VisibleStateImp(84, "枯木逢春","枯木逢春.gfx","HH_spine"));
visible.Add(85, new VisibleStateImp(85, "提升暴击(限制生效次数)","魅灵_灵机.gfx","HH_Spine"));
visible.Add(86, new VisibleStateImp(86, "九尊剑诀","九尊剑诀.gfx","HH_righthandweapon"));
visible.Add(87, new VisibleStateImp(87, "修罗道用光效","修罗道_10.gfx","HH_head"));
visible.Add(88, new VisibleStateImp(88, "修罗道用光效","修罗道_50.gfx","HH_head"));
visible.Add(89, new VisibleStateImp(89, "修罗道用光效","修罗道_100.gfx","HH_head"));
visible.Add(90, new VisibleStateImp(90, "修罗道用光效","修罗道_300.gfx","HH_head"));
visible.Add(91, new VisibleStateImp(91, "位置回溯","法师_静谧之术_状态效果.gfx","HH_Spine"));
visible.Add(92, new VisibleStateImp(92, "生命回溯","法师_静谧之术2_状态效果.gfx","HH_Spine"));
visible.Add(93, new VisibleStateImp(93, "强制选择目标","白虎_奋战扫击_持续效果.gfx","HH_Spine"));
visible.Add(94, new VisibleStateImp(94, "吸收治疗","羽灵_天瀑符持续效果.gfx","HH_Spine"));
visible.Add(95, new VisibleStateImp(95, "受到普攻后退并清debuff","法师_法之奥义_持续效果.gfx","HH_Spine"));
visible.Add(96, new VisibleStateImp(96, "降低暴击抗性","羽灵_五感符持续效果.gfx","HH_Spine"));
visible.Add(97, new VisibleStateImp(97, "转移技能攻击诅咒","巫师_复仇之魂——涅槃_状态效果.gfx","HH_Spine"));
visible.Add(98, new VisibleStateImp(98, "受到攻击时额外对选定玩家发起攻击","刺客_魂葬印记状态效果.gfx","HH_Spine"));
visible.Add(99, new VisibleStateImp(99, "禁止被选中","巫师_冥王乐土持续效果.gfx","HH_Spine"));
visible.Add(100, new VisibleStateImp(100, "延迟土系伤害","持续土系伤害.gfx","HH_Spine"));
visible.Add(101, new VisibleStateImp(101, "昏迷,自身受到伤害加深","法师_冰晶世界持续效果.gfx","HH_Spine"));
visible.Add(102, new VisibleStateImp(102, "反弹之魂2(比例)","妖精_灵火持续.gfx",""));
visible.Add(103, new VisibleStateImp(103, "受伤害时定身","法师_灸焰_状态效果.gfx","HH_Spine"));
visible.Add(104, new VisibleStateImp(104, "受伤害时提升攻击力","妖兽_无畏_状态效果.gfx","HH_Spine"));
visible.Add(105, new VisibleStateImp(105, "死战到底","白虎_无冕之王持续效果.gfx","HH_Spine"));
visible.Add(106, new VisibleStateImp(106, "治疗偷取","魅灵_繁星_持续效果.gfx","HH_Spine"));
visible.Add(107, new VisibleStateImp(107, "死亡掉落金币","刺客_飘零持续效果.gfx","HH_Spine"));
visible.Add(108, new VisibleStateImp(108, "增加攻击距离","羽芒_回旋之翼_效果状态.gfx","HH_Spine"));
visible.Add(109, new VisibleStateImp(109, "无敌5(驱除debuf持续回血昏迷)","巫师_流殇_持续冰块.gfx",""));
visible.Add(110, new VisibleStateImp(110, "雷神变","羽灵_雷火堕_持续.gfx",""));
visible.Add(111, new VisibleStateImp(111, "武侠剑刃光环光效","武侠_霸气持续.gfx",""));
visible.Add(112, new VisibleStateImp(112, "妖精共舞调用","妖精_火狐之术持续.gfx","HH_Spine"));
visible.Add(113, new VisibleStateImp(113, "法师冰晶世界调用","法师_冰晶世界_冰雾持续.gfx",""));
visible.Add(114, new VisibleStateImp(114, "战场旗帜光效","旗子.gfx","HH_Head"));
visible.Add(115, new VisibleStateImp(115, "任务用光效","小狗状态.gfx","HH_feijian"));
visible.Add(116, new VisibleStateImp(116, "任务用光效","小白蛇状态.gfx","HH_feijian"));
visible.Add(117, new VisibleStateImp(117, "瘫痪光效","瘫痪.gfx","HH_Head"));
visible.Add(118, new VisibleStateImp(118, "特定技能吟唱时间降低光效","特定技能吟唱时间降低.gfx","HH_feijian"));
visible.Add(119, new VisibleStateImp(119, "特定技能伤害增加光效","特定技能伤害增加.gfx","HH_feijian"));
visible.Add(120, new VisibleStateImp(120, "回血护盾光效","回血护盾.gfx","HH_bind"));
visible.Add(121, new VisibleStateImp(121, "飞行速度提高(可叠加刷新持续时间)","疾云步击中.gfx","HH_Spine"));
visible.Add(122, new VisibleStateImp(122, "移动掉血","移动掉血_光效01.gfx","HH_feijian"));
visible.Add(123, new VisibleStateImp(123, "不移动就掉血","不移动就掉血01.gfx","HH_bind"));
visible.Add(125, new VisibleStateImp(125, "免疫打断护盾","魔法盾.gfx","HH_Spine"));
visible.Add(127, new VisibleStateImp(127, "猎命状态","猎命状态效果01.gfx","HH_feijian"));
visible.Add(128, new VisibleStateImp(128, "1白","月仙_冰球1个.gfx","HH_Spine"));
visible.Add(129, new VisibleStateImp(129, "2白","月仙_冰球2个.gfx","HH_Spine"));
visible.Add(130, new VisibleStateImp(130, "3白","月仙_冰球3个.gfx","HH_Spine"));
visible.Add(131, new VisibleStateImp(131, "1黑","月仙_雷球1个.gfx","HH_Spine"));
visible.Add(132, new VisibleStateImp(132, "2黑","月仙_雷球2个.gfx","HH_Spine"));
visible.Add(133, new VisibleStateImp(133, "3黑","月仙_雷球3个.gfx","HH_Spine"));
visible.Add(134, new VisibleStateImp(134, "1黑1白","月仙_1冰1雷球.gfx","HH_Spine"));
visible.Add(135, new VisibleStateImp(135, "2黑1白","月仙_1冰2雷.gfx","HH_Spine"));
visible.Add(136, new VisibleStateImp(136, "2白1黑","月仙_2冰1雷.gfx","HH_Spine"));
visible.Add(137, new VisibleStateImp(137, "内伤状态","内伤01.gfx","HH_bind"));
visible.Add(138, new VisibleStateImp(138, "死亡重置施法者冷却","死亡重置施法者冷却时间01.gfx","HH_Spine"));
visible.Add(139, new VisibleStateImp(139, "普攻附加伤害","普攻附加额外伤害01.gfx","HH_shou03"));
visible.Add(140, new VisibleStateImp(140, "技能CD改变","夜影_影噬_状态效果01.gfx","HH_feijian"));
visible.Add(141, new VisibleStateImp(141, "啸月","啸月_施放起01.gfx","HH_feijian"));
team.Add(1, new TeamStateImp(1, "昏迷\r无法进行任何移动和操作", "致晕"));
team.Add(2, new TeamStateImp(2, "睡眠\r沉睡状态,受攻击会恢复", "睡眠"));
team.Add(3, new TeamStateImp(3, "迟滞\r降低移动速度", "迟滞"));
team.Add(4, new TeamStateImp(4, "物理反震\r反弹所有近身物理伤害", "对物理攻击产生反震"));
team.Add(5, new TeamStateImp(5, "羽盾\r用真气值吸收一部伤害", "羽盾"));
team.Add(6, new TeamStateImp(6, "烈焰护甲\r增加火防并提高生命恢复速度", "烈焰护甲"));
team.Add(7, new TeamStateImp(7, "寒冰护甲\r增加水防并增加法力恢复速度", "寒冰护甲"));
team.Add(8, new TeamStateImp(8, "定身\r无法移动", "定身"));
team.Add(9, new TeamStateImp(9, "封印\r无法使用任何普攻和技能", "不能攻击"));
team.Add(10, new TeamStateImp(10, "魅惑\r目标怪物变成被动攻击", "主动变被动"));
team.Add(11, new TeamStateImp(11, "磐石护甲\r增加土防和物防", "磐石护甲"));
team.Add(12, new TeamStateImp(12, "雷击\r持续受到金系伤害", "持续金系攻击"));
team.Add(13, new TeamStateImp(13, "中毒\r持续受到木系伤害", "中毒"));
team.Add(14, new TeamStateImp(14, "燃烧\r持续受到火系伤害", "持续火攻击"));
team.Add(15, new TeamStateImp(15, "沙漩\r持续受到土系伤害", "持续土系伤害"));
team.Add(16, new TeamStateImp(16, "法力燃烧\r真气持续减少", "持续mp减少状态"));
team.Add(17, new TeamStateImp(17, "流血\r持续受到物理伤害", "放血"));
team.Add(18, new TeamStateImp(18, "破甲\r物理防御力下降", "物理防御力下降"));
team.Add(19, new TeamStateImp(19, "虚弱\r法术防御力下降", "五行防御力下降"));
team.Add(20, new TeamStateImp(20, "蚀刃\r物理攻击力下降", "物理攻击力下降"));
team.Add(21, new TeamStateImp(21, "诅咒\r受到伤害提升", "自身受到的物理伤害加倍"));
team.Add(22, new TeamStateImp(22, "迟缓\r攻击速度减慢", "普通攻击间隔加长"));
team.Add(23, new TeamStateImp(23, "迟钝\r减慢吟唱", "技能吟唱时间加长"));
team.Add(24, new TeamStateImp(24, "目盲\r降低准确度", "准确度下降"));
team.Add(25, new TeamStateImp(25, "笨拙\r躲闪度下降", "躲闪度下降"));
team.Add(26, new TeamStateImp(26, "生命恢复加快", "hp恢复加快"));
team.Add(27, new TeamStateImp(27, "真气恢复加快", "mp恢复加快"));
team.Add(28, new TeamStateImp(28, "提升生命上限", "提升hp上限"));
team.Add(29, new TeamStateImp(29, "提升真气上限", "提高mp上限"));
team.Add(30, new TeamStateImp(30, "坚甲\r物理防御力提高", "物理防御力提高"));
team.Add(31, new TeamStateImp(31, "聚神\r法术防御力提高", "法术防御力提高"));
team.Add(32, new TeamStateImp(32, "利刃\r物理攻击力提高", "物理攻击力提高"));
team.Add(33, new TeamStateImp(33, "迅捷\r攻击速度加快", "攻击速度加快"));
team.Add(34, new TeamStateImp(34, "灵敏\r提高躲闪率", "提高躲闪度"));
team.Add(35, new TeamStateImp(35, "祝福\r受到伤害减少", "自身伤害减半"));
team.Add(36, new TeamStateImp(36, "灵巧\r提高准确度", "穿透"));
team.Add(37, new TeamStateImp(37, "专注\r加快吟唱速度", "加快吟唱"));
team.Add(38, new TeamStateImp(38, "攻击附加水伤害", "使普通攻击附加水系伤害"));
team.Add(39, new TeamStateImp(39, "攻击附加火伤害", "使普通攻击附加火系伤害"));
team.Add(40, new TeamStateImp(40, "攻击附加木伤害", "使普通攻击附近木系伤害"));
team.Add(41, new TeamStateImp(41, "持续恢复生命", "持续恢复hp"));
team.Add(42, new TeamStateImp(42, "持续恢复真气", "持续恢复mp"));
team.Add(43, new TeamStateImp(43, "散神\r法术攻击力降低", "定身且不能攻击"));
team.Add(44, new TeamStateImp(44, "移动加速", "加速"));
team.Add(45, new TeamStateImp(45, "生命上限降低", "hp上限下降"));
team.Add(46, new TeamStateImp(46, "灵助\r法术攻击力提高", "法术攻击力提高"));
team.Add(47, new TeamStateImp(47, "白虎变", "白虎变"));
team.Add(48, new TeamStateImp(48, "金系防御上升", "金系防御上升"));
team.Add(49, new TeamStateImp(49, "木系防御上升", "木系防御上升"));
team.Add(50, new TeamStateImp(50, "水系防御上升", "水系防御上升"));
team.Add(51, new TeamStateImp(51, "火系防御上升", "火系防御上升"));
team.Add(52, new TeamStateImp(52, "土系防御上升", "土系防御上升"));
team.Add(53, new TeamStateImp(53, "金系防御下降", "金系防御下降"));
team.Add(54, new TeamStateImp(54, "木系防御下降", "木系防御下降"));
team.Add(55, new TeamStateImp(55, "水系防御下降", "水系防御下降"));
team.Add(56, new TeamStateImp(56, "火系防御下降", "火系防御下降"));
team.Add(57, new TeamStateImp(57, "土系防御下降", "土系防御下降"));
team.Add(58, new TeamStateImp(58, "避水诀\r水中不用呼吸,无法使用技能", "避水诀"));
team.Add(59, new TeamStateImp(59, "般若心经\r所有法术忽略吟唱", "般若心经"));
team.Add(60, new TeamStateImp(60, "真元爆发\r将全身元气爆发提升自身能力", "真元爆发"));
team.Add(61, new TeamStateImp(61, "易髓经\r降低自身法防提升物防", "易髓经"));
team.Add(62, new TeamStateImp(62, "易筋经\r降低自身物防提升法防", "易筋经"));
team.Add(63, new TeamStateImp(63, "兽王之怒\r受到攻击时增加元气", "兽王之怒"));
team.Add(64, new TeamStateImp(64, "坚甲\r物理防御力提高", "坚甲符"));
team.Add(65, new TeamStateImp(65, "金钟罩\r提升物防", "金钟罩"));
team.Add(66, new TeamStateImp(66, "巨灵神力\r提高物理攻击", "巨灵神力"));
team.Add(67, new TeamStateImp(67, "化血成魔\r降低生命上限提升命中率", "化血成魔"));
team.Add(68, new TeamStateImp(68, "灵助\r法术攻击力提高", "灵助符"));
team.Add(69, new TeamStateImp(69, "翼盾\r吸收一定伤害并回复真气", "翼盾"));
team.Add(70, new TeamStateImp(70, "烈焰之矢\r攻击附加一定火伤害", "烈焰之矢"));
team.Add(71, new TeamStateImp(71, "狂雷天鹰\r持续受到金系伤害并减速", "狂雷天鹰"));
team.Add(72, new TeamStateImp(72, "无视所有行动阻碍状态", "准无敌"));
team.Add(73, new TeamStateImp(73, "持续冰伤害", "持续冰伤害"));
team.Add(74, new TeamStateImp(74, "暴击率提升", "爆击率提升"));
team.Add(75, new TeamStateImp(75, "妖狐变\r物防、命中提升,真气值下降", "灵狐变"));
team.Add(76, new TeamStateImp(76, "无敌", "无敌"));
team.Add(77, new TeamStateImp(77, "荆棘阵\r大量降低伤害,并且反弹物理伤害", "荆棘阵"));
team.Add(78, new TeamStateImp(78, "弱魂咒\r生命和真气值停止回复", "弱魂咒"));
team.Add(79, new TeamStateImp(79, "残体咒\r受到加深伤害", "残体咒"));
team.Add(80, new TeamStateImp(80, "碎灵咒\r受到攻击失去元气", "碎灵咒"));
team.Add(81, new TeamStateImp(81, "飞花遁影\r移动加速", "妖狐附体"));
team.Add(82, new TeamStateImp(82, "骑乘加速", "骑乘加速"));
team.Add(83, new TeamStateImp(83, "物理攻击提高", "物理攻击力提高"));
team.Add(84, new TeamStateImp(84, "专注\r提升专注的精神可以使你的施法不被干扰。\r目标免疫封印", "专注"));
team.Add(85, new TeamStateImp(85, "亢奋\r亢奋的人是不需要睡觉的\r免疫睡眠状态", "亢奋"));
team.Add(86, new TeamStateImp(86, "自由\r只要你有一颗自由的心,\r你就不会被减速,或者定身。\r免疫移动减速和击晕", "自由"));
team.Add(87, new TeamStateImp(87, "坚强\r免役按比例掉血。\r坚强的人总不会被打垮", "坚强"));
team.Add(88, new TeamStateImp(88, "神圣\r免疫所有负面状态", "神圣"));
team.Add(89, new TeamStateImp(89, "霸体\r免疫物理伤害", "霸体"));
team.Add(90, new TeamStateImp(90, "火免\r免疫火系伤害", "火免"));
team.Add(91, new TeamStateImp(91, "水免\r免役水系伤害", "水免"));
team.Add(92, new TeamStateImp(92, "金免\r免疫金系伤害", "金免"));
team.Add(93, new TeamStateImp(93, "木免\r免疫木系伤害", "木免"));
team.Add(94, new TeamStateImp(94, "土免\r免疫土系伤害", "土免"));
team.Add(95, new TeamStateImp(95, "虚无\r免疫五行伤害", "虚无"));
team.Add(96, new TeamStateImp(96, "狂妄\r免疫所有状态", "狂妄"));
team.Add(97, new TeamStateImp(97, "水中减速\r游泳减速", "水中减速"));
team.Add(98, new TeamStateImp(98, "水中加速\r游泳加速", "水中加速"));
team.Add(99, new TeamStateImp(99, "空中减速\r飞行减速", "空中减速"));
team.Add(100, new TeamStateImp(100, "空中加速\r飞行加速", "空中加速"));
team.Add(101, new TeamStateImp(101, "骑乘减速\r骑乘减速", "骑乘减速"));
team.Add(102, new TeamStateImp(102, "爆发\r持续增加元气", "爆发"));
team.Add(103, new TeamStateImp(103, "疲乏\r持续减少元气", "疲乏"));
team.Add(104, new TeamStateImp(104, "精灵之力\r持续时间内增加小精灵力量", "精灵之力"));
team.Add(105, new TeamStateImp(105, "精灵之敏\r持续时间内增加小精灵的敏捷", "精灵之敏"));
team.Add(106, new TeamStateImp(106, "空刃\r你向敌人释放了空刃,\r自己也同时受到了风的保护。\r增加自身物理防御", "空刃"));
team.Add(107, new TeamStateImp(107, "元素虚弱\r目标物理防御增加,法术防御降低.", "元素虚弱"));
team.Add(108, new TeamStateImp(108, "深毒\r目标受伤害增加20%,\r这个效果可以和天火狂龙等技能叠加", "深毒"));
team.Add(109, new TeamStateImp(109, "扎根\r自身定身同时伤害减少同时反弹伤害", "扎根"));
team.Add(110, new TeamStateImp(110, "大地守护\r每3秒恢复hp,伤害减少.物理和法术攻击降低", "大地守护"));
team.Add(111, new TeamStateImp(111, "狂暴\r目标防御和法术防御降低,同时攻击等级增加", "狂暴"));
team.Add(112, new TeamStateImp(112, "沙暴\r命中降低,施法速度变慢", "沙暴"));
team.Add(113, new TeamStateImp(113, "乡情\r生命和真气回复速度增加,移动速度增加", "乡情"));
team.Add(114, new TeamStateImp(114, "湮灭\r水系防御降低", "湮灭"));
team.Add(115, new TeamStateImp(115, "幸运\r暴击增加", "幸运"));
team.Add(116, new TeamStateImp(116, "冲击\r物理防御降低", "冲击"));
team.Add(117, new TeamStateImp(117, "火花\r火系防御降低", "火花"));
team.Add(118, new TeamStateImp(118, "心火\r物理和法速攻击速度降低", "心火"));
team.Add(119, new TeamStateImp(119, "火种\r持续火伤害", "火种"));
team.Add(120, new TeamStateImp(120, "燃足\r火系防御降低,移动速度降低", "燃足"));
team.Add(121, new TeamStateImp(121, "坚壁\r吸收物理和法术伤害,并且降低自身移动速度", "坚壁"));
team.Add(122, new TeamStateImp(122, "刃切\r金系防御降低", "刃切"));
team.Add(123, new TeamStateImp(123, "叶舞\r移动速度降低并且流血", "叶舞"));
team.Add(124, new TeamStateImp(124, "烧焦\r防御等级下降.攻击等级下降,\r移动速度少量增加", "烧焦"));
team.Add(125, new TeamStateImp(125, "真空\r释放速度变慢,移动速度变慢.受到伤害减少", "真空"));
team.Add(126, new TeamStateImp(126, "止血\r免疫流血状态。", "止血"));
team.Add(127, new TeamStateImp(127, "金刚不坏\r吸收受到的物理伤害", "金刚不坏"));
team.Add(128, new TeamStateImp(128, "法力无边\r吸收受到法术伤害", "法力无边"));
team.Add(129, new TeamStateImp(129, "以牙还牙\r反弹受到的法术伤害", "以牙还牙"));
team.Add(130, new TeamStateImp(130, "风盾术\r受到伤害减少,物理攻击速度和闪避提升", "风盾术"));
team.Add(131, new TeamStateImp(131, "气流锁\r目标定身且有几率被封印", "气流锁"));
team.Add(132, new TeamStateImp(132, "封闭\r封印且物理伤害免疫", "封闭"));
team.Add(133, new TeamStateImp(133, "无心\r免疫伤害加深状态。", "无心"));
team.Add(134, new TeamStateImp(134, "冻结\r无法行动", "冻结"));
team.Add(135, new TeamStateImp(135, "攻击等级增加", "攻击等级增加"));
team.Add(136, new TeamStateImp(136, "攻击等级降低", "攻击等级降低"));
team.Add(137, new TeamStateImp(137, "防御等级增加", "防御等级增加"));
team.Add(138, new TeamStateImp(138, "防御等级降低", "防御等级降低"));
team.Add(139, new TeamStateImp(139, "持续受到土系伤害", "持续土伤害2"));
team.Add(140, new TeamStateImp(140, "封印\r无法使用任何普攻和技能", "不能攻击2"));
team.Add(141, new TeamStateImp(141, "定身\r无法移动", "定身2"));
team.Add(142, new TeamStateImp(142, "祝福\r受到伤害减少", "物理伤害减少2"));
team.Add(143, new TeamStateImp(143, "诅咒\r受到伤害提升", "伤害加深2"));
team.Add(144, new TeamStateImp(144, "提升生命上限", "生命上限增加2"));
team.Add(145, new TeamStateImp(145, "利刃\r物理攻击力提高", "攻击力增加2"));
team.Add(146, new TeamStateImp(146, "灵助\r法术攻击力提高", "法术攻击增加2"));
team.Add(147, new TeamStateImp(147, "专注\r加快吟唱", "吟唱加速2"));
team.Add(148, new TeamStateImp(148, "移动加速", "移动加速2"));
team.Add(149, new TeamStateImp(149, "遁隐\r进入遁隐状态", "隐身"));
team.Add(150, new TeamStateImp(150, "提升反隐等级\r提高反隐等级", "集中精神"));
team.Add(151, new TeamStateImp(151, "嗜血咒\r每次攻击时,从自身造成的伤害中恢复一定生命。", "吸血光环"));
team.Add(152, new TeamStateImp(152, "狂狼印\r提高暴击伤害值","暴击伤害"));
team.Add(153, new TeamStateImp(153, "金刚轮印咒\r被攻击时,有几率闪避攻击技能的伤害。", "伤害闪避"));
team.Add(154, new TeamStateImp(154, "三世明王咒\r被攻击时,有几率闪避攻击技能的效果。", "状态闪避"));
team.Add(155, new TeamStateImp(155, "如来天心咒\r免除一次致死打击,并恢复生命", "回光返照"));
team.Add(156, new TeamStateImp(156, "惩戒\r向攻击者反弹伤害", "反弹之魂"));
team.Add(157, new TeamStateImp(157, "封印\r使攻击者陷入封印状态", "封印之魂"));
team.Add(158, new TeamStateImp(158, "镜像\r攻击者同时承受其技能造成的伤害和状态", "反击之魂"));
team.Add(159, new TeamStateImp(159, "震慑\r将攻击者击晕", "击晕之魂"));
team.Add(160, new TeamStateImp(160, "生命绽放\r增加由技能和药品获得的生命恢复效果,并减少红符冷却时间", "祝福加深"));
team.Add(161, new TeamStateImp(161, "生命禁锢\r降低由技能和药品获得的生命恢复效果,并延长红符冷却时间", "祝福削弱"));
team.Add(162, new TeamStateImp(162, "反噬\r每次普通攻击或施放技能时,都会受到伤害", "使用技能时受伤害"));
team.Add(163, new TeamStateImp(163, "使用技能时被中断\r使目标每次施放技能时,都会被打断", "爆发"));
team.Add(164, new TeamStateImp(164, "人鱼变\r变身成人鱼", "魔法盾"));
team.Add(165, new TeamStateImp(165, "深度冰刺\r降低攻速,提高攻击等级", "冰冻"));
team.Add(166, new TeamStateImp(166, "巫师咒\r调整攻防等级", "热血"));
team.Add(167, new TeamStateImp(167, "金刚剑印\r金系及物理系技能伤害产生加成效果", "金刚剑印"));
team.Add(168, new TeamStateImp(168, "寒潮剑印\r木系及水系技能伤害产生加成效果", "寒潮剑印"));
team.Add(169, new TeamStateImp(169, "焚心剑印\r土系及火系技能伤害产生加成效果", "焚心剑印"));
team.Add(170, new TeamStateImp(170, "玄武剑诀\r有效伤害有几率触发“玄武剑眼”", "玄武剑诀"));
team.Add(171, new TeamStateImp(171, "饮血剑诀\r有效伤害有几率触发“饮血剑眼”", "饮血剑诀"));
team.Add(172, new TeamStateImp(172, "磐龙剑诀\r有效伤害有几率触发“磐龙剑眼”", "磐龙剑诀"));
team.Add(173, new TeamStateImp(173, "玄武剑眼\r特定技能激活该剑眼", "玄武剑眼"));
team.Add(174, new TeamStateImp(174, "饮血剑眼\r特定技能激活该剑眼", "饮血剑眼"));
team.Add(175, new TeamStateImp(175, "磐龙剑眼\r特定技能激活该剑眼", "磐龙剑眼"));
team.Add(176, new TeamStateImp(176, "八方剑影\r对周围目标造成伤害", "八方剑影"));
team.Add(177, new TeamStateImp(177, "毒种\r血量低于50%时触发持续伤害", "碧云咒"));
team.Add(178, new TeamStateImp(178, "回血种\r受到伤害触发持续回血效果", "回风拂柳"));
team.Add(179, new TeamStateImp(179, "增加木水物防\r提高木防水防物防”", "铁木衫"));
team.Add(180, new TeamStateImp(180, "特殊的减速\r减速且受到勾魂摄魄攻击时伤害加深", "腐蔓咒"));
team.Add(181, new TeamStateImp(181, "增加物防暴击\r提高物理防御,暴击率", "魔神蚩尤牺牲"));
team.Add(182, new TeamStateImp(182, "增加法防法攻\r提高五行防御,法术攻击力", "金光电母牺牲"));
team.Add(183, new TeamStateImp(183, "向自己的宠物传输mp\r将本体真气传输给召唤物", "同气连枝"));
team.Add(184, new TeamStateImp(184, "向施放者(宠物)传输伤害\r施法者将为状态所有者分担伤害", "分担伤害"));
team.Add(185, new TeamStateImp(185, "吸伤害加物法防\r可吸收一定的伤害且护盾存在时提高防御抗", "护盾"));
team.Add(186, new TeamStateImp(186, "加快吟唱增加法攻\r提高吟唱速度提高法攻", "风竹秋韵"));
team.Add(187, new TeamStateImp(187, "渐增的回血\r数值渐增的持续回血", "生命之树"));
team.Add(188, new TeamStateImp(188, "献祭\r献祭光环", "火神"));
team.Add(189, new TeamStateImp(189, "枯木逢春\r死亡后立即复活", "枯木逢春"));
team.Add(190, new TeamStateImp(190, "特殊物品伤害触发器\r受到摄魂咒攻击伤害加强", "勾魂摄魄"));
team.Add(191, new TeamStateImp(191, "提升暴击(限制生效次数)", "暴击提升"));
team.Add(192, new TeamStateImp(192, "九尊剑诀\r有几率触发九尊剑眼", "九尊剑诀"));
team.Add(193, new TeamStateImp(193, "九尊剑眼\r被特殊攻击击中触发效果", "九尊剑眼"));
team.Add(194, new TeamStateImp(194, "武器失效", "武器失效"));
team.Add(195, new TeamStateImp(195, "增强技能对npc的伤害\r增加技能对NPC的伤害", "增强点技能对NPC的伤害"));
team.Add(196, new TeamStateImp(196, "侦测周围隐身玩家\r将周围的隐身单位添加到界面上", "侦查周围隐身的玩家"));
team.Add(197, new TeamStateImp(197, "侦测周围隐身玩家\r将周围的隐身单位添加到界面上", "侦查周围隐身的玩家"));
team.Add(198, new TeamStateImp(198, "mp恢复加快2\r场景内mp恢复加快", "场景回蓝"));
team.Add(199, new TeamStateImp(199, "位置回溯\r若干秒后被传回标记位置", "静谧之术"));
team.Add(200, new TeamStateImp(200, "生命回溯\r若干秒后血量变回标记血量", "静谧之术2buff"));
team.Add(201, new TeamStateImp(201, "禁止飞行\r使玩家在一段时间内无法飞行", "兽灵之力buff"));
team.Add(202, new TeamStateImp(202, "强制选择目标\r使玩家在一段时间内只能选择施法者", "奋战扫击buff"));
team.Add(203, new TeamStateImp(203, "吸收治疗\r吸收一定量的治疗", "吸收治疗buff"));
team.Add(204, new TeamStateImp(204, "受到普攻后退并清debuff\r受攻击被弹开", "法之奥义"));
team.Add(205, new TeamStateImp(205, "增加爆击抗性\r受到致命一击的几率降低", "沙暴buff"));
team.Add(206, new TeamStateImp(206, "降低爆击抗性\r受到致命一击的几率提高", "羽斩buff"));
team.Add(207, new TeamStateImp(207, "转移技能攻击诅咒\r将攻击转移给施法者", "复仇之魂buff"));
team.Add(208, new TeamStateImp(208, "被治疗时额外给选定玩家治疗\r额外治疗", "额外治疗buff"));
team.Add(209, new TeamStateImp(209, "受到攻击时额外对选定玩家发起攻击\r伤害链接", "葬魂印记buff"));
team.Add(211, new TeamStateImp(211, "禁止被选中\r使敌人无法直视", "冥王乐土buff"));
team.Add(212, new TeamStateImp(212, "增强技能对npc的伤害2\r可以和1叠加", "迷色万花buff"));
team.Add(213, new TeamStateImp(213, "延迟土系伤害\r若干秒后造成土系伤害", "风岩葬buff"));
team.Add(214, new TeamStateImp(214, "昏迷,自身受到伤害加深\r冰冻光环效果", "冰晶世界"));
team.Add(215, new TeamStateImp(215, "反弹之魂2(比例)\r荆棘术", "灵火buff"));
team.Add(216, new TeamStateImp(216, "受伤害时定身\r受到伤害时有一定几率定身", "炙焰"));
team.Add(217, new TeamStateImp(217, "受伤害时获得元气\r获得元气", "获得元气buff"));
team.Add(218, new TeamStateImp(218, "受伤害时提升攻击力\r触发实际效果图标", "无畏buff"));
team.Add(219, new TeamStateImp(219, "受伤害时提升攻击力\r愈战愈勇", "无畏buff"));
team.Add(220, new TeamStateImp(220, "死战到底\r濒死后无敌且血量上限减少99%", "虎啸buff"));
team.Add(221, new TeamStateImp(221, "治疗偷取\r治疗被转移到施法者", "流星buff"));
team.Add(222, new TeamStateImp(222, "死亡掉落金币\r在此状态下被杀死会掉落金币", "飘零buff"));
team.Add(223, new TeamStateImp(223, "增加攻击距离\r攻击距离提高", "擎天雷鸣buff"));
team.Add(224, new TeamStateImp(224, "无敌5(驱除debuf持续回血昏迷)\r放逐", "流殇buff"));
team.Add(225, new TeamStateImp(225, "雷神变\r羽灵变身", "雷火坠buff"));
team.Add(226, new TeamStateImp(226, "武侠剑刃光环\r剑刃光环图标", "霸气"));
team.Add(227, new TeamStateImp(227, "妖精共舞\r妖精共舞光效图标", "火狐之术buff"));
team.Add(229, new TeamStateImp(229, "减少近战普攻伤害\r防御优化 ", "桎梏诀"));
team.Add(230, new TeamStateImp(230, "全属性提升\r等级奖励 ", "回旋之翼"));
team.Add(231, new TeamStateImp(231, "非战斗恢复\r非战斗状态恢复hpmp", "玄武刻印buff"));
team.Add(232, new TeamStateImp(232, "定值提升\r固定值加hpmp上限", "五感符"));
team.Add(233, new TeamStateImp(233, "自身受到伤害加深(可叠加可刷新)", "旋风斩"));
team.Add(234, new TeamStateImp(234, "PK无惩罚状态", "战场状态"));
team.Add(235, new TeamStateImp(235, "法术防御力提高2", "法术防御力提高"));
team.Add(236, new TeamStateImp(236, "战场旗帜BUFF", "旗帜BUFF"));
team.Add(237, new TeamStateImp(237, "防御等级降低", "防御等级降低"));
team.Add(238, new TeamStateImp(238, "增加物法攻防hp", "回旋之翼"));
team.Add(239, new TeamStateImp(239, "暴击增加", "暴击提升"));
team.Add(240, new TeamStateImp(240, "提升御魔猎魔等级\r百分比提高对怪物攻防", "暴击提升"));
team.Add(241, new TeamStateImp(241, "生命值、攻击等级、防御等级提高", "北美国战"));
team.Add(242, new TeamStateImp(242, "增加攻击等级、防御等级各3点", "GT高级"));
team.Add(243, new TeamStateImp(243, "增加攻击等级、防御等级各1点", "GT低级"));
team.Add(244, new TeamStateImp(244, "伤害减免3\r受到来自于玩家的伤害减少", "固若金汤"));
team.Add(245, new TeamStateImp(245, "攻击时给自己添加状态包", "攻守兼备"));
team.Add(246, new TeamStateImp(246, "攻击时给目标添加状态包", "乘胜追击"));
team.Add(247, new TeamStateImp(247, "免疫物理伤害", "物免2"));
team.Add(248, new TeamStateImp(248, "免疫金系伤害", "金免2"));
team.Add(249, new TeamStateImp(249, "免疫木系伤害", "木免2"));
team.Add(250, new TeamStateImp(250, "免疫水系伤害", "水免2"));
team.Add(251, new TeamStateImp(251, "免疫火系伤害", "火免2"));
team.Add(252, new TeamStateImp(252, "免疫土系伤害", "土免2"));
team.Add(253, new TeamStateImp(253, "物理反震\r反弹所有近身物理伤害", "对物理攻击产生反震"));
team.Add(254, new TeamStateImp(254, "增加攻击等级、防御等级", "热血"));
team.Add(255, new TeamStateImp(255, "瘫痪", "瘫痪buff"));
team.Add(256, new TeamStateImp(256, "受到的技能伤害提高", "受到的技能伤害提高buff"));
team.Add(257, new TeamStateImp(257, "受到的技能暴击率提高", "受到的技能暴击率提高buff"));
team.Add(258, new TeamStateImp(258, "特定技能吟唱时间降低", "特定技能吟唱时间降低buff"));
team.Add(259, new TeamStateImp(259, "特定技能伤害增加", "特定技能伤害增加buff"));
team.Add(260, new TeamStateImp(260, "寒冰护甲2", "寒冰护甲"));
team.Add(261, new TeamStateImp(261, "烈焰护甲2", "烈焰护甲"));
team.Add(262, new TeamStateImp(262, "回血护盾", "回血护盾buff"));
team.Add(263, new TeamStateImp(263, "飞行速度提高(可叠加刷新持续时间)", "准无敌"));
team.Add(264, new TeamStateImp(264, "气魄值提高", "气魄值提高"));
team.Add(265, new TeamStateImp(265, "加气魄减暴伤", "暗炎"));
team.Add(266, new TeamStateImp(266, "移动扣血", "寒宫蟾步"));
team.Add(267, new TeamStateImp(267, "不移动就掉血", "移动扣血"));
team.Add(268, new TeamStateImp(268, "不移动就获得技能", "不移动就掉"));
team.Add(269, new TeamStateImp(269, "免疫打断护盾", "免疫打断护盾"));
team.Add(270, new TeamStateImp(270, "持续瘫痪", "蚀骨月毒"));
team.Add(271, new TeamStateImp(271, "内伤", "雷霆万钧"));
team.Add(272, new TeamStateImp(272, "普攻减伤", "广寒之护"));
team.Add(273, new TeamStateImp(273, "死亡后重置施法者技能冷却时间", "无情游"));
team.Add(274, new TeamStateImp(274, "指定技能造成额外技能效果", "月食"));
team.Add(275, new TeamStateImp(275, "普通攻击附加额外伤害", "狱龙牙"));
team.Add(276, new TeamStateImp(276, "指定技能使用后不进入冷却", "邈云汉"));
team.Add(277, new TeamStateImp(277, "猎命", "猎命"));
team.Add(278, new TeamStateImp(278, "夜影变身", "胧夜影"));
team.Add(279, new TeamStateImp(279, "月仙变身", "胧月仙"));
team.Add(280, new TeamStateImp(280, "附加霜雷状态", "霜雷术"));
team.Add(281, new TeamStateImp(281, "月神之体", "月神之体"));
team.Add(282, new TeamStateImp(282, "增强技能对npc的伤害3", "月咏"));
team.Add(283, new TeamStateImp(283, "减少受到的暴击伤害","减少受到的暴击伤害"));
team.Add(284, new TeamStateImp(284, "物理伤害提高","造成物理伤害提高2"));
team.Add(285, new TeamStateImp(285, "五行伤害提高","造成法术伤害提高2"));
team.Add(286, new TeamStateImp(286, "受到的技能伤害提高2", "晓月银光"));
team.Add(287, new TeamStateImp(287, "冰雷球占位状态包", ""));
team.Add(288, new TeamStateImp(288, "技能CD改变","影噬"));
team.Add(289, new TeamStateImp(289, "免疫驱逐","彩云障月"));
team.Add(290, new TeamStateImp(290, "吟唱附加距离改变","神镰伐桂"));
team.Add(291, new TeamStateImp(291, "双防提高","祭月礼"));
team.Add(292, new TeamStateImp(292, "金防降低3","落月击金"));
team.Add(293, new TeamStateImp(293, "水防降低3","落月击水"));
team.Add(294, new TeamStateImp(294, "暴击回血回元","贪狼刃"));
TeamState = team;
VisibleState = visible;
}
}
public class Range
{
/// <summary>0=point 1=line 2=self sphere 3=target sphere 4=cone 5=self</summary>
public byte type; // 0 1 2 3Ŀ 4Բ׶ 5
public bool IsPoint() { return type == 0; }
public bool IsLine() { return type == 1; }
public bool IsSelfBall() { return type == 2; }
public bool IsTargetBall() { return type == 3; }
public bool IsSector() { return type == 4; }
public bool IsSelf() { return type == 5; }
public bool NoTarget() { return type == 2 || type == 5; }
}
// ռλ // Placeholder Skill class
public class Skill : ElementSkill
{
protected SkillStub stub;
protected PlayerWrapper player;
protected uint id;
protected uint level;
Skill(uint i, SkillStub s)
{
id = i;
stub = s;
player = new PlayerWrapper();
}
public static Skill Create(uint id, int n)
{
SkillStub stub = SkillStub.GetStub(id);
if (stub == null)
return null;
Skill skill = new Skill(id, stub);
int max = skill.GetMaxLevel();
if (n > max)
skill.SetLevel(max);
else
skill.SetLevel(n);
return skill;
}
public override int GetMaxLevel() { return stub.GetMaxLevel(); }
public override int SetLevel(int l)
{
uint tmp = level;
level = (uint)l;
return (int)tmp;
}
public override int GetItemCost() { return stub.itemcost; }
public override bool ValidWeapon(int idWeapon) { return stub.ValidWeapon(idWeapon); }
public override int GetMpCost() { return (int)stub.GetMpcost(this); }
public override bool IsAllowLand() { return stub.allow_land; }
public override bool IsAllowWater() { return stub.allow_water; }
public override bool IsAllowAir() { return stub.allow_air; }
public override int GetArrowCost() { return stub.arrowcost; }
public override bool GetNotuseInCombat() { return stub.notuse_in_combat; }
public override bool IsAutoAttack() { return stub.auto_attack; }
public int GetLevel() { return (int)level; }
public PlayerWrapper GetPlayer()
{
return player;
}
public override int GetRank() { return stub.rank; }
public override bool IsInstant() { return stub.time_type == 1; }
public override int GetCls()
{
return stub.GetCls();
}
public override Dictionary<uint, int> GetJunior()
{
return stub.is_senior != 0 ? stub.pre_skills : new Dictionary<uint, int>();
}
public override int GetRangeType() { return stub.GetRange().type; }
public override int GetRequiredLevel() { return stub.GetRequiredLevel(this); }
public override void GetIntroduction(StringBuilder buf, SkillStr table)
{
int n = stub.GetIntroduction(this, buf, table.Find((int)stub.id * 10 + 1));
}
public override int GetTargetType()
{
if (stub.restrict_corpse == 1)
return 2;
if (stub.restrict_corpse == 2)
return 3;
if (stub.type == (int)skill_type.TYPE_ATTACK || stub.type == (int)skill_type.TYPE_CURSE)
return 1;
if (stub.type == (int)skill_type.TYPE_BLESSPET)
return 4;
if (stub.GetRange().NoTarget())
return 0;
return 1;
}
public override int GetComboSkPreSkill() { return stub.combosk_preskill; }
public override byte GetType() { return stub.type; }
public override int GetCommonCoolDown() { return stub.commoncooldown; }
public override string GetIcon()
{
return stub.GetIcon();
}
public int GetAbility() { return SkillWrapper.Instance.GetAbility(id); }
// 检查施放时hp条件 // Check hp condition when casting
public override bool CheckHpCondition(int hp, int max_hp) { return stub.CheckHpCondition(hp, max_hp); } // TODO: CheckHpCondition is not a member of SkillStub
public override bool CheckComboSkExtraCondition() { return stub.CheckComboSkExtraCondition(this); }
public override byte GetAllowForms() { return stub.allow_forms; }
public override int GetApCost() { return stub.apcost; }
public override string GetName() { return stub.GetName(); }
public override float GetPrayRange(float range, float prayplus)
{
player.SetRange(range);
player.SetPrayrangeplus(prayplus);
if (stub.type == (int)skill_type.TYPE_ATTACK || stub.type == (int)skill_type.TYPE_CURSE)
{
if (stub.auto_attack)
{
float r = 0.3f * stub.GetPraydistance(this);
if (r >= 1.0)
return stub.GetPraydistance(this) - 1.0f;
else
return (float)0.7 * stub.GetPraydistance(this);
}
else
return stub.GetPraydistance(this);
}
if (stub.type == (int)skill_type.TYPE_JUMP)
return stub.GetPraydistance(this);
if (stub.GetRange().NoTarget())
return -1;
else
return stub.GetPraydistance(this);
}
public override int GetCoolingTime() { return stub.GetCoolingtime(this); }
public int GetRequiredSp() { return stub.GetRequiredSp(this); }
public int GetRequiredMoney() { return stub.GetRequiredMoney(this); }
public override Dictionary<uint, int> GetRequiredSkill() { return stub.pre_skills; }
public int GetRequiredRealmLevel() { return stub.GetRequiredRealmLevel(this); }
public int GetMaxability() { return stub.GetMaxAbility(this); }
public uint GetId() { return id; }
public int GetComboSkInterval() { return stub.combosk_interval; }
// ---- Converted from C++ Skill (missing in original C#) ----
/// <summary>Resets stub from registry by id. Returns true if stub is non-null.</summary>
public bool ReSetStub()
{
stub = SkillStub.GetStub(id);
return stub != null;
}
/// <summary>Gets the skill stub (static data).</summary>
public SkillStub GetStub() => stub;
/// <summary>Perform slot (C++: no-op setter).</summary>
public void SetPerform(int p) { }
/// <summary>Perform slot (C++: always 0).</summary>
public int GetPerform() => 0;
public override int GetShowOrder() => stub.showorder;
/// <summary>Random/roll value (C++: always 100).</summary>
public int GetRand() => 100;
public override int GetRequiredBook() => stub.GetRequiredItem(this);
/// <summary>Class restriction mask (C++ clslimit).</summary>
public int GetClsLimit() => stub.clslimit;
public override int GetCommonCoolDownTime() => stub.commoncooldowntime;
public override bool IsWarmup() => stub.time_type == 3;
public override bool IsDurative() => stub.time_type == 2;
public override bool IsMovingSkill() => stub.IsMovingSkill();
/// <summary>Cast environment bitmask: 1=land, 2=air, 4=water.</summary>
public override int GetCastEnv()
{
int iRet = 0;
if (stub.allow_land) iRet += 1;
if (stub.allow_air) iRet += 2;
if (stub.allow_water) iRet += 4;
return iRet;
}
/// <summary>Goblin (cls 258) genius requirements; returns 5-element array or null. Caller must not modify array.</summary>
public int[] GetRequiredGeniusArray(int idSkill)
{
if (stub.cls != 258)
return null;
int[] iGenius = new int[5];
int iLevelReq = GetRequiredLevel() / 100;
for (int i = 0; i < 5; i++)
{
iGenius[4 - i] = iLevelReq % 10;
iLevelReq /= 10;
}
return iGenius;
}
public override int GetExecuteTime() => stub.GetExecutetime(this);
/// <summary>Ability fill percent 0..100 for current level (C++ GetAbilityPercent).</summary>
public int GetAbilityPercent()
{
int now = SkillWrapper.Instance.GetAbility(id);
int max = 0;
if (level > 0)
max = GetMaxability();
int min = 0;
if (level > 1)
{
SetLevel((int)level - 1);
min = GetMaxability();
SetLevel((int)level);
}
if (max == min)
return 100;
return 100 * (now - min) / (max - min);
}
public override string GetEffect() => stub.effect;
public override byte[] GetElseEffect() => stub.aerial_effect != null ? Encoding.UTF8.GetBytes(stub.aerial_effect) : null;
public override byte[] GetNativeName() => stub.nativename != null ? Encoding.UTF8.GetBytes(stub.nativename) : null;
/// <summary>Native name as string (C++ GetNativeName).</summary>
public string GetNativeNameString() => stub.nativename;
}
public abstract class SkillStub
{
public const int MIN_LEVEL = 1;
public const int MAX_LEVEL = 10;
public uint id; // Ψһֱʶ // Unique identifier
public int cls; // ְҵ // Class/Profession
public string name; // // Skill name
public string nativename; // // Native name
public string icon; // ͼ // Skill icon
public int max_level; // 󼶱? // Maximum level
public byte type; // ? 1 2 3ٻ 4 5 // Skill type: 1-Normal 2-Special 3-Partner 4-Mount 5-Other
// Execute condition
public bool allow_ride; // ? // Allow while riding
public short attr; // , 1256 ѡһ Ĭϣ // Attribute: 1-Metal 2-Earth 3-Wood 4-Water 5-Fire 6-Special (Choose one, default none)
public int rank; // // Rank
public int eventflag; // Event flag
public byte is_senior; // Senior flag
public bool is_inherent; // ܣѧ // Inherent skill, cannot be learned
public bool is_movingcast; // ƶʩ // Can cast while moving
public int npcdelay; // NPC delay
public int showorder; // Display order
public byte allow_forms; // Allowed forms
public int apcost; // AP cost
public int apgain; // AP gain
public byte doenchant; // Do enchant
public byte dobless; // Do bless
public int arrowcost; // Arrow cost
public Dictionary<uint, int> pre_skills;
// Execute condition
public bool allow_land; // ½Ч // Effective on land
public bool allow_air; // Ч // Effective in air
public bool allow_water; // ˮЧ // Effective in water
public bool notuse_in_combat; // ս״̬ // Cannot use in combat state
public int restrict_corpse; // ֻʬЧ // Only effective on corpses
public bool restrict_change; // ǷԱ // Whether can transform
public bool restrict_attach; // ǷԸ // Whether can possess
public bool auto_attack; // ʹúǷԶ // Whether to auto attack after use
public byte time_type; // ˲ // Instant cast type
public byte long_range;
public byte posdouble; // λѡ // Position selection
public int clslimit; // ְҵ // Class restriction
public int commoncooldown; // ȴmask bit0-4 ȴ0-4 bit5-9 Ʒȴ0-4
// Common cooldown mask bit0-4 skill cooldown 0-4 bit5-9 item cooldown 0-4
public int commoncooldowntime; // ȴʱλ // Cooldown time in milliseconds
public int itemcost; // ͷʱƷ >0Ч // Item cost when casting, effective if >0
public GfxMoveMode m_MoveMode = GfxMoveMode.enumLinearMove;
public GfxTargetMode m_TargetMode = GfxTargetMode.enumHostToTarget;
public GfxAttackMode m_AttFlyMode = GfxAttackMode.enumAttPoint;
public GfxAttackMode m_AttHitMode = GfxAttackMode.enumAttPoint;
public uint m_dwFlyTime = 0;
public bool m_bTraceTarget = false;
public uint m_FlyClusterCount = 1;
public uint m_FlyClusterInterval = 0;
public uint m_HitClusterCount = 1;
public uint m_HitClusterInterval = 0;
public bool m_bOneHit = true;
public bool m_bFadeOut = false;
public bool m_bRelScl = true;
public float m_fDefTarScl = 1.8f;
// // Combo related
public int combosk_preskill;
public int combosk_interval;
public int combosk_nobreak;
public string effect;
public string m_szFlyGfxPath = string.Empty;
public string m_szHitGrndGfxPath = string.Empty;
public string m_szHitGfxPath = string.Empty;
/// <summary>Classic SFX logical path (from fly GFX Sound element), same convention as client Sfx\ + path.</summary>
public string m_szFlySfxPath = string.Empty;
public string m_szHitGrndSfxPath = string.Empty;
public string m_szHitSfxPath = string.Empty;
public string aerial_effect;
public Range range;
public bool has_stateattack;
public List<int> restrict_weapons = new List<int>();
public static Dictionary<uint, SkillStub> map = new Dictionary<uint, SkillStub>();
public static Dictionary<uint, SkillStub> GetMap() => map;
public static Dictionary<uint, List<uint>> comboSkillMap = new Dictionary<uint, List<uint>>();
public static Dictionary<uint, List<uint>> GetComboSkMap() => comboSkillMap;
public static Dictionary<uint, List<uint>> inheritSkillMap = new Dictionary<uint, List<uint>>();
/*#if UNITY_EDITOR
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void OnPlay()
{
BMLogger.LogError("SkillStub OnPlay Reset");
map = new Dictionary<uint, SkillStub>();
comboSkillMap = new Dictionary<uint, List<uint>>();
inheritSkillMap = new Dictionary<uint, List<uint>>();
}
#endif*/
public SkillStub(uint i)
{
id = i;
is_inherent = (false);
is_movingcast = (false);
itemcost = (0);
combosk_preskill = (0);
combosk_interval = (0);
combosk_nobreak = (0);
if (GetStub(id) == null)
{
GetMap().Add(id, this);
}
}
public static List<uint> GetInherentSkillList(uint cls)
{
if (!inheritSkillMap.TryGetValue(cls, out List<uint> list))
{
list = new List<uint>();
inheritSkillMap[cls] = list;
}
return list;
}
public static SkillStub GetStub(uint i)
{
return GetMap().TryGetValue(i, out var stub) ? stub : null;
}
public int GetItemCost() { return itemcost; }
public static void InitStaticData()
{
var map = GetMap();
var comboMap = GetComboSkMap();
foreach (var skill in map)
{
SkillStub sk = skill.Value;
if (sk.is_inherent) GetInherentSkillList((uint)sk.cls).Add(sk.id);
if (sk.combosk_preskill > 0)
{
if (!comboMap.TryGetValue((uint)sk.combosk_preskill, out List<uint> comboList))
{
comboList = new List<uint>();
comboMap[(uint)sk.combosk_preskill] = comboList;
}
comboList.Add(sk.id);
}
}
}
public List<uint> GetPostComboSkill(uint id)
{
var m = GetComboSkMap();
if (m.TryGetValue(id, out var list)) return list;
return null;
}
// ΪC++תĽӿ // The following methods are converted from C++
public uint GetId() { return id; }
public int GetCls() { return cls; }
public string GetName() { return name; }
public string GetIcon() { return icon; }
public int GetMaxLevel() { return max_level; }
public Range GetRange() { return range; }
public bool IsMovingSkill() { return is_movingcast; }
public byte GetType() { return type; } // System.Object.GetType // Hide System.Object.GetType
// ʱ // Runtime-related virtual functions
public virtual int GetCoolingtime(Skill skill) { return 5000; }
public virtual int GetRequiredSp(Skill skill) { return 0; }
public virtual int GetRequiredLevel(Skill skill) { return 0; }
public virtual int GetMaxAbility(Skill skill) { return 0; }
public virtual int GetRequiredItem(Skill skill) { return 0; }
public virtual int GetRequiredMoney(Skill skill) { return 0; }
public virtual int GetRequiredRealmLevel(Skill skill) { return 0; }
public virtual float GetPraydistance(Skill skill) { return 0f; }
public virtual float GetMpcost(Skill skill) { return 0f; }
public virtual int GetExecutetime(Skill skill) { return 1000; }
public virtual string Getm_szFlyGfxPath() { return m_szFlyGfxPath; }
public virtual string Getm_szHitGrndGfxPath() { return m_szHitGrndGfxPath; }
public virtual string Getm_szHitGfxPath() { return m_szHitGfxPath; }
// 检查hp条件 // Check hp condition
// 默认返回true,子类可以重写以检查hp百分比范围 // Default returns true, subclasses can override to check hp percentage range
// 例如:return hp >= max_hp / 100.0f * minPercent && hp <= max_hp / 100.0f * maxPercent;
public virtual bool CheckHpCondition(int hp, int max_hp) { return true; }
// 检查连击技能额外条件 // Check combo skill extra condition
// 默认返回true,子类可以重写以检查连击参数等条件 // Default returns true, subclasses can override to check combo arguments etc.
// 例如:return skill.GetPlayer().GetComboarg().GetValue(0) == 5;
public virtual bool CheckComboSkExtraCondition(Skill skill) { return true; }
public virtual int GetIntroduction(Skill skill, StringBuilder descBuffer, string titleBuffer) { return 0; }
// ЧԼ // Validate weapon restriction
public bool ValidWeapon(int weapon)
{
if (restrict_weapons != null)
{
int i;
for (i = 0; i < restrict_weapons.Count; i++)
{
if (weapon == restrict_weapons[i])
return true;
}
if (i > 0 && i >= restrict_weapons.Count)
return false;
}
return true;
}
}
public class VisibleStateImp : VisibleState
{
public int id;
public string name;
public string effect;
public string hh;
public VisibleStateImp(int i, string n, string e, string h)
{
id = i;
name = n;
effect = e;
hh = h;
}
public override int GetID() { return id; }
public override string GetName() { return name; }
public override string GetHH() { return hh; }
public override string GetEffect() { return effect; }
}
public class TeamStateImp : TeamState
{
public int id;
public string name;
public string icon;
public TeamStateImp(int i, string n, string c)
{
id = i;
name = n;
icon = c;
}
public override int GetID() { return id; }
public override string GetName() { return name; }
public override string GetIcon() { return icon; }
}
}