Browse Source

MMO-19281: 自动战斗不能释放技能,去掉提示

meijun 3 years ago
parent
commit
a082ae0aad

+ 2 - 0
Common/CommonAI/Zone/Formula/IFormulas.cs

@@ -278,6 +278,8 @@ namespace CommonAI.Zone.Formula
 		bool IsServerMember(int id);
 		//获取服务器id
 		int GetServerID();
+		//获取基础技能id
+		int GetBaseSkillID();
 
 		/** 获取PK模式 */
 		PKMode GetCurPKMode();

+ 1 - 1
Common/CommonAI/Zone/Instance/InstanceUnit.StateMachine.cs

@@ -2610,7 +2610,7 @@ namespace CommonAI.Zone.Instance
 				//某些状态帧下死亡调用漏掉了
 				if (unit.IsNeedProcessDead())
 				{
-					unit.Parent.cb_unitDeadCallBack(unit, this.attacker, null);
+					unit.Parent.cb_unitDeadCallBack(unit, this.attacker);
 				}
 
 				unit.SetActionStatus(UnitActionStatus.Dead);

+ 19 - 3
Common/CommonAI/Zone/Instance/InstanceUnit.Status.cs

@@ -171,7 +171,17 @@ namespace CommonAI.Zone.Instance
 		//是否刷新标记
 		private bool mNeedUpdate = false;
 
-        private void InitTimeLines()
+		public bool IsCanLaunchSkill(int skillID)
+		{
+			if (this.IsStun || (this.IsSilent == true && skillID != this.Virtual.GetBaseSkillID()))
+			{
+				return false;
+			}
+
+			return true;
+		}
+
+		private void InitTimeLines()
         {
             int index;
             mNoneBlockTimeMS = RegistMultiTimeLine(out index);
@@ -1311,10 +1321,16 @@ namespace CommonAI.Zone.Instance
                 {
                     return false;
                 }
-                if (Owner.__mCurrentHP.Value >= Data.CostHP)
+				if (!this.Owner.IsCanLaunchSkill(Data.TemplateID))
+				{
+					return false;
+				}
+
+				if (Owner.__mCurrentHP.Value >= Data.CostHP)
                 {
                     return IsDone;
-                }
+                }				
+
                 return false;
             }
             public int NextAction()

+ 1 - 1
Common/CommonAI/Zone/Instance/InstanceUnit.cs

@@ -1496,7 +1496,7 @@ namespace CommonAI.Zone.Instance
                 //手动取消技能禁止其他技能打断//
                 return null;
             }
-            if (mFormula.TryLaunchSkill(this, ss, ref param) && ss.TryLaunch())
+            if (ss.TryLaunch() && mFormula.TryLaunchSkill(this, ss, ref param))
             {
 				if(param.IsAutoLaunch && !ss.CanAutoLaunch())
 				{

+ 2 - 2
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.Skills.cs

@@ -466,6 +466,7 @@ namespace XmdsCommonServer.Plugin
 
 			return ret;
 		}
+
 		/// <summary>
 		/// 判断是否可放技能.
 		/// </summary>
@@ -474,8 +475,7 @@ namespace XmdsCommonServer.Plugin
 		public virtual bool TryLaunchSkill(InstanceUnit.SkillState skill, ref InstanceUnit.LaunchSkillParam param)
 		{
 			#region 
-
-			if (this.mUnit.IsStun || (this.mUnit.IsSilent == true && skill.ID != this.SkillHelper.GetBaseSkillID()))
+			if (!this.mUnit.IsCanLaunchSkill(skill.ID))
 			{
 				SendMsgToClient(CommonAI.XmdsConstConfig.TIPS_CAN_NOT_USE_SKILL);
 				return false;

+ 11 - 6
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.Team.cs

@@ -333,12 +333,17 @@ namespace XmdsCommonServer.Plugin
             return s == id ? true : false;
         }
 
-        /// <summary>
-        /// 是否相同阵营势力.
-        /// </summary>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        public virtual bool IsCampMember(int type)
+		public virtual int GetBaseSkillID()
+		{
+			return this.SkillHelper == null ? 0 : this.SkillHelper.GetBaseSkillID();
+		}
+
+		/// <summary>
+		/// 是否相同阵营势力.
+		/// </summary>
+		/// <param name="type"></param>
+		/// <returns></returns>
+		public virtual bool IsCampMember(int type)
         {
             int r = this.GetForceID();