using CommonAI.data; using CommonAI.Data; using CommonAI.Zone.Formula; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.CardSkill; namespace XmdsCommon.JSGModule.Interface { /** 卡牌模块技能基类 */ public interface IJSCardSkillModule : ICardModule { void Init(XmdsVirtual owner); void Update(int interval, bool slowRefresh); void OnHitOther(XmdsVirtual hitter, AttackSource source, int damage, DamageType damageType); // 攻击其他人 void OnHitDamage(XmdsVirtual attacker, AttackSource source, int damage, DamageType damageType); // 收到攻击 void Dispose(); /** 重载卡牌权重信息 */ void ReloadCardSkillWeight(); //技能数据变更 void OnSkillDataChange(GameSkill info); void OnInitOver(GameSkill gs, IJSGCardSkill cardSkill); //改变某一类型卡牌权重 void ChangeCardWeight(CardType type, CardRateChgType chgType, int value, int validTime, bool isPrecent = true, int validTimes = -1, int uniqueID = 0); //额外增加一个球:指定类型和属性 void AddCard(CardType type, int nums); //额外产生一个球:random(true: 使用权重来获取,false: 获得一个权重最高额) void AddCard(int nums, bool random); //上一次释放技能信息 GetCardData GetLastCardData(); //下一次强化效果相关 // 获得特殊效果强化加成 void TriggerSkillLoadStrength(CardSkillData skillData, int sameNums); IntIntData GetStrengthInfo(CardStrengthenType strgnthenType); // 添加下一次强化效果(和策划约定:下一次某种类型的卡牌强化,只要触发了改类型卡牌,可用次数减1。不考虑同类卡切卡的问题【如果要考虑则要开发走表格配置功能,根据表格类型控制】) NextCardStrengthenInfo AddNextStrengthInfo(CardType type, CardStrengthenType strenghType, int value1, int value2, int validTime, int validTimes = -1, byte needSames = 0, DamageType dmgType = DamageType.None, CardLayerRule layerRules = null); } /** 卡牌技能基类 */ public interface IJSGCardSkill { int GetEffectID(int skillLv, int sameNums); void TriggerCardSkill(XmdsVirtual player, XmdsVirtual hitter, AttackSource source, CardSkillData skillData, int sameNums); } public class XmdsComSrvData { public static readonly int BOSS_CARD_SKILLID = 1999000; } //buff移除类型 public enum BuffRemoveType : byte { Normal = 0, // 时间到等自然结束 Replace = 1, // 替换 Remove = 2, } }