/*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
package silentium.gameserver.skills.conditions;
import silentium.gameserver.skills.Env;
import silentium.gameserver.skills.effects.EffectSeed;
/**
* @author Advi
*/
public class ConditionElementSeed extends Condition
{
private static int[] seedSkills = { 1285, 1286, 1287 };
private final int[] _requiredSeeds;
public ConditionElementSeed(int[] seeds)
{
_requiredSeeds = seeds;
// if (MainConfig.DEVELOPER) System.out.println("Required seeds: " + _requiredSeeds[0] + ", " + _requiredSeeds[1] + ", " +
// _requiredSeeds[2]+ ", " + _requiredSeeds[3]+ ", " + _requiredSeeds[4]);
}
ConditionElementSeed(int fire, int water, int wind, int various, int any)
{
_requiredSeeds = new int[5];
_requiredSeeds[0] = fire;
_requiredSeeds[1] = water;
_requiredSeeds[2] = wind;
_requiredSeeds[3] = various;
_requiredSeeds[4] = any;
}
@Override
public boolean testImpl(Env env)
{
int[] Seeds = new int[3];
for (int i = 0; i < Seeds.length; i++)
{
Seeds[i] = (env.player.getFirstEffect(seedSkills[i]) instanceof EffectSeed ? ((EffectSeed) env.player.getFirstEffect(seedSkills[i])).getPower() : 0);
if (Seeds[i] >= _requiredSeeds[i])
Seeds[i] -= _requiredSeeds[i];
else
return false;
}
// if (MainConfig.DEVELOPER) System.out.println("Seeds: " + Seeds[0] + ", " + Seeds[1] + ", " + Seeds[2]);
if (_requiredSeeds[3] > 0)
{
int count = 0;
for (int i = 0; i < Seeds.length && count < _requiredSeeds[3]; i++)
{
if (Seeds[i] > 0)
{
Seeds[i]--;
count++;
}
}
if (count < _requiredSeeds[3])
return false;
}
if (_requiredSeeds[4] > 0)
{
int count = 0;
for (int i = 0; i < Seeds.length && count < _requiredSeeds[4]; i++)
{
count += Seeds[i];
}
if (count < _requiredSeeds[4])
return false;
}
return true;
}
}