示例#1
0
        public virtual void OnHeroPolicyApplied(Policies.Policy policy)
        {
            if (policy.Kind == PolicyKind.Move)
            {
            }
            else if (policy.Kind == PolicyKind.Attack)
            {
                HandlePolicyApplied(policy);
                var ap          = policy as AttackPolicy;
                var enemyVictim = ap.Victim as Enemy;
                if (enemyVictim != null)
                {
                    //StrikeBack shall be done when hero is hit
                    //if (enemyVictim.Alive && gm.Hero.CanUseAbility(Abilities.AbilityKind.StrikeBack))
                    //{
                    //  gm.UseAbility(enemyVictim, gm.Hero, Abilities.AbilityKind.StrikeBack, false);
                    //}

                    var bulkOK = HandleBulk(enemyVictim, EntityStatKind.ChanceToBulkAttack);
                    if (!bulkOK)
                    {
                        var repeatOK = gm.Hero.IsStatRandomlyTrue(EntityStatKind.ChanceToRepeatMeleeAttack);
                        if (repeatOK)
                        {
                            gm.ApplyHeroPhysicalAttackPolicy(enemyVictim, false);
                        }
                    }
                }
            }

            HandleHeroActionDone();
        }
示例#2
0
        public virtual void OnHeroPolicyApplied(Policies.Policy policy)
        {
            if (policy.Kind == PolicyKind.Move)
            {
            }
            else if (policy.Kind == PolicyKind.Attack)
            {
                HandlePolicyApplied(policy);
                var ap     = policy as AttackPolicy;
                var en     = ap.Victim as Enemy;
                var bulkOK = HandleBulk(en, EntityStatKind.ChanceToBulkAttack);
                if (!bulkOK)
                {
                    var repeatOK = gm.Hero.IsStatRandomlyTrue(EntityStatKind.ChanceToRepeatMelleeAttack);
                    if (repeatOK)
                    {
                        gm.Context.ApplyPhysicalAttackPolicy(gm.Hero, en, (p) => { });
                    }
                }
            }

            HandleHeroActionDone();
        }