package net.sf.colossus.ai.helper;
/**
* Various constants used by the AIs code for battle evaluation.
* Each specific AI should be able to override them
* to tweak the evaluation results w/o rewriting the code.
* So if an AI needs to modify one or more of those, feel free to
* remove the 'final' from the appropriate variable(s);
*/
public class BattleEvalConstants
{
/* per critter */
/** Will be multiplied by point value of creature */
public int OFFBOARD_DEATH_SCALE_FACTOR = -1500;
/** Straight value */
final public int NATIVE_BONUS_TERRAIN = 40;
// 50 -- old value
/** Straight value */
final public int NATIVE_BOG = 20;
/** Straight value */
final public int NON_NATIVE_PENALTY_TERRAIN = -100;
/** Multiplied by damage (drift is 1) */
final public int PENALTY_DAMAGE_TERRAIN = -200;
/** Multiplied by healing (spring is 1) */
final public int BONUS_HEAL_TERRAIN = 100;
/** Straight value */
final public int FIRST_RANGESTRIKE_TARGET = 300;
/** Straight value */
final public int EXTRA_RANGESTRIKE_TARGET = 100;
/** Straight value */
final public int RANGESTRIKE_TITAN = 500;
/** Straight value */
final public int RANGESTRIKE_WITHOUT_PENALTY = 100;
/** Straight value */
final public int ATTACKER_ADJACENT_TO_ENEMY = 400;
/** Straight value */
final public int DEFENDER_ADJACENT_TO_ENEMY = -20;
/** Straight value */
final public int ADJACENT_TO_ENEMY_TITAN = 1300;
/** Straight value */
final public int ADJACENT_TO_RANGESTRIKER = 500;
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int ATTACKER_KILL_SCALE_FACTOR = 25;
// 100
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int DEFENDER_KILL_SCALE_FACTOR = 1;
// 100
/** Multiplied by a number of creatures */
final public int KILLABLE_TARGETS_SCALE_FACTOR = 0;
// 10
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int ATTACKER_GET_KILLED_SCALE_FACTOR = -20;
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int DEFENDER_GET_KILLED_SCALE_FACTOR = -40;
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int ATTACKER_GET_HIT_SCALE_FACTOR = -1;
/** Multiplied by Kill Value (Point Value + stuff!) */
final public int DEFENDER_GET_HIT_SCALE_FACTOR = -2;
/** Multiplied by hex elevation */
final public int TITAN_TOWER_HEIGHT_BONUS = 2000;
/** Multiplied by hex elevation */
final public int DEFENDER_TOWER_HEIGHT_BONUS = 80;
/** Multiplied by the distance to entrance */
final public int TITAN_FORWARD_EARLY_PENALTY = -5000;
/** Multiplied by the number of relevant hex */
final public int TITAN_BY_EDGE_OR_BLOCKINGHAZARD_BONUS = 400;
/** Multiplied by the number of relevant hex */
public int DEFENDER_BY_EDGE_OR_BLOCKINGHAZARD_BONUS = 1;
/** Multiplied by the number of relevant hex */
public int DEFENDER_BY_DAMAGINGHAZARD_BONUS = 1;
/** Multiplied by the distance to 2nd row */
final public int DEFENDER_FORWARD_EARLY_PENALTY = -60;
/** Multiplied by the distance to enemy */
final public int ATTACKER_DISTANCE_FROM_ENEMY_PENALTY = -300;
/** Multiplied by the number of relevant hex */
final public int ADJACENT_TO_BUDDY = 100;
/** Multiplied by the number of relevant hex */
final public int ADJACENT_TO_BUDDY_TITAN = 600;
// 200
/** Straight value */
final public int GANG_UP_ON_CREATURE = 50;
/* per legion */
/** Bonus when no defender will be reachable by the attacker
* next half-turn.
*/
final public int DEF__NOBODY_GETS_HURT = 2000;
/** Bonus when no defender will be reachable by more than one
* attacker next half-turn.
*/
final public int DEF__NOONE_IS_GANGBANGED = 200;
/** Bonus when at most one defender will be reachable by the
* attacker next half-turn.
*/
final public int DEF__AT_MOST_ONE_IS_REACHABLE = 100;
}