CombatCard SelectPriorityCard(List<CombatCard> availableCards, CharacterGraphic character) { CombatCard priorityCard = availableCards[0]; int maxStaminaCost = priorityCard.staminaCost; if (priorityCard.useUpAllStamina) maxStaminaCost = character.GetStamina(); foreach (CombatCard card in availableCards) { int realCardStaminaCost = card.staminaCost; if (card.useUpAllStamina) realCardStaminaCost = character.GetStamina(); if (realCardStaminaCost > maxStaminaCost) { priorityCard = card; maxStaminaCost = realCardStaminaCost; } else { if (realCardStaminaCost == maxStaminaCost) { if (Random.value > 0.5f) priorityCard = card; } } } //If no stamina-based card was chosen, choose an ammo-based card instead if (priorityCard == null) { int maxAmmoCost = 0; foreach (CombatCard card in availableCards) { if (card.ammoCost > maxAmmoCost) { priorityCard = card; maxAmmoCost = card.ammoCost; } else { if (card.ammoCost == maxAmmoCost) { if (Random.value > 0.5f) priorityCard = card; } } } } return priorityCard; }
protected override bool ExtenderPrerequisitesMet(CharacterGraphic user) { return user.GetStamina()>0; }
protected override bool ExtenderPrerequisitesMet(CharacterGraphic user) { return (user.GetStamina() > 0 && user.GetArmor()==0); }