Upload files to "WitchGame"

This commit is contained in:
gaven 2025-09-26 16:45:05 +00:00
parent 988d211db6
commit a18e15592b
2 changed files with 452 additions and 0 deletions

18
WitchGame/DamageType.java Normal file
View File

@ -0,0 +1,18 @@
package witchGame;
public enum DamageType {
None,
Acid,
Bludgeoning,
Cold,
Fire,
Force,
Lightning,
Necrotic,
Piercing,
Poison,
Psychic,
Radiant,
Slashing,
Thunder,
}

434
WitchGame/Enemy.java Normal file
View File

@ -0,0 +1,434 @@
package witchGame;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
//import com.sun.tools.javac.code.Attribute.Array;
public class Enemy {
private String name = "Enemy";
private int maxHealth = 1;
private int health = 1;
private int healthDie = 0;
private int healthOf = 0;
private int healthBonus = 0;
private int armorClass = 10;
private DamageType[] resistances;
private DamageType[] vulnerabilities;
private int strength = 0;
private int dexterity = 0;
private int constitution = 0;
private int intelligence = 0;
private int wisdom = 0;
private int charisma = 0;
private EnemyAttack[] attacks; //new EnemyAttack(1, "Rake", 1, 1, 4, -1, 2)
private int CR = 0;
private int[] biome;
private ArrayList<Condition> conditions;
public Enemy(String name, int healthDie, int healthOf, int healthBonus, int armorClass, DamageType[] resistances, DamageType[] vulnerabilities,
int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma, EnemyAttack[] attacks, int CR, int[] biome) {
this.name = name;
this.healthDie = healthDie;
this.healthOf = healthOf;
this.healthBonus = healthBonus;
this.armorClass = armorClass;
this.resistances = resistances;
this.vulnerabilities = vulnerabilities;
this.strength = strength;
this.dexterity = dexterity;
this.constitution = constitution;
this.intelligence = intelligence;
this.wisdom = wisdom;
this.charisma = charisma;
this.attacks = attacks;
this.CR = CR;
this.biome = biome;
this.conditions = new ArrayList<Condition>();
this.calcHealth();
}
public Enemy(String name, int healthDie, int healthOf, int healthBonus, int armorClass, DamageType[] resistances, DamageType[] vulnerabilities,
int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma, EnemyAttack[] attacks, int CR, int[] biome, ArrayList<Condition> conditions) {
this.name = name;
this.healthDie = healthDie;
this.healthOf = healthOf;
this.healthBonus = healthBonus;
this.armorClass = armorClass;
this.resistances = resistances;
this.vulnerabilities = vulnerabilities;
this.strength = strength;
this.dexterity = dexterity;
this.constitution = constitution;
this.intelligence = intelligence;
this.wisdom = wisdom;
this.charisma = charisma;
this.attacks = attacks;
this.CR = CR;
this.biome = biome;
this.conditions = conditions;
this.calcHealth();
}
public String getName() {
return name;
}
public int getHealth() {
return health;
}
public int getMaxHealth() {
return maxHealth;
}
public void setHealth(int health) {
this.health = health;
}
public int dealDamage(int damage, DamageType damageType) {
damage = damage * (Arrays.binarySearch(vulnerabilities, damageType) > -1 ? 2 : 1) / (Arrays.binarySearch(resistances, damageType) > -1 ? 2 : 1);
health -= damage;
return damage;
}
public void deathMessage() {
if (health < 1) {
System.out.println(name + " has been defeated.");
}
}
public Enemy clone() {
return new Enemy(name, healthDie, healthOf, healthBonus, armorClass, resistances, vulnerabilities, strength, dexterity, constitution, intelligence, wisdom, charisma, attacks, CR, biome);
}
public int getAC() {
return armorClass;
}
public DamageType[] getResistances() {
return resistances;
}
public DamageType[] getVulnerabilities() {
return vulnerabilities;
}
public int getStrength() {
return strength;
}
public int getDexterity() {
return dexterity;
}
public int getConstitution() {
return constitution;
}
public int getIntelligence() {
return intelligence;
}
public int getWisdom() {
return wisdom;
}
public int getCharisma() {
return charisma;
}
public int getCR() {
return CR;
}
public int getXP() {
switch(CR) {
case 0: return 10;
case -8: return 25;
case -4: return 50;
case -2: return 100;
case 1: return 200;
case 2: return 450;
case 3: return 700;
case 4: return 1_100;
case 5: return 1_800;
case 6: return 2_300;
case 7: return 2_900;
case 8: return 3_900;
case 9: return 5_000;
case 10: return 5_900;
case 11: return 7_200;
case 12: return 8_400;
case 13: return 10_000;
case 14: return 11_500;
case 15: return 13_000;
case 16: return 15_000;
case 17: return 18_000;
case 18: return 20_000;
case 19: return 22_000;
case 20: return 25_000;
case 21: return 33_000;
case 22: return 41_000;
case 23: return 50_000;
case 24: return 62_000;
case 25: return 75_000;
case 26: return 90_000;
case 27: return 105_000;
case 28: return 120_000;
case 29: return 135_000;
case 30: return 155_000;
default: return -1;
}
}
public int[] getBiome() {
return biome;
}
public ArrayList<Condition> getConditions() {
return conditions;
}
public static void setRand(Random rand) {
Enemy.rand = rand;
}
public boolean addCondition(Condition condition) {
return conditions.add(condition);
}
static Random rand = new Random();
private static int dice(int num, int of) {
int dieTotal = 0;
for (int i = 0; i < num; i++) {
dieTotal += rand.nextInt(of) + 1;
}
return dieTotal;
}
// Enemy[] enemyList = {};
public static ArrayList<Enemy> enemyList = new ArrayList<Enemy>();
// public static ArrayList<Tuple<Integer, Integer>> enemyListHealth = new ArrayList<Tuple<Integer, Integer>>();
// public Enemy(String name, int healthDie, int healthOf, int healthBonus, int armorClass, int[] resistances, int[] vulnerabilities, int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma, EnemyAttack[] attacks, double CR, int biome) {
// final static String[] damageTypes = {"acid", "bludgeoning", "cold", "fire", "force", "lightning", "necrotic", "piercing", "poison", "psychic", "radiant", "slashing", "thunder"};
// 0 1 2 3 4 5 6 7 8 9 10 11 12
// final static String[] biomes = {"arctic", "coastal", "desert", "forest", "grassland", "hills", "mountains", "swampland", "underdark", "underwater", "urban"};
// 0 1 2 3 4 5 6 7 8 9 10
// public EnemyAttack(int numberHits, String name, int toHit, int die, int sides, int damage, int damageType, [int saveThrow]) {
// public Enemy(String name, int healthDie, int healthOf, int healthBonus, int armorClass, int[] resistances, int[] vulnerabilities, int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma, EnemyAttack[] attacks, int CR, int[] biome) {
static {
// CR: 0
enemyList.add(new Enemy("Awakened Shrub" , 3, 6, 0, 9, new DamageType[] {DamageType.Piercing} , new DamageType[] {DamageType.Fire} , -4, -1, +0, +0, +0, -2, new EnemyAttack[] {new EnemyAttack(1, "Rake" , 1, 1, 4, -1, 11 )}, 0, new int[] {3} )); //
enemyList.add(new Enemy("Baboon" , 1, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , -1, +2, +0, -3, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 1, 1, 4, -1, 7 )}, 0, new int[] {3,5,} )); // Pack Tactics
enemyList.add(new Enemy("Badger" , 1, 4, 1, 10, new DamageType[] {} , new DamageType[] {} , -3, +0, +1, -4, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 2, 1, 1, 0, 7 )}, 0, new int[] {3,4} )); //
enemyList.add(new Enemy("Bat" , 1, 4, -1, 12, new DamageType[] {} , new DamageType[] {} , -4, +2, -1, -4, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 0, 1, 1, 0, 7 )}, 0, new int[] {8} )); // Fly, Immune to Blind
enemyList.add(new Enemy("Cat" , 1, 4, 0, 12, new DamageType[] {} , new DamageType[] {} , -4, +2, +0, -4, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Claw" , 0, 1, 1, 0, 11 )}, 0, new int[] {3,4,10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new DamageType[] {} , new DamageType[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Crab" , 1, 4, 0, 11, new DamageType[] {} , new DamageType[] {} , -4, +0, +0, -5, -1, -4, new EnemyAttack[] {new EnemyAttack(1, "Claw" , 0, 1, 1, 0, 1 )}, 0, new int[] {1} )); //
enemyList.add(new Enemy("Deer" , 1, 8, 0, 13, new DamageType[] {} , new DamageType[] {} , +0, +3, +0, +2, +2, -3, new EnemyAttack[] {new EnemyAttack(1, "Gore" , 2, 1, 4, 0, 7 )}, 0, new int[] {3,4} )); //
enemyList.add(new Enemy("Eagle" , 1, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , -2, +2, +0, -4, +2, -2, new EnemyAttack[] {new EnemyAttack(1, "Talons" , 4, 1, 4, 2, 11 )}, 0, new int[] {5,6} )); // Fly
enemyList.add(new Enemy("Giant Fire Beetle" , 1, 6, 1, 13, new DamageType[] {} , new DamageType[] {} , -1, +0, +1, -5, -2, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 1, 1, 5, 0, 11 )}, 0, new int[] {3,8} )); // Illumninates
enemyList.add(new Enemy("Goat" , 1, 8, 0, 10, new DamageType[] {} , new DamageType[] {} , +6, +5, +0, -4, +0, -3, new EnemyAttack[] {new EnemyAttack(1, "Ram" , 3, 1, 4, 1, 1 ) , new EnemyAttack(1, "Charge", 3, 1, 4, 0, 1, 1)}, 0, new int[] {4,5,6})); // Advantage against Prone
enemyList.add(new Enemy("Hawk" , 1, 4, -1, 13, new DamageType[] {} , new DamageType[] {} , -3, +3, -1, -4, +2, -2, new EnemyAttack[] {new EnemyAttack(1, "Talons" , 5, 1, 1, 2, 11 )}, 0, new int[] {0} )); // Fly
enemyList.add(new Enemy("Homunculus" , 2, 4, 0, 13, new DamageType[] {} , new DamageType[] {} , -3, +2, +0, +0, +0, -2, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 4, 1, 1, 0, 7, 3)}, 0, new int[] {0} )); // Poison, Telepathy, Darkvision
enemyList.add(new Enemy("Hyena" , 1, 8, 1, 11, new DamageType[] {} , new DamageType[] {} , +0, +1, +1, -4, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 2, 1, 6, 0, 7 )}, 0, new int[] {0} )); // Pack Tactics
enemyList.add(new Enemy("Jackal" , 1, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , -1, +2, +0, -4, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 1, 1, 3, 0, 7 )}, 0, new int[] {0} )); // Pack Tactics
enemyList.add(new Enemy("Lemure" , 3, 8, 0, 7, new DamageType[] {DamageType.Cold, DamageType.Fire, DamageType.Piercing}, new DamageType[] {} , +0, -3, +0, -5, +0, -4, new EnemyAttack[] {new EnemyAttack(1, "Punch" , 3, 1, 4, 0, 1 )}, 0, new int[] {0} )); // Darkvision
enemyList.add(new Enemy("Lizard" , 1, 4, 0, 10, new DamageType[] {} , new DamageType[] {} , -4, +0, +0, -5, +1, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 0, 1, 1, 0, 7 )}, 0, new int[] {0} )); //
enemyList.add(new Enemy("Owl" , 1, 4, -1, 11, new DamageType[] {} , new DamageType[] {} , -4, +1, -1, -4, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Talons" , 3, 1, 1, 0, 11 )}, 0, new int[] {0} )); // Darkvision
enemyList.add(new Enemy("Quipper" , 1, 4, -1, 13, new DamageType[] {} , new DamageType[] {} , -4, +3, -1, -5, -2, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 5, 1, 1, 0, 7 )}, 0, new int[] {9} )); //
enemyList.add(new Enemy("Rat" , 1, 4, -1, 10, new DamageType[] {} , new DamageType[] {} , -4, +0, -1, -4, +0, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 0, 1, 1, 0, 7 )}, 0, new int[] {0} )); //
enemyList.add(new Enemy("Raven" , 1, 4, -1, 12, new DamageType[] {} , new DamageType[] {} , -4, +2, -1, -4, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Beak" , 4, 1, 1, 0, 7 )}, 0, new int[] {0} )); //
enemyList.add(new Enemy("Scorpion" , 1, 4, -1, 11, new DamageType[] {} , new DamageType[] {} , -4, +0, -1, -5, +1, -4, new EnemyAttack[] {new EnemyAttack(1, "Sting" , 2, 1, 1, 0, 7, 3)}, 0, new int[] {0} )); // Poison damage
enemyList.add(new Enemy("Spider" , 1, 4, -1, 12, new DamageType[] {} , new DamageType[] {} , -4, +2, -1, -5, +0, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 4, 1, 1, 0, 7, 3)}, 0, new int[] {0} )); // Poison damage
enemyList.add(new Enemy("Vulture" , 1, 8, 1, 10, new DamageType[] {} , new DamageType[] {} , -2, +0, +1, -4, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Beak" , 2, 1, 4, 0, 7 )}, 0, new int[] {0} )); // Pack Tactics
enemyList.add(new Enemy("Weasel" , 1, 4, -1, 13, new DamageType[] {} , new DamageType[] {} , -4, +3, -1, -4, +1, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 5, 1, 1, 0, 7 )}, 0, new int[] {0} )); //
// CR: 1/8 public Enemy(String name, int healthDie, int healthOf, int healthBonus, int armorClass, int[] resistances, int[] vulnerabilities, int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma, EnemyAttack[] attacks, double CR, int biome) {
enemyList.add(new Enemy("Bandit" , 2, 8, 2, 12, new DamageType[] {} , new DamageType[] {} , +0, +1, +1, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Light Crossbow", 3, 1, 8, 1, 7 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Blood Hawk" , 2, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , -2, +2, +0, -4, +2, -3, new EnemyAttack[] {new EnemyAttack(1, "Beak" , 4, 1, 4, 2, 7 )}, -8, new int[] {3} )); // Pack Tactics
enemyList.add(new Enemy("Camel" , 2, 10, 4, 9, new DamageType[] {} , new DamageType[] {} , +3, -1, +2, -4, -1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 5, 1, 4, 0, 1 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Cultist" , 1, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , +0, +1, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Scimitar" , 3, 1, 6, 1, 11 )}, -8, new int[] {3} )); // Advantage against charm
enemyList.add(new Enemy("Diseased Giant Rat" , 0, 1, 7, 12, new DamageType[] {} , new DamageType[] {} , -2, +2, +0, -4, +0, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 4, 1, 4, 2, 7, 3)}, -8, new int[] {3} )); // Disease Effect, Pack Tactics
enemyList.add(new Enemy("Flying Snake" , 2, 4, 0, 14, new DamageType[] {} , new DamageType[] {} , -3, +4, +0, -4, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 6, 3, 4, 1, 8 )}, -8, new int[] {3} )); // Fly
enemyList.add(new Enemy("Giant Crab" , 3, 8, 0, 15, new DamageType[] {} , new DamageType[] {} , +1, +2, +0, -5, -1, -4, new EnemyAttack[] {new EnemyAttack(1, "Claw" , 3, 1, 6, 1, 1, 1)}, -8, new int[] {3} )); // Grapple
enemyList.add(new Enemy("Giant Rat" , 2, 6, 0, 12, new DamageType[] {} , new DamageType[] {} , -2, +2, +0, -4, +0, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 4, 1, 4, 2, 7 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Giant Weasel" , 2, 8, 0, 13, new DamageType[] {} , new DamageType[] {} , +0, +3, +0, -3, +1, -3, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 5, 1, 4, 3, 7 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Guard" , 2, 8, 2, 16, new DamageType[] {} , new DamageType[] {} , +1, +1, +1, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Spear" , 3, 1, 8, 1, 7 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Kobold" , 2, 6, -2, 12, new DamageType[] {} , new DamageType[] {} , -2, +2, -1, -1, -2, -1, new EnemyAttack[] {new EnemyAttack(1, "Sling" , 4, 1, 4, 2, 1 )}, -8, new int[] {3} )); // Pack Tactics, Sunlight Sensitivity
enemyList.add(new Enemy("Mastiff" , 1, 8, 1, 12, new DamageType[] {} , new DamageType[] {} , +1, +2, +1, -4, +1, -2, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 3, 1, 6, 1, 7, 1)}, -8, new int[] {3} )); // Prone
enemyList.add(new Enemy("Merfolk" , 2, 8, 2, 11, new DamageType[] {} , new DamageType[] {} , +0, +1, +1, +0, +0, +1, new EnemyAttack[] {new EnemyAttack(1, "Spear" , 2, 1, 6, 0, 7 )}, -8, new int[] {3} )); // Amphibious
enemyList.add(new Enemy("Mule" , 2, 8, 2, 10, new DamageType[] {} , new DamageType[] {} , +2, +0, +1, -4, +0, -3, new EnemyAttack[] {new EnemyAttack(1, "Hooves" , 2, 1, 4, 2, 1 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Noble" , 2, 8, 0, 15, new DamageType[] {} , new DamageType[] {} , +0, +1, +0, +1, +2, +3, new EnemyAttack[] {new EnemyAttack(1, "Rapier" , 3, 1, 8, 1, 7 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Poisonous Snake" , 1, 4, 0, 13, new DamageType[] {} , new DamageType[] {} , -4, +3, +0, -5, +0, -4, new EnemyAttack[] {new EnemyAttack(1, "Bite" , 5, 2, 4, 0, 8, 3)}, -8, new int[] {3} )); // Poison Damage
enemyList.add(new Enemy("Pnoy" , 2, 8, 2, 10, new DamageType[] {} , new DamageType[] {} , +2, +0, +1, -4, +0, -2, new EnemyAttack[] {new EnemyAttack(1, "Hooves" , 4, 2, 4, 2, 1 )}, -8, new int[] {3} )); //
enemyList.add(new Enemy("Stirge" , 1, 4, 0, 14, new DamageType[] {} , new DamageType[] {} , -3, +3, +0, -4, -1, -2, new EnemyAttack[] {new EnemyAttack(1, "Blood Drain" , 5, 1, 4, 3, 1 )}, -8, new int[] {3} )); // Lifesteal
enemyList.add(new Enemy("Tribal Warrior" , 2, 8, 2, 12, new DamageType[] {} , new DamageType[] {} , +1, +0, +1, -1, +0, -1, new EnemyAttack[] {new EnemyAttack(1, "Spear" , 3, 1, 8, 1, 7 )}, -8, new int[] {3} )); // Pack Tactics
// CR: 1/4
/*
enemyList.add(new Enemy("Acolyte" , 2, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Axe Beak" , 3, 10, 3, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Blink Dog" , 4, 8, 4, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Boar" , 2, 8, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Constrictor Snake" , 2, 10, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Draft Horse" , 3, 10, 3, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Dretch" , 4, 6, 4, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Drow" , 3, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Elk" , 2, 10, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Flying Sword" , 5, 6, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Badger" , 2, 8, 4, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Bat" , 4, 10, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Centipede" , 1, 6, 1, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Frog" , 4, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Lizard" , 3, 10, 3, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Owl" , 3, 10, 3, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Poisonous Snake", 2, 8, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Wolf Spider" , 2, 8, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Goblin" , 2, 6, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Grimlock" , 2, 6, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Panther" , 3, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Pseudodragon" , 2, 4, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Riding Horse" , 2, 10, 2, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Skeleton" , 2, 8, 4, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Sprite" , 1, 4, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Steam Mephit" , 6, 6, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Bats" , 5, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Rats" , 7, 8, -7, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Ravens" , 7, 8, -7, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Violet Fungus" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Wolf" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Zombie" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
// CR: 1/2
enemyList.add(new Enemy("Ape" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Black Bear" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Cockatrice" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Crocodile" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Darkmantle" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Deep Gnome" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Dust Mephit" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Goat" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Sea Horse" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Giant Wasp" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Gnoll" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Gray Ooze" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Hobogoblin" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Ice Mephit" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Lizardfolk" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Magma Mephit" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Magmin" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Orc" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Reef Shark" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Rust Monster" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Sahuagin" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Satyr" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Scout" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Shadow" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Beetles" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Centipedes" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Insects" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Spiders" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Swarm of Wasps" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Thug" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Warhorse" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Warhorse Skeleton" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Worg" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
// CR: 1
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
enemyList.add(new Enemy("Commoner" , 1, 8, 0, 10, new int[] {} , new int[] {} , +0, +0, +0, +0, +0, +0, new EnemyAttack[] {new EnemyAttack(1, "Club" , 2, 1, 4, 0, 1 )}, 0, new int[] {10} )); //
*/
}
// public EnemyAttack(String name, int toHit, int die, int sides, int damage, int damageType, int numberHits) {
public boolean handleConditions() {
if (conditions.size()==0)
return false;
System.out.println(this.getName() + ": ");
for (int i = 0; i < conditions.size();i++)
{
System.out.println(conditions.get(i).toString());
}
for (int i = 0; i < conditions.size(); i++) {
Condition condition = conditions.get(i);
switch (condition.getConditionType()) {
case DamagePerRound:
int damage = witch.dice(condition.getNum(), condition.getOf());
System.out.println("You dealt " + damage + " residual " + condition.getDamageType().toString() + " damage to the " + this.name + ".");
this.dealDamage(damage, condition.getDamageType());
break;
case Prone:
System.out.println(this.name + "stands up.");
condition.setnTurns(0);
default:
break;
}
condition.setnTurns(condition.getnTurns()-1);
if (condition.getnTurns() < 1) {
conditions.remove(condition);
i--;
}
}
if (this.getHealth() < 1) {
witch.removeEnemy(this);
return true;
}
return false;
}
public int attack() {
System.out.println(name + " -");
int totalDamage = 0;
for (int a = 0; a < attacks.length; a++) {
totalDamage += attacks[a].attack(conditions);
}
witch.playerHealth -= totalDamage;
return totalDamage;
}
public void calcHealth() {
this.setHealth(dice(healthDie, healthOf) + healthBonus);
if (health < 1)
health = 1;
maxHealth = health;
}
@Override
public String toString() {
String ret = (name + "\nCR: " + (CR >= 0 ? CR : "1/" + -CR) + "\nHealth: " + healthDie + "d" + healthOf + " + " + healthBonus + "\nArmor Class: " + armorClass + "\nAttacks: \n");
ret += "Attacks: ";
return ret;
// return "Enemy [name=" + name + ", healthDie=" + healthDie + ", healthOf=" + healthOf + ", healthBonus="
// + healthBonus + ", armorClass=" + armorClass + ", resistances=" + Arrays.toString(resistances)
// + ", vulnerabilities=" + Arrays.toString(vulnerabilities) + ", strength=" + strength + ", dexterity="
// + dexterity + ", constitution=" + constitution + ", intelligence=" + intelligence + ", wisdom=" + wisdom
// + ", charisma=" + charisma + ", attacks=" + Arrays.toString(attacks) + ", CR=" + CR + ", biome="
// + Arrays.toString(biome) + "]";
}
}
//public static void newEnemy() {
// witchRunner.enemies.add(new Enemy("Enemy", 0 + dice(1, 10), 10, new int[] {}, new int[] {}, 0, 0, 0, 0, 0, 0, new int[] {}));
//}