/** altered attack method to spawn projectiles on ranged attack */ protected override void attack(HittableTarget target, Boolean isMelee, Castle enemy) { if (canAttackType == CharacterEnums.EType.BOTH || canAttackType == target.myType || target.myType == CharacterEnums.EType.BOTH) { attackCounter++; if (attackCounter >= getAttackCount()) { attackCounter = 0; if (isMelee) { Logger.d(ToString() + " attacked " + target.ToString() + "(Melee " + getMeleeDamage() + " dmg)"); target.getHit(getMeleeDamage()); } else { Rectangle r = getLocation(); int bulletHeight = (int)(r.Center.Y + r.Height / getOffSetDivisor()); Logger.d(ToString() + " attacked " + target.ToString() + "(Ranged " + getRangedDamage() + " dmg)"); if (getFrontLocationX() > target.getFrontLocationX()) { projectiles.Add((Projectile)Activator.CreateInstance(getProjectileType(), new object[] { CharacterEnums.EDirection.LEFT, new Vector2(getFrontLocationX(), bulletHeight), getRangedDamage(), target, enemy })); } else { projectiles.Add((Projectile)Activator.CreateInstance(getProjectileType(), new object[] { CharacterEnums.EDirection.RIGHT, new Vector2(getFrontLocationX(), bulletHeight), getRangedDamage(), target, enemy })); } } } } }
/** altered attack method to kill themself on attack */ protected override void attack(HittableTarget target, Boolean isMelee, Castle enemy) { if (canAttackType == CharacterEnums.EType.BOTH || canAttackType == target.myType || target.myType == CharacterEnums.EType.BOTH) { attackCounter++; if (attackCounter >= getAttackCount()) { attackCounter = 0; Logger.d(ToString() + " attacked " + target.ToString() + "(Melee " + getMeleeDamage() + " dmg)"); target.getHit(getMeleeDamage()); this.healthBar.sethealth(0); } } }
public override void update(Castle enemy) { HittableTarget groundTarget = enemy.groundFrontTarget; HittableTarget airTarget = enemy.airFrontTarget; for (int i = 0; i < projectiles.Count; i++) { if (projectiles[i].update()) { projectiles.RemoveAt(i); } } base.update(enemy); }
public Bullet(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle) : base(direction, startLocation, damage, target, enemyCastle) { location = startLocation; this.target = target; this.damage = damage; this.speed = getSpeed(); this.moving = direction; this.enemyCastle = enemyCastle; if (moving == CharacterEnums.EDirection.LEFT) { this.speed *= -1; } text = getTexture(); }
public AirStrike(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle) : base(direction, startLocation, damage, target, enemyCastle) { this.target = target; this.damage = damage; this.enemyCastle = enemyCastle; targetMarker = getTargetMarker(); payload = getPayload(); if (target.myType == CharacterEnums.EType.AIR) { finalDestination = Constants.airHeight; } else { finalDestination = Constants.groundHeight; } }
public override CharacterEnums.ECharacterAction determineAction(HittableCharacter me, HittableTarget frontEnemy) { if (me.facing == CharacterEnums.EDirection.RIGHT) { if (me.getFrontLocationX() + attackDistance >= frontEnemy.getFrontLocationX()) { return(CharacterEnums.ECharacterAction.MELEEATTACK); } } else { if (me.getFrontLocationX() - attackDistance <= frontEnemy.getFrontLocationX()) { return(CharacterEnums.ECharacterAction.MELEEATTACK); } } return(CharacterEnums.ECharacterAction.WALKFORWARD); }
public Projectile(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle) { }
public SateliteStrike(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle) : base(direction, startLocation, damage, target, enemyCastle) { }
public TankBullet(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle) : base(direction, startLocation, damage, target, enemyCastle) { }
public override CharacterEnums.ECharacterAction determineAction(HittableCharacter me, HittableTarget frontEnemy) { CharacterEnums.ECharacterAction acc = base.determineAction(me, frontEnemy); if (acc == CharacterEnums.ECharacterAction.MELEEATTACK) { return(CharacterEnums.ECharacterAction.WALKBACKWARD); } else { return(acc); } }