public override IEnumerator Execute(GameAgent attacker, Damageable target) { //while (attacking) yield return null; attacking = true; attacker.transform.LookAt((target as DungeonObject).transform); attacker.playAttackAnimation(); attacker.playAttackNoise("Bow"); while (attacker.animating) { yield return(null); } var arrow = MapManager.AnimateProjectile(attacker.grid_pos, (target as DungeonObject).grid_pos, "arrow"); while (!(arrow == null)) { yield return(null); } try { target.playHitAnimation(); target.playHitNoise("Bow"); target.take_damage((int)(attacker.stats.DealDamage() * damageModifier)); } catch (Exception e) { // swallow the error } attacking = false; }
public override IEnumerator Execute(GameAgent attacker, Damageable target) { while (attacking) { yield return(null); } if (attacker.stats.currentMagicPoints < 4) { yield break; } attacker.stats.currentMagicPoints = Mathf.Max((attacker.stats.currentMagicPoints - 4), 0); int count = attacker.stats.GetMultiHitCount(); while (count > 0) { attacking = true; attacker.transform.LookAt((target as DungeonObject).transform); attacker.playAttackAnimation(); attacker.playAttackNoise("Bow"); while (attacker.animating) { yield return(null); } Projectile arrow = MapManager.AnimateProjectile(attacker.grid_pos, (target as DungeonObject).grid_pos, "arrow"); while (!(arrow == null)) { yield return(null); } try { target.playHitAnimation(); target.playHitNoise("Bow"); target.take_damage((int)(attacker.stats.DealDamage() * damageModifier)); } catch (Exception e) { // swallow the error } // if Damageable is dead, stop loop // implement this count--; } attacking = false; Debug.Log("After while loop"); }
public override IEnumerator Execute(GameAgent attacker, Damageable target) { while (attacking) { yield return(null); } if (attacker.stats.currentMagicPoints < 3) { yield break; } attacker.stats.currentMagicPoints = Mathf.Max((attacker.stats.currentMagicPoints - 3), 0); attacking = true; attacker.transform.LookAt((target as DungeonObject).transform); attacker.playAttackAnimation(); attacker.playAttackNoise("Lightning"); while (attacker.animating) { yield return(null); } Projectile lightning = MapManager.AnimateProjectile(attacker.grid_pos, (target as DungeonObject).grid_pos, "lightning"); while (!(lightning == null)) { yield return(null); } try { target.playHitAnimation(); target.playHitNoise("Fire"); target.take_damage((int)(attacker.stats.DealDamage() * damageModifier)); } catch (Exception e) { // swallow the error } attacking = false; }