public bool AddingConditonTable(Situation situation, WarUnit unit, IAbnormalCondition oldCond)
        {
            Contract.Requires(oldCond.GetType() == GetType());

            var cond = (AttackCountChangeCondition)oldCond;
            var newCount = cond._changeAttackCount + _changeAttackCount;
            // 変化量が0ならば削除、そうでなければ値を更新
            if (newCount == 0)
                unit.Conditions.Remove(ID, situation);
            else
                cond._changeAttackCount = _changeAttackCount;
            return false;
        }
        /// <summary>
        /// ユニットに状態異常が追加される直前に呼び出される。
        /// </summary>
        /// <param name="situation"></param>
        /// <param name="unit"></param>
        /// <param name="oldCond"></param>
        public bool AddingConditonTable(Situation situation, WarUnit unit, IAbnormalCondition oldCond)
        {
            Contract.Requires(oldCond.GetType() == GetType());

            var cond = (StatusChangeCondition)oldCond;
            // 効果がお互いに反対であった場合は状態異常を消す
            if (_changeStatusValue * cond._changeStatusValue < 0)
            {
                unit.Conditions.Remove(ID, situation);
            }
            // そうでない場合は、効果が大きいほうで上書きする
            else if (Math.Abs(_changeStatusValue) > Math.Abs(cond._changeStatusValue))
            {
                cond._changeStatusValue = _changeStatusValue;
            }

            return false;
        }