Untitled
unknown
kotlin
2 years ago
7.6 kB
9
Indexable
package com.redrazors.pathbuilder2e.backend.export.json
import com.redrazors.pathbuilder2e.backend.BackendConstants
import com.redrazors.pathbuilder2e.backend.data.ancestries.AncestryHuman
import com.redrazors.pathbuilder2e.backend.data.managers.managerequipment.EquipmentContainer
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonPrimitive
@Serializable
class CharacterJson {
var name = ""
var className = "" // this is changed to "class" post serialize, as it is protected
var dualClass : String? = null
var level = 1
var ancestry = AncestryHuman.ANCESTRY_HUMAN
var heritage : String? = null
var background = ""
var alignment = ""
var gender = ""
var age = ""
var deity = ""
var size = 2
var keyability = BackendConstants.ARRAY_ABILITIES_SHORT[0]
var languages : ArrayList<String> = ArrayList()
@Serializable
class Attributes{
var ancestryhp = 0
var classhp = 0
var bonushp = 0
var bonushpPerLevel = 0
var speed = 0
var speedBonus = 0
}
var attributes = Attributes()
@Serializable
class Breakdown {
var ancestryFree = arrayOf("") // array of ability names, eg str dex
var ancestryBoosts = arrayOf("") // array of ability names, eg str dex
var ancestryFlaws = arrayOf("") // array of ability names, eg str dex
var backgroundBoosts = arrayOf("") // array of ability names, eg str dex
var classBoosts = arrayOf("") // array of ability names, eg str dex
var mapLevelledBoosts = HashMap<Int, Array<String>>() // map of level and array of abilities selected at that level
}
@Serializable
class Abilities {
var str = 0
var dex = 0
var con = 0
var intelligence = 0 // this is changed to "int" post serialize, as int is a protected descriptor in kotlin
var wis = 0
var cha = 0
var breakdown = Breakdown()
}
val abilities = Abilities()
@Serializable
class Proficiencies {
// these give the trained =2, expert = 4, etc training values
var classDC = 0
var perception = 0
var fortitude = 0
var reflex = 0
var will = 0
var heavy = 0
var medium = 0
var light = 0
var unarmored = 0
var advanced = 0
var martial = 0
var simple = 0
var unarmed = 0
var castingArcane = 0
var castingDivine = 0
var castingOccult = 0
var castingPrimal = 0
var acrobatics = 0
var arcana = 0
var athletics = 0
var crafting = 0
var deception = 0
var diplomacy = 0
var intimidation = 0
var medicine = 0
var nature = 0
var occultism = 0
var performance = 0
var religion = 0
var society = 0
var stealth = 0
var survival = 0
var thievery = 0
}
val proficiencies = Proficiencies()
val mods = HashMap<String, HashMap<String, Int>>() // map of proficiency to map of bonus type to amount
val feats = ArrayList<ArrayList<JsonPrimitive>>() // list of feat info (feat name, feat extra, feat choice type, level taken)
val specials = ArrayList<String>() // name of specials
val lores = ArrayList<ArrayList<JsonPrimitive>>() // array of lores giving lore name and training level
val equipmentContainers = HashMap<String, EquipmentContainer>() // equipment container id to object with name, isbagofholding, isbackpack
val equipment = ArrayList<ArrayList<JsonPrimitive>>() // equipment in array of fields with name, quantity, and incontainerid if relevant
@Serializable
class SpecificProficiencies{
val trained = ArrayList<String>()
val expert = ArrayList<String>()
val master = ArrayList<String>()
val legendary = ArrayList<String>()
}
val specificProficiencies = SpecificProficiencies() // arrays of weapons at specific proficiency levels outside of normal proficiencies, eg if Flail is at Master
@Serializable
class WeaponObject {
var name = ""
var qty = 1
var prof = "" // the type of proficiency, eg martial, as this can be changed by feats
var die = ""
var pot = 0 // potency rune value
var str = "" // striking rune
var mat : String? = null // materials
var display = "" // display name
var runes = ArrayList<String>() // list of property runes
var attack = 0 // total attack
var damageBonus = 0
var extraDamage = ArrayList<String>()
}
val weapons = ArrayList<WeaponObject>()
@Serializable
class Money {
var cp = 0
var sp = 0
var gp = 0
var pp = 0
}
val money = Money()
@Serializable
class ArmorObject {
var name = ""
var qty = 1
var prof = "" // armor proficiency, eg light
var pot = 0
var res = "" // resilient rune
var mat : String? = null // material
var display =""
var worn = true
var runes = ArrayList<String>()
}
val armor = ArrayList<ArmorObject>()
@Serializable
class SpellCasterObject{
var name = ""
var magicTradition = "" // eg arcane or divine
var spellcastingType = "" // prepared or spontaneous
var ability = "" // spellcasting ability name
var proficiency = 0 // proficiency level
var focusPoints = 0 //deprecated do not use
var innate = false
var perDay = ArrayList<Int>() // array of spells pert day
var spells = ArrayList<JsonObjectSpellLevel>() // array of spells known
var prepared = ArrayList<JsonObjectSpellLevel>() // array of spells prepared, empty for spontaneous casters
}
@Serializable
class JsonObjectSpellLevel{
var spellLevel = 0
var list = ArrayList<String>()
}
val spellCasters = ArrayList<SpellCasterObject>()
var focusPoints = 0
val focus = HashMap<String, HashMap<String, FocusSpellDetails>>()
@Serializable
class FocusSpellDetails{
var abilityBonus = 0
var proficiency = 0
var itemBonus = 0
var focusCantrips = ArrayList<String>()
var focusSpells = ArrayList<String>()
}
@Serializable
class FormulaCaster {
var type = ""
val known = ArrayList<String>() // list of known formula
}
val formula = ArrayList<FormulaCaster>()
@Serializable
class AcObject{
var acProfBonus = 0
var acAbilityBonus = 0
var acItemBonus = 0
var acTotal = 0
var shieldBonus : String? = null
}
val acTotal = AcObject()
@Serializable
open class PetObject{
// generic
var type = ""
var name : String? = null
var equipment = ArrayList<ArrayList<JsonPrimitive>>()
}
@Serializable
class AnimalObject: PetObject(){
// animal companion stuff
var animal : String? = null
var mature : Boolean? = null
var incredible : Boolean? = null
var incredibleType : String? = null
var specializations = ArrayList<String>()
var armor: String? = null
}
@Serializable
class FamiliarObject: PetObject(){
// familiar stuff
var specific : String? = null
var abilities = ArrayList<String>()
}
val pets = ArrayList<AnimalObject>()
val familiars = ArrayList<FamiliarObject>()
}Editor is loading...