//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); } }
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 }