@Override
 protected void executeOverride(final RunningEffect triggerRE, final boolean trigger) {
   if (!this.isValueComputationEnabled()) {
     return;
   }
   if (this.m_caster == null || !(this.m_caster instanceof BasicCharacterInfo)) {
     return;
   }
   if (this.m_nbDepositMin <= 0) {
     return;
   }
   final List<AbstractDepositEffectArea> depositAreas =
       StaticEffectAreaManager.getInstance().getDepositAreas();
   final short casterLevel = ((BasicCharacterInfo) this.m_caster).getLevel();
   final int roll = MathHelper.random(100);
   boolean rareIsDiscovered = false;
   if (roll < this.m_discoverRareDepositPercentage) {
     rareIsDiscovered = true;
   }
   int nbDeposit = MathHelper.random(this.m_nbDepositMin, this.m_nbDepositMax + 1);
   if (rareIsDiscovered) {
     this.spawnRareDeposit(depositAreas, casterLevel);
     --nbDeposit;
   }
   for (int i = 0; i < nbDeposit; ++i) {
     this.spawnDeposit(depositAreas, casterLevel);
   }
 }
 @Override
 public Point2 getScreenPosition(final IsoWorldScene scene, final IsoCamera isoCamera) {
   final float sensibility = 1.0f / isoCamera.getZoomFactor();
   final Point2 delta = this.computeDeltaMouse(sensibility);
   final float maxDistance = 500.0f;
   delta.m_x = MathHelper.clamp(delta.m_x, -500.0f, 500.0f);
   delta.m_y = MathHelper.clamp(delta.m_y, -500.0f, 500.0f);
   Point2 point2 = delta;
   point2.m_x += this.m_startCameraScreenX;
   point2 = delta;
   point2.m_y += this.m_startCameraScreenY;
   return delta;
 }
Esempio n. 3
0
 public void update(final DisplayedScreenWorld world, final int deltaTime) {
   this.m_position += deltaTime;
   final ArrayList<DisplayedScreenMap> maps = world.getMaps();
   for (int i = maps.size() - 1; i >= 0; --i) {
     final DisplayedScreenMap map = maps.get(i);
     if (map != null) {
       final DisplayedScreenElement[] elts = map.getElements();
       if (elts != null) {
         for (final DisplayedScreenElement elt : elts) {
           if (elt.isVisible()) {
             final int id = elt.getElement().getCommonProperties().getId();
             if (Sea.WATER_ELEMENTS.contains(id)) {
               final float x = elt.getWorldCellX();
               final float y = elt.getWorldCellY();
               final float d =
                   (float) Math.sqrt(x * x + y * y) + this.m_speed * this.m_position / 1000.0f;
               float amplitude = this.m_amplitude * MathHelper.sinf(6.2831855f * d / this.m_width);
               if (amplitude < 0.0f) {
                 amplitude *= 0.2f;
               }
               final BatchTransformer batchTransformer = elt.getEntitySprite().getTransformer();
               final float tx = batchTransformer.getMatrix().getBuffer()[12];
               final float ty = batchTransformer.getMatrix().getBuffer()[13];
               batchTransformer
                   .getMatrix()
                   .set(
                       new float[] {
                         1.0f + amplitude,
                         0.0f,
                         0.0f,
                         0.0f,
                         0.0f,
                         1.0f + amplitude,
                         0.0f,
                         0.0f,
                         0.0f,
                         0.0f,
                         0.0f,
                         0.0f,
                         tx,
                         ty,
                         0.0f,
                         1.0f
                       });
             }
           }
         }
       }
     }
   }
 }
 private void spawnDeposit(
     final List<AbstractDepositEffectArea> depositAreas, final short casterLevel) {
   final int roll = MathHelper.random(100);
   AbstractDepositEffectArea deposit = null;
   for (int i = 0, n = depositAreas.size(); i < n; ++i) {
     final AbstractDepositEffectArea area = depositAreas.get(i);
     if (deposit == null) {
       deposit = area;
     } else if ((roll < deposit.getDepositLevel() && roll > area.getDepositLevel())
         || (roll > area.getDepositLevel()
             && area.getDepositLevel() > deposit.getDepositLevel())) {
       deposit = area;
     }
   }
   this.spawnDeposit((int) deposit.getBaseId());
 }
 private Point3 getRandomCellInEffectArea(final FightMap fightMap) {
   final AreaOfEffect areaOfEffect = ((WakfuEffect) this.m_genericEffect).getAreaOfEffect();
   if (areaOfEffect.getType() == AreaOfEffectEnum.EMPTY) {
     return fightMap.getInsideRandomCell();
   }
   final Direction8 dir = this.m_caster.getDirection();
   final Point3 casterCell = this.m_caster.getPosition();
   final Iterable<int[]> iterable =
       ((WakfuEffect) this.m_genericEffect)
           .getAreaOfEffect()
           .getCells(
               this.m_targetCell.getX(),
               this.m_targetCell.getY(),
               this.m_targetCell.getZ(),
               casterCell.getX(),
               casterCell.getY(),
               casterCell.getZ(),
               dir);
   final ArrayList<int[]> cells = new ArrayList<int[]>();
   for (final int[] next : iterable) {
     final int cellX = next[0];
     final int cellY = next[1];
     if (!fightMap.isInMap(cellX, cellY)) {
       continue;
     }
     if (!fightMap.isInside(cellX, cellY)) {
       continue;
     }
     final short cellHeight = fightMap.getCellHeight(cellX, cellY);
     if (cellHeight == -32768) {
       continue;
     }
     cells.add(next);
   }
   if (cells.isEmpty()) {
     EnutrofDepositPlacement.m_logger.error(
         (Object)
             ("Pas de cellule trouvee pour le spawn d'un gisement " + areaOfEffect.getType()));
     return null;
   }
   return new Point3(cells.get(MathHelper.random(cells.size())));
 }
 @Override
 public String getRandomName() {
   return this.m_names.get(MathHelper.random(this.m_names.size()));
 }