package com.weem.epicinventor.actor.monster;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.ai.*;
import com.weem.epicinventor.placeable.*;
import com.weem.epicinventor.utility.*;
import java.awt.*;
import java.awt.geom.Arc2D;
public class Pig extends Monster {
private static final long serialVersionUID = 10000L;
public Pig(MonsterManager mm, Registry rg, String im, String st, int x, int y, int minDist, int maxDist) {
super(mm, rg, im, st, x, y, minDist, maxDist, true);
name = "Pig";
displayName = "Pig";
monsterManager = mm;
difficultyFactor = 0.10f;
adjustHPForLevel();
topOffset = 13;
baseOffset = 6;
baseWidth = 21;
startJumpSize = 20;
jumpSize = 8;
fallSize = 0;
xMoveSize = 1;
touchDamage = 0;
dropChances.addDropChance("Bacon", 50.0f, 1, 1);
ai = new AI(registry, this);
ai.clearGoals();
ai.addGoal(AI.GoalType.WANDER, "", (Rand.getRange(0, 1) + Rand.getFloat()));
ai.activate();
}
@Override
public void fear(Point p, long d) {
super.fear(p, d);
xMoveSize = 6;
}
@Override
public void unfear() {
super.unfear();
xMoveSize = 1;
}
@Override
public int applyDamage(int damage, Actor a) {
int ret = super.applyDamage(damage, a);
if (a != null && damage > 0) {
this.fear(a.getCenterPoint(), 5);
}
return ret;
}
@Override
public int applyDamage(int damage, Actor a, boolean fromPlaceable) {
int ret = super.applyDamage(damage, a, fromPlaceable);
if (a != null && damage > 0) {
this.fear(a.getCenterPoint(), 5);
}
return ret;
}
@Override
public int attackDamageAndKnockBack(Actor source, Arc2D.Double arc, Point mapPoint, int damage, int kbX, int kbY, String weaponType) {
int damageTaken = 0;
if (registry.getGameController().multiplayerMode != registry.getGameController().multiplayerMode.CLIENT) {
//System.out.println(spriteRect.intersects(r) + ":" + hitPoints);
if (arc.intersects(spriteRect) && hitPoints > 0) {
if (weaponType != null) {
if (weaponType.equals("Net")) {
this.isDead = true;
}
}
int range = 3 * Math.abs(kbX) / 4;
if (range < 1) {
range = 1;
}
int randX = Rand.getRange(1, range);
int baseX = Math.abs(kbX) / 4;
if (kbX < 0) {
kbX = baseX + randX;
kbX = -1 * kbX;
} else {
kbX = baseX + randX;
}
damageTaken = applyDamage(damage, source);
if (!disregardKnockBack) {
applyKnockBack(kbX, kbY);
}
}
//System.out.println(spriteRect.x+","+spriteRect.y+" "+spriteRect.width+","+spriteRect.height+" "+r.x+","+r.y+" "+r.width+","+r.height);
}
return damageTaken;
}
@Override
public int getXPByPlayer(Actor a) {
return 0;
}
@Override
protected void determineLevel() {
level = 1;
}
@Override
public void update() {
super.update();
if (registry.getGameController().multiplayerMode != registry.getGameController().multiplayerMode.CLIENT) {
PlaceableManager pm = registry.getPlaceableManager();
if (pm != null) {
Placeable p = pm.getPasture(this.getPerimeter());
if (p != null) {
if (mapX < p.getMapX()) {
mapX = p.getMapX();
}
if (mapX > p.getMapX() + p.getWidth() - this.width) {
mapX = p.getMapX() + p.getWidth() - this.width;
}
}
}
}
}
}