// 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); } } }