예제 #1
0
 public static void OnCombatEnd(UnitCard victoriousUnit)
 {
     instance.selectedTile.AddCard(victoriousUnit);
     DeSelectTile();
     instance.turnLocation.SetParent(instance.turnLocationRect);
     CardPreviewWindow.OnCombatEnd();
 }
예제 #2
0
    public virtual int UserDamageModifiers(int damage, AttackCard attack, UnitCard target, bool heal = false)
    {
        if (!heal)
        {
            if (attack.type == AttackType.PHYSICAL)
            {
                //aggresion
                damage += aggression;

                //berserk
                if (currentHealth <= Defines.criticalHp && berserk)
                {
                    damage *= Defines.criticalHpMultiplier;
                }
            }
            else //type == AttackType.MAGICAL
            {
                //analytic
                damage += analytic;

                //overdrive
                if (currentHealth <= Defines.criticalHp && overdrive)
                {
                    damage *= Defines.criticalHpMultiplier;
                }
            }

            if (infiltrate > 0 && Infiltrated())
            {
                damage += infiltrate;
            }
        }

        return(damage);
    }
예제 #3
0
    public override void OnCombatEnd(UnitCard player1Unit, UnitCard player2Unit)
    {
        player1Unit.masterySpirit -= 10;
        player2Unit.masterySpirit -= 10;

        player.DiscardLocationCard(this);
    }
예제 #4
0
    public void UpdateStrengthText()
    {
        UnitCard card = (UnitCard)Card;

        StrengthText.text = card.Strength.ToString();
        if (!card.Hero)
        {
            if (card.Strength > card.GetBaseStrength())
            {
                StrengthText.color = new Color32(6, 100, 42, 255);
            }
            else if (card.Strength < card.GetBaseStrength())
            {
                StrengthText.color = Color.red;
            }
            else
            {
                StrengthText.color = Color.black;
            }
        }
        else
        {
            StrengthText.color = Color.white;
        }
    }
예제 #5
0
        public void AddUnitCard(string name, int cost, Faction f, string uType, string flavor, int r, int m, int hp, List <Ability> a)
        {
            UnitCard c = new UnitCard(cost, name, f, uType, flavor, r, m, hp, a.ToArray());

            Console.WriteLine("~~~\n" + c.ToString());
            listOfCards.Add(name, c);
        }
예제 #6
0
    public void RenderCard()
    {
        background.sprite = factions[cardData.Faction].cardBackground;
        cardName.text     = cardData.Name;
        string mainText = (cardData as UnitCard)?.MainText;

        description.text = (mainText == null ? cardData.MainText : mainText);
        cardCost.text    = cardData.DeployCost.ToString();
        if (cardData.FlavorText != "")
        {
            flavourText.text = cardData.FlavorText;
        }
        else
        {
            flavourText.gameObject.SetActive(false);
        }

        if (cardData is UnitCard)
        {
            UnitCard unitCardData = cardData as UnitCard;

            unitType.text     = unitCardData.UnitType;
            rangedDamage.text = unitCardData.RangedAttack.ToString();
            meleeDamage.text  = unitCardData.MeleeAttack.ToString();
            health.text       = unitCardData.HealthPoints.ToString();
        }
    }
예제 #7
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        UnitCard card = ((GameObject)target).GetComponent <UnitCard>();

        DrawInspector(card);
    }
예제 #8
0
 public PlayUnitCardAction(UnitCard card, Lane lane, int sideIndex, int position)
 {
     this.cardTarget = new SendableTarget <Card>("card", card);
     this.laneTarget = new SendableTarget <Lane>("lane", lane);
     this.pos        = position;
     this.sideIndex  = sideIndex;
 }
예제 #9
0
 public override void OnCombatEnd(UnitCard winner, UnitCard loser)
 {
     if (affectedCard != null)
     {
         affectedCard.masteryAgility -= 5;
     }
 }
예제 #10
0
    private Card GenerateCard(GameObject holder)
    {
        TurnManager tm = TurnManager.instance;

        Card randomCard = tm.RandomCard();

        if (randomCard.GetType() == typeof(UnitCard))
        {
            UnitCard randomCardComponent = (UnitCard)holder.AddComponent(randomCard.GetType());
            randomCardComponent.copyUnitCard((UnitCard)randomCard);
            return(randomCardComponent);
        }
        else if (randomCard.GetType() == typeof(SpellCard))
        {
            SpellCard randomCardComponent = (SpellCard)holder.AddComponent(randomCard.GetType());
            randomCardComponent.copySpellCard((SpellCard)randomCard);
            return(randomCardComponent);
        }
        else
        {
            Debug.LogError("Card type error! : " + randomCard.GetType().ToString());
        }

        return(new Card());
    }
예제 #11
0
 public override int DamageModifiers(int damage, AttackCard attack, UnitCard user, UnitCard enemy, bool heal = false)
 {
     if (attack is HealAttackCard)
     {
         return(damage + 10);
     }
     return(damage);
 }
예제 #12
0
 protected void Intimidate(UnitCard enemy)
 {
     if (intimidate > 0)
     {
         LogWindow.Log(name + "'s Intimidate activates");
         enemy.currentSpirit -= intimidate;
     }
 }
예제 #13
0
 protected void Hypnosis(UnitCard enemy)
 {
     if (hypnosis > 0)
     {
         LogWindow.Log(name + "'s Hypnosis activates");
         enemy.currentWisdom -= hypnosis;
     }
 }
예제 #14
0
 protected void Weaken(UnitCard enemy)
 {
     if (weaken > 0)
     {
         LogWindow.Log(name + "'s Weaken activates");
         enemy.currentStrength -= weaken;
     }
 }
예제 #15
0
 protected void Restrain(UnitCard enemy)
 {
     if (restrain > 0)
     {
         LogWindow.Log(name + "'s Restrain activates");
         enemy.currentAgility -= restrain;
     }
 }
예제 #16
0
 public virtual void OnCombatStart(UnitCard enemy)
 {
     Weaken(enemy);
     Restrain(enemy);
     Hypnosis(enemy);
     Intimidate(enemy);
     Support();
 }
예제 #17
0
    public void AddToDiscardPile(UnitCard unitCard)
    {
        if (unitCard != null)
        {
            unitCard.OnDeath();
        }

        AddToDiscardPile((Card)unitCard);
    }
예제 #18
0
 private PlayUnitCardAction CreatePlayCardAction(UnitCard card)
 {
     return(new PlayUnitCardAction(
                card,
                Driver.instance.gameManager.Lanes[laneIndex],
                Driver.instance.sideIndex,
                positionIndex
                ));
 }
예제 #19
0
        public Delta[] GetDeployDeltas(UnitCard card, int side, int pos, GameManager gm)
        {
            List <Delta> deltas = new List <Delta>()
            {
                new AddToLaneDelta(this, card, side, pos, gm)
            };

            return(deltas.ToArray());
        }
예제 #20
0
 public bool CanDestroyUnit(UnitCard unit)
 {
     Debug.Log("ENEMY ROW OBJECT:" + this.ToRow.name.Substring(5) + "UNIT TO ROW NAME: " + unit.ToRow.name);
     if (this.ToRow.name == unit.ToRow.name && !(unit is HeroUnit))
     {
         return(true);
     }
     return(false);
 }
예제 #21
0
    public void LoadCardData(UnitCardData card)
    {
        cardData = card;

        LoadRegularCardData(card);

        UnitCard unitCard = GetComponent <UnitCard>();

        //references
        unitCard.healthText   = healthText;
        unitCard.strengthText = strengthText;
        unitCard.agilityText  = agilityText;
        unitCard.wisdomText   = wisdomText;
        unitCard.spiritText   = spiritText;

        //stats
        unitCard.originalHealth   = cardData.health;
        unitCard.originalStrength = cardData.strength;
        unitCard.originalAgility  = cardData.agility;
        unitCard.originalWisdom   = cardData.wisdom;
        unitCard.originalSpirit   = cardData.spirit;

        //keywords
        unitCard.aggression = cardData.aggression;
        unitCard.analytic   = cardData.analytic;

        unitCard.masteryStrength = cardData.masteryStrenght;
        unitCard.masteryAgility  = cardData.masteryAgility;
        unitCard.masteryWisdom   = cardData.masteryWisdom;
        unitCard.masterySpirit   = cardData.masterySpirit;

        unitCard.weaken     = cardData.weaken;
        unitCard.restrain   = cardData.restrain;
        unitCard.hypnosis   = cardData.hypnosis;
        unitCard.intimidate = cardData.intimidate;

        unitCard.supportStrenght = cardData.supportStrenght;
        unitCard.supportAgility  = cardData.supportAgility;
        unitCard.supportWisdom   = cardData.supportWisdom;
        unitCard.supportSpirit   = cardData.supportSpirit;

        unitCard.infiltrate = cardData.infiltrate;

        unitCard.berserk   = cardData.berserk;
        unitCard.overdrive = cardData.overdrive;

        unitCard.armor     = cardData.armor;
        unitCard.endurance = cardData.endurance;

        unitCard.reckless   = cardData.reckless;
        unitCard.regenerate = cardData.regenerate;

        unitCard.defiant  = cardData.defiant;
        unitCard.stubborn = cardData.stubborn;
        unitCard.piercer  = cardData.piercer;
        //unitCard.taunt = cardData.taunt;
    }
예제 #22
0
    void CreateCard(Unit unit)
    {
        UnitCard card = Instantiate(unitCardPrefab, content).GetComponent <UnitCard>();

        allUnitCards.Add(unit, card);
        units.Add(unit);

        card.Initialize(unit);
        unit.deathAction += DeleteDeadUnitCard;
    }
예제 #23
0
 public override void OnCombatStart(UnitCard player1Unit, UnitCard player2Unit)
 {
     if (player1Unit.nation == Nation.EARTH)
     {
         player1Unit.currentStrength++;
     }
     if (player2Unit.nation == Nation.EARTH)
     {
         player2Unit.currentStrength++;
     }
 }
예제 #24
0
 public override void OnCombatEnd(UnitCard winner, UnitCard loser)
 {
     if (affectedCard1 != null)
     {
         affectedCard1.armor -= 5;
     }
     if (affectedCard2 != null)
     {
         affectedCard2.armor -= 5;
     }
 }
예제 #25
0
    public static void DrawInspector(UnitCard card)
    {
        EditorGUILayout.LabelField("ID", card.ID.ToString());
        EditorGUILayout.LabelField("Name", card.Name);
        EditorGUILayout.LabelField("Art", card.Art);
        EditorGUILayout.LabelField("Section", card.Section.ToString());
        EditorGUILayout.LabelField("Hero", card.Hero.ToString());


        EditorGUILayout.LabelField("Ability", card.Ability.ToString());
        if (card.Ability == Card.Abilities.Avenger)
        {
            EditorGUILayout.LabelField("Avenger", card.Avenger.ToString());
        }
        else if (card.Ability == Card.Abilities.Muster)
        {
            EditorGUILayout.LabelField("Muster", card.Muster);
        }
        else if (card.Ability == Card.Abilities.Scorch)
        {
            EditorGUILayout.LabelField("Scorch Value", card.ScorchThreshold.ToString());
            //EditorGUILayout.HelpBox("The value that a row must be greater than for the Scorch ability to activate", MessageType.Info);
        }
        else if (card.Ability == Card.Abilities.Bond)
        {
            EditorGUILayout.LabelField("Bond", card.Bond.ToString());
        }
        EditorGUILayout.Toggle("Ability Used", card.AbilityUsed);

        if (card.Hero)
        {
            EditorGUILayout.LabelField("Strength", card.Strength.ToString());
        }
        else
        {
            GUILayout.Label("Strength");
            //  ----------------------------
            //  | space | Total [Strength] |
            //  | space | Base  [Strength] |
            //  ----------------------------
            EditorGUILayout.BeginHorizontal(); //Horizontal contains tab + ints

            GUILayout.Space(20);               //Tab in 20 pixels //https://forum.unity.com/threads/indenting-guilayout-objects.113494/

            EditorGUILayout.BeginVertical();   //Vertical contains ints
            EditorGUILayout.LabelField("Total", card.Strength.ToString());
            EditorGUILayout.LabelField("Base", card.GetBaseStrength().ToString());
            EditorGUILayout.EndVertical();

            EditorGUILayout.EndHorizontal();
            EditorGUILayout.LabelField("Morale", card.Morale.ToString());
            EditorGUILayout.Toggle("Horn", card.Horn);
        }
    }
예제 #26
0
 public override void OnCombatStart(UnitCard player1Unit, UnitCard player2Unit)
 {
     if (string.Equals(player1Unit.name, "Princess Izumi", System.StringComparison.OrdinalIgnoreCase))
     {
         player1Unit.ModifyHealth(-10, true);
     }
     if (string.Equals(player2Unit.name, "Princess Izumi", System.StringComparison.OrdinalIgnoreCase))
     {
         player2Unit.ModifyHealth(-10, true);
     }
 }
예제 #27
0
 public override void OnCombatStart(UnitCard player1Unit, UnitCard player2Unit)
 {
     if (player1Unit.currentWisdom >= 5)
     {
         player1Unit.ModifyHealth(-5, true);
     }
     if (player2Unit.currentWisdom >= 5)
     {
         player2Unit.ModifyHealth(-5, true);
     }
 }
예제 #28
0
 public override void OnCombatStart(UnitCard player1, UnitCard player2)
 {
     if (player1.nation == Nation.WATER)
     {
         player1.ModifyHealth(-10, true);
     }
     if (player2.nation == Nation.WATER)
     {
         player2.ModifyHealth(-10, true);
     }
 }
예제 #29
0
 public void loadHeroCard()
 {
     Debug.Log("Loading Heroes for " + this.name);
         
     if (this.gameObject.name == "Deck1")
     {
         HeroCard1 = findHero();
     }                
     else
     {
         HeroCard2 = findHero();
     }                   
 }
예제 #30
0
 public override void OnCombatStart(UnitCard player1Unit, UnitCard player2Unit)
 {
     if (player1Unit.nation == Nation.EARTH)
     {
         affectedCard1      = player1Unit;
         player1Unit.armor += 5;
     }
     if (player2Unit.nation == Nation.EARTH)
     {
         affectedCard2      = player2Unit;
         player2Unit.armor += 5;
     }
 }
예제 #31
0
 public override void OnCombatStart(UnitCard player1Unit, UnitCard player2Unit)
 {
     if (player1Unit.currentAgility < 5)
     {
         player1Unit.currentStrength -= 1;
         player1Unit.currentSpirit   -= 1;
     }
     if (player2Unit.currentAgility < 5)
     {
         player2Unit.currentStrength -= 1;
         player2Unit.currentSpirit   -= 1;
     }
 }
예제 #32
0
 Texture2D SetTextureStats(Texture2D texture, UnitCard card)
 {
     Texture2D healthTexture = (Texture2D) Resources.Load("GUI/Cards/health/" + TranslateFactionToColourString() + "/health" + card.Health);
     int healthHeight = healthTexture.height;
     int healthWidth = healthTexture.width;
     var health = healthTexture.GetPixels(0, 0, healthWidth, healthHeight);
     texture.SetPixels(154,165, healthWidth, healthHeight, health);
     Texture2D attackTexture = (Texture2D) Resources.Load("GUI/Cards/attack/" + TranslateFactionToColourString() + "/attack" + card.Attack);
     int attackHeight = attackTexture.height;
     int attackWidth = attackTexture.width;
     var attack = attackTexture.GetPixels(0, 0, attackWidth, attackHeight);
     texture.SetPixels(46,164, attackWidth, attackHeight, attack);
     Texture2D movementTexture = (Texture2D) Resources.Load("GUI/Cards/movement/" + TranslateFactionToColourString() + "/movement" + card.Movement);
     int movementHeight = movementTexture.height;
     int movementWidth = movementTexture.width;
     var movement = movementTexture.GetPixels(0, 0, movementWidth, movementHeight);
     texture.SetPixels(95,167, movementWidth, movementHeight, movement);
     return texture;
 }