Esempio n. 1
0
 public Category(GeneralGroup general, TeamFilterGroup teamFilter, ProductGroup product)
 {
     General    = general;
     TeamFilter = teamFilter;
     Product    = product;
 }
Esempio n. 2
0
    //attacks another group
    public void Attack(GeneralGroup target, AttackType atk)
    {
        hasAttacked = true;
        //roll 2d6 for determining outcome
        int diceRoll = Random.Range(1, 6) + Random.Range(1, 6);
        //the number to beat with the roll
        int targetNumber = 0;

        //set base target numbers based on attack type
        switch (atk)
        {
        case AttackType.Control:
            targetNumber = power - target.GetResistance();
            //check alignment oppositon and add power
            break;

        case AttackType.Destroy:
            targetNumber = power - target.power;
            //check alignment oppositon and add power
            break;

        case AttackType.Neutralize:
            targetNumber = power - target.GetResistance() + 6;
            break;

        default:
            targetNumber = power - target.GetResistance();
            break;
        }

        //decrease target number based on proximity to Central Group
        if (target.distanceFromCentral == 1)
        {
            targetNumber -= 10;
        }
        else if (target.distanceFromCentral == 2)
        {
            targetNumber -= 5;
        }
        else if (target.distanceFromCentral == 3)
        {
            targetNumber -= 2;
        }

        //prompt source player for Assassination
        //prompt other players for Murphy's Law

        if (diceRoll > 10)
        {
            Debug.Log("Attack Failed");
            return;
        }

        //prompt source and target players to use transferable power
        //prompt source and target players to spend money
        //prompt other players for Interference
        //prompt source player for Privilege

        //determine if attack fails, exit if true
        if (diceRoll > targetNumber)
        {
            Debug.Log("Attack Failed");
            return;
        }

        switch (atk)
        {
        case AttackType.Control:
            //prompt selection of arrow to control target from
            if (target.controller == null)
            {
                BoardManager.uncontrolledDeck.RemoveCard(target);
            }
            target.treasury  /= 2;
            target.controller = this.controller;
            //prompt free transfer
            break;

        case AttackType.Destroy:
            targetNumber = power - target.power;
            target.ResetControl();
            BoardManager.destroyedDeck.AddCard(target);
            groupsDestroyed++;
            //move target to destroyed pile
            break;

        case AttackType.Neutralize:
            target.ResetControl();
            break;

        default:
            targetNumber = power - target.GetResistance();
            break;
        }
    }