Browse Source

【BUG】MMO-21117: 随从改版后,受击触发类的妖灵技能都失效了

meijun 3 years ago
parent
commit
12ce4fc276

+ 4 - 3
XmdsServerCS/XmdsServerEdgeJS/Zone/ZoneServiceICE.cs

@@ -1445,9 +1445,10 @@ namespace XmdsServerEdgeJS.Zone
                                 {
                                     totalDamage = insPlayer.Statistic.TotalDamage,
                                     totalHealing = insPlayer.Statistic.TotalHealing,
-                                    killPlayerCount = insPlayer.Statistic.KillPlayerCount,
-                                    killUnitCount = insPlayer.Statistic.KillUnitCount,
-                                    deadCount = insPlayer.Statistic.DeadCount
+                                    //killPlayerCount = insPlayer.Statistic.KillPlayerCount,
+                                    //killUnitCount = insPlayer.Statistic.KillUnitCount,
+                                    //deadCount = insPlayer.Statistic.DeadCount,
+                                    SelfDamage = insPlayer.Statistic.SelfDamage
                                 };
                             }
                         });

+ 27 - 13
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/PetEquip/Pet_80260.cs

@@ -2,6 +2,7 @@
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using System;
 using System.Collections.Generic;
@@ -48,7 +49,8 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 			pack.BindTemplateAndDispose();
 			owner.RegistSendBuff(bt);
 
-			mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			//mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
 		}
 
 		protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
@@ -62,21 +64,33 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 
 		protected override void OnDispose(XmdsVirtual owner)
 		{
-			owner.UnRegistOnHitDamage(mUUID_1);
+			//owner.UnRegistOnHitDamage(mUUID_1);
+			owner.UnRegistShareMasterDmgEvent(mUUID_1);
 		}
 
-		private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
-			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
-		{
-			if (damage > 0 && base.IsTrigger(hitted, skill.SkillLevel))
-			{
-				hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
-					hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+		//private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
+		//	ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//{
+		//	if (damage > 0 && base.IsTrigger(hitted, skill.SkillLevel))
+		//	{
+		//		hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
+		//			hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
 
-				hitted.mUnit.AddBuff(Buff_ID);
-			}
-			return damage;
-		}
+		//		hitted.mUnit.AddBuff(Buff_ID);
+		//	}
+		//	return damage;
+		//}
+
+		private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
+        {
+            if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
+            {
+				unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
+				unit.AddBuff(Buff_ID);
+            }
+
+            return hp;
+        }
 
 		protected override void OnInitConfig(GameSkill skillInfo)
 		{

+ 21 - 9
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/PetEquip/Pet_80270.cs

@@ -2,6 +2,7 @@
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using System;
 using System.Collections.Generic;
@@ -38,26 +39,37 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 
 		protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
 		{
-			mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			//mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
 			mUUID_2 = owner.RegistCalDamage(OnCallDamageProcess, skillInfo, false);
 		}
 
 		protected override void OnDispose(XmdsVirtual owner)
 		{
-			owner.UnRegistOnHitDamage(mUUID_1);
+			//owner.UnRegistOnHitDamage(mUUID_1);
+			owner.UnRegistShareMasterDmgEvent(mUUID_1);
 			owner.UnRegistCalDamage(mUUID_2);
 		}
 
-		private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
-			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
+		//	ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//{
+		//	if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+		//	{
+		//		hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
+		//			hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+		//	}
+
+		//	return damage;
+		//}
+
+		private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
 		{
-			if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+			if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
 			{
-				hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
-					hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+				unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
 			}
-
-			return damage;
+			return hp;
 		}
 
 		public virtual bool OnCallDamageProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs,

+ 23 - 11
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/PetEquip/Pet_80300.cs

@@ -2,6 +2,7 @@
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using System;
 using System.Collections.Generic;
@@ -38,29 +39,40 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 
 		protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
 		{
-			mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			//mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
 			mUUID_2 = owner.RegistCalDamage(OnCallDamageProcess, skillInfo, false);
 		}
 
 		protected override void OnDispose(XmdsVirtual owner)
 		{
-			owner.UnRegistOnHitDamage(mUUID_1);
+			//owner.UnRegistOnHitDamage(mUUID_1);
+			owner.UnRegistShareMasterDmgEvent(mUUID_1);
 			owner.UnRegistCalDamage(mUUID_2);
 		}
 
-		private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
-			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
+		//	ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//{
+		//	if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+		//	{
+		//		hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
+		//			hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+		//	}
+
+		//	return damage;
+		//}
+
+		private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
 		{
-			if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
-			{
-				hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
-					hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
-			}
+            if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
+            {
+				unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
+            }
 
-			return damage;
+            return hp;
 		}
 
-
 		public virtual bool OnCallDamageProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs,
 			ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result, ref int damage)
 		{

+ 23 - 11
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/PetEquip/Pet_80310.cs

@@ -2,6 +2,7 @@
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using System;
 using System.Collections.Generic;
@@ -37,29 +38,40 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 
 		protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
 		{
-			mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			//mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
 			mUUID_2 = owner.RegistCalDamage(OnCallDamageProcess, skillInfo, false);
 		}
 
 		protected override void OnDispose(XmdsVirtual owner)
 		{
-			owner.UnRegistOnHitDamage(mUUID_1);
+			//owner.UnRegistOnHitDamage(mUUID_1);
+			owner.UnRegistShareMasterDmgEvent(mUUID_1);
 			owner.UnRegistCalDamage(mUUID_2);
 		}
 
-		private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
-			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
+		//	ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//{
+		//	if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+		//	{
+		//		hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
+		//			hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+		//	}
+
+		//	return damage;
+		//}
+
+		private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
 		{
-			if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
-			{
-				hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
-					hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
-			}
+            if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
+            {
+				unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
+            }
 
-			return damage;
+            return hp;
 		}
 
-
 		public virtual bool OnCallDamageProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs,
 			ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result, ref int damage)
 		{

+ 21 - 10
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/PetEquip/Pet_80330.cs

@@ -2,6 +2,7 @@
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using System;
 using System.Collections.Generic;
@@ -39,29 +40,39 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
 
 		protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
 		{
-			mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			//mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
+			mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
 			mUUID_2 = owner.RegistCalDamage(OnCallDamageProcess, skillInfo, false);
 		}
 
 		protected override void OnDispose(XmdsVirtual owner)
 		{
-			owner.UnRegistOnHitDamage(mUUID_1);
+			//owner.UnRegistOnHitDamage(mUUID_1);
+			owner.UnRegistShareMasterDmgEvent(mUUID_1);
 			owner.UnRegistCalDamage(mUUID_2);
 		}
 
-		private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
-			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
+		//	ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+		//{
+		//	if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+		//	{
+		//		hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
+		//			hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+		//	}
+
+		//	return damage;
+		//}
+
+		private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
 		{
-			if (damage > 0 && base.IsTrigger(attacker, skill.SkillLevel))
+			if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
 			{
-				hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
-					hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
+				unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
 			}
-
-			return damage;
+			return hp;
 		}
 
-
 		public virtual bool OnCallDamageProcess(XmdsVirtual attacker, XmdsVirtual hitter, AttackSource source, GameSkill gs,
 			ref XmdsCommonServer.Plugin.XmdsVirtual.AtkResult result, ref int damage)
 		{