protected internal override void onSingleAction(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData)
		{
			foreach (int _buffId in buffIds)
			{
				defencer.addBuff(new BuffInfo(_buffId, buffCondition));
			}
		}
		/// <summary>
		/// 核心方法,执行技能动作
		/// </summary>
		/// <param name="attacker"> </param>
		/// <param name="record"> </param>
		internal virtual void optionAction(BattleFighter attacker, BattleFightRecord record)
		{
			// 创建一个供不同动作之间数据沟通的记录
			SkillDataHolder _holder = new SkillDataHolder();
			// 动作分两步
			// 准备数据
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.List<com.kx.sglm.gs.battle.share.actor.impl.BattleFighter> _enemyList = calcTargetList(attacker, true);
			List<BattleFighter> _enemyList = calcTargetList(attacker, true);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.List<com.kx.sglm.gs.battle.share.actor.impl.BattleFighter> _friendList = calcTargetList(attacker, false);
			List<BattleFighter> _friendList = calcTargetList(attacker, false);
			List<ISkillEffect> _activeEffects = calcActiveEffectByRate();

			_holder.Record = record;
			_holder.Attacker = attacker;
			_holder.EnemyList = _enemyList;
			_holder.FriendList = _friendList;
			_holder.ActiveEffect = _activeEffects;

			// 执行动作内容
			optionEffectAction(_holder);
			// 执行动作后操作
			optionAfterAction(_holder);

		}
		public override void onAction(BattleFighter attacker, List<BattleFighter> defencerList, SkillDataHolder resultData)
		{
			initRecord(attacker, resultData.Record);
			foreach (BattleFighter _defencer in defencerList)
			{
				onSingleAction(attacker, _defencer, resultData);
			}

		}
		protected internal override void onSingleAction(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData)
		{
			HeroColor _color = HeroColor.getValue(colorIndex);
			BattleFightRecord _record = resultData.Record;
			SingleActionRecord _singleRecord = _record.OrCreateDefence;
			_singleRecord.ActType = BattleRecordConstants.SINGLE_ACTION_TYPE_CHANGED_COLOR;
			BattleRecordHelper.initSingleRecord(defencer, _singleRecord);
			defencer.changeColor(_color, _singleRecord);
			_record.finishCurDefecner();
		}
		protected internal override void onSingleAction(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData)
		{
			onAttack(attacker, defencer, resultData.Record);
		}
Beispiel #6
0
		public abstract void onAction(BattleFighter attacker, List<BattleFighter> defencerList, SkillDataHolder resultData);
		protected internal override void recoverRecord(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData)
		{
			SingleActionRecord _singleRecord = resultData.Record.OrCreateAttack;
			_singleRecord.ResultHp = defencer.FighterCurHp;
		}
		protected internal override void onSingleAction(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData)
		{
			recoverOption(attacker, defencer);
			recoverRecord(attacker, defencer, resultData);
		}
		protected internal abstract void recoverRecord(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData);
		/// <summary>
		/// 技能释放后操作
		/// </summary>
		/// <param name="holder"> 包含当次技能的一些实时数据 </param>
		internal virtual void optionAfterAction(SkillDataHolder holder)
		{
			BattleFightRecord _record = holder.Record;
			holder.Attacker.attackerAfterSkillAction(_record);
			foreach (ISkillEffect _effect in holder.ActiveEffect)
			{
				List<BattleFighter> _fighterList = holder.getTargets(_effect);
				_effect.defencerAfterEffect(holder.Attacker, _fighterList, _record);
			}

		}
		/// <summary>
		/// 技能操作
		/// </summary>
		/// <param name="holder"> </param>
		internal virtual void optionEffectAction(SkillDataHolder holder)
		{
			foreach (ISkillEffect _effect in holder.ActiveEffect)
			{
				if (!ratioEffect(_effect))
				{
					continue;
				}
				List<BattleFighter> _fighterList = holder.getTargets(_effect);
				_effect.onAction(holder.Attacker, _fighterList, holder);
			}
		}
		protected internal abstract void onSingleAction(BattleFighter attacker, BattleFighter defencer, SkillDataHolder resultData);