Răsfoiți Sursa

【优化】统一死亡通知逻辑

meijun 3 ani în urmă
părinte
comite
45272584bc

+ 3 - 2
Common/CommonAI/Zone/Instance/InstanceUnit.API.cs

@@ -198,7 +198,7 @@ namespace CommonAI.Zone.Instance
 
 		public int AddHP(int hp, InstanceUnit sender, bool sendHit = true, AttackSource source = null)
 		{
-			int finalHP = ReduceHP(-hp, sender, sendHit);
+			int finalHP = ReduceHP(-hp, sender, source, sendHit);
 
 			//排除怪物回血
 #if JSG_DMG_LOG
@@ -211,8 +211,9 @@ namespace CommonAI.Zone.Instance
 					log.Error("伤害异常: " + finalHP + ", ID" + this.Info.ID + ", " + (sender == null ? "-1" : sender.PlayerUUID)
 						+ JSGModule.GetAttackSourceDes(source) + ", " + stackInfo);
 				}
-			}			
+			}
 #endif
+
 			return finalHP;
 		}
 

+ 4 - 0
Common/CommonAI/Zone/Instance/InstanceUnit.StateMachine.cs

@@ -2613,6 +2613,10 @@ namespace CommonAI.Zone.Instance
 				//某些状态帧下死亡调用漏掉了
 				if (unit.IsNeedProcessDead())
 				{
+                    if (unit.IsPlayer)
+                    {
+                        log.Warn("手动调用死亡逻辑1:" + unit.PlayerUUID + ", 攻击方:" + (attacker == null ? "null" : attacker.PlayerUUID));
+                    }
 					unit.Parent.cb_unitDeadCallBack(unit, this.attacker);
 				}
 

Fișier diff suprimat deoarece este prea mare
+ 340 - 323
Common/CommonAI/Zone/Instance/InstanceUnit.cs


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

@@ -1388,7 +1388,7 @@ namespace CommonAI.Zone.Instance
             if (mOnUnitDead != null)
                 mOnUnitDead.Invoke(this, obj, attacker);
 
-			obj.mProcessDeadCallbackTime = CommonLang.CUtils.localTimeMS;
+			obj.mProcessDeadCallbackTime = CommonLang.CUtils.localTimeMS + 1000;
 		}
         internal void cb_unitActivatedCallBack(InstanceUnit obj)
         {

+ 1 - 1
Common/CommonAI/Zone/ZoneEditor/EventTrigger/Actions.Units.cs

@@ -108,7 +108,7 @@ namespace CommonAI.Zone.ZoneEditor.EventTrigger
 				if(0 < hpPrecent && hpPrecent < 100)
 				{
 					int reduceHP = (int)(unit.MaxHP * 0.01f * (100 -hpPrecent));
-					unit.ReduceHP(reduceHP, null, true, null, false, Data.DamageSource.Def, true);
+					unit.ReduceHP(reduceHP, null, null, true, null, false, Data.DamageSource.Def, true);
 				}
             }
         }

+ 3 - 3
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.cs

@@ -371,7 +371,7 @@ namespace XmdsCommonServer.Plugin
         {
             int v = hp;
 
-            this.mUnit.ReduceHP(-v, null, false, null);
+            this.mUnit.ReduceHP(-v, null, null, false, null);
 
             return v;
         }
@@ -430,12 +430,12 @@ namespace XmdsCommonServer.Plugin
         /// <param name="sendMsg">是否发送协议</param>
         public void AddHP(int hp, InstanceUnit sender = null, bool sendMsg = true, DamageSource dmgSrc = DamageSource.Def)
         {
-            this.mUnit.ReduceHP(-hp, sender, sendMsg, null, false, dmgSrc);
+            this.mUnit.ReduceHP(-hp, sender, null, sendMsg, null, false, dmgSrc);
         }
 
 		public void AddHP(int hp, InstanceUnit sender, DamageSource dmgSrc)
 		{
-			this.mUnit.ReduceHP(-hp, sender, true, null, false, dmgSrc);
+			this.mUnit.ReduceHP(-hp, sender, null, true, null, false, dmgSrc);
 		}
 
 		/// <summary>

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/Pet20200515/Pet_80003.cs

@@ -77,7 +77,7 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy
 				if (attacker.mUnit.CurrentHP > triggerHP)
 				{
 					int reduceHP = CUtils.CastInt(attacker.mUnit.MaxHP * XmdsUnitProp.PER * hpTriggerData.GetValue(skill.SkillLevel));
-					attacker.mUnit.ReduceHP(reduceHP, attacker.mUnit);
+					attacker.mUnit.ReduceHP(reduceHP, attacker.mUnit, null);
 					attacker.mUnit.AddBuff(Buff_ID, attacker.mUnit);
 
 					this.mNextTriggerTime = CommonLang.CUtils.localTimeMS + triggerInterval.GetValue();

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/Pet20200515/Pet_80013.cs

@@ -67,7 +67,7 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy
 				// 吸收主人伤害
 				if(absorbDamage > 0)
 				{
-					this.mPet.mUnit.ReduceHP(absorbDamage, attacker.mUnit);
+					this.mPet.mUnit.ReduceHP(absorbDamage, attacker.mUnit, null);
 				}
 
 				this.mNextTriggerTime = CommonLang.CUtils.localTimeMS + triggerInterval.GetValue();

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff