package com.lateensoft.pathfinder.toolkit.patching.v10; import com.lateensoft.pathfinder.toolkit.model.character.PathfinderCharacter; import com.lateensoft.pathfinder.toolkit.model.character.stats.*; import com.lateensoft.pathfinder.toolkit.model.party.EncounterParticipant; public class PreV10PartyMemberConverter { public static EncounterParticipant convertEncounterParticipant(PreV10PartyMember member) { EncounterParticipant.Builder builder = EncounterParticipant.builder(); transferStatsFromMember(member, builder); builder.setInitiativeScore(member.lastRolledValue); return builder.build(); } public static PathfinderCharacter convertPartyMember(PreV10PartyMember member) { PathfinderCharacter.Builder builder = PathfinderCharacter.builder(); transferStatsFromMember(member, builder); return builder.build(); } // Many of the calculations here are using large assumptions, just to the same modifier is achieved private static void transferStatsFromMember(PreV10PartyMember member, PathfinderCharacter.Builder builder) { AbilitySet abilitySet = createAbilitySetFromMember(member); builder.setName(member.name) .setAbilitySet(abilitySet) .setCombatStatSet(createCombatStatsFromMember(member, abilitySet)) .setSaveSet(createSavesFromMember(member, abilitySet)) .setSkillSet(createSkillsFromMember(member, abilitySet)); } private static AbilitySet createAbilitySetFromMember(PreV10PartyMember member) { AbilitySet abilitySet = new AbilitySet(); abilitySet.getAbility(AbilityType.DEX).setScore(member.initiative); return abilitySet; } private static CombatStatSet createCombatStatsFromMember(PreV10PartyMember member, AbilitySet abilities) { CombatStatSet combatStatSet = new CombatStatSet(); combatStatSet.setACArmourBonus(member.AC); combatStatSet.setSizeModifier(10 - getDexMod(abilities)); combatStatSet.setNaturalArmour(10 - member.AC - getDexMod(abilities)); combatStatSet.setSpellResistance(member.spellResist); return combatStatSet; } private static int getDexMod(AbilitySet abilities) { return abilities.getAbility(AbilityType.DEX).getTempModifier(); } private static SaveSet createSavesFromMember(PreV10PartyMember member, AbilitySet abilities) { SaveSet saveSet = new SaveSet(); saveSet.getSave(SaveType.FORT).setBaseSave(member.fortSave); saveSet.getSave(SaveType.REF).setBaseSave(member.reflexSave - getDexMod(abilities)); saveSet.getSave(SaveType.WILL).setBaseSave(member.willSave); return saveSet; } private static SkillSet createSkillsFromMember(PreV10PartyMember member, AbilitySet abilities) { SkillSet skillSet = new SkillSet(); skillSet.getSkillByType(SkillType.BLUFF).setRank(member.bluffSkillBonus); skillSet.getSkillByType(SkillType.DISGUISE).setRank(member.disguiseSkillBonus); skillSet.getSkillByType(SkillType.PERCEPTION).setRank(member.perceptionSkillBonus); skillSet.getSkillByType(SkillType.SENSE_MOTIVE).setRank(member.senseMotiveSkillBonus); skillSet.getSkillByType(SkillType.STEALTH).setRank(member.stealthSkillBonus - getDexMod(abilities)); return skillSet; } }