Browse Source

Merge branch 'master' of yxj:BattleSever/WSHCommon

zhaohua 3 years ago
parent
commit
59910a12c3

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

@@ -644,18 +644,10 @@ namespace XmdsCommonServer.Plugin
 
 
 			this.mUnit.Level = lvl_monster;
 			this.mUnit.Level = lvl_monster;
 			this.mProp.ServerData.BaseInfo.UnitLv = lvl_monster;
 			this.mProp.ServerData.BaseInfo.UnitLv = lvl_monster;
-			//等级转仙阶
-			int upLv = lvl_monster - 70;
-			if (upLv > 0)
-			{
-				this.mProp.ServerData.BaseInfo.StateLv = (byte)(upLv / 10);
-			}
-			else
-			{
-				this.mProp.ServerData.BaseInfo.StateLv = 0;
-			}
+            //等级转仙阶
+            this.mProp.ServerData.BaseInfo.StateLv = (byte)(Math.Max(0, (lvl_monster - 70) / 10));
 
 
-			if (ma.Fight_Type == 1)
+            if (ma.Fight_Type == 1)
 			{
 			{
 				MonsterProp prop = XmdsDataMgr.GetInstance().GetSingleMonsterProp(lvl_monster, ma.Type);
 				MonsterProp prop = XmdsDataMgr.GetInstance().GetSingleMonsterProp(lvl_monster, ma.Type);
 				initProp(prop, ma, ret);
 				initProp(prop, ma, ret);

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

@@ -51,15 +51,16 @@ namespace XmdsCommonServer.Plugin
 				ret.fateType = ma.FateType;
 				ret.fateType = ma.FateType;
 			}
 			}
 
 
-
 			XmdsServerScene scene = this.mUnit.Parent as XmdsServerScene;
 			XmdsServerScene scene = this.mUnit.Parent as XmdsServerScene;
 			SceneType sceneType = this.mUnit.GetSceneType();
 			SceneType sceneType = this.mUnit.GetSceneType();
 			int lvl_monster = ma.Level;
 			int lvl_monster = ma.Level;
 
 
 			this.mUnit.Level = lvl_monster;
 			this.mUnit.Level = lvl_monster;
 			this.mProp.ServerData.BaseInfo.UnitLv = lvl_monster;
 			this.mProp.ServerData.BaseInfo.UnitLv = lvl_monster;
+            //等级转仙阶
+            this.mProp.ServerData.BaseInfo.StateLv = (byte)(Math.Max(0, (lvl_monster - 70) / 10));
 
 
-			if (ma.Fight_Type == 1)
+            if (ma.Fight_Type == 1)
 			{
 			{
 				MonsterProp prop = XmdsDataMgr.GetInstance().GetSingleMonsterProp(lvl_monster, ma.Type);
 				MonsterProp prop = XmdsDataMgr.GetInstance().GetSingleMonsterProp(lvl_monster, ma.Type);
 				initProp(prop, ma, ret);
 				initProp(prop, ma, ret);

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_PropChange.cs

@@ -54,7 +54,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
             int v = (state.OverlayLevel + 1) * CurrentValue;
             int v = (state.OverlayLevel + 1) * CurrentValue;
             ChangeProp(hitter, CurentChangeType, v);
             ChangeProp(hitter, CurentChangeType, v);
 
 
-			int valueMax = hitter.IsPlayerUnit() ? 10000 : 20000;
+			int valueMax = hitter.IsPlayerUnit() ? 10000 : 25000;
 			if(state.OverlayLevel > 10 || v > valueMax)
 			if(state.OverlayLevel > 10 || v > valueMax)
 			{
 			{
 				log.Warn("XmdsBuff_PropChange信息输出:" + this.BindBuffID + ", 层:" + state.OverlayLevel + ", " + CurentChangeType + ", 值:" + v +
 				log.Warn("XmdsBuff_PropChange信息输出:" + this.BindBuffID + ", 层:" + state.OverlayLevel + ", " + CurentChangeType + ", 值:" + v +

+ 56 - 17
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Shield_AbsorbDamage.cs

@@ -64,14 +64,30 @@ namespace XmdsCommonSkill.Plugin.Buffs
 		protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
 		protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
         {
         {
             //注册监听.
             //注册监听.
-            mHandleUUID = hitter.RegistOnHitDamage(OnHandleHitDmage, null);
+            if(hitter.mUnit.IsPet)
+            {
+                mHandleUUID = hitter.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, null);
+            }
+            else
+            {
+                mHandleUUID = hitter.RegistOnHitDamage(OnHandleHitDmage, null);
+            }
+           
             XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】增加吸收伤害护盾.", hitter.mProp.ServerData.BaseInfo.name);
             XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】增加吸收伤害护盾.", hitter.mProp.ServerData.BaseInfo.name);
         }
         }
 
 
         protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
         protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
         {
         {
             //取消监听.
             //取消监听.
-            hitter.UnRegistOnHitDamage(mHandleUUID);
+            if(hitter.mUnit.IsPet)
+            {
+                hitter.UnRegistShareMasterDmgEvent(mHandleUUID);
+            }
+            else
+            {
+                hitter.UnRegistOnHitDamage(mHandleUUID);
+            }
+            
             XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】失去吸收伤害护盾.", hitter.mProp.ServerData.BaseInfo.name);
             XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】失去吸收伤害护盾.", hitter.mProp.ServerData.BaseInfo.name);
 
 
 			//护盾破碎,创建法术
 			//护盾破碎,创建法术
@@ -87,13 +103,23 @@ namespace XmdsCommonSkill.Plugin.Buffs
         //单位被攻击时.伤害吸收计算.
         //单位被攻击时.伤害吸收计算.
         private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source, 
         private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source, 
             ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
             ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
+        {
+            return DoAbsortDmg(damage, hitted, attacker, source);
+        }
+
+        private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
+        {
+            return (int)(DoAbsortDmg(hp, unit.Virtual as XmdsVirtual, sender == null ? null : (sender.Virtual as XmdsVirtual)));
+        }
+
+        private float DoAbsortDmg(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source = null)
         {
         {
             float ret = damage;
             float ret = damage;
 
 
-			if(this.mNextHitTime > CommonLang.CUtils.localTimeMS)
-			{
-				return damage;
-			}
+            if (this.mNextHitTime > CommonLang.CUtils.localTimeMS)
+            {
+                return damage;
+            }
 
 
             //damage > 0是伤害,damage < 0是加血机制.
             //damage > 0是伤害,damage < 0是加血机制.
             if (damage > 0 && AbsorbDamageSum > 0)
             if (damage > 0 && AbsorbDamageSum > 0)
@@ -103,13 +129,15 @@ namespace XmdsCommonSkill.Plugin.Buffs
                 if (ret < 0)
                 if (ret < 0)
                 {
                 {
                     ret = 0;
                     ret = 0;
-                    source.OutClientState = (byte)XmdsCommonServer.Plugin.XmdsVirtual.UnitHitEventState.Absorb;
+                    if(source != null)
+                    {
+                        source.OutClientState = (byte)XmdsCommonServer.Plugin.XmdsVirtual.UnitHitEventState.Absorb;
+                    }                    
                 }
                 }
 
 
                 int abDamage = CUtils.CastInt(damage - ret);
                 int abDamage = CUtils.CastInt(damage - ret);
 
 
                 AbsorbDamageSum -= abDamage;
                 AbsorbDamageSum -= abDamage;
-
                 if (AbsorbDamageSum <= 0)
                 if (AbsorbDamageSum <= 0)
                 {
                 {
                     //破盾.
                     //破盾.
@@ -122,22 +150,33 @@ namespace XmdsCommonSkill.Plugin.Buffs
                     }
                     }
                 }
                 }
 
 
-				//触发频率
-				if(this.HitInterval > 0)
-				{
-					this.mNextHitTime = CommonLang.CUtils.localTimeMS + this.HitInterval;
-				}
+                //触发频率
+                if (this.HitInterval > 0)
+                {
+                    this.mNextHitTime = CommonLang.CUtils.localTimeMS + this.HitInterval;
+                }
 
 
-				this.OnAbsortDamage(hitted, attacker, source);
+                this.OnAbsortDamage(hitted, attacker, source);
 
 
-			}
+            }
 
 
             return ret;
             return ret;
         }
         }
 
 
-		protected virtual void OnAbsortDamage(XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source)
-		{
 
 
+
+        protected virtual void OnAbsortDamage(XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source)
+		{
+            if(hitted.mUnit.IsPet)
+            {
+                //手动推送吸收伤害消息
+                UnitHitEvent evt = new UnitHitEvent(hitted.mUnit.ID);
+                evt.senderId = attacker == null ? 0 : attacker.mUnit.ID;
+                evt.senderMasterId = hitted.GetMasterID();
+                evt.hitMasterId = attacker == null ? 0 : attacker.GetMasterID();
+                evt.client_state = (byte)XmdsCommonServer.Plugin.XmdsVirtual.UnitHitEventState.Absorb;
+                hitted.mUnit.queueEvent(evt);
+            }
 		}
 		}
     }
     }
 }
 }

+ 1 - 1
test/app.config

@@ -14,7 +14,7 @@
     <add key="iceConfig.isWarnConnections" value="true" />
     <add key="iceConfig.isWarnConnections" value="true" />
     <add key="fastStreamConfig.port" value="3370" />
     <add key="fastStreamConfig.port" value="3370" />
     <add key="game.server.id" value="" />
     <add key="game.server.id" value="" />
-    <add key="game.bstest" value="false" />
+    <add key="game.bstest" value="true" />
     <!--add key="gameServer.start.bat" value="E:\work\服务器运行环境\xmds-server\xmds-game.bat" /-->
     <!--add key="gameServer.start.bat" value="E:\work\服务器运行环境\xmds-server\xmds-game.bat" /-->
     <add key="ClientSettingsProvider.ServiceUri" value="" />
     <add key="ClientSettingsProvider.ServiceUri" value="" />
   </appSettings>
   </appSettings>