示例#1
0
        public override bool Check(IUnitConditionHave data)
        {
            var value = (int)_formula.Calculate(data.RarityValue);

            if (_context.BattleMode)
            {
                if (_context.ContextCondition.CurrentTarget != data.UnitId)
                {
                    return(false);
                }
                var haveUnit = _battle.LiveAllies.Contains(data.UnitId);
                if (!haveUnit)
                {
                    return(false);
                }
                return(data.Operator.Check(_units.GetUnit(data.UnitId).data.Stars, value));
            }
            if (!_units.TryGetUnit(data.UnitId, false, out var unitData))
            {
                return(false);
            }
            if (_context.ContextCondition != null && _context.ContextCondition.CurrentTarget > 0 && _context.ContextCondition.CurrentTarget != data.UnitId)
            {
                return(false);
            }

            return(data.Operator.Check(unitData.Stars, value));
        }
示例#2
0
        public override bool Check(IConditionUnit data)
        {
            var value = (int)_formula.Calculate(data.RarityValue);

            if (!_units.TryGetUnit(data.UnitId, true, out var unit))
            {
                return(data.Operator.Check(0, value));
            }

            if (data.InExplorer && !_units.ExplorerUnits.Contains(unit.Id))
            {
                return(false);
            }
            if (data.InActive && unit.ExplorerPosition < 0)
            {
                return(false);
            }
            return(data.Operator.Check(unit.Stars, value));
        }