123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517 |
- using CommonAI.Zone;
- using CommonAI.Zone.Instance;
- using CommonAI.Zone.Formula;
- using CommonAI.Zone.UnitTriggers;
- using CommonLang;
- using CommonLang.Log;
- using CommonLang.Property;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using CommonAI.Data;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.CardSkill;
- using XmdsCommon.JSGModule.Interface;
- using XmdsCommonServer.Plugin.Base;
- using CommonAI.Zone.Helper;
- namespace XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills
- {
- #region Skill.
- public enum AbstractSkillType
- {
- Value1 = 0,
- Value2 = 1,
- Value3 = 2,
- Value4 = 3,
- }
-
- public abstract class AbstractSkill : IComparable<AbstractSkill>
- {
- public AbstractSkill()
- {
- }
- public abstract int SkillID { get; }
- public int CompareTo(AbstractSkill obj)
- {
- SkillTypeAttribute desc_a = PropertyUtil.GetAttribute<SkillTypeAttribute>(this.GetType());
- SkillTypeAttribute desc_b = PropertyUtil.GetAttribute<SkillTypeAttribute>(obj.GetType());
- int r0 = desc_a.Category.CompareTo(desc_b.Category);
- if (r0 != 0)
- {
- return r0;
- }
- return this.SkillID - obj.SkillID;
- }
- public abstract void SkillDataChange(GameSkill gs, XmdsVirtual unit);
- public abstract int GetSkillValue(AbstractSkillType type);
-
-
-
- public virtual void InitOver(XmdsVirtual unit, GameSkill info) { OnInitOver(unit, info); }
- protected virtual void OnInitOver(XmdsVirtual unit, GameSkill info) { }
- protected void InitData(XmdsSkillData data, out XmdsSkillValue v, XmdsSkillData.XmdsSkillDataKey key)
- {
- try
- {
- v = data.GetParamValue(key);
- }
- catch (Exception error)
- {
- XmdsBattleHelper.LogError(string.Format("Skill【{0}】InitSkillParam【{1}】 \r\nError:{2}", this.SkillID, key, error.ToString()));
- v = XmdsSkillValue.Default;
- }
- }
-
- public virtual void DoSkillDispose(int skillID) { }
- }
-
- public abstract class UnitSkill : AbstractSkill {
- protected static Logger log = LoggerFactory.GetLogger("XmdsBattleSkill");
-
- private bool mIsActive = true;
- public bool IsActive{get{return this.mIsActive;} set{this.mIsActive = value;}
- }
-
-
-
- public void Init(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- OnRegistEvent();
- OnBaseInit(info, unit, ref template);
-
- if (unit != null)
- {
- unit.RegistCalDamage(OnCallDamageProcess, info, false, this.SkillID);
-
- unit.RegistTryLaunchSkillEvent(OnUnitLaunchSkillEvent, info, false);
-
- unit.RegistLaunchSkillOver(OnUnitLaunchSkillOver, info, false);
- }
- }
-
- public void InitSkillParam(XmdsSkillData skillData)
- {
- OnBaseDataInit(skillData);
- OnInitSkillParam();
- }
- public override void SkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- OnSkillDataChange(gs, unit);
- }
- protected virtual void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- }
- protected virtual void OnBaseDataInit(XmdsSkillData skillData) { }
- protected virtual void OnInitSkillParam()
- {
- }
-
- protected virtual void OnInitConfig()
- {
- }
- protected virtual void OnRegistEvent()
- {
- }
- protected virtual void OnBaseInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- }
- private int OnHitProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs, ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result)
- {
- int ret = 0;
-
- return ret;
- }
-
-
-
-
-
-
-
-
-
- public virtual bool OnCallDamageProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs, ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result, ref int damage)
- {
- return true;
- }
-
-
-
-
-
-
- protected virtual bool OnUnitLaunchSkillEvent(GameSkill info, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param)
- {
- return true;
- }
-
-
-
-
-
-
-
- protected virtual int OnUnitLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
- {
- return 0;
- }
-
-
-
-
- protected virtual void LogError(string text = null)
- {
- if (text != null)
- {
- log.Error(string.Format("技能【{0}】配置错误:{1}", SkillID, text));
- }
- else
- {
- log.Error(string.Format("技能【{0}】配置错误", SkillID));
- }
- }
- public virtual bool SkillAutoLaunchTest(InstanceUnit.SkillState ss, XmdsVirtual launcher) { return true; }
- public void Update(int intervalMS, bool slowRefresh) { OnUpdate(intervalMS, slowRefresh); }
- protected virtual void OnUpdate(int intervalMS, bool slowRefresh) { }
-
-
-
- public virtual void Dispose() { }
- }
- #endregion
- #region PassiveSkills
- public abstract class UnitPassiveSkill : AbstractSkill
- {
- protected static Logger log = LoggerFactory.GetLogger("XmdsBattleSkill");
- public void Init(GameSkill skillInfo, XmdsVirtual owner)
- {
- this.OnInitConfig(skillInfo);
- OnInit(skillInfo, owner);
- }
-
- public void InitSkillParam()
- {
- OnInitSkillParam();
- }
- protected virtual void OnInitSkillParam()
- {
- }
-
- protected virtual void OnInitConfig(GameSkill skillInfo)
- {
- }
- public void Update(int intervalMS, bool slowRefresh) { OnUpdate(intervalMS, slowRefresh); }
- public void Dispose(XmdsVirtual owner) { OnDispose(owner); }
- protected virtual void OnDispose(XmdsVirtual owner) { }
- protected virtual void OnInit(GameSkill skillInfo, XmdsVirtual owner) { }
- protected virtual void OnUpdate(int intervalMS, bool slowRefresh) { }
- protected virtual void LogError(string text = null)
- {
- if (text != null) { log.Error(string.Format("被动技能【{0}】配置错误:{1}", SkillID, text)); }
- else { log.Error(string.Format("被动技能【{0}】配置错误", SkillID)); }
- }
- public virtual bool ValidParameter(int lv, float[] formula)
- {
- bool ret = false;
- if (lv > formula.Length || lv <= 0) { ret = false; LogError(); }
- else { ret = true; }
- return ret;
- }
- public virtual int GetCDTotalTime() { return 0; }
- public virtual int GetCDPassTime() { return 0; }
- public virtual void SetCDPassTime(int timeMS) { }
- public virtual int GetDecreaseTotalTimeMS() { return 0; }
- public virtual void SetDecreaseTotalTimeMS(int timeMS) { }
- public override void SkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- OnSkillDataChange(gs, unit);
- }
- protected virtual void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- }
- }
- #endregion
- #region BUFF.
-
-
-
- public abstract class UnitBuff : XmdsBuffVirtual
- {
-
- private int mBuffLv = 0;
-
- protected int BindBuffID = 0;
-
-
-
- protected bool mInvalid = false;
-
-
-
- public abstract int GetAbilityID();
-
-
-
- public virtual int BuffLV
- {
- set
- {
- mBuffLv = value;
- }
- get
- {
- return mBuffLv;
- }
- }
- public int GetBindBuffID()
- {
- return this.BindBuffID;
- }
- protected virtual void OnBindTemplate(ref BuffTemplate buffTemplate)
- {
- }
-
- public void OverrideTemplate(ref BuffTemplate buffTemplate)
- {
- BindBuffID = buffTemplate.ID;
- (buffTemplate.Properties as XmdsBuffProperties).addBuffVirtual(this);
- OnBindTemplate(ref buffTemplate);
- }
- public virtual void BuffBegin(XmdsVirtual hitter, XmdsVirtual attacker, InstanceUnit.BuffState state)
- {
- }
- public virtual void BuffEnd(XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
- {
- }
- public virtual int BuffHit(XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source, ref XmdsVirtual.AtkResult result)
- {
- return 0;
- }
-
-
-
-
- public bool IsInvaild() { return mInvalid; }
- public virtual void CopyTo(UnitBuff other)
- {
- other.BindBuffID = this.BindBuffID;
- other.mBuffLv = this.mBuffLv;
- }
- public virtual void BuffUpdate(XmdsVirtual unit, InstanceUnit.BuffState state) { }
- }
- #endregion
- #region 事件监听.
-
-
-
-
- public delegate float IOnHit(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch);
-
-
-
- public delegate void IOnTriggerStart(XmdsVirtual unit, XmdsVirtual target, UnitTriggerTemplate trigger, GameSkill sk);
-
-
-
- public delegate void IOnBuffEvent(XmdsVirtual unit, InstanceUnit.BuffState buff, string result, GameSkill sk);
-
-
-
- public delegate bool ITestLaunchSkill(XmdsVirtual unit, InstanceUnit.SkillState skill, GameSkill sk);
-
-
-
-
-
-
-
- public delegate bool ICalDamage(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs, ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result, ref int damage);
-
-
-
-
-
-
-
- public delegate void ICalThreadValue(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs, ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result);
-
-
-
-
-
-
- public delegate int ILaunchSkillOver(GameSkill info, XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.SkillState state);
-
-
-
-
-
-
- public delegate XmdsVirtual IGetAtkTarget(XmdsVirtual target, GameSkill sk);
- public delegate void IGetSkillDamageInfo(XmdsVirtual attacker, XmdsVirtual hitter,
- ref AttackSource source, GameSkill gs);
-
-
-
-
-
- public delegate void IStateSkillEnd(XmdsVirtual owner, InstanceUnit.StateSkill state, GameSkill gs);
-
-
-
-
-
-
- public delegate bool ITryAddBuffEvent(ref BuffTemplate buff, XmdsVirtual attacker, XmdsVirtual hitter, GameSkill skill);
- public delegate bool IRemoveBuffEvent(ref BuffTemplate buff, XmdsVirtual player, BuffRemoveType type);
-
- public delegate void ISendBuffEvent(BuffTemplate buff, XmdsVirtual attacker, XmdsVirtual hitter);
-
-
-
-
-
- public delegate void ITrySendSpellEvent(GameSkill skill, XmdsVirtual launcher, LaunchSpell launch, ref SpellTemplate spell, ref JSGCreateSpellData createData, ref float startX, ref float startY);
-
- public delegate void ISendSpellOverEvent(LaunchSpell launch, XmdsVirtual launcher, SpellTemplate spell, GameSkill skill, float startX, float startY);
-
-
-
-
-
- public delegate bool ITryLaunchSkillEvent(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param);
-
-
-
-
-
-
- public delegate bool ITriggerPetSkillEvent(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param);
-
-
-
-
-
-
- public delegate bool ISkillBlockEvent(XmdsVirtual launcher, InstanceUnit.StateSkill skill, InstanceUnit.State newState);
-
- public delegate bool IAddOtherHPEvent(int hp, InstanceUnit sender, InstanceUnit hitter, AttackSource source, out int finalHP);
-
- public delegate int IShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill info, ref bool isEndDispatch);
-
- public delegate bool IReduceOtherMpEvent(int mp, InstanceUnit sender, InstanceUnit hitter, out int finalMP, AttackSource source);
-
- public delegate bool ITryAddCardBallEvent(XmdsVirtual player, CreateCardBallSource type, CardType cardType);
-
- public delegate bool ITriggerCardSkillEvent(XmdsVirtual player, XmdsVirtual hitter, GameSkill info, CardType cardType, int sameNums);
- public delegate bool IOnKillOtherUnitEvent(XmdsVirtual attacker, XmdsVirtual deader, GameSkill info);
- #endregion
- #region 战斗特殊事件.
- #endregion
- }
|