// Generate By EToy
// Don't Edit It!!
using XGame.Framework.Database;
using XGame.Framework.Serialization;
namespace XGame.Database
{
/// Skill
public sealed class SkillTable : ITable
{
long ITable.Key => Id;
/// id职业技能:职业ID*10+序号飞剑技能:飞剑ID*10+序号怪物技能:怪物ID*10+序号通用技能:200000+技能品质*100+序号家族技能:300000+技能品质*100+序号车位技能:400000+技能品质*100+序号
public int Id { get; private set; }
/// 品质0:无品质1:白2:绿3:蓝4:紫5:黄6:橙7:红8:粉
public int Quality { get; private set; }
/// 技能图标
public string Icon { get; private set; } // c
/// 技能名称
public string Name { get; private set; } // c
/// 技能描述
public string Desc { get; private set; } // c
/// 元素系1:火2:雷3:冰4:毒5:风0:无元素
public EElementType Element { get; private set; }
/// 技能型态1:主动技能2:被动技能
public int ModalityType { get; private set; } // c
/// 技能效果类型1.永久属性类(该类型的技能不走触发)2.伤害类型3.BUFF类型4:召唤类型
public int EffectType { get; private set; }
/// 技能类型0:无(永久属性类适用)1:单体2:群体3:召唤
public int Type { get; private set; } // c
/// 作用对象 1:主角 2:所有飞剑 3:主角+飞剑 4:所有剑 8:所有斧 16:所有锤 32:所有法杖 64:所有匕首 512:受击者(敌方单体)1024:敌方群体2048:友方群体4096:施法者
public int TargetType { get; private set; } // sc
/// 技能触发类型0:无1:常规(寻找范围内的作用目标释放技能)2:普攻时概率触发(条件类型,概率)3:普攻X次时触发( 条件类型,次数)4:普攻暴击时触发( 条件类型)5:释放技能时触发( 条件类型)6:释放技能后,延迟X秒触发( 条件类型,延迟时间)7:技能暴击时触发( 条件类型)8:连击时触发( 条件类型)9:连击暴击时触发( 条件类型)10:反击时触发( 条件类型)11:击晕时触发( 条件类型)12:闪避时触发( 条件类型)13:被普攻命中时触发( 条件类型)14:被技能命中时触发( 条件类型)15:开场时触发( 条件类型)16:战斗开启后,每隔X秒后触发( 条件类型,间隔时间)17:生命低于%时触发( 条件类型,血量条件)18:生命高于%时触发( 条件类型,血量条件)19:生命每降低%时触发(每个%只能被触发一次)( 条件类型,血量条件)20:释放主动技能后触发直接伤害21:连击X次后触发22:反击X次后触发
public int[] TriggerType { get; private set; }
/// 技能持续时间
public int EndureTime { get; private set; }
/// 冷却时长
public int RestTime { get; private set; }
/// 技能特效类型:0:无101:普通子弹,命中目标造成伤害102:子弹,命中后分裂103:子弹,命中后弹跳104:子弹,不需要选目标,发射目标位置随机,落地找受击目标(单体伤害)并爆炸(群体伤害)201:陷阱301:AOE(虫群特效半径为1,配置宽高需要X2,该特效不适合缩放,预制按照目标尺寸重复摆放基础特效)311:近战AOE,屏幕中心,不可移动312:以选定目标为中心的AOE,不可移动401:Buff501:召唤物
public int SkillVfxType { get; private set; }
/// 技能范围,结构由skillVfxType决定104:[落地伤害半径(单体),爆炸半径]201:[触发半径,爆炸半径]AOE:[1,宽,高] OR [2,半径,度数,伤害递减半径,伤害递减系数]
public float[] Ranges { get; private set; }
/// 基础伤害值
public int Damage { get; private set; }
/// 102:[3(数量),60(夹角,为零则找最近的目标),5000(缩放万分比)]103:[2(弹跳次数),2000(伤害递减万分比),半径]104:[爆炸伤害]AOE:[次数(-1无限直至特效结束),aoe延迟,aoe间隔,1(是否重复选中,0:false),-1:(受击次数,-1:不限,1:1次)]
public int[] DamageArgs { get; private set; }
/// BUFF关联【触发概率(万分比),buff关联ID】具体ID关联BUFF表
public int[] BuffTie { get; private set; }
/// 效果类型(暂时不需要)1:属性类型技能 属性ID,属性值,0/1(0:固定值,1:百分比)2:伤害类型技能 伤害数值百分比,0/1(0:普通伤害计算,1:真伤计算(直接跳过减伤和防御))3:BUFF类型 关联BUFF表ID4:召唤类型 召唤单位ID,数量
public int[] EffectTypeNum { get; private set; }
/// 关联技能(暂时不需要)
public int[] RelatedSkill { get; private set; }
void ISerializable.Deserialize(IReader reader)
{
Id = reader.ReadInt();
Quality = reader.ReadInt();
Icon = reader.ReadString();
Name = reader.ReadString();
Desc = reader.ReadString();
Element = (EElementType)reader.ReadInt();
ModalityType = reader.ReadInt();
EffectType = reader.ReadInt();
Type = reader.ReadInt();
TargetType = reader.ReadInt();
TriggerType = reader.ReadEnumerable();
EndureTime = reader.ReadInt();
RestTime = reader.ReadInt();
SkillVfxType = reader.ReadInt();
Ranges = reader.ReadEnumerable();
Damage = reader.ReadInt();
DamageArgs = reader.ReadEnumerable();
BuffTie = reader.ReadEnumerable();
EffectTypeNum = reader.ReadEnumerable();
RelatedSkill = reader.ReadEnumerable();
}
void ISerializable.Serialize(IWriter writer)
{
writer.Write(Id);
writer.Write(Quality);
writer.Write(Icon);
writer.Write(Name);
writer.Write(Desc);
writer.Write((int)Element);
writer.Write(ModalityType);
writer.Write(EffectType);
writer.Write(Type);
writer.Write(TargetType);
writer.Write(TriggerType);
writer.Write(EndureTime);
writer.Write(RestTime);
writer.Write(SkillVfxType);
writer.Write(Ranges);
writer.Write(Damage);
writer.Write(DamageArgs);
writer.Write(BuffTie);
writer.Write(EffectTypeNum);
writer.Write(RelatedSkill);
}
}
}