Package org.pokenet.server.battle.mechanics.statuses

Source Code of org.pokenet.server.battle.mechanics.statuses.FreezeEffect

/*
* FreezeEffect.java
*
* Created on December 23, 2006, 12:12 PM
*
* This file is a part of Shoddy Battle.
* Copyright (C) 2006  Colin Fitzpatrick
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, visit the Free Software Foundation, Inc.
* online at http://gnu.org.
*/

package org.pokenet.server.battle.mechanics.statuses;
import org.pokenet.server.battle.BattleField;
import org.pokenet.server.battle.BattleTurn;
import org.pokenet.server.battle.Pokemon;
import org.pokenet.server.battle.mechanics.PokemonType;
import org.pokenet.server.battle.mechanics.moves.MoveListEntry;
import org.pokenet.server.battle.mechanics.moves.PokemonMove;
import org.pokenet.server.battle.mechanics.statuses.field.SunEffect;

/**
* TODO: Account for fire moves thawing out pokemon.
* @author Colin
*/
public class FreezeEffect extends StatusEffect {

    public FreezeEffect() {
        m_lock = SPECIAL_EFFECT_LOCK;
    }
   
    public String getName() {
        return "Freeze";
    }
   
    public boolean tick(Pokemon p) {
        return false;
    }
   
    public int getTier() {
        // Not applicable.
        return -1;
    }
   
    /**
     * A frozen pokemon is not cured by being switched out.
     */
    public boolean switchOut(Pokemon p) {
        return false;
    }
   
    /**
     * Ice pokemon cannot be frozen.
     */
    public boolean apply(Pokemon p) {
        if (p.hasAbility("Magma Armor")) {
            return false;
        }
        if (p.isType(PokemonType.T_ICE))
            return false;
        if (p.getField().getEffectByType(SunEffect.class) != null)
            return false;
        return true;
    }
   
    public void unapply(Pokemon p) {
        p.getField().showMessage(p.getName() + " was defrosted!");
    }
   
    public String getDescription() {
        return " was frozen solid!";
    }
   
    public boolean isListener() {
        return true;
    }
   
    public void executeTurn(Pokemon p, BattleTurn turn) {
        String name = turn.getMove(p).getMoveListEntry().getName();
        if (name.equals("Flame Wheel") || name.equals("Sacred Fire")) {
            p.removeStatus(this);
        }
    }
   
    public void informDamaged(Pokemon source, Pokemon target, MoveListEntry entry, int damage) {
        PokemonMove move = entry.getMove();
        if (move != null) {
            if (move.getType().equals(PokemonType.T_FIRE)) {
                target.removeStatus(this);
            }
        }
    }
   
    /**
     * Freeze immolilises the pokemon.
     */
    public boolean immobilises(Pokemon poke) {
        BattleField field = poke.getField();
        if (field.getRandom().nextDouble() <= 0.25) {
            poke.removeStatus(this);
            return false;
        }
        field.showMessage(poke.getName() + " is frozen solid!");
        return true;
    }
   
}
TOP

Related Classes of org.pokenet.server.battle.mechanics.statuses.FreezeEffect

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.