package com.lateensoft.pathfinder.toolkit.util; import com.lateensoft.pathfinder.toolkit.dao.Identifiable; import com.lateensoft.pathfinder.toolkit.model.character.*; import com.lateensoft.pathfinder.toolkit.model.character.items.*; import com.lateensoft.pathfinder.toolkit.model.character.stats.*; import com.lateensoft.pathfinder.toolkit.model.party.EncounterParticipant; import java.util.Collections; /** * @author trevsiemens */ public class CharacterUtils { public static PathfinderCharacter buildTestCharacter() { PathfinderCharacter.Builder builder = new PathfinderCharacter.Builder(); populateTestCharacter(builder); PathfinderCharacter character = builder.build(); sortCharacter(character); return character; } public static EncounterParticipant buildTestEncounterParticipant() { EncounterParticipant.Builder builder = new EncounterParticipant.Builder(); populateTestParticipant(builder); EncounterParticipant participant = builder.build(); sortCharacter(participant); return participant; } private static void populateTestParticipant(EncounterParticipant.Builder builder) { populateTestCharacter(builder); builder.setInitiativeScore(19); builder.setTurnOrder(3); } private static void populateTestCharacter(PathfinderCharacter.Builder builder) { builder.setName("test \nchar"); builder.setGold(1131415.4); // Abilities AbilitySet abilitySet = new AbilitySet(); Ability ability = abilitySet.getAbilityAtIndex(0); ability.setScore(1); ability.setTempBonus(2); ability = abilitySet.getAbilityAtIndex(5); ability.setScore(3); ability.setTempBonus(-3); builder.setAbilitySet(abilitySet); // Items Inventory inventory = new Inventory(); inventory.getItems().add(new Item("Cauld\n ron", 5.0, 1, false)); inventory.getItems().add(new Item("Wands \n ", 1.3, 2, true)); // Armor inventory.getArmors().add(newArmor("Heavy \narmor", 7.5, true, 1, /*ACP*/-2, 3, 4, 5, "armo\nr", Size.MEDIUM)); inventory.getArmors().add(newArmor("Hat", 1.0, false, 10, /*ACP*/-4, 39, 11, 20, "Hat", Size.SMALL)); // Weapons inventory.getWeapons().add(newWeapon("Great \nSword", 7.5, 5, "4/\n2", "x\n2", 5, "It's on \nfire!", 0, WeaponType.SLASHING, Size.LARGE)); inventory.getWeapons().add(newWeapon("Long Bow", 4.0, 3, "5", "x3", 30, "None", 20, WeaponType.BLUDGEONING, Size.MEDIUM)); builder.setInventory(inventory); // Combat stats CombatStatSet combatStatSet = new CombatStatSet(); combatStatSet.setTotalHP(50); combatStatSet.setWounds(3); combatStatSet.setNonLethalDamage(5); combatStatSet.setDamageReduction(8); combatStatSet.setBaseSpeed(30); combatStatSet.setInitAbility(AbilityType.STR); combatStatSet.setInitiativeMiscMod(2); combatStatSet.setACArmourBonus(10); combatStatSet.setACShieldBonus(11); combatStatSet.setACAbility(AbilityType.INT); combatStatSet.setSizeModifier(13); combatStatSet.setNaturalArmour(14); combatStatSet.setDeflectionMod(15); combatStatSet.setACMiscMod(16); combatStatSet.setBABPrimary(17); combatStatSet.setBABSecondary("2/6/7"); combatStatSet.setCMBAbility(AbilityType.CON); combatStatSet.setCMDAbility(AbilityType.WIS); combatStatSet.setCMDMiscMod(56); combatStatSet.setSpellResistance(67); builder.setCombatStatSet(combatStatSet); // Feats FeatList featList = new FeatList(); featList.add(new Feat("A \n Feat", "description\n 1")); featList.add(new Feat("B Feat", "")); builder.setFeats(featList); // Fluff FluffInfo fluff = new FluffInfo(); fluff.setAlignment("Chaotic \nEvil"); fluff.setXP("100\n0"); fluff.setNextLevelXP("4\n5"); fluff.setPlayerClass("Rog\nue"); fluff.setRace("Huma\nn"); fluff.setDeity("Glo\nb"); fluff.setLevel("2\n0"); fluff.setSize("me\nd"); fluff.setGender("M\ng"); fluff.setHeight("5'\n11\""); fluff.setWeight("150 \nlbs"); fluff.setEyes("Red\nfg"); fluff.setHair("None\ndfg"); fluff.setLanguages("Demon\n dfic"); fluff.setDescription("Pretty much worse \nthan Sauron"); builder.setFluffInfo(fluff); // Saves SaveSet saveSet = new SaveSet(); Save save = saveSet.getSaveByIndex(0); save.setBaseSave(7); save.setAbilityType(AbilityType.DEX); save.setMagicMod(3); save.setMiscMod(5); save.setTempMod(-11); builder.setSaveSet(saveSet); // Skills SkillSet skillSet = new SkillSet(); Skill skill = skillSet.getSkillByIndex(0); skill.setMiscMod(3); skill.setRank(2); skill.setClassSkill(true); skill.setAbility(AbilityType.WIS); skillSet.addNewSubSkill(SkillType.CRAFT).setSubType("slkdfj\nsjdhf"); builder.setSkillSet(skillSet); // Spells SpellBook spellBook = new SpellBook(); spellBook.add(new Spell("B\n Spell", 1, 4, "description\n 1")); spellBook.add(new Spell("A Spell", 2, 5, "description 2")); builder.setSpellBook(spellBook); } private static Weapon newWeapon(String name, double weight, int totalAttackB, String dmg, String crit, int range, String specProp, int ammo, WeaponType type, Size size) { Weapon weapon = new Weapon(); weapon.setName(name); weapon.setWeight(weight); weapon.setTotalAttackBonus(totalAttackB); weapon.setDamage(dmg); weapon.setCritical(crit); weapon.setRange(range); weapon.setSpecialProperties(specProp); weapon.setAmmunition(ammo); weapon.setType(type); weapon.setSize(size); return weapon; } private static Armor newArmor(String name, double weight, boolean worn, int ACBonus, int checkPen, int maxDex, int spellFail, int speed, String specProp, Size size) { Armor armor = new Armor(); armor.setName(name); armor.setWeight(weight); armor.setWorn(worn); armor.setACBonus(ACBonus); armor.setArmorCheckPenalty(checkPen); armor.setMaxDex(maxDex); armor.setSpellFail(spellFail); armor.setSpeed(speed); armor.setSpecialProperties(specProp); armor.setSize(size); return armor; } private static void sortCharacter(PathfinderCharacter character) { Collections.sort(character.getFeatList()); Collections.sort(character.getSpellBook()); Collections.sort(character.getInventory().getItems()); Collections.sort(character.getInventory().getWeapons()); Collections.sort(character.getInventory().getArmors()); Collections.sort(character.getSkillSet().getSkills()); } }