Exemplo n.º 1
0
        public async Task <UserReputation> RevokeAsync(
            IReputation reputation,
            int userId,
            string description)
        {
            if (reputation == null)
            {
                throw new ArgumentNullException(nameof(reputation));
            }

            if (userId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(userId));
            }

            var userReputation = new UserReputation()
            {
                FeatureId     = await GetReputationFeatureId(reputation),
                Name          = reputation.Name,
                Description   = description,
                Points        = -reputation.Points,
                CreatedUserId = userId
            };

            var result = await _userReputationManager.CreateAsync(userReputation);

            if (result.Succeeded)
            {
                return(result.Response);
            }

            return(null);
        }
Exemplo n.º 2
0
        async Task <int> GetReputationFeatureId(IReputation reputation)
        {
            var reputations = await _reputationManager.GetReputationsAsync();

            var providedReputation = reputations.FirstOrDefault(r => r.Name.Equals(reputation.Name));

            if (providedReputation != null)
            {
                if (!string.IsNullOrEmpty(providedReputation.ModuleId))
                {
                    var feature = await _featureFacade.GetFeatureByIdAsync(providedReputation.ModuleId);

                    if (feature != null)
                    {
                        return(feature.Id);
                    }
                }
            }

            return(0);
        }
Exemplo n.º 3
0
    public void Activate()
    {
        IDamageType dmgType = IDamageType.Magic;

        switch (spell.spellRune)
        {
        case ISpellRune.Air:
            dmgType = IDamageType.Air;
            break;

        case ISpellRune.Earth:
            dmgType = IDamageType.Earth;
            break;

        case ISpellRune.Fire:
            dmgType = IDamageType.Fire;
            break;

        case ISpellRune.Water:
            dmgType = IDamageType.Water;
            break;
        }

        switch (spell.spellType)
        {
        case ISpellType.Target:
            if (target)
            {
                target.ApplyDamage(spell.value, dmgType);
            }
            break;

        case ISpellType.Radian:
            ICharacter[] chars = ICharacter.GetNearestFromPointAll(destination, null, spell.range);
            foreach (ICharacter ch in chars)
            {
                ch.ApplyDamage(spell.value, dmgType);
            }
            break;

        case ISpellType.Point:
            ICharacter c = ICharacter.GetNearestFromPoint(destination, null, 0.5f);
            if (c)
            {
                c.ApplyDamage(spell.value, dmgType);
            }
            break;
        }
        if (target && caster)
        {
            if (!(IReputation.GetEnemity(target.status, caster.status) > 1))
            {
                if (caster.status.reputationType != IReputationType.Bandit &&
                    caster.status.reputationType != IReputationType.Monster)
                {
                    caster.status.reputationType = IReputationType.Bandit;
                }
            }
        }
        //ISpell.SpellEffect (spell.spellRune, caster.status, trans.position);
        DestroySpell();
    }