//collide and animation internal Projectile(Moveable owner, Vector2f start, Moveable d, Func<Moveable, bool> doA, Animation animation, float scale, bool collide) : this(owner, start, d, doA, null, new IntRect(0, 0, animation.FrameWidth, animation.FrameHeight), scale) { this.collide = collide; animationPlayer = new AnimationPlayer(); animationPlayer.PlayAnimation(animation); }
internal bool doFireAoe(Moveable mob) { bool dead = mob.takeDamage(this, GROUNDFIRE_DMG); if (dead) { dropThreat(mob); } return false; }
//only returns if you are top 3 right now internal int getThreatRank(Moveable player) { if (getFirstThreat() == player) return 1; if (getSecondThreat() == player) return 2; if (getThirdThreat() == player) return 3; return -1; }
internal bool doMelee(Moveable mob) { bool dead = mob.takeDamage(this, MELEE_DMG); if (dead) { dropThreat(mob); } return false; }
internal bool doAssStun(Moveable m) { if (m is Enemy) { ((Enemy)m).takeDamage(this, STUN_AMT + (float)buffs.getValue(BuffType.meleeDmg), 1); ((Enemy)m).pushbackCooldownPercent(GameBox.getInstance().getGameTime(), STUN_PUSHBACK); } else {//lol what? //idc. } return true; }
//update damage internal void addToDamageMeter(Moveable giver, float amount) { amount = (float)Math.Round(amount,3); if (damageMeter.ContainsKey(giver.getName())) { amount = amount + (float)damageMeter[giver.getName()]; } damageMeter.Remove(giver.getName()); damageMeter.Add(giver.getName(), amount); change = true; }
internal override bool takeDamage(Moveable giver, float amt, int threatMultiplier) { if (aggro == null) { aggro = giver; } if (isDead()) return false; bool b = base.takeDamage(giver, amt, threatMultiplier); if (b) parent.changeAddAmt(-1); return b; }
internal BasicAdd(Vector2f v, Moveable spawnOn, BossI parent) : base(v, MoveableEnum.add) { enemyCooldowns = new Cooldown[1]; enemyCooldowns[0] = new Cooldown(MELEE_CD); currentHp = maxHp = ADD_HP; circleSize = 25; innerCircle = 10; updateThreat(spawnOn, SPAWNTHREAT); reOrgThreat(); currentTexture = basicAddTexture; this.parent = parent; }
internal Projectile(Moveable owner, Vector2f start, Moveable d, Func<Moveable, bool> doA, Texture texture, IntRect rect, float scale) { currentLoc = start; dest = d; doAbility = doA; currentTexture = texture; currentTextureRect = rect; collide = false; this.owner = owner; this.scale = scale; xNeeded = d.getMid().X - start.X; yNeeded = d.getMid().Y - start.Y; mid = new Vector2f(rect.Width / 2, rect.Height / 2); scale = 1.0f; currentSprite = new Sprite(currentTexture); currentSprite.Scale = new Vector2f(scale, scale); currentSprite.Position = start; currentSprite.Origin = mid; }
protected static double getDistance(Moveable ursidor, Moveable fish) { return InGame.getDistance(ursidor.getMid(), fish.getMid()); }
//returns if it killed them or not internal virtual bool takeDamage(Moveable giver, float amount) { if (currentHp - amount <= 0) amount = currentHp; InGame.getInstance().addToDamageMeter(giver, amount); currentHp -= amount; if (currentHp <= 0) { currentHp = 0; dead = true; } return currentHp == 0; }
//startTime in TotalMiliseconds, spot is middle? internal void sendPlayerTo(Vector2f spot, double startTime) { if (currentHp <= 0) return; //instantly right now destX = (int)(spot.X); //- circleSize / 2); destY = (int)(spot.Y); // - circleSize / 2); prevPlayerX = playerX; prevPlayerY = playerY; if (target != null) { double d = InGame.getDistanceBetweenCircles(getDestMid(), getInnerRadius(), target.getMid(), target.getInnerRadius()); if (!checkDestCircleRange(target, getRange())) { target = null; } } startMoveTime = startTime; }
internal bool doVolley(Moveable mob) { float volleyDMG = VOLLEY_DMG * (enraged || dogEnrage ? VOLLEY_ENRAGE_MULTI : 1); bool dead = mob.takeDamage(this, volleyDMG); if (dead) { dropThreat(mob); } return false; }
internal bool doVolley(Moveable mob) { bool dead = mob.takeDamage(this, VOLLEY_DMG * (enraged ? VOLLEY_ENRAGE_MULTI : 1)); if (dead) { dropThreat(mob); } return false; }
internal override void setTarget(Moveable m, double gameTime) { target = m; }
internal BasicAdd(Vector2f v, Moveable spawnOn, int hp, int meleeDmg,BossI parent) : this(v,spawnOn,parent) { currentHp = maxHp = hp; this.meleeDmg = meleeDmg; }
internal bool doTankAoe(Moveable m) { if (m is Enemy) ((Enemy)m).takeDamage(this, TANKAOE_AMT, THREAT_MULTIPLIER); else//lol what? m.takeDamage(this, TANKAOE_AMT); return true; }
internal bool doTankHit(Moveable m) { if (m is Enemy) ((Enemy)m).takeDamage(this, TANKHIT_AMT + (float)buffs.getValue(BuffType.meleeDmg), THREAT_MULTIPLIER); else m.takeDamage(this, TANKHIT_AMT + (float)buffs.getValue(BuffType.meleeDmg)); return true; }
internal Path(Moveable m) { mob = m; path = new List<pathPoint>(); }
internal bool doChargeDMG(Moveable attackee) { bool dead = attackee.takeDamage(this, MELEE_DMG); if (dead) { dropThreat(attackee); } //than do the knockback effect //Movement.knockback(attackee,new Vector2f()); return false; }
internal void doBite(Moveable m) { if (isDead()) return; dState = dogState.biting; biteTarget = m; InGame.getInstance().addScreenNote("BITE ON "+m.getName()); }
//to face Moveable m protected Direction getDirectionOfUnit(Moveable m) { if (target == null) return Direction.south;//default dir float xD = (m.playerX - playerX); float yD = m.playerY - playerY; if (Math.Abs(xD) > Math.Abs(yD)) {//side to side oriented if (xD > 0)//east return Direction.east; else return Direction.west; } else {//up down if (yD > 0)//south return Direction.south; else return Direction.north; } //return Direction.south; }
internal bool doMeleeHit(Moveable m) { if (m is Enemy) ((Enemy)m).takeDamage(this, MELEE_AMT + (float)buffs.getValue(BuffType.meleeDmg), 1); else m.takeDamage(this, MELEE_AMT); stack.stack(1); return true; }
internal void setLeasher(Moveable m) { boss = m; }
internal bool doBigHit(Moveable m) { if (m is Enemy) { ((Enemy)m).takeDamage(this, BIGHIT_AMT + (float)buffs.getValue(BuffType.meleeDmg)*5, 1); } else {//lol what? //idc. } return true; }
internal bool checkCircleRangeAndMove(Moveable mob, int range, double gameTime) { bool aBool; if (aBool = (!InGame.areCircleswithRange(getMid(),getInnerRadius(), mob.getMid(),mob.getInnerRadius(), range))) { sendPlayerInCircleRangeOf( mob.getMid(), mob.getInnerRadius(), range, gameTime); } return aBool; }
internal override bool takeDamage(Moveable giver, float amt) { return takeDamage(giver, amt, 1); }
internal bool checkDestCircleRange(Moveable mob, int range) { return InGame.areCircleswithRange(getDestMid(), getInnerRadius(), mob.getMid(), mob.getInnerRadius(), range); }
internal bool doSpawnAdds(Moveable mob) { InGame.getInstance().addMoveable(new BasicAdd(new Vector2f(mob.getMid().X - 10,mob.getMid().Y),mob,this)); InGame.getInstance().addMoveable(new BasicAdd(new Vector2f(mob.getMid().X + 10,mob.getMid().Y),mob,this)); changeAddAmt(2); return false; }
internal bool doMelee(Moveable mob) { bool dead = mob.takeDamage(this, MELEE_DMG * (dogEnrage ? ENRAGE_DOG : 1)); if (dead) { dropThreat(mob); } return false; }