瀏覽代碼

【需求】MMO-19911:新增回血斩妖技79000

meijun 3 年之前
父節點
當前提交
ca6c9b241b

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

@@ -315,6 +315,8 @@ namespace CommonAI.Zone.Formula
 		void DispatchSendSpellOverEvent(LaunchSpell launch, SpellTemplate spt, float startX, float startY);
 		/** 设置技能可用性 */
 		void SetSkillActive(int skillTemplateID, bool active, bool pause_on_deactive = false);
+		/** 分发击杀怪物事件 */
+		bool DispatchKillOtherEvent(IVirtualUnit attacker, IVirtualUnit deader);
 		/////////////////////////////////////////////////////////////////////////////
 
 

+ 0 - 9
Common/Library/Release/class_config.properties

@@ -1,9 +0,0 @@
-# zone service
-zone = XmdsServerEdgeJS.Zone.ZoneServiceICE
-
-# fast stream
-faststream = Pomelo.FuckFastStream
-
-# ice Implement
-ice.XmdsManager = XmdsServerEdgeJS.Zone.XmdsManagerICE
-

+ 0 - 91
Common/Library/Release/log4net

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<log4net>
-    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="ERROR" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="err" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-      <appender name="warnAppender" type="log4net.Appender.RollingFileAppender">
-            <filter type="log4net.Filter.LevelMatchFilter">
-                <levelToMatch value="WARN" />
-            </filter>
-            <filter type="log4net.Filter.DenyAllFilter" />
-            <file value="warn" />
-            <encoding value="utf-8"/>
-            <preserveLogFileNameExtension value="true" />
-            <appendToFile value="true" />
-            <rollingStyle value="Date" />
-            <datePattern value="yyyyMMdd" />
-            <layout type="log4net.Layout.PatternLayout">
-                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-            </layout>
-        </appender>
-    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="info" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="DEBUG" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="debug" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="perf" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date %logger - %message%newline" />
-        </layout>
-    </appender>
-  
-    <root>
-        <level value="ALL" />
-        <appender-ref ref="errorAppender" />
-        <appender-ref ref="warnAppender" />
-        <appender-ref ref="infoAppender" />
-    </root>
-  
-    <logger name="Performance" additivity="true">
-      <level value="ALL" />
-      <appender-ref ref="perfAppender" />
-    </logger>
-  
-</log4net>

+ 0 - 91
Common/Library/Release/log4net.config

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<log4net>
-    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="ERROR" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="err" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-      <appender name="warnAppender" type="log4net.Appender.RollingFileAppender">
-            <filter type="log4net.Filter.LevelMatchFilter">
-                <levelToMatch value="WARN" />
-            </filter>
-            <filter type="log4net.Filter.DenyAllFilter" />
-            <file value="warn" />
-            <encoding value="utf-8"/>
-            <preserveLogFileNameExtension value="true" />
-            <appendToFile value="true" />
-            <rollingStyle value="Date" />
-            <datePattern value="yyyyMMdd" />
-            <layout type="log4net.Layout.PatternLayout">
-                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-            </layout>
-        </appender>
-    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="info" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="DEBUG" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="debug" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="perf" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date %logger - %message%newline" />
-        </layout>
-    </appender>
-  
-    <root>
-        <level value="ALL" />
-        <appender-ref ref="errorAppender" />
-        <appender-ref ref="warnAppender" />
-        <appender-ref ref="infoAppender" />
-    </root>
-  
-    <logger name="Performance" additivity="true">
-      <level value="ALL" />
-      <appender-ref ref="perfAppender" />
-    </logger>
-  
-</log4net>

+ 0 - 12
Library/Release/cheating_death_config.properties

@@ -1,12 +0,0 @@
-
-### 允许检测位移作弊
-ENABLE_MOVE_SPEED_CHECKER = true
-
-### 位移异常累加总和
-TOTAL_EXCEPTION_MOVE_DISTANCE_LIMIT = 4
-
-### 位移异常总和
-TOTAL_EXCEPTION_COUNT = 3
-
-### 作弊者锁定时间
-CHEATER_LOCK_TIME_MS = 15000

+ 0 - 9
Library/Release/class_config.properties

@@ -1,9 +0,0 @@
-# zone service
-zone = XmdsServerEdgeJS.Zone.ZoneServiceICE
-
-# fast stream
-faststream = Pomelo.FuckFastStream
-
-# ice Implement
-ice.XmdsManager = XmdsServerEdgeJS.Zone.XmdsManagerICE
-

+ 0 - 91
Library/Release/log4net

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<log4net>
-    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="ERROR" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="err" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-      <appender name="warnAppender" type="log4net.Appender.RollingFileAppender">
-            <filter type="log4net.Filter.LevelMatchFilter">
-                <levelToMatch value="WARN" />
-            </filter>
-            <filter type="log4net.Filter.DenyAllFilter" />
-            <file value="warn" />
-            <encoding value="utf-8"/>
-            <preserveLogFileNameExtension value="true" />
-            <appendToFile value="true" />
-            <rollingStyle value="Date" />
-            <datePattern value="yyyyMMdd" />
-            <layout type="log4net.Layout.PatternLayout">
-                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-            </layout>
-        </appender>
-    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="info" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="DEBUG" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="debug" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="perf" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date %logger - %message%newline" />
-        </layout>
-    </appender>
-  
-    <root>
-        <level value="ALL" />
-        <appender-ref ref="errorAppender" />
-        <appender-ref ref="warnAppender" />
-        <appender-ref ref="infoAppender" />
-    </root>
-  
-    <logger name="Performance" additivity="true">
-      <level value="ALL" />
-      <appender-ref ref="perfAppender" />
-    </logger>
-  
-</log4net>

+ 0 - 91
Library/Release/log4net.config

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<log4net>
-    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="ERROR" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="err" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-      <appender name="warnAppender" type="log4net.Appender.RollingFileAppender">
-            <filter type="log4net.Filter.LevelMatchFilter">
-                <levelToMatch value="WARN" />
-            </filter>
-            <filter type="log4net.Filter.DenyAllFilter" />
-            <file value="warn" />
-            <encoding value="utf-8"/>
-            <preserveLogFileNameExtension value="true" />
-            <appendToFile value="true" />
-            <rollingStyle value="Date" />
-            <datePattern value="yyyyMMdd" />
-            <layout type="log4net.Layout.PatternLayout">
-                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-            </layout>
-        </appender>
-    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="info" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="DEBUG" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="debug" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-        </layout>
-    </appender>
-    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
-        <filter type="log4net.Filter.LevelMatchFilter">
-            <levelToMatch value="INFO" />
-        </filter>
-        <filter type="log4net.Filter.DenyAllFilter" />
-        <file value="perf" />
-        <encoding value="utf-8"/>
-        <preserveLogFileNameExtension value="true" />
-        <appendToFile value="true" />
-        <rollingStyle value="Date" />
-        <datePattern value="yyyyMMdd" />
-        <layout type="log4net.Layout.PatternLayout">
-            <conversionPattern value="%date %logger - %message%newline" />
-        </layout>
-    </appender>
-  
-    <root>
-        <level value="ALL" />
-        <appender-ref ref="errorAppender" />
-        <appender-ref ref="warnAppender" />
-        <appender-ref ref="infoAppender" />
-    </root>
-  
-    <logger name="Performance" additivity="true">
-      <level value="ALL" />
-      <appender-ref ref="perfAppender" />
-    </logger>
-  
-</log4net>

+ 0 - 47
Library/Release/zone_server_config.properties

@@ -1,47 +0,0 @@
-
-#--------------------------------------------------------------------------------
-# 系统
-#--------------------------------------------------------------------------------
-
-# 预期最大Heap控件
-SYSTEM_MAX_HEAP_SIZE_MB = 8192
-
-# 预期最大线程使用数量
-SYSTEM_WORK_THREAD_COUNT = 1024
-
-
-#-------------------------------------------------------------------------------
-# 游戏参数
-#-------------------------------------------------------------------------------
-
-# 游戏资源路径
-GAME_DATA_ROOT_PATH = D:\Xmds\GameEditors\GameEditor\data
-
-# 读取BIN文件
-GAME_DATA_DEFAULT_LOAD_FROM_BIN = true
-
-# 主游戏更新时间
-GAME_UPDATE_INTERVAL_MS = 33
-
-#主游戏更新时间 - 普通 - AOI视野
-GAME_LOWLV_UPDATE_INTERVAL_MS = 500
-
-#--------------------------------------------------------------------------------
-# 客户端
-#--------------------------------------------------------------------------------
-
-# 客户端消息同步范围
-CLIENT_SYNC_OBJECT_IN_RANGE = 15
-CLIENT_SYNC_OBJECT_OUT_RANGE = 20
-
-
-#--------------------------------------------------------------------------------
-# TEST
-#--------------------------------------------------------------------------------
-
-# 是否测试
-TEST = false
-
-# 每隔多少时间发送服务器状态(ms)
-TEST_POST_SERVER_INFO_INTERVAL_MS = 5000
-

+ 2 - 0
XmdsCommonServer/Plugin/XmdsSkillTemplate/Skills/XmdsSkill.cs

@@ -504,6 +504,8 @@ namespace XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills
 	//释放卡牌技能
 	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 战斗特殊事件.

+ 64 - 0
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.Event.cs

@@ -74,6 +74,9 @@ namespace XmdsCommonServer.Plugin
 		//释放卡牌技能监听
 		readonly private List<OnTriggerCardSkillEvent> mTriggerCardSkillList = new List<OnTriggerCardSkillEvent>();
 
+		//击杀其他单位监听
+		readonly private List<OnKillOtherUnitEvent> mKillOtherList = new List<OnKillOtherUnitEvent>();
+
 
 		private HashMap<int, IHandle> mHandleMap = new HashMap<int, IHandle>();
         private int mHandleUUID = 0;
@@ -327,6 +330,18 @@ namespace XmdsCommonServer.Plugin
 			}
 		}
 
+		class OnKillOtherUnitEvent : IHandle
+		{
+			public readonly int maType;
+			public readonly IOnKillOtherUnitEvent m_hand;
+
+			public OnKillOtherUnitEvent(IOnKillOtherUnitEvent handler, GameSkill info, int type) : base(info, false)
+			{
+				this.m_hand = handler;
+				this.maType = type;
+			}
+		}
+
 		#region 事件监听.
 
 		public delegate void OnHealEvent(XmdsVirtual attacker, XmdsVirtual hitter, int value, ref AtkResult result);
@@ -1046,6 +1061,32 @@ namespace XmdsCommonServer.Plugin
 			return ret;
 		}
 
+		public int RegistKillOtherEvent(IOnKillOtherUnitEvent call, GameSkill info, int monsterType)
+		{
+			OnKillOtherUnitEvent handle = new OnKillOtherUnitEvent(call, info, monsterType);
+			int ret = HandleUUIDCreate();
+			mKillOtherList.Add(handle);
+			mHandleMap.Add(ret, handle);
+			return ret;
+		}
+
+		public bool UnRegistKillOtherEvent(int handleUUID)
+		{
+			bool ret = false;
+			IHandle handle = null;
+
+			if (mHandleMap.TryGetValue(handleUUID, out handle))
+			{
+				if (handle != null && handle is OnKillOtherUnitEvent)
+				{
+					ret = mKillOtherList.Remove(handle as OnKillOtherUnitEvent);
+					mHandleMap.Remove(handleUUID);
+				}
+			}
+
+			return ret;
+		}
+
 		#endregion
 
 
@@ -1570,6 +1611,24 @@ namespace XmdsCommonServer.Plugin
 			return true;
 		}
 
+		/** 分发释放卡牌技能事件 */
+		public bool DispatchKillOtherEvent(IVirtualUnit attacker, IVirtualUnit deader)
+		{
+			for (int i = mKillOtherList.Count - 1; i >= 0; --i)
+			{
+				OnKillOtherUnitEvent hitend = mKillOtherList[i];
+				if (deader.GetMaType() >= hitend.maType)
+				{
+					if (!hitend.m_hand.Invoke(attacker as XmdsVirtual, deader as XmdsVirtual, hitend.m_skill))
+					{
+						return false;
+					}
+				}
+			}
+
+			return true;
+		}
+
 		public void SetSkillActive(int skillTemplateID, bool active, bool pause_on_deactive = false)
 		{
 			if (this.mSkillHelper != null && this.mSkillHelper.mActiveSkills != null)
@@ -1679,6 +1738,7 @@ namespace XmdsCommonServer.Plugin
 			this.mReduceMPList.Clear();
 			this.mTriggerCardSkillList.Clear();
 			this.mShareMasterDmgList.Clear();
+			this.mKillOtherList.Clear();
 
 			mHandleUUID = 0;
         }
@@ -1803,6 +1863,10 @@ namespace XmdsCommonServer.Plugin
 				{
 					result = UnRegistShareMasterDmgEvent(uuid);
 				}
+				else if (handle is OnKillOtherUnitEvent)
+				{
+					result = UnRegistKillOtherEvent(uuid);
+				}
 				else
 				{
 					log.Error("RemoveEventByUUID not process type: " + handle);

+ 12 - 0
XmdsServerCS/XmdsServerEdgeJS/Zone/XmdsZoneNode.cs

@@ -363,6 +363,18 @@ namespace XmdsServerEdgeJS.Zone
                 aName = mvd.DisplayName;
                 aLevel = attacker.GenSyncUnitInfo().Level;
             }
+			else if(attacker.IsPlayerUnit && obj.IsMonster)
+			{
+				InstanceUnit attackerUnit = attacker.IsPet ? attacker.Virtual.GetMasterUnit() : attacker;
+				if(attackerUnit != null)
+				{
+					attackerUnit.Virtual.DispatchKillOtherEvent(attackerUnit.Virtual, obj.Virtual);
+				}
+				else
+				{
+					log.Warn("zone_onUnitDead: 找不到人形攻击者:" + attacker.Info.ID + ", " + zone.GetSceneID());
+				}
+			}
 			
 			//连斩数计算
 			if(zone is EditorScene)

+ 57 - 0
XmdsVSPlugins/XmdsCommonSkill/Plugin/Skills/zhanyao/ZhanYao_79000.cs

@@ -0,0 +1,57 @@
+using CommonAI.Data;
+using CommonAI.Zone;
+using CommonAI.Zone.Formula;
+using CommonAI.Zone.Helper;
+using CommonAI.Zone.Instance;
+using CommonLang;
+using XmdsCommon.Plugin;
+using XmdsCommonServer.Plugin;
+using XmdsCommonServer.XLS.Data;
+using XmdsCommonSkill.Plugin.Buffs;
+using XmdsCommonSkill.Plugin.Interface;
+using XmdsCommonSkill.Plugin.PassiveSkills.Remedy;
+using XmdsCommonSkill.Plugin.Skills.PetSkill;
+using static CommonAI.Zone.Instance.InstanceUnit;
+
+namespace XmdsCommonSkill.Plugin.Skills.Warrior
+{
+    /// <summary>
+    /// 斩妖-击杀指定类型boss回血
+    /// </summary>
+    public class ZhanYao_79000 : XmdsPassiveSkillBase
+	{
+        private static readonly int ID = 79000;
+		private int mUUID_1 = 0;
+
+		//boss类型
+		private static XmdsSkillValue mValueSet1;
+		//回血效果: 最大生命值
+		private static XmdsSkillValue mValueSet2;
+
+		public override int SkillID { get { return ID; } }
+
+		protected override void OnInit(GameSkill info, XmdsVirtual owner)
+		{
+			mUUID_1 = owner.RegistKillOtherEvent(OnKillOtherUnitEvent, info, mValueSet1.GetValue(info.SkillLevel));
+		}
+
+		private bool OnKillOtherUnitEvent(XmdsVirtual attacker, XmdsVirtual deader, GameSkill info)
+		{
+			int addHP = CUtils.CastInt(attacker.mUnit.MaxHP * XmdsUnitProp.PER * mValueSet2.GetValue(info.SkillLevel));
+			attacker.mUnit.AddHP(addHP, attacker.mUnit);
+			return true;
+		}
+
+		protected override void OnDispose(XmdsVirtual owner)
+		{
+			owner.UnRegistKillOtherEvent(mUUID_1);
+		}
+
+		protected override void OnInitSkillParam()
+		{
+			XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
+			InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
+			InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
+		}
+	}
+}

+ 1 - 0
XmdsVSPlugins/XmdsCommonSkill/XmdsCommonSkill.csproj

@@ -856,6 +856,7 @@
     <Compile Include="Plugin\Skills\XmdsPlayerSkillBase.cs" />
     <Compile Include="Plugin\Skills\XmdsSkillBase.cs" />
     <Compile Include="Plugin\Skills\zhanyao\ZhanYao_70011.cs" />
+    <Compile Include="Plugin\Skills\zhanyao\ZhanYao_79000.cs" />
     <Compile Include="Plugin\Skills\zhanyao\ZhanYao_70031.cs" />
     <Compile Include="Plugin\Skills\zhanyao\ZhanYao_70021.cs" />
     <Compile Include="Plugin\Skills\zhanyao\ZhanYao_70030.cs" />