コード例 #1
0
ファイル: MonsterShield.cs プロジェクト: wuxin0602/Nothing
		public override void onDefence(BattleFighter attacker, BattleFighter owner)
		{
			if (!attacker.Hero)
			{
				return;
			}
			//˯Ãß״̬²»»á´ò»¤¶Ü
			if (attacker.hasState(BattleConstants.ATTACK_ZERO_FLAG))
			{
				return;
			}
			BattleFighterBuff _buff = owner.BuffManager.getBattleBuff(this);
			if (_buff == null)
			{
				// TODO: loggers.error
				return;
			}

			int _shieldOrder = getCurShieldOrder(_buff);
			if (isShieldOff(_shieldOrder))
			{
				Logger.Log(string.Format("shield off, index = {0:D}", owner.Index));
				return;
			}

			int _resultShield = hitShield(attacker, _shieldOrder);

			Logger.Log(string.Format("shield refresh, index = {0:D}, value = {1:D}", owner.Index, _resultShield));

			_buff.setParam(BattleKeyConstants.BATTLE_BUFF_CUR_SHIELD_ORDER, _resultShield);

			checkShieldBreak(owner, _buff, _resultShield);
		}
コード例 #2
0
		public static float calcAttackerState(BattleFighter attacker, float damage)
		{
			float _resultDamage = damage;
			if (attacker.hasState(BattleConstants.ATTACK_ZERO_FLAG))
			{
				_resultDamage = 0;
			}
			return _resultDamage;
		}
コード例 #3
0
		/// <param name="defencer"> </param>
		protected internal virtual float calcDefencerState(BattleFighter defencer, float damage)
		{
			float _resultDamage = damage;
			if (defencer.hasState(BattleConstants.MONSTER_SHIELD_FLAG))
			{
				_resultDamage = (BattleConstants.MONSTER_SHIELD_DAMAGE_REDUCE / BattleConstants.BATTLE_RATIO_BASE) * damage;
				Logger.Log(string.Format("shield is working, index = {0:D}, damage = {1:F}, result = {2:F}", defencer.Index, damage, _resultDamage));
			}
			else
			{
				Logger.Log(string.Format("shield not working, index = {0:D}, damage = {1:F}, result = {2:F}", defencer.Index, damage, _resultDamage));
			}
			return _resultDamage;
		}
コード例 #4
0
		protected internal virtual void updateShieldState(BattleFighter defencer, SingleActionRecord record)
		{
			if (defencer.hasState(BattleConstants.MONSTER_SHIELD_FLAG))
			{
				defencer.updateStateRecord(record.FighterInfo);
			}
		}
コード例 #5
0
		/// <summary>
		/// 强制触发flag,目前只有一种, </summary>
		protected internal virtual bool isFourceTrigger(BattleFighter attacker)
		{
			return TriggerId == BattleEventConstants.BATTLE_FIGHTER_ATTACK && attacker.hasState(BattleConstants.SP_MAX_FALG);
		}