package com.weem.epicinventor.actor.monster; import com.weem.epicinventor.*; import com.weem.epicinventor.actor.Actor; import com.weem.epicinventor.ai.*; import com.weem.epicinventor.utility.*; import java.awt.*; public class SnailRider extends Monster { private static final long serialVersionUID = 10000L; private float recastTotalTime; private float RECAST_TIME = 1.5f; private boolean canFire = true; private long flyAwayTime = 0; private final static int MAX_RANGE = 400; public SnailRider(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 = "SnailRider"; displayName = "Snail Rider"; monsterManager = mm; difficultyFactor = 00.01f; adjustHPForLevel(); topOffset = 4; baseOffset = 7; baseWidth = 58; startJumpSize = 20; jumpSize = 8; fallSize = 0; xMoveSize = 2; adjustTouchDamageForLevel(); canFly = true; dropChances.addDropChance("TulipSandwich", 100.0f, 1, 1); dropChances.addDropChance("Bacon", 75.0f, 5, 10); dropChances.addDropChance("LargeShell", 75.0f, 1, 1); dropChances.addDropChance("Emerald", 100.0f, 1, 3); dropChances.addDropChance("Ruby", 100.0f, 1, 3); dropChances.addDropChance("Sapphire", 100.0f, 1, 3); dropChances.addDropChance("Iron", 20.0f, 1, 3); dropChances.addDropChance("Tusk", 15.0f, 1, 2); dropChances.addDropChance("Skin", 15.0f, 1, 1); dropChances.addDropChance("WeemsDiceBag", 0.20f, 1, 1); //1 in 500 chance dropChances.addDropChance("ForrestsLaptop", 0.20f, 1, 1); //1 in 500 chance dropChances.addDropChance("BrandonsAbacus", 0.20f, 1, 1); //1 in 500 chance flyAwayTime = registry.currentTime + (3 * 60 * 1000); ai = new AI(registry, this); ai.clearGoals(); ai.addGoal(AI.GoalType.SNAIL_RIDER, "", 1f); ai.activate(); } @Override public int getMaxShootRange() { return MAX_RANGE; } @Override public void shoot(Point targetPoint) { if (actionMode != ActionMode.ATTACKING) { actionMode = ActionMode.ATTACKING; } if (canFire) { registry.getProjectileManager().createProjectile(this, "Goo", 10, new Point( getMapX(), getMapY()), targetPoint, false, false, false, (int) ((float) touchDamage * 0.75f)); canFire = false; recastTotalTime = 0; } else { long p = registry.getImageLoader().getPeriod(); recastTotalTime = (recastTotalTime + registry.getImageLoader().getPeriod()) % (long) (1000 * RECAST_TIME * 2); if ((recastTotalTime / (RECAST_TIME * 1000)) > 1) { canFire = true; recastTotalTime = 0; } } } @Override protected void updateImage() { if (vertMoveMode == VertMoveMode.JUMPING) { setImage("Monsters/" + name + "/Jumping"); } else if (vertMoveMode == VertMoveMode.FLYING) { loopImage("Monsters/" + name + "/Flapping"); } else if (vertMoveMode == VertMoveMode.FALLING) { loopImage("Monsters/" + name + "/Falling"); } else { if (actionMode == ActionMode.ATTACKING) { setImage("Monsters/" + name + "/RangeAttacking"); //loopImage("Monsters/" + name + "/RangeAttacking", 0.50); } else if (isStill) { setImage("Monsters/" + name + "/Standing"); } else { loopImage("Monsters/" + name + "/Walking"); } } } @Override public void update() { super.update(); if (registry.getGameController().multiplayerMode != registry.getGameController().multiplayerMode.CLIENT) { if (isDead) { monsterManager.setNextSnailRiderSpawn(0); } if (isDead) { registry.setBossFight(false); } } } }