Beispiel #1
0
    //invokes when this card (probably a creature) is attacked
    public void IsAttacked(card Attacker)
    {
        if (Player.player_creatures.Contains(this)) Player.TriggerCardAbilities(abilities.ON_FRIENDLY_ISATTACKED);
            else Enemy.TriggerCardAbilities(abilities.ON_FRIENDLY_ISATTACKED);

        Debug.Log ("a creature "+Name+" is attacked, processing damage..");
        if (Attacker.Ranged) {
                                PlayFX(playerDeck.pD.firefx);
                                GetComponent<AudioSource>().PlayOneShot(HitBySpell);
                            }
            else 	GetComponent<AudioSource>().PlayOneShot (Hit);

        GetComponent<Renderer>().material.color = Color.red;
        Invoke ("RestoreColor", 0.3f); //we make the avatar red for 0.3 seconda

        int DamageToCreature;

        if (noDamage(Attacker, this)) DamageToCreature = 0;
            else
        {
            DamageToCreature = Attacker.CreatureOffense;

            if (Attacker.IsCriticalStrike ()) {
                            Player.Warning = "Critical strike!"; //you could change it to some fx
                            DamageToCreature = (int)(Attacker.CreatureOffense * Attacker.CritDamageMultiplier);
                                            }

            if (Attacker.DoubleDamage) DamageToCreature = DamageToCreature * 2;

            if (TakesHalfDamage) 	DamageToCreature = (int)(DamageToCreature / 2);

            if (Attacker.Ranged && less_dmg_from_ranged) DamageToCreature--;

            bool DoNoDamage = false;

            if (MainMenu.TCGMaker.core.OptionKillOrDoNothing)
                    {
                        if (Defense >= DamageToCreature) DoNoDamage = true;
                    }

            if (DoNoDamage)	DamageToCreature = 0;
                else Defense -= DamageToCreature;

            Debug.Log("dealt "+DamageToCreature+" damage, attacker offense:"+Attacker.CreatureOffense);
        }

        if (MainMenu.TCGMaker.core.OptionRetaliate && !noDamage(this, Attacker)) {
                        // the attacked creature deals damage back to the attacker:
            if (!MainMenu.TCGMaker.core.UseGrid || Ranged || slot.IsAdjacent(Attacker.slot) )
                            {
                                int DamageToAttacker = CreatureOffense;	//default damage

                                if (IsCriticalStrike ())
                                                DamageToAttacker = (int)(CreatureOffense * CritDamageMultiplier);

                                if (DoubleDamage)
                                                DamageToAttacker = DamageToAttacker * 2;

                                if (Attacker.TakesHalfDamage)
                                                DamageToAttacker = (int)(DamageToAttacker / 2);

                                if (Ranged && Attacker.less_dmg_from_ranged) DamageToAttacker--;

                                Attacker.Defense -= DamageToAttacker;
                            }

                }

        Player.CreatureStatsNeedUpdating = true;

        if (Defense <=0 ) {	//the attack target died

            if (Player.player_creatures.Contains(Attacker) || Player.cards_in_graveyard.Contains(Attacker))		Attacker.abilities.TriggerAbility (abilities.ON_KILL);

            else Attacker.abilities.TriggerAbility (abilities.ON_KILL, true);
                }

        if (Attacker.Defense <=0 ) {
            if (Player.player_creatures.Contains(this) || Player.cards_in_graveyard.Contains(this))		abilities.TriggerAbility (abilities.ON_KILL);
            else abilities.TriggerAbility (abilities.ON_KILL, true);
                }
    }
Beispiel #2
0
    public void IsAttacked(card Attacker)
    {
        int DamageToPlayer = Attacker.CreatureOffense; //default damage

        if (Attacker.IsCriticalStrike ())
            {
                Player.Warning = "Critical strike!"; //you could change it to some fx
                DamageToPlayer = (int)(Attacker.CreatureOffense * Attacker.CritDamageMultiplier);
            }

        if (Attacker.DoubleDamage) DamageToPlayer = DamageToPlayer * 2;

        Life -= DamageToPlayer;

        GetComponent<AudioSource>().PlayOneShot(Hit);
        GetComponent<Renderer>().material.color = Color.red;
        Invoke("RestoreColor", 0.3f); //we make the avatar red for 0.3 seconda
    }