model

package
v5.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2022 License: MPL-2.0 Imports: 57 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BlockLayoutReactionsKey            = "reactions"
	BlockLayoutConditionalModifiersKey = "conditional_modifiers"
	BlockLayoutMeleeKey                = "melee"
	BlockLayoutRangedKey               = "ranged"
	BlockLayoutTraitsKey               = "traits"
	BlockLayoutSkillsKey               = "skills"
	BlockLayoutSpellsKey               = "spells"
	BlockLayoutEquipmentKey            = "equipment"
	BlockLayoutOtherEquipmentKey       = "other_equipment"
	BlockLayoutNotesKey                = "notes"
)

Valid block layout keys

View Source
const (
	ConditionalModifierValueColumn = iota
	ConditionalModifierDescriptionColumn
)

Columns that can be used with the conditional modifier method .CellData()

View Source
const (
	EquipmentEquippedColumn = iota
	EquipmentQuantityColumn
	EquipmentDescriptionColumn
	EquipmentUsesColumn
	EquipmentMaxUsesColumn
	EquipmentTLColumn
	EquipmentLCColumn
	EquipmentCostColumn
	EquipmentExtendedCostColumn
	EquipmentWeightColumn
	EquipmentExtendedWeightColumn
	EquipmentTagsColumn
	EquipmentReferenceColumn
)

Columns that can be used with the equipment method .CellData()

View Source
const (
	EquipmentModifierEnabledColumn = iota
	EquipmentModifierDescriptionColumn
	EquipmentModifierTechLevelColumn
	EquipmentModifierCostColumn
	EquipmentModifierWeightColumn
	EquipmentModifierTagsColumn
	EquipmentModifierReferenceColumn
)

Columns that can be used with the equipment modifier method .CellData()

View Source
const (
	GenericFile  = "file"
	ClosedFolder = ".folder-closed"
	OpenFolder   = ".folder-open"
)

Some special "extension" values.

View Source
const (
	EquipmentExt          = ".eqp"
	EquipmentModifiersExt = ".eqm"
	NotesExt              = ".not"
	SheetExt              = ".gcs"
	SkillsExt             = ".skl"
	SpellsExt             = ".spl"
	TemplatesExt          = ".gct"
	TraitModifiersExt     = ".adm"
	TraitsExt             = ".adq"
)

Primary GCS file extensions.

View Source
const (
	AncestryExt        = ".ancestry"
	AttributesExt      = ".attr"
	AttributesExtAlt1  = ".attributes"
	AttributesExtAlt2  = ".gas"
	BodyExt            = ".body"
	BodyExtAlt         = ".ghl"
	CalendarExt        = ".calendar"
	ColorSettingsExt   = ".colors"
	FontSettingsExt    = ".fonts"
	GeneralSettingsExt = ".general"
	KeySettingsExt     = ".keys"
	NamesExt           = ".names"
	PageRefSettingsExt = ".refs"
	SheetSettingsExt   = ".sheet"
)

Secondary GCS file extensions (no visible display for these, since you don't open them into a view).

View Source
const (
	AllID              = "all"
	BlockID            = "block"
	DexterityID        = "dx"
	DodgeID            = "dodge"
	ParryID            = "parry"
	RitualMagicSpellID = "ritual_magic_spell"
	SizeModifierID     = "sm"
	SkillID            = "skill"
	SpellID            = "spell"
	StrengthID         = "st"
	TechniqueID        = "technique"
)

Various commonly used IDs

View Source
const (
	NoteTextColumn = iota
	NoteReferenceColumn
)

Columns that can be used with the note method .CellData()

View Source
const (
	AnyNumber       = NumericCompareType("")
	EqualsNumber    = NumericCompareType("is")
	NotEqualsNumber = NumericCompareType("is_not")
	AtLeastNumber   = NumericCompareType("at_least")
	AtMostNumber    = NumericCompareType("at_most")
)

Possible NumericCompareType values.

View Source
const (
	PortraitHeight = 96
	PortraitWidth  = 3 * PortraitHeight / 4
)

Standard height and width for the portrait

View Source
const (
	NoCR = SelfControlRoll(0)
	CR6  = SelfControlRoll(6)
	CR9  = SelfControlRoll(9)
	CR12 = SelfControlRoll(12)
	CR15 = SelfControlRoll(15)
)

Possible SelfControlRoll values.

View Source
const (
	DefaultLastDirKey  = "default"
	ImagesLastDirKey   = "images"
	SettingsLastDirKey = "settings"
)

Last directory keys

View Source
const (
	SkillDescriptionColumn = iota
	SkillDifficultyColumn
	SkillTagsColumn
	SkillReferenceColumn
	SkillLevelColumn
	SkillRelativeLevelColumn
	SkillPointsColumn
)

Columns that can be used with the skill method .CellData()

View Source
const (
	SpellDescriptionColumn = iota
	SpellResistColumn
	SpellClassColumn
	SpellCollegeColumn
	SpellCastCostColumn
	SpellMaintainCostColumn
	SpellCastTimeColumn
	SpellDurationColumn
	SpellDifficultyColumn
	SpellTagsColumn
	SpellReferenceColumn
	SpellLevelColumn
	SpellRelativeLevelColumn
	SpellPointsColumn
	SpellDescriptionForPageColumn
)

Columns that can be used with the spell method .CellData()

View Source
const (
	AnyString              = StringCompareType("")
	IsString               = StringCompareType("is")
	IsNotString            = StringCompareType("is_not")
	ContainsString         = StringCompareType("contains")
	DoesNotContainString   = StringCompareType("does_not_contain")
	StartsWithString       = StringCompareType("starts_with")
	DoesNotStartWithString = StringCompareType("does_not_start_with")
	EndsWithString         = StringCompareType("ends_with")
	DoesNotEndWithString   = StringCompareType("does_not_end_with")
)

Possible StringCompareType values.

View Source
const (
	TraitDescriptionColumn = iota
	TraitPointsColumn
	TraitTagsColumn
	TraitReferenceColumn
)

Columns that can be used with the trait method .CellData()

View Source
const (
	TraitModifierEnabledColumn = iota
	TraitModifierDescriptionColumn
	TraitModifierCostColumn
	TraitModifierTagsColumn
	TraitModifierReferenceColumn
)

Columns that can be used with the trait modifier method .CellData()

View Source
const (
	// CurrentDataVersion holds the current version for data files written with the current release. Note that this is
	// intentionally the same for all data files that GCS processes. Ideally, this version:
	CurrentDataVersion = 4 // First version for the Go version of GCS
	// MinimumDataVersion holds the oldest version for data files that can be loaded. Note that this is intentionally
	// the same for all data files that GCS processes.
	MinimumDataVersion    = 2
	MinimumLibraryVersion = 3 // Note that as of the Go version of GCS, the data and library version are the same.
)

These version numbers are used both as the version of the data files written to disk as well as the major version number for GCS library compatibility checking. The Go release of GCS is the first release to synchronize the data version and the library major version.

View Source
const (
	WeaponDescriptionColumn = iota
	WeaponUsageColumn
	WeaponSLColumn
	WeaponParryColumn
	WeaponBlockColumn
	WeaponDamageColumn
	WeaponReachColumn
	WeaponSTColumn
	WeaponAccColumn
	WeaponRangeColumn
	WeaponRoFColumn
	WeaponShotsColumn
	WeaponBulkColumn
	WeaponRecoilColumn
)

Columns that can be used with the weapon method .CellData()

View Source
const ContainerKeyPostfix = "_container"

ContainerKeyPostfix is the key postfix used to identify containers.

View Source
const (
	DefaultAncestry = "Human"
)

DefaultAncestry holds the name of the default ancestry.

View Source
const EventRootSync = 0xFFFFFFFF

EventRootSync the event code used when the root path being monitored has been changed to a new path. Also occurs as the first event received.

View Source
const PageRefCellAlias = -10

PageRefCellAlias is used an alias to request the page reference cell, if any.

Variables

View Source
var (
	HeaderColor             = &unison.ThemeColor{Light: unison.RGB(43, 43, 43), Dark: unison.RGB(64, 64, 64)}
	HintColor               = &unison.ThemeColor{Light: unison.Grey, Dark: unison.RGB(64, 64, 64)}
	MarkerColor             = &unison.ThemeColor{Light: unison.RGB(252, 242, 196), Dark: unison.RGB(0, 51, 0)}
	OnHeaderColor           = &unison.ThemeColor{Light: unison.White, Dark: unison.Silver}
	OnMarkerColor           = &unison.ThemeColor{Light: unison.Black, Dark: unison.RGB(221, 221, 221)}
	OnOverloadedColor       = &unison.ThemeColor{Light: unison.White, Dark: unison.RGB(221, 221, 221)}
	OnPageColor             = &unison.ThemeColor{Light: unison.Black, Dark: unison.RGB(160, 160, 160)}
	OnPageStandoutColor     = &unison.ThemeColor{Light: unison.Black, Dark: unison.RGB(160, 160, 160)}
	OnSearchListColor       = &unison.ThemeColor{Light: unison.Black, Dark: unison.RGB(204, 204, 204)}
	OverloadedColor         = &unison.ThemeColor{Light: unison.RGB(192, 64, 64), Dark: unison.RGB(115, 37, 37)}
	PDFLinkHighlightColor   = &unison.ThemeColor{Light: unison.SpringGreen, Dark: unison.SpringGreen}
	PDFMarkerHighlightColor = &unison.ThemeColor{Light: unison.Yellow, Dark: unison.Yellow}
	PageColor               = &unison.ThemeColor{Light: unison.White, Dark: unison.RGB(16, 16, 16)}
	PageStandoutColor       = &unison.ThemeColor{Light: unison.RGB(221, 221, 221), Dark: unison.RGB(64, 64, 64)}
	PageVoidColor           = &unison.ThemeColor{Light: unison.Grey, Dark: unison.Black}
	SearchListColor         = &unison.ThemeColor{Light: unison.LightCyan, Dark: unison.RGB(0, 43, 43)}
)

Additional colors over and above what unison provides by default.

View Source
var (
	// CurrentColors holds the current theme.
	CurrentColors = []*ThemedColor{
		{ID: "background", Title: i18n.Text("Background"), Color: unison.BackgroundColor},
		{ID: "on_background", Title: i18n.Text("On Background"), Color: unison.OnBackgroundColor},
		{ID: "content", Title: i18n.Text("Content"), Color: unison.ContentColor},
		{ID: "on_content", Title: i18n.Text("On Content"), Color: unison.OnContentColor},
		{ID: "banding", Title: i18n.Text("Banding"), Color: unison.BandingColor},
		{ID: "on_banding", Title: i18n.Text("On Banding"), Color: unison.OnBandingColor},
		{ID: "header", Title: i18n.Text("Header"), Color: HeaderColor},
		{ID: "on_header", Title: i18n.Text("On Header"), Color: OnHeaderColor},
		{ID: "tab_focused", Title: i18n.Text("Focused Tab"), Color: unison.TabFocusedColor},
		{ID: "on_tab_focused", Title: i18n.Text("On Focused Tab"), Color: unison.OnTabFocusedColor},
		{ID: "tab_current", Title: i18n.Text("Current Tab"), Color: unison.TabCurrentColor},
		{ID: "on_tab_current", Title: i18n.Text("On Current Tab"), Color: unison.OnTabCurrentColor},
		{ID: "editable", Title: i18n.Text("Editable"), Color: unison.EditableColor},
		{ID: "on_editable", Title: i18n.Text("On Editable"), Color: unison.OnEditableColor},
		{ID: "selection", Title: i18n.Text("Selection"), Color: unison.SelectionColor},
		{ID: "on_selection", Title: i18n.Text("On Selection"), Color: unison.OnSelectionColor},
		{ID: "inactive_selection", Title: i18n.Text("Inactive Selection"), Color: unison.InactiveSelectionColor},
		{ID: "on_inactive_selection", Title: i18n.Text("On Inactive Selection"), Color: unison.OnInactiveSelectionColor},
		{ID: "indirect_selection", Title: i18n.Text("Indirect Selection"), Color: unison.IndirectSelectionColor},
		{ID: "on_indirect_selection", Title: i18n.Text("On Indirect Selection"), Color: unison.OnIndirectSelectionColor},
		{ID: "scroll", Title: i18n.Text("Scroll"), Color: unison.ScrollColor},
		{ID: "scroll_rollover", Title: i18n.Text("Scroll Rollover"), Color: unison.ScrollRolloverColor},
		{ID: "scroll_edge", Title: i18n.Text("Scroll Edge"), Color: unison.ScrollEdgeColor},
		{ID: "control_edge", Title: i18n.Text("Control Edge"), Color: unison.ControlEdgeColor},
		{ID: "control", Title: i18n.Text("Control"), Color: unison.ControlColor},
		{ID: "on_control", Title: i18n.Text("On Control"), Color: unison.OnControlColor},
		{ID: "control_pressed", Title: i18n.Text("Pressed Control"), Color: unison.ControlPressedColor},
		{ID: "on_control_pressed", Title: i18n.Text("On Pressed Control"), Color: unison.OnControlPressedColor},
		{ID: "divider", Title: i18n.Text("Divider"), Color: unison.DividerColor},
		{ID: "interior_divider", Title: i18n.Text("Interior Divider"), Color: unison.InteriorDividerColor},
		{ID: "icon_button", Title: i18n.Text("Icon Button"), Color: unison.IconButtonColor},
		{ID: "icon_button_rollover", Title: i18n.Text("Icon Button Rollover"), Color: unison.IconButtonRolloverColor},
		{ID: "icon_button_pressed", Title: i18n.Text("Pressed Icon Button"), Color: unison.IconButtonPressedColor},
		{ID: "hint", Title: i18n.Text("Hint"), Color: HintColor},
		{ID: "tooltip", Title: i18n.Text("Tooltip"), Color: unison.TooltipColor},
		{ID: "on_tooltip", Title: i18n.Text("On Tooltip"), Color: unison.OnTooltipColor},
		{ID: "search_list", Title: i18n.Text("Search List"), Color: SearchListColor},
		{ID: "on_search_list", Title: i18n.Text("On Search List"), Color: OnSearchListColor},
		{ID: "marker", Title: i18n.Text("Marker"), Color: MarkerColor},
		{ID: "on_marker", Title: i18n.Text("On Marker"), Color: OnMarkerColor},
		{ID: "error", Title: i18n.Text("Error"), Color: unison.ErrorColor},
		{ID: "on_error", Title: i18n.Text("On Error"), Color: unison.OnErrorColor},
		{ID: "warning", Title: i18n.Text("Warning"), Color: unison.WarningColor},
		{ID: "on_warning", Title: i18n.Text("On Warning"), Color: unison.OnWarningColor},
		{ID: "overloaded", Title: i18n.Text("Overloaded"), Color: OverloadedColor},
		{ID: "on_overloaded", Title: i18n.Text("On Overloaded"), Color: OnOverloadedColor},
		{ID: "page", Title: i18n.Text("Page"), Color: PageColor},
		{ID: "on_page", Title: i18n.Text("On Page"), Color: OnPageColor},
		{ID: "page_standout", Title: i18n.Text("Page Standout"), Color: PageStandoutColor},
		{ID: "on_page_standout", Title: i18n.Text("On Page Standout"), Color: OnPageStandoutColor},
		{ID: "page_void", Title: i18n.Text("Page Void"), Color: PageVoidColor},
		{ID: "drop_area", Title: i18n.Text("Drop Area"), Color: unison.DropAreaColor},
		{ID: "link", Title: i18n.Text("Link"), Color: unison.LinkColor},
		{ID: "link_pressed", Title: i18n.Text("Pressed Link"), Color: unison.LinkPressedColor},
		{ID: "link_rollover", Title: i18n.Text("Rollover Link"), Color: unison.LinkRolloverColor},
		{ID: "pdf_link", Title: i18n.Text("PDF Link Highlight"), Color: PDFLinkHighlightColor},
		{ID: "pdf_marker", Title: i18n.Text("PDF Marker Highlight"), Color: PDFMarkerHighlightColor},
		{ID: "accent", Title: i18n.Text("Accent"), Color: unison.AccentColor},
	}
	// FactoryColors holds the original theme before any modifications.
	FactoryColors []*ThemedColor
)
View Source
var (
	NoAdditionalModifiers = i18n.Text("No additional modifiers")
	IncludesModifiersFrom = i18n.Text("Includes modifiers from")
	PageRefTooltipText    = i18n.Text(`A reference to the book and page the item appears on e.g. B22 would refer to "Basic Set", page 22`)
)

String constants

Additional fonts over and above what unison provides by default.

View Source
var (
	// CurrentFonts holds the current theme fonts.
	CurrentFonts = []*ThemedFont{
		{ID: "system", Title: i18n.Text("System"), Font: unison.SystemFont},
		{ID: "system.emphasized", Title: i18n.Text("System (Emphasized)"), Font: unison.EmphasizedSystemFont},
		{ID: "system.small", Title: i18n.Text("System (Small)"), Font: unison.SmallSystemFont},
		{ID: "system.small.emphasized", Title: i18n.Text("System (Small, Emphasized)"), Font: unison.EmphasizedSmallSystemFont},
		{ID: "label", Title: i18n.Text("Label"), Font: unison.LabelFont},
		{ID: "field", Title: i18n.Text("Field"), Font: unison.FieldFont},
		{ID: "field.secondary", Title: i18n.Text("Secondary Fields"), Font: FieldSecondaryFont},
		{ID: "keyboard", Title: i18n.Text("Keyboard"), Font: unison.KeyboardFont},
		{ID: "page.field.primary", Title: i18n.Text("Page Primary Fields"), Font: PageFieldPrimaryFont},
		{ID: "page.field.secondary", Title: i18n.Text("Page Secondary Fields"), Font: PageFieldSecondaryFont},
		{ID: "page.label.primary", Title: i18n.Text("Page Primary Labels"), Font: PageLabelPrimaryFont},
		{ID: "page.label.secondary", Title: i18n.Text("Page Secondary Labels"), Font: PageLabelSecondaryFont},
		{ID: "page.footer.primary", Title: i18n.Text("Page Primary Footer"), Font: PageFooterPrimaryFont},
		{ID: "page.footer.secondary", Title: i18n.Text("Page Secondary Footer"), Font: PageFooterSecondaryFont},
		{ID: "monospaced", Title: i18n.Text("Monospaced"), Font: unison.MonospacedFont},
	}
	// FactoryFonts holds the original theme before any modifications.
	FactoryFonts []*ThemedFont
)
View Source
var (
	InitialPointsDef           = fxp.From(150)
	InitialPointsMin           fxp.Int
	InitialPointsMax           = fxp.From(9999999)
	TooltipDelayDef            = fxp.FromStringForced("0.75")
	TooltipDelayMin            fxp.Int
	TooltipDelayMax            = fxp.Thirty
	TooltipDismissalDef        = fxp.From(60)
	TooltipDismissalMin        = fxp.One
	TooltipDismissalMax        = fxp.From(3600)
	ScrollWheelMultiplierDef   = fxp.From(unison.MouseWheelMultiplier)
	ScrollWheelMultiplierMin   = fxp.Int(1)
	ScrollWheelMultiplierMax   = fxp.From(9999)
	ImageResolutionDef         = 200
	ImageResolutionMin         = 50
	ImageResolutionMax         = 400
	InitialUIScaleMin          = 50
	InitialUIScaleMax          = 400
	InitialNavigatorUIScaleDef = 100
	InitialListUIScaleDef      = 100
	InitialEditorUIScaleDef    = 100
	InitialSheetUIScaleDef     = 133
	AutoColWidthMin            = 50
	AutoColWidthMax            = 9999
	MaximumAutoColWidthDef     = 800
)

Default, min & max values for the general numeric settings

View Source
var (
	InvalidFileDataMsg    = i18n.Text("Invalid file data.")
	UnexpectedFileDataMsg = i18n.Text("This file does not contain the expected data.")
)

Common messages

View Source
var (
	// AllAffects holds all possible values.
	AllAffects = []Affects{
		TotalAffects,
		BaseOnlyAffects,
		LevelsOnlyAffects,
	}
)
View Source
var (
	// AllBonusLimitation holds all possible values.
	AllBonusLimitation = []BonusLimitation{
		NoneBonusLimitation,
		StrikingOnlyBonusLimitation,
		LiftingOnlyBonusLimitation,
		ThrowingOnlyBonusLimitation,
	}
)
View Source
var (
	// AllCellType holds all possible values.
	AllCellType = []CellType{
		TextCellType,
		TagsCellType,
		ToggleCellType,
		PageRefCellType,
		MarkdownCellType,
	}
)
View Source
var (
	// AllContainerType holds all possible values.
	AllContainerType = []ContainerType{
		GroupContainerType,
		MetaTraitContainerType,
		RaceContainerType,
		AlternativeAbilitiesContainerType,
	}
)
View Source
var (
	// AllDamageProgression holds all possible values.
	AllDamageProgression = []DamageProgression{
		BasicSet,
		KnowingYourOwnStrength,
		NoSchoolGrognardDamage,
		ThrustEqualsSwingMinus2,
		SwingEqualsThrustPlus2,
		PhoenixFlameD3,
	}
)
View Source
var (
	// AllDifficulty holds all possible values.
	AllDifficulty = []Difficulty{
		Easy,
		Average,
		Hard,
		VeryHard,
		Wildcard,
	}
)
View Source
var (
	// AllDisplayOption holds all possible values.
	AllDisplayOption = []DisplayOption{
		NotShownDisplayOption,
		InlineDisplayOption,
		TooltipDisplayOption,
		InlineAndTooltipDisplayOption,
	}
)
View Source
var (
	// AllEncumbrance holds all possible values.
	AllEncumbrance = []Encumbrance{
		NoEncumbrance,
		LightEncumbrance,
		MediumEncumbrance,
		HeavyEncumbrance,
		ExtraHeavyEncumbrance,
	}
)
View Source
var (
	// AllEntityType holds all possible values.
	AllEntityType = []EntityType{
		PC,
	}
)
View Source
var (
	// AllEquipmentModifierCostType holds all possible values.
	AllEquipmentModifierCostType = []EquipmentModifierCostType{
		OriginalEquipmentModifierCostType,
		BaseEquipmentModifierCostType,
		FinalBaseEquipmentModifierCostType,
		FinalEquipmentModifierCostType,
	}
)
View Source
var (
	// AllEquipmentModifierWeightType holds all possible values.
	AllEquipmentModifierWeightType = []EquipmentModifierWeightType{
		OriginalEquipmentModifierWeightType,
		BaseEquipmentModifierWeightType,
		FinalBaseEquipmentModifierWeightType,
		FinalEquipmentModifierWeightType,
	}
)
View Source
var AllFeatureTypesWithoutContainedWeightType []FeatureType

AllFeatureTypesWithoutContainedWeightType holds the possible FeatureType values, minus the ContainedWeightReductionFeatureType.

View Source
var (
	// AllLengthUnits holds all possible values.
	AllLengthUnits = []LengthUnits{
		FeetAndInches,
		Inch,
		Feet,
		Yard,
		Mile,
		Centimeter,
		Kilometer,
		Meter,
	}
)
View Source
var (
	// AllNameGenerationType holds all possible values.
	AllNameGenerationType = []NameGenerationType{
		SimpleNameGenerationType,
		MarkovChainNameGenerationType,
	}
)

AllNumericCompareTypes is the complete set of NumericCompareType values.

View Source
var (
	// AllPaperOrientation holds all possible values.
	AllPaperOrientation = []PaperOrientation{
		Portrait,
		Landscape,
	}
)
View Source
var (
	// AllPaperUnits holds all possible values.
	AllPaperUnits = []PaperUnits{
		InchPaperUnits,
		CentimeterPaperUnits,
		MillimeterPaperUnits,
	}
)
View Source
var (
	// AllSelfControlRollAdj holds all possible values.
	AllSelfControlRollAdj = []SelfControlRollAdj{
		NoCRAdj,
		ActionPenalty,
		ReactionPenalty,
		FrightCheckPenalty,
		FrightCheckBonus,
		MinorCostOfLivingIncrease,
		MajorCostOfLivingIncrease,
	}
)
View Source
var AllSelfControlRolls = []SelfControlRoll{
	NoCR,
	CR6,
	CR9,
	CR12,
	CR15,
}

AllSelfControlRolls is the complete set of SelfControlRoll values.

View Source
var (
	// AllSkillSelectionType holds all possible values.
	AllSkillSelectionType = []SkillSelectionType{
		NameSkillSelectionType,
		ThisWeaponSkillSelectionType,
		WeaponsWithNameSkillSelectionType,
	}
)
View Source
var (
	// AllSpellComparisonType holds all possible values.
	AllSpellComparisonType = []SpellComparisonType{
		NameSpellComparisonType,
		TagSpellComparisonType,
		CollegeSpellComparisonType,
		CollegeCountSpellComparisonType,
		AnySpellComparisonType,
	}
)
View Source
var (
	// AllSpellMatchType holds all possible values.
	AllSpellMatchType = []SpellMatchType{
		AllCollegesSpellMatchType,
		CollegeNameSpellMatchType,
		PowerSourceSpellMatchType,
		NameSpellMatchType,
	}
)
View Source
var (
	// AllStrengthDamage holds all possible values.
	AllStrengthDamage = []StrengthDamage{
		NoneStrengthDamage,
		ThrustStrengthDamage,
		LeveledThrustStrengthDamage,
		SwingStrengthDamage,
		LeveledSwingStrengthDamage,
	}
)

AllStringCompareTypes is the complete set of StringCompareType values.

View Source
var (
	// AllStudyType holds all possible values.
	AllStudyType = []StudyType{
		SelfStudyType,
		JobStudyType,
		TeacherStudyType,
		IntensiveStudyType,
	}
)
View Source
var AllTechniqueDifficulty = []Difficulty{
	Average,
	Hard,
}

AllTechniqueDifficulty holds all possible values when used with Techniques.

View Source
var (
	// AllTemplatePickerType holds all possible values.
	AllTemplatePickerType = []TemplatePickerType{
		NotApplicableTemplatePickerType,
		CountTemplatePickerType,
		PointsTemplatePickerType,
	}
)
View Source
var (
	// AllThresholdOp holds all possible values.
	AllThresholdOp = []ThresholdOp{
		UnknownThresholdOp,
		HalveMoveThresholdOp,
		HalveDodgeThresholdOp,
		HalveSTThresholdOp,
	}
)
View Source
var (
	// AllTraitModifierCostType holds all possible values.
	AllTraitModifierCostType = []TraitModifierCostType{
		PercentageTraitModifierCostType,
		PointsTraitModifierCostType,
		MultiplierTraitModifierCostType,
	}
)
View Source
var (
	// AllWeaponSelectionType holds all possible values.
	AllWeaponSelectionType = []WeaponSelectionType{
		WithRequiredSkillWeaponSelectionType,
		ThisWeaponWeaponSelectionType,
		WithNameWeaponSelectionType,
	}
)
View Source
var (
	// AllWeaponType holds all possible values.
	AllWeaponType = []WeaponType{
		MeleeWeaponType,
		RangedWeaponType,
	}
)
View Source
var (
	// AllWeightUnits holds all possible values.
	AllWeightUnits = []WeightUnits{
		Pound,
		PoundAlt,
		Ounce,
		Ton,
		TonAlt,
		Kilogram,
		Gram,
	}
)
View Source
var (
	// KnownFileTypes holds the registered file types.
	KnownFileTypes []FileInfo
)
View Source
var LegalityClassInfo = i18n.Text(`LC0: Banned
LC1: Military
LC2: Restricted
LC3: Licensed
LC4: Open`)

LegalityClassInfo holds the LC list

View Source
var NotifyOfLibraryChangeFunc func()

NotifyOfLibraryChangeFunc will be called to notify of library changes.

ReservedIDs holds a list of IDs that are reserved for internal use.

View Source
var TechLevelInfo = i18n.Text(`TL0: Stone Age (Prehistory)
TL1: Bronze Age (3500 B.C.+)
TL2: Iron Age (1200 B.C.+)
TL3: Medieval (600 A.D.+)
TL4: Age of Sail (1450+)
TL5: Industrial Revolution (1730+)
TL6: Mechanized Age (1880+)
TL7: Nuclear Age (1940+)
TL8: Digital Age (1980+)
TL9: Microtech Age (2025+?)
TL10: Robotic Age (2070+?)
TL11: Age of Exotic Matter
TL12: Anything Goes`)

TechLevelInfo holds the general TL age list

Functions

func AcceptableExtensions

func AcceptableExtensions() []string

AcceptableExtensions returns the file extensions that we should be able to open.

func AdjustTechLevel

func AdjustTechLevel(str string, delta fxp.Int) (s string, changed bool)

AdjustTechLevel returns a new string with the adjusted tech level.

func AdjustedPoints

func AdjustedPoints(entity *Entity, canLevel bool, basePoints, levels, pointsPerLevel fxp.Int, cr SelfControlRoll, modifiers []*TraitModifier, roundCostDown bool) fxp.Int

AdjustedPoints returns the total points, taking levels and modifiers into account. 'entity' may be nil.

func AdjustedPointsForNonContainerSkillOrTechnique

func AdjustedPointsForNonContainerSkillOrTechnique(entity *Entity, points fxp.Int, name, specialization string, tags []string, tooltip *xio.ByteBuffer) fxp.Int

AdjustedPointsForNonContainerSkillOrTechnique returns the points, adjusted for any bonuses.

func AdjustedPointsForNonContainerSpell

func AdjustedPointsForNonContainerSpell(entity *Entity, points fxp.Int, name, powerSource string, colleges, tags []string, tooltip *xio.ByteBuffer) fxp.Int

AdjustedPointsForNonContainerSpell returns the points, adjusted for any bonuses.

func Apply

func Apply(str string, set map[string]string) string

Apply replaces the matching nameable sections with the values from the set.

func AttributeChoices

func AttributeChoices(entity *Entity, prefix string, flags AttributeFlags, currentKey string) (choices []*AttributeChoice, current *AttributeChoice)

AttributeChoices collects the available choices for attributes for the given entity, or nil.

func AttributeIDFor

func AttributeIDFor(entity *Entity, preferred string) string

AttributeIDFor looks up the preferred ID and if it cannot be found, falls back to a default. 'entity' may be nil.

func CRCByte

func CRCByte(crc uint64, data byte) uint64

CRCByte returns the CRC-64 value for the given data starting with the given crc value.

func CRCBytes

func CRCBytes(crc uint64, data []byte) uint64

CRCBytes returns the CRC-64 value for the given data starting with the given crc value.

func CRCNumber

func CRCNumber[T ~int64 | ~uint64 | ~int | ~uint](crc uint64, data T) uint64

CRCNumber returns the CRC-64 value for the given data starting with the given crc value.

func CRCString

func CRCString(crc uint64, data string) uint64

CRCString returns the CRC-64 value for the given data starting with the given crc value.

func CheckVersion

func CheckVersion(version int) error

CheckVersion returns an error if the data version is out of the acceptable range.

func ChooseWeightedStringOption

func ChooseWeightedStringOption(options []*WeightedStringOption, not string) string

ChooseWeightedStringOption selects a string option from the available set.

func CloneNodes

func CloneNodes[T NodeTypes](newEntity *Entity, newParent T, preserveID bool, nodes []Node[T]) []T

CloneNodes creates clones of the provided nodes.

func CombineTags

func CombineTags(tags []string) string

CombineTags combines multiple tags into a single string.

func Convert

func Convert(paths ...string) error

Convert the GCS files found in the given paths to the current file format.

func CountThresholdOpMet

func CountThresholdOpMet(op ThresholdOp, attributes *Attributes) int

CountThresholdOpMet counts the number of times the given ThresholdOp is met.

func CreateFullKeySet

func CreateFullKeySet() map[string]bool

CreateFullKeySet creates a map that contains each of the possible block layout keys.

func CreateImageFromSVG added in v5.5.1

func CreateImageFromSVG(fi *FileInfo, size int) (image.Image, error)

CreateImageFromSVG turns one of our svg-as-a-path objects into an actual SVG document, then renders it into an image at the specified square size. Note that this is not currently GPU accelerated, as I haven't added the necessary bits to unison to support scribbling into arbitrary offscreen images yet.

func DefaultAttributeIDFor

func DefaultAttributeIDFor(entity *Entity) string

DefaultAttributeIDFor returns the default attribute ID to use for the given Entity, which may be nil.

func DefaultMasterLibraryPath

func DefaultMasterLibraryPath() string

DefaultMasterLibraryPath returns the default master library path.

func DefaultRootLibraryPath

func DefaultRootLibraryPath() string

DefaultRootLibraryPath returns the default root library path.

func DefaultTypeIsSkillBased

func DefaultTypeIsSkillBased(skillDefaultType string) bool

DefaultTypeIsSkillBased returns true if the SkillDefault type is Skill-based.

func DefaultUserLibraryPath

func DefaultUserLibraryPath() string

DefaultUserLibraryPath returns the default user library path.

func Extract

func Extract(str string, set map[string]string)

Extract the nameable sections of the string into the set.

func ExtractContainedWeightReduction

func ExtractContainedWeightReduction(s string, defUnits WeightUnits) (string, error)

ExtractContainedWeightReduction extracts the weight reduction (which may be a weight or a percentage) and returns a sanitized result. If 'err' is not nil, then the input was bad. Even in that case, however, a valid string is returned.

func ExtractNumericCompareTypeIndex

func ExtractNumericCompareTypeIndex(str string) int

ExtractNumericCompareTypeIndex extracts the index from a string.

func ExtractStringCompareTypeIndex

func ExtractStringCompareTypeIndex(str string) int

ExtractStringCompareTypeIndex extracts the index from a string.

func ExtractTags

func ExtractTags(tags string) []string

ExtractTags from a combined tags string.

func ExtractTechLevel

func ExtractTechLevel(str string) (techLevel fxp.Int, start, end int)

ExtractTechLevel extracts the first number it finds in the string and returns that as the tech level. The start and end (inclusive) indexes within the string where the number resided are returned, but will be -1 if the string didn't contain a resolvable number. The returned tech level will be clamped to the range 0 to 12.

func FormatRelativeSkill

func FormatRelativeSkill(entity *Entity, typ string, difficulty AttributeDifficulty, rsl fxp.Int) string

FormatRelativeSkill formats the relative skill for display.

func GCSExtensions

func GCSExtensions() []string

GCSExtensions returns the file extensions that are owned by GCS.

func GCSSecondaryExtensions

func GCSSecondaryExtensions() []string

GCSSecondaryExtensions returns the file extensions that are owned by GCS but are not directly openable file types.

func HasTag

func HasTag(tag string, tags []string) bool

HasTag returns true if 'tag' is present in 'tags'. This check both ignores case and can check for subsets that are colon-separated.

func HasText

func HasText(has bool) string

HasText returns the appropriate text for has.

func HitLocationChoices

func HitLocationChoices(entity *Entity, prefix, currentKey string) (choices []*HitLocationChoice, current *HitLocationChoice)

HitLocationChoices collects the available choices for hit locations for the given entity, or nil.

func InstallEvaluatorFunctions

func InstallEvaluatorFunctions(m map[string]eval.Function)

InstallEvaluatorFunctions installs additional functions for the evaluator.

func IsThresholdOpMet

func IsThresholdOpMet(op ThresholdOp, attributes *Attributes) bool

IsThresholdOpMet if the given ThresholdOp is met.

func LegacyExport

func LegacyExport(entity *Entity, templatePath, exportPath string) (err error)

LegacyExport performs the text template export function that matches the old Java code base.

func LegacyExportMultiple

func LegacyExportMultiple(tmplPath string, fileList []string) error

LegacyExportMultiple exports the files to a text representation.

func NewUUID

func NewUUID() uuid.UUID

NewUUID creates a new UUID.

func PrefixedNumericCompareTypeChoices

func PrefixedNumericCompareTypeChoices(prefix string) []string

PrefixedNumericCompareTypeChoices returns the set of NumericCompareType choices as strings with a prefix.

func PrefixedStringCompareTypeChoices

func PrefixedStringCompareTypeChoices(prefix, notPrefix string) []string

PrefixedStringCompareTypeChoices returns the set of StringCompareType choices as strings with a prefix.

func RegisterKeyBinding

func RegisterKeyBinding(id string, action *unison.Action)

RegisterKeyBinding register a keybinding.

func RegisteredMimeTypes

func RegisteredMimeTypes() []string

RegisteredMimeTypes returns the mime types that we should be able to open.

func ReplaceTechLevel

func ReplaceTechLevel(str string, value fxp.Int) string

ReplaceTechLevel replaces the tech level (as found by a call to ExtractTechLevel) with a new value.

func ResolveAttributeName

func ResolveAttributeName(entity *Entity, attribute string) string

ResolveAttributeName returns the name of the attribute, if possible.

func ResolveStudyHours

func ResolveStudyHours(study []*Study) fxp.Int

ResolveStudyHours returns the resolved total study hours.

func SanitizeID

func SanitizeID(id string, permitLeadingDigits bool, reserved ...string) string

SanitizeID ensures the ID is not empty and consists of only lowercase alphanumeric characters. If permitLeadingDigits is false, then leading digits are stripped. A list of reserved values can be passed in to disallow specific IDs.

func SaveEquipment

func SaveEquipment(equipment []*Equipment, filePath string) error

SaveEquipment writes the Equipment list to the file as JSON.

func SaveEquipmentModifiers

func SaveEquipmentModifiers(modifiers []*EquipmentModifier, filePath string) error

SaveEquipmentModifiers writes the EquipmentModifier list to the file as JSON.

func SaveNotes

func SaveNotes(notes []*Note, filePath string) error

SaveNotes writes the Note list to the file as JSON.

func SaveSkills

func SaveSkills(skills []*Skill, filePath string) error

SaveSkills writes the Skill list to the file as JSON.

func SaveSpells

func SaveSpells(spells []*Spell, filePath string) error

SaveSpells writes the Spell list to the file as JSON.

func SaveTraitModifiers

func SaveTraitModifiers(modifiers []*TraitModifier, filePath string) error

SaveTraitModifiers writes the TraitModifier list to the file as JSON.

func SaveTraits

func SaveTraits(traits []*Trait, filePath string) error

SaveTraits writes the Trait list to the file as JSON.

func SettingsPath

func SettingsPath() string

SettingsPath returns the path to our settings file.

func StudyHoursProgressText

func StudyHoursProgressText(hours fxp.Int) string

StudyHoursProgressText returns the progress text or an empty string.

func Traverse

func Traverse[T NodeTypes](f func(T) bool, onlyEnabled, excludeContainers bool, in ...T)

Traverse calls the function 'f' for each node and its children in the input list, recursively. Return true from the function to abort early. If excludeContainers is true, then nodes that are containers will not be passed to 'f', although their children will still be processed as usual.

func ValueAdjustedForModifiers

func ValueAdjustedForModifiers(value fxp.Int, modifiers []*EquipmentModifier) fxp.Int

ValueAdjustedForModifiers returns the value after adjusting it for a set of modifiers.

Types

type Affects

type Affects byte

Affects describes how a TraitModifier affects the point cost.

const (
	TotalAffects Affects = iota
	BaseOnlyAffects
	LevelsOnlyAffects
	LastAffects = LevelsOnlyAffects
)

Possible values.

func ExtractAffects

func ExtractAffects(str string) Affects

ExtractAffects extracts the value from a string.

func (Affects) AltString

func (enum Affects) AltString() string

AltString returns the alternate string.

func (Affects) EnsureValid

func (enum Affects) EnsureValid() Affects

EnsureValid ensures this is of a known value.

func (Affects) Key

func (enum Affects) Key() string

Key returns the key used in serialization.

func (Affects) MarshalText

func (enum Affects) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (Affects) String

func (enum Affects) String() string

String implements fmt.Stringer.

func (*Affects) UnmarshalText

func (enum *Affects) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Ancestry

type Ancestry struct {
	Name          string                     `json:"name,omitempty"`
	CommonOptions *AncestryOptions           `json:"common_options,omitempty"`
	GenderOptions []*WeightedAncestryOptions `json:"gender_options,omitempty"`
}

Ancestry holds details necessary to generate ancestry-specific customizations.

func LookupAncestry

func LookupAncestry(name string, libraries Libraries) *Ancestry

LookupAncestry an Ancestry by name.

func NewAncestryFromFile

func NewAncestryFromFile(fileSystem fs.FS, filePath string) (*Ancestry, error)

NewAncestryFromFile creates a new Ancestry from a file.

func (*Ancestry) GenderedOptions

func (a *Ancestry) GenderedOptions(gender string) *AncestryOptions

GenderedOptions returns the options for the specified gender, or nil.

func (*Ancestry) RandomAge

func (a *Ancestry) RandomAge(resolver eval.VariableResolver, gender string, not int) int

RandomAge returns a randomized age.

func (*Ancestry) RandomEyes

func (a *Ancestry) RandomEyes(gender, not string) string

RandomEyes returns a randomized eyes.

func (*Ancestry) RandomGender

func (a *Ancestry) RandomGender(not string) string

RandomGender returns a randomized gender.

func (*Ancestry) RandomHair

func (a *Ancestry) RandomHair(gender, not string) string

RandomHair returns a randomized hair.

func (*Ancestry) RandomHandedness

func (a *Ancestry) RandomHandedness(gender, not string) string

RandomHandedness returns a randomized handedness.

func (*Ancestry) RandomHeight

func (a *Ancestry) RandomHeight(resolver eval.VariableResolver, gender string, not Length) Length

RandomHeight returns a randomized height.

func (*Ancestry) RandomName

func (a *Ancestry) RandomName(nameGeneratorRefs []*NameGeneratorRef, gender string) string

RandomName returns a randomized name.

func (*Ancestry) RandomSkin

func (a *Ancestry) RandomSkin(gender, not string) string

RandomSkin returns a randomized skin.

func (*Ancestry) RandomWeight

func (a *Ancestry) RandomWeight(resolver eval.VariableResolver, gender string, not Weight) Weight

RandomWeight returns a randomized weight.

func (*Ancestry) Save

func (a *Ancestry) Save(filePath string) error

Save writes the Ancestry to the file as JSON.

type AncestryOptions

type AncestryOptions struct {
	Name              string                  `json:"name,omitempty"`
	HeightFormula     string                  `json:"height_formula,omitempty"`
	WeightFormula     string                  `json:"weight_formula,omitempty"`
	AgeFormula        string                  `json:"age_formula,omitempty"`
	HairOptions       []*WeightedStringOption `json:"hair_options,omitempty"`
	EyeOptions        []*WeightedStringOption `json:"eye_options,omitempty"`
	SkinOptions       []*WeightedStringOption `json:"skin_options,omitempty"`
	HandednessOptions []*WeightedStringOption `json:"handedness_options,omitempty"`
	NameGenerators    []string                `json:"name_generators,omitempty"`
}

AncestryOptions holds options that may be randomized for an Entity's ancestry.

func ChooseWeightedAncestryOptions

func ChooseWeightedAncestryOptions(options []*WeightedAncestryOptions, omitter func(*AncestryOptions) bool) *AncestryOptions

ChooseWeightedAncestryOptions selects a string option from the available set.

func (*AncestryOptions) RandomAge

func (o *AncestryOptions) RandomAge(resolver eval.VariableResolver, not int) int

RandomAge returns a randomized age.

func (*AncestryOptions) RandomEye

func (o *AncestryOptions) RandomEye(not string) string

RandomEye returns a randomized eye.

func (*AncestryOptions) RandomHair

func (o *AncestryOptions) RandomHair(not string) string

RandomHair returns a randomized hair.

func (*AncestryOptions) RandomHandedness

func (o *AncestryOptions) RandomHandedness(not string) string

RandomHandedness returns a randomized handedness.

func (*AncestryOptions) RandomHeight

func (o *AncestryOptions) RandomHeight(resolver eval.VariableResolver, not Length) Length

RandomHeight returns a randomized height.

func (*AncestryOptions) RandomName

func (o *AncestryOptions) RandomName(nameGeneratorRefs []*NameGeneratorRef) string

RandomName returns a randomized name.

func (*AncestryOptions) RandomSkin

func (o *AncestryOptions) RandomSkin(not string) string

RandomSkin returns a randomized skin.

func (*AncestryOptions) RandomWeight

func (o *AncestryOptions) RandomWeight(resolver eval.VariableResolver, not Weight) Weight

RandomWeight returns a randomized weight.

type Attribute

type Attribute struct {
	AttributeData
	Entity        *Entity `json:"-"`
	Bonus         fxp.Int `json:"-"`
	CostReduction fxp.Int `json:"-"`
	Order         int     `json:"-"`
}

Attribute holds the current state of an AttributeDef.

func NewAttribute

func NewAttribute(entity *Entity, attrID string, order int) *Attribute

NewAttribute creates a new Attribute.

func (*Attribute) AttributeDef

func (a *Attribute) AttributeDef() *AttributeDef

AttributeDef looks up the AttributeDef this Attribute references from the Entity. May return nil.

func (*Attribute) Clone

func (a *Attribute) Clone(entity *Entity) *Attribute

Clone a copy of this.

func (*Attribute) Current

func (a *Attribute) Current() fxp.Int

Current returns the current value. Same as .Maximum() if not a pool.

func (*Attribute) CurrentThreshold

func (a *Attribute) CurrentThreshold() *PoolThreshold

CurrentThreshold return the current PoolThreshold, if any.

func (*Attribute) ID

func (a *Attribute) ID() string

ID returns the ID.

func (*Attribute) MarshalJSON

func (a *Attribute) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Attribute) Maximum

func (a *Attribute) Maximum() fxp.Int

Maximum returns the maximum value of a pool or the adjusted attribute value for other types.

func (*Attribute) PointCost

func (a *Attribute) PointCost() fxp.Int

PointCost returns the number of points spent on this Attribute.

func (*Attribute) SetID

func (a *Attribute) SetID(value string)

SetID sets the ID, sanitizing it in the process (i.e. it may be changed from what you set -- read it back if you want to be sure of what it gets set to.

func (*Attribute) SetMaximum

func (a *Attribute) SetMaximum(value fxp.Int)

SetMaximum sets the maximum value.

func (*Attribute) UnmarshalJSON

func (a *Attribute) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type AttributeBonus

type AttributeBonus struct {
	Type       FeatureType     `json:"type"`
	Limitation BonusLimitation `json:"limitation,omitempty"`
	Attribute  string          `json:"attribute"`
	LeveledAmount
	// contains filtered or unexported fields
}

AttributeBonus holds the data for a bonus to an attribute.

func NewAttributeBonus

func NewAttributeBonus(attrID string) *AttributeBonus

NewAttributeBonus creates a new AttributeBonus.

func (*AttributeBonus) AddToTooltip

func (a *AttributeBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*AttributeBonus) ApplyNameableKeys

func (a *AttributeBonus) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Feature.

func (*AttributeBonus) Clone

func (a *AttributeBonus) Clone() Feature

Clone implements Feature.

func (*AttributeBonus) FeatureType

func (a *AttributeBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*AttributeBonus) FillWithNameableKeys

func (a *AttributeBonus) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Feature.

func (*AttributeBonus) Owner

func (a *AttributeBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*AttributeBonus) SetLevel

func (a *AttributeBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*AttributeBonus) SetOwner

func (a *AttributeBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type AttributeChoice

type AttributeChoice struct {
	Key   string
	Title string
}

AttributeChoice holds a single attribute choice.

func (*AttributeChoice) String

func (c *AttributeChoice) String() string

type AttributeData

type AttributeData struct {
	AttrID     string  `json:"attr_id"`
	Adjustment fxp.Int `json:"adj"`
	Damage     fxp.Int `json:"damage,omitempty"`
}

AttributeData holds the Attribute data that is written to disk.

type AttributeDef

type AttributeDef struct {
	AttributeDefData
	Order     int
	KeyPrefix string
}

AttributeDef holds the definition of an attribute.

func (*AttributeDef) BaseValue

func (a *AttributeDef) BaseValue(resolver eval.VariableResolver) fxp.Int

BaseValue returns the resolved base value.

func (*AttributeDef) Clone

func (a *AttributeDef) Clone() *AttributeDef

Clone a copy of this.

func (*AttributeDef) CombinedName

func (a *AttributeDef) CombinedName() string

CombinedName returns the combined FullName and Name, as appropriate.

func (*AttributeDef) ComputeCost

func (a *AttributeDef) ComputeCost(entity *Entity, value, costReduction fxp.Int, sizeModifier int) fxp.Int

ComputeCost returns the value adjusted for a cost reduction.

func (*AttributeDef) ID

func (a *AttributeDef) ID() string

ID returns the ID.

func (*AttributeDef) IsSeparator

func (a *AttributeDef) IsSeparator() bool

IsSeparator returns true if this is actually just a separator.

func (*AttributeDef) MarshalJSON

func (a *AttributeDef) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*AttributeDef) Pool

func (a *AttributeDef) Pool() bool

Pool returns true if the base value is a pool value.

func (*AttributeDef) Primary

func (a *AttributeDef) Primary() bool

Primary returns true if the base value is a non-derived value.

func (*AttributeDef) ResolveFullName

func (a *AttributeDef) ResolveFullName() string

ResolveFullName returns the full name, using the short name if full name is empty.

func (*AttributeDef) Secondary

func (a *AttributeDef) Secondary() bool

Secondary returns true if the base value is a derived value.

func (*AttributeDef) SetID

func (a *AttributeDef) SetID(value string)

SetID sets the ID, sanitizing it in the process (i.e. it may be changed from what you set -- read it back if you want to be sure of what it gets set to.

func (*AttributeDef) UnmarshalJSON

func (a *AttributeDef) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type AttributeDefData

type AttributeDefData struct {
	DefID               string           `json:"id"`
	Type                AttributeType    `json:"type"`
	Name                string           `json:"name"`
	FullName            string           `json:"full_name,omitempty"`
	AttributeBase       string           `json:"attribute_base,omitempty"`
	CostPerPoint        fxp.Int          `json:"cost_per_point,omitempty"`
	CostAdjPercentPerSM fxp.Int          `json:"cost_adj_percent_per_sm,omitempty"`
	Thresholds          []*PoolThreshold `json:"thresholds,omitempty"`
}

AttributeDefData holds the data that will be serialized for the AttributeDef.

type AttributeDefs

type AttributeDefs struct {
	Set map[string]*AttributeDef
}

AttributeDefs holds a set of AttributeDef objects.

func AttributeDefsFor

func AttributeDefsFor(entity *Entity) *AttributeDefs

AttributeDefsFor returns the AttributeDefs for the given Entity, or the global settings if the Entity is nil.

func FactoryAttributeDefs

func FactoryAttributeDefs() *AttributeDefs

FactoryAttributeDefs returns the factory AttributeDef set.

func NewAttributeDefsFromFile

func NewAttributeDefsFromFile(fileSystem fs.FS, filePath string) (*AttributeDefs, error)

NewAttributeDefsFromFile loads an AttributeDef set from a file.

func (*AttributeDefs) CRC64

func (a *AttributeDefs) CRC64() uint64

CRC64 calculates a CRC-64 for this data.

func (*AttributeDefs) Clone

func (a *AttributeDefs) Clone() *AttributeDefs

Clone a copy of this.

func (*AttributeDefs) List

func (a *AttributeDefs) List(omitSeparators bool) []*AttributeDef

List returns the map of AttributeDef objects as an ordered list.

func (*AttributeDefs) MarshalJSON

func (a *AttributeDefs) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*AttributeDefs) ResetTargetKeyPrefixes

func (a *AttributeDefs) ResetTargetKeyPrefixes(prefixProvider func() string)

ResetTargetKeyPrefixes assigns new key prefixes for all data within these AttributeDefs.

func (*AttributeDefs) Save

func (a *AttributeDefs) Save(filePath string) error

Save writes the AttributeDefs to the file as JSON.

func (*AttributeDefs) UnmarshalJSON

func (a *AttributeDefs) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type AttributeDifficulty

type AttributeDifficulty struct {
	Attribute  string
	Difficulty Difficulty
	// contains filtered or unexported fields
}

AttributeDifficulty holds an attribute ID and a difficulty.

func (*AttributeDifficulty) Description

func (a *AttributeDifficulty) Description(entity *Entity) string

Description returns a formatted description.

func (*AttributeDifficulty) Key

func (a *AttributeDifficulty) Key() string

Key returns the value that will be serialized.

func (*AttributeDifficulty) MarshalJSON

func (a *AttributeDifficulty) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*AttributeDifficulty) Normalize

func (a *AttributeDifficulty) Normalize(entity *Entity)

Normalize the data. Should be called after loading from disk or the user.

func (AttributeDifficulty) ShouldOmit

func (a AttributeDifficulty) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (*AttributeDifficulty) UnmarshalJSON

func (a *AttributeDifficulty) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type AttributeFlags

type AttributeFlags byte

AttributeFlags provides flags that can be set to extend the defined attribute choice list.

const (
	BlankFlag AttributeFlags = 1 << iota
	TenFlag
	SizeFlag
	DodgeFlag
	ParryFlag
	BlockFlag
	SkillFlag
)

Possible AttributeFlags.

type AttributePrereq

type AttributePrereq struct {
	Parent            *PrereqList     `json:"-"`
	Type              PrereqType      `json:"type"`
	Has               bool            `json:"has"`
	CombinedWith      string          `json:"combined_with,omitempty"`
	QualifierCriteria NumericCriteria `json:"qualifier,omitempty"`
	Which             string          `json:"which"`
}

AttributePrereq holds a prerequisite for an attribute.

func NewAttributePrereq

func NewAttributePrereq(entity *Entity) *AttributePrereq

NewAttributePrereq creates a new AttributePrereq. 'entity' may be nil.

func (*AttributePrereq) ApplyNameableKeys

func (a *AttributePrereq) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Prereq.

func (*AttributePrereq) Clone

func (a *AttributePrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*AttributePrereq) FillWithNameableKeys

func (a *AttributePrereq) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Prereq.

func (*AttributePrereq) ParentList

func (a *AttributePrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*AttributePrereq) PrereqType

func (a *AttributePrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*AttributePrereq) Satisfied

func (a *AttributePrereq) Satisfied(entity *Entity, _ any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type AttributeType

type AttributeType byte

AttributeType holds the type of an attribute definition.

const (
	IntegerAttributeType AttributeType = iota
	IntegerRefAttributeType
	DecimalAttributeType
	DecimalRefAttributeType
	PoolAttributeType
	PrimarySeparatorAttributeType
	SecondarySeparatorAttributeType
	PoolSeparatorAttributeType
	LastAttributeType = PoolSeparatorAttributeType
)

Possible values.

func ExtractAttributeType

func ExtractAttributeType(str string) AttributeType

ExtractAttributeType extracts the value from a string.

func (AttributeType) EnsureValid

func (enum AttributeType) EnsureValid() AttributeType

EnsureValid ensures this is of a known value.

func (AttributeType) Key

func (enum AttributeType) Key() string

Key returns the key used in serialization.

func (AttributeType) MarshalText

func (enum AttributeType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (AttributeType) String

func (enum AttributeType) String() string

String implements fmt.Stringer.

func (*AttributeType) UnmarshalText

func (enum *AttributeType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Attributes

type Attributes struct {
	Set map[string]*Attribute
}

Attributes holds a set of Attribute objects.

func NewAttributes

func NewAttributes(entity *Entity) *Attributes

NewAttributes creates a new Attributes.

func (*Attributes) CRC64

func (a *Attributes) CRC64() uint64

CRC64 calculates a CRC-64 for this data.

func (*Attributes) Clone

func (a *Attributes) Clone(entity *Entity) *Attributes

Clone a copy of this.

func (*Attributes) Cost

func (a *Attributes) Cost(attrID string) fxp.Int

Cost returns the points spent for the specified Attribute.

func (*Attributes) Current

func (a *Attributes) Current(attrID string) fxp.Int

Current resolves the given attribute ID to its current value, or fxp.Min.

func (*Attributes) List

func (a *Attributes) List() []*Attribute

List returns the map of Attribute objects as an ordered list.

func (*Attributes) MarshalJSON

func (a *Attributes) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Attributes) Maximum

func (a *Attributes) Maximum(attrID string) fxp.Int

Maximum resolves the given attribute ID to its maximum value, or fxp.Min.

func (*Attributes) PoolThreshold

func (a *Attributes) PoolThreshold(attrID, state string) fxp.Int

PoolThreshold resolves the given attribute ID and state to the value for its pool threshold, or fxp.Min.

func (*Attributes) UnmarshalJSON

func (a *Attributes) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type Binding

type Binding struct {
	ID         string
	KeyBinding unison.KeyBinding
	Action     *unison.Action
}

Binding holds a single key binding.

func CurrentBindings

func CurrentBindings() []*Binding

CurrentBindings returns a sorted list with the current bindings.

type BlockLayout

type BlockLayout struct {
	Layout []string
}

BlockLayout holds the sheet's block layout.

func NewBlockLayout

func NewBlockLayout() *BlockLayout

NewBlockLayout creates a new default BlockLayout.

func NewBlockLayoutFromString

func NewBlockLayoutFromString(str string) (blockLayout *BlockLayout, inputWasValid bool)

NewBlockLayoutFromString creates a new BlockLayout from an input string.

func (*BlockLayout) ByRow

func (b *BlockLayout) ByRow() [][]string

ByRow breaks the layout down into rows.

func (*BlockLayout) Clone

func (b *BlockLayout) Clone() *BlockLayout

Clone this data.

func (*BlockLayout) EnsureValidity

func (b *BlockLayout) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

func (*BlockLayout) HTMLGridTemplate

func (b *BlockLayout) HTMLGridTemplate() string

HTMLGridTemplate returns the text for the HTML grid layout.

func (*BlockLayout) MarshalJSON

func (b *BlockLayout) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*BlockLayout) Reset

func (b *BlockLayout) Reset()

Reset returns the BlockLayout to factory settings.

func (*BlockLayout) String

func (b *BlockLayout) String() string

func (*BlockLayout) UnmarshalJSON

func (b *BlockLayout) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type Body

type Body struct {
	Name      string         `json:"name,omitempty"`
	Roll      *dice.Dice     `json:"roll"`
	Locations []*HitLocation `json:"locations,omitempty"`
	KeyPrefix string         `json:"-"`
	// contains filtered or unexported fields
}

Body holds a set of hit locations.

func BodyFor

func BodyFor(entity *Entity) *Body

BodyFor returns the Body for the given Entity, or the global settings if the Entity is nil.

func FactoryBody

func FactoryBody() *Body

FactoryBody returns a new copy of the default factory Body.

func NewBodyFromFile

func NewBodyFromFile(fileSystem fs.FS, filePath string) (*Body, error)

NewBodyFromFile loads a Body from a file.

func (*Body) AddLocation

func (b *Body) AddLocation(loc *HitLocation)

AddLocation adds a HitLocation to the end of list.

func (*Body) CRC64

func (b *Body) CRC64() uint64

CRC64 calculates a CRC-64 for this data.

func (*Body) Clone

func (b *Body) Clone(entity *Entity, owningLocation *HitLocation) *Body

Clone a copy of this.

func (*Body) LookupLocationByID

func (b *Body) LookupLocationByID(entity *Entity, idStr string) *HitLocation

LookupLocationByID returns the HitLocation that matches the given ID.

func (*Body) OwningLocation

func (b *Body) OwningLocation() *HitLocation

OwningLocation returns the owning hit location, or nil if this is the top-level body.

func (*Body) RemoveLocation

func (b *Body) RemoveLocation(loc *HitLocation)

RemoveLocation removes a HitLocation.

func (*Body) ResetTargetKeyPrefixes

func (b *Body) ResetTargetKeyPrefixes(prefixProvider func() string)

ResetTargetKeyPrefixes assigns new key prefixes for all data within this Body.

func (*Body) Rewrap

func (b *Body) Rewrap()

Rewrap the description field. Should only be called for older data (prior to noNeedForRewrapVersion)

func (*Body) Save

func (b *Body) Save(filePath string) error

Save writes the Body to the file as JSON.

func (*Body) SetOwningLocation

func (b *Body) SetOwningLocation(loc *HitLocation)

SetOwningLocation sets the owning HitLocation.

func (*Body) UniqueHitLocations

func (b *Body) UniqueHitLocations(entity *Entity) []*HitLocation

UniqueHitLocations returns the list of unique hit locations.

func (*Body) Update

func (b *Body) Update(entity *Entity)

Update the role ranges and populate the lookup map.

type Bonus

type Bonus interface {
	Feature
	// Owner returns the owner that is currently set.
	Owner() fmt.Stringer
	// SetOwner sets the owner to use.
	SetOwner(owner fmt.Stringer)
	// SetLevel sets the level.
	SetLevel(level fxp.Int)
	// AdjustedAmount returns the amount, adjusted for level, if requested.
	AdjustedAmount() fxp.Int
	// AddToTooltip adds this Bonus's details to the tooltip. 'buffer' may be nil.
	AddToTooltip(buffer *xio.ByteBuffer)
}

Bonus is an extension of a Feature, which provides a numerical bonus or penalty.

type BonusLimitation

type BonusLimitation byte

BonusLimitation holds a limitation for an AttributeBonus.

const (
	NoneBonusLimitation BonusLimitation = iota
	StrikingOnlyBonusLimitation
	LiftingOnlyBonusLimitation
	ThrowingOnlyBonusLimitation
	LastBonusLimitation = ThrowingOnlyBonusLimitation
)

Possible values.

func ExtractBonusLimitation

func ExtractBonusLimitation(str string) BonusLimitation

ExtractBonusLimitation extracts the value from a string.

func (BonusLimitation) EnsureValid

func (enum BonusLimitation) EnsureValid() BonusLimitation

EnsureValid ensures this is of a known value.

func (BonusLimitation) Key

func (enum BonusLimitation) Key() string

Key returns the key used in serialization.

func (BonusLimitation) MarshalText

func (enum BonusLimitation) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (BonusLimitation) String

func (enum BonusLimitation) String() string

String implements fmt.Stringer.

func (*BonusLimitation) UnmarshalText

func (enum *BonusLimitation) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type CalendarRef

type CalendarRef struct {
	Name     string
	Calendar *calendar.Calendar
}

CalendarRef holds a named reference to a calendar.

func LookupCalendarRef

func LookupCalendarRef(name string, libraries Libraries) *CalendarRef

LookupCalendarRef a CalendarRef by name.

func NewCalendarRefFromFS

func NewCalendarRefFromFS(fileSystem fs.FS, filePath string) (*CalendarRef, error)

NewCalendarRefFromFS creates a new CalendarRef from a file.

func (*CalendarRef) RandomBirthday

func (c *CalendarRef) RandomBirthday(not string) string

RandomBirthday generates a random birthday month and day.

type CellData

type CellData struct {
	Type              CellType
	Disabled          bool
	Dim               bool
	Checked           bool
	Alignment         unison.Alignment
	Primary           string
	Secondary         string
	Tooltip           string
	UnsatisfiedReason string
	TemplateInfo      string
}

CellData holds data for creating a cell's visual representation.

func (*CellData) ForSort

func (c *CellData) ForSort() string

ForSort returns a string that can be used to sort or search against for this data.

type CellType

type CellType byte

CellType holds the type of table cell.

const (
	TextCellType CellType = iota
	TagsCellType
	ToggleCellType
	PageRefCellType
	MarkdownCellType
	LastCellType = MarkdownCellType
)

Possible values.

func ExtractCellType

func ExtractCellType(str string) CellType

ExtractCellType extracts the value from a string.

func (CellType) EnsureValid

func (enum CellType) EnsureValid() CellType

EnsureValid ensures this is of a known value.

func (CellType) Key

func (enum CellType) Key() string

Key returns the key used in serialization.

func (CellType) MarshalText

func (enum CellType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (CellType) String

func (enum CellType) String() string

String implements fmt.Stringer.

func (*CellType) UnmarshalText

func (enum *CellType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type CollegeList

type CollegeList []string

CollegeList holds a list of college names. This exists solely due to legacy file formats that stored this as a single string with ' or ' or '/' separating the colleges. We need to be able to load both types.

func (*CollegeList) UnmarshalJSON

func (c *CollegeList) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type Colors

type Colors struct {
	// contains filtered or unexported fields
}

Colors holds a set of themed colors.

func NewColorsFromFS

func NewColorsFromFS(fileSystem fs.FS, filePath string) (*Colors, error)

NewColorsFromFS creates a new set of colors from a file. Any missing values will be filled in with defaults.

func (*Colors) MakeCurrent

func (c *Colors) MakeCurrent()

MakeCurrent applies these colors to the current theme color set and updates all windows.

func (*Colors) MarshalJSON

func (c *Colors) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Colors) Reset

func (c *Colors) Reset()

Reset to factory defaults.

func (*Colors) ResetOne

func (c *Colors) ResetOne(id string)

ResetOne resets one color by ID to factory defaults.

func (*Colors) Save

func (c *Colors) Save(filePath string) error

Save writes the Colors to the file as JSON.

func (*Colors) UnmarshalJSON

func (c *Colors) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type ConditionalModifier

type ConditionalModifier struct {
	ID      uuid.UUID
	From    string
	Amounts []fxp.Int
	Sources []string
}

ConditionalModifier holds data for a reaction or conditional modifier.

func NewConditionalModifier

func NewConditionalModifier(source, from string, amt fxp.Int) *ConditionalModifier

NewConditionalModifier creates a new ConditionalModifier.

func (*ConditionalModifier) Add

func (m *ConditionalModifier) Add(source string, amt fxp.Int)

Add another source.

func (*ConditionalModifier) ApplyNameableKeys

func (m *ConditionalModifier) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*ConditionalModifier) CellData

func (m *ConditionalModifier) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*ConditionalModifier) Clone

Clone implements Node.

func (*ConditionalModifier) Container

func (m *ConditionalModifier) Container() bool

Container returns true if this is a container.

func (*ConditionalModifier) Enabled

func (m *ConditionalModifier) Enabled() bool

Enabled returns true if this node is enabled.

func (*ConditionalModifier) FillWithNameableKeys

func (m *ConditionalModifier) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*ConditionalModifier) HasChildren

func (m *ConditionalModifier) HasChildren() bool

HasChildren returns true if this node has children.

func (*ConditionalModifier) Kind

func (m *ConditionalModifier) Kind() string

Kind returns the kind of data.

func (*ConditionalModifier) Less

Less returns true if this should be sorted above the other.

func (*ConditionalModifier) NodeChildren

func (m *ConditionalModifier) NodeChildren() []*ConditionalModifier

NodeChildren returns the children of this node, if any.

func (*ConditionalModifier) Open

func (m *ConditionalModifier) Open() bool

Open returns true if this node is currently open.

func (*ConditionalModifier) OwningEntity

func (m *ConditionalModifier) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*ConditionalModifier) Parent

Parent returns the parent.

func (*ConditionalModifier) SetChildren

func (m *ConditionalModifier) SetChildren(_ []*ConditionalModifier)

SetChildren sets the children of this node.

func (*ConditionalModifier) SetOpen

func (m *ConditionalModifier) SetOpen(_ bool)

SetOpen sets the current open state for this node.

func (*ConditionalModifier) SetOwningEntity

func (m *ConditionalModifier) SetOwningEntity(_ *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*ConditionalModifier) SetParent

func (m *ConditionalModifier) SetParent(_ *ConditionalModifier)

SetParent sets the parent.

func (*ConditionalModifier) String

func (m *ConditionalModifier) String() string

func (*ConditionalModifier) Total

func (m *ConditionalModifier) Total() fxp.Int

Total returns the total of all amounts.

func (*ConditionalModifier) UUID

func (m *ConditionalModifier) UUID() uuid.UUID

UUID returns the UUID of this data.

type ConditionalModifierBonus

type ConditionalModifierBonus struct {
	Type      FeatureType `json:"type"`
	Situation string      `json:"situation,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

ConditionalModifierBonus holds the data for a conditional modifier bonus.

func NewConditionalModifierBonus

func NewConditionalModifierBonus() *ConditionalModifierBonus

NewConditionalModifierBonus creates a new ConditionalModifierBonus.

func (*ConditionalModifierBonus) AddToTooltip

func (c *ConditionalModifierBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*ConditionalModifierBonus) ApplyNameableKeys

func (c *ConditionalModifierBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*ConditionalModifierBonus) Clone

func (c *ConditionalModifierBonus) Clone() Feature

Clone implements Feature.

func (*ConditionalModifierBonus) FeatureType

func (c *ConditionalModifierBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*ConditionalModifierBonus) FillWithNameableKeys

func (c *ConditionalModifierBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*ConditionalModifierBonus) Owner

Owner implements Bonus.

func (*ConditionalModifierBonus) SetLevel

func (c *ConditionalModifierBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*ConditionalModifierBonus) SetOwner

func (c *ConditionalModifierBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type ConditionalModifierListProvider

type ConditionalModifierListProvider interface {
	EntityProvider
	ConditionalModifiers() []*ConditionalModifier
}

ConditionalModifierListProvider defines the method needed to access the conditional modifier list data.

type ContainedQuantityPrereq

type ContainedQuantityPrereq struct {
	Parent            *PrereqList     `json:"-"`
	Type              PrereqType      `json:"type"`
	Has               bool            `json:"has"`
	QualifierCriteria NumericCriteria `json:"qualifier,omitempty"`
}

ContainedQuantityPrereq holds a prerequisite for an equipment contained quantity.

func NewContainedQuantityPrereq

func NewContainedQuantityPrereq() *ContainedQuantityPrereq

NewContainedQuantityPrereq creates a new ContainedQuantityPrereq.

func (*ContainedQuantityPrereq) ApplyNameableKeys

func (c *ContainedQuantityPrereq) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Prereq.

func (*ContainedQuantityPrereq) Clone

func (c *ContainedQuantityPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*ContainedQuantityPrereq) FillWithNameableKeys

func (c *ContainedQuantityPrereq) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Prereq.

func (*ContainedQuantityPrereq) ParentList

func (c *ContainedQuantityPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*ContainedQuantityPrereq) PrereqType

func (c *ContainedQuantityPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*ContainedQuantityPrereq) Satisfied

func (c *ContainedQuantityPrereq) Satisfied(_ *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type ContainedWeightPrereq

type ContainedWeightPrereq struct {
	Parent         *PrereqList    `json:"-"`
	Type           PrereqType     `json:"type"`
	Has            bool           `json:"has"`
	WeightCriteria WeightCriteria `json:"qualifier,omitempty"`
}

ContainedWeightPrereq holds a prerequisite for an equipment contained weight.

func NewContainedWeightPrereq

func NewContainedWeightPrereq(entity *Entity) *ContainedWeightPrereq

NewContainedWeightPrereq creates a new ContainedWeightPrereq.

func (*ContainedWeightPrereq) ApplyNameableKeys

func (c *ContainedWeightPrereq) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Prereq.

func (*ContainedWeightPrereq) Clone

func (c *ContainedWeightPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*ContainedWeightPrereq) FillWithNameableKeys

func (c *ContainedWeightPrereq) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Prereq.

func (*ContainedWeightPrereq) ParentList

func (c *ContainedWeightPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*ContainedWeightPrereq) PrereqType

func (c *ContainedWeightPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*ContainedWeightPrereq) Satisfied

func (c *ContainedWeightPrereq) Satisfied(entity *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type ContainedWeightReduction

type ContainedWeightReduction struct {
	Type      FeatureType `json:"type"`
	Reduction string      `json:"reduction"`
}

ContainedWeightReduction holds the data for a weight reduction that can be applied to a container's contents.

func NewContainedWeightReduction

func NewContainedWeightReduction() *ContainedWeightReduction

NewContainedWeightReduction creates a new ContainedWeightReduction.

func (*ContainedWeightReduction) ApplyNameableKeys

func (c *ContainedWeightReduction) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Feature.

func (*ContainedWeightReduction) Clone

func (c *ContainedWeightReduction) Clone() Feature

Clone implements Feature.

func (*ContainedWeightReduction) FeatureType

func (c *ContainedWeightReduction) FeatureType() FeatureType

FeatureType implements Feature.

func (*ContainedWeightReduction) FillWithNameableKeys

func (c *ContainedWeightReduction) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Feature.

func (*ContainedWeightReduction) FixedReduction

func (c *ContainedWeightReduction) FixedReduction(defUnits WeightUnits) Weight

FixedReduction returns the fixed amount the weight should be reduced by. Will return 0 if this is a percentage.

func (*ContainedWeightReduction) IsPercentageReduction

func (c *ContainedWeightReduction) IsPercentageReduction() bool

IsPercentageReduction returns true if this is a percentage reduction and not a fixed amount.

func (*ContainedWeightReduction) PercentageReduction

func (c *ContainedWeightReduction) PercentageReduction() fxp.Int

PercentageReduction returns the percentage (where 1% is 1, not 0.01) the weight should be reduced by. Will return 0 if this is not a percentage.

type ContainerBase

type ContainerBase[T NodeTypes] struct {
	ID       uuid.UUID `json:"id"`
	Type     string    `json:"type"`
	IsOpen   bool      `json:"open,omitempty"`     // Container only
	Children []T       `json:"children,omitempty"` // Container only
	// contains filtered or unexported fields
}

ContainerBase holds the type and ID of the data.

func (*ContainerBase[T]) Container

func (c *ContainerBase[T]) Container() bool

Container returns true if this is a container.

func (*ContainerBase[T]) HasChildren

func (c *ContainerBase[T]) HasChildren() bool

HasChildren returns true if this node has children.

func (*ContainerBase[T]) NodeChildren

func (c *ContainerBase[T]) NodeChildren() []T

NodeChildren returns the children of this node, if any.

func (*ContainerBase[T]) Open

func (c *ContainerBase[T]) Open() bool

Open returns true if this node is currently open.

func (*ContainerBase[T]) Parent

func (c *ContainerBase[T]) Parent() T

Parent returns the parent.

func (*ContainerBase[T]) SetChildren

func (c *ContainerBase[T]) SetChildren(children []T)

SetChildren sets the children of this node.

func (*ContainerBase[T]) SetOpen

func (c *ContainerBase[T]) SetOpen(open bool)

SetOpen sets the current open state for this node.

func (*ContainerBase[T]) SetParent

func (c *ContainerBase[T]) SetParent(parent T)

SetParent sets the parent.

func (*ContainerBase[T]) UUID

func (c *ContainerBase[T]) UUID() uuid.UUID

UUID returns the UUID of this data.

type ContainerType

type ContainerType byte

ContainerType holds the type of a trait container.

const (
	GroupContainerType ContainerType = iota
	MetaTraitContainerType
	RaceContainerType
	AlternativeAbilitiesContainerType
	LastContainerType = AlternativeAbilitiesContainerType
)

Possible values.

func ExtractContainerType

func ExtractContainerType(str string) ContainerType

ExtractContainerType extracts the value from a string.

func (ContainerType) EnsureValid

func (enum ContainerType) EnsureValid() ContainerType

EnsureValid ensures this is of a known value.

func (ContainerType) Key

func (enum ContainerType) Key() string

Key returns the key used in serialization.

func (ContainerType) MarshalText

func (enum ContainerType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (ContainerType) String

func (enum ContainerType) String() string

String implements fmt.Stringer.

func (*ContainerType) UnmarshalText

func (enum *ContainerType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type CostReduction

type CostReduction struct {
	Type       FeatureType `json:"type"`
	Attribute  string      `json:"attribute,omitempty"`
	Percentage fxp.Int     `json:"percentage,omitempty"`
}

CostReduction holds the data for a cost reduction.

func NewCostReduction

func NewCostReduction(attrID string) *CostReduction

NewCostReduction creates a new CostReduction.

func (*CostReduction) ApplyNameableKeys

func (c *CostReduction) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Feature.

func (*CostReduction) Clone

func (c *CostReduction) Clone() Feature

Clone implements Feature.

func (*CostReduction) FeatureType

func (c *CostReduction) FeatureType() FeatureType

FeatureType implements Feature.

func (*CostReduction) FillWithNameableKeys

func (c *CostReduction) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Feature.

type DRBonus

type DRBonus struct {
	DRBonusData
	// contains filtered or unexported fields
}

DRBonus holds the data for a DR adjustment.

func NewDRBonus

func NewDRBonus() *DRBonus

NewDRBonus creates a new DRBonus.

func (*DRBonus) AddToTooltip

func (d *DRBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*DRBonus) ApplyNameableKeys

func (d *DRBonus) ApplyNameableKeys(_ map[string]string)

ApplyNameableKeys implements Feature.

func (*DRBonus) Clone

func (d *DRBonus) Clone() Feature

Clone implements Feature.

func (*DRBonus) FeatureType

func (d *DRBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*DRBonus) FillWithNameableKeys

func (d *DRBonus) FillWithNameableKeys(_ map[string]string)

FillWithNameableKeys implements Feature.

func (*DRBonus) MarshalJSON

func (d *DRBonus) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*DRBonus) Normalize

func (d *DRBonus) Normalize()

Normalize adjusts the data to it preferred representation.

func (*DRBonus) Owner

func (d *DRBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*DRBonus) SetLevel

func (d *DRBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*DRBonus) SetOwner

func (d *DRBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

func (*DRBonus) UnmarshalJSON

func (d *DRBonus) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type DRBonusData

type DRBonusData struct {
	Type           FeatureType `json:"type"`
	Location       string      `json:"location"`
	Specialization string      `json:"specialization,omitempty"`
	LeveledAmount
}

DRBonusData is split out so that it can be adjusted before and after being serialized.

type DamageProgression

type DamageProgression byte

DamageProgression controls how Thrust and Swing are calculated.

const (
	BasicSet DamageProgression = iota
	KnowingYourOwnStrength
	NoSchoolGrognardDamage
	ThrustEqualsSwingMinus2
	SwingEqualsThrustPlus2
	PhoenixFlameD3
	LastDamageProgression = PhoenixFlameD3
)

Possible values.

func ExtractDamageProgression

func ExtractDamageProgression(str string) DamageProgression

ExtractDamageProgression extracts the value from a string.

func (DamageProgression) AltString

func (enum DamageProgression) AltString() string

AltString returns the alternate string.

func (DamageProgression) EnsureValid

func (enum DamageProgression) EnsureValid() DamageProgression

EnsureValid ensures this is of a known value.

func (DamageProgression) Key

func (enum DamageProgression) Key() string

Key returns the key used in serialization.

func (DamageProgression) MarshalText

func (enum DamageProgression) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (DamageProgression) String

func (enum DamageProgression) String() string

String implements fmt.Stringer.

func (DamageProgression) Swing

func (enum DamageProgression) Swing(strength int) *dice.Dice

Swing returns the swing damage for the given strength.

func (DamageProgression) Thrust

func (enum DamageProgression) Thrust(strength int) *dice.Dice

Thrust returns the thrust damage for the given strength.

func (DamageProgression) Tooltip

func (enum DamageProgression) Tooltip() string

Tooltip returns the tooltip for the DamageProgression.

func (*DamageProgression) UnmarshalText

func (enum *DamageProgression) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Difficulty

type Difficulty byte

Difficulty holds the difficulty level of a skill.

const (
	Easy Difficulty = iota
	Average
	Hard
	VeryHard
	Wildcard
	LastDifficulty = Wildcard
)

Possible values.

func ExtractDifficulty

func ExtractDifficulty(str string) Difficulty

ExtractDifficulty extracts the value from a string.

func (Difficulty) BaseRelativeLevel

func (enum Difficulty) BaseRelativeLevel() fxp.Int

BaseRelativeLevel returns the base relative skill level at 0 points.

func (Difficulty) EnsureValid

func (enum Difficulty) EnsureValid() Difficulty

EnsureValid ensures this is of a known value.

func (Difficulty) Key

func (enum Difficulty) Key() string

Key returns the key used in serialization.

func (Difficulty) MarshalText

func (enum Difficulty) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (Difficulty) String

func (enum Difficulty) String() string

String implements fmt.Stringer.

func (*Difficulty) UnmarshalText

func (enum *Difficulty) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type DisplayOption

type DisplayOption byte

DisplayOption holds a display option.

const (
	NotShownDisplayOption DisplayOption = iota
	InlineDisplayOption
	TooltipDisplayOption
	InlineAndTooltipDisplayOption
	LastDisplayOption = InlineAndTooltipDisplayOption
)

Possible values.

func ExtractDisplayOption

func ExtractDisplayOption(str string) DisplayOption

ExtractDisplayOption extracts the value from a string.

func (DisplayOption) EnsureValid

func (enum DisplayOption) EnsureValid() DisplayOption

EnsureValid ensures this is of a known value.

func (DisplayOption) Inline

func (enum DisplayOption) Inline() bool

Inline returns true if inline notes should be shown.

func (DisplayOption) Key

func (enum DisplayOption) Key() string

Key returns the key used in serialization.

func (DisplayOption) MarshalText

func (enum DisplayOption) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (DisplayOption) String

func (enum DisplayOption) String() string

String implements fmt.Stringer.

func (DisplayOption) Tooltip

func (enum DisplayOption) Tooltip() bool

Tooltip returns true if tooltips should be shown.

func (*DisplayOption) UnmarshalText

func (enum *DisplayOption) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type EditorData

type EditorData[T NodeTypes] interface {
	// CopyFrom copies the corresponding data from the node into this editor data.
	CopyFrom(T)
	// ApplyTo copes he editor data into the provided node.
	ApplyTo(T)
}

EditorData defines the methods required of editor data.

type Encumbrance

type Encumbrance byte

Encumbrance holds the encumbrance level.

const (
	NoEncumbrance Encumbrance = iota
	LightEncumbrance
	MediumEncumbrance
	HeavyEncumbrance
	ExtraHeavyEncumbrance
	LastEncumbrance = ExtraHeavyEncumbrance
)

Possible values.

func ExtractEncumbrance

func ExtractEncumbrance(str string) Encumbrance

ExtractEncumbrance extracts the value from a string.

func (Encumbrance) EnsureValid

func (enum Encumbrance) EnsureValid() Encumbrance

EnsureValid ensures this is of a known value.

func (Encumbrance) Key

func (enum Encumbrance) Key() string

Key returns the key used in serialization.

func (Encumbrance) MarshalText

func (enum Encumbrance) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (Encumbrance) Penalty

func (enum Encumbrance) Penalty() fxp.Int

Penalty returns the penalty associated with the Encumbrance level.

func (Encumbrance) String

func (enum Encumbrance) String() string

String implements fmt.Stringer.

func (*Encumbrance) UnmarshalText

func (enum *Encumbrance) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (Encumbrance) WeightMultiplier

func (enum Encumbrance) WeightMultiplier() fxp.Int

WeightMultiplier returns the weight multiplier associated with the Encumbrance level.

type Entity

type Entity struct {
	EntityData
	LiftingStrengthBonus  fxp.Int
	StrikingStrengthBonus fxp.Int
	ThrowingStrengthBonus fxp.Int
	DodgeBonus            fxp.Int
	ParryBonus            fxp.Int
	BlockBonus            fxp.Int
	// contains filtered or unexported fields
}

Entity holds the base information for various types of entities: PC, NPC, Creature, etc.

func NewEntity

func NewEntity(entityType EntityType) *Entity

NewEntity creates a new Entity.

func NewEntityFromFile

func NewEntityFromFile(fileSystem fs.FS, filePath string) (*Entity, error)

NewEntityFromFile loads an Entity from a file.

func (*Entity) AddDRBonusesFor

func (e *Entity) AddDRBonusesFor(locationID string, tooltip *xio.ByteBuffer, drMap map[string]int) map[string]int

AddDRBonusesFor locates any active DR bonuses and adds them to the map. If 'drMap' is nil, it will be created. The provided map (or the newly created one) will be returned.

func (*Entity) AddNamedWeaponBonusesFor

func (e *Entity) AddNamedWeaponBonusesFor(nameQualifier, usageQualifier string, tagsQualifier []string, dieCount int, levels fxp.Int, tooltip *xio.ByteBuffer, m map[*WeaponBonus]bool) map[*WeaponBonus]bool

AddNamedWeaponBonusesFor adds the bonuses for matching weapons that match to the map. If 'm' is nil, it will be created. The provided map (or the newly created one) will be returned.

func (*Entity) AddWeaponWithSkillBonusesFor

func (e *Entity) AddWeaponWithSkillBonusesFor(name, specialization string, tags []string, dieCount int, levels fxp.Int, tooltip *xio.ByteBuffer, m map[*WeaponBonus]bool) map[*WeaponBonus]bool

AddWeaponWithSkillBonusesFor adds the bonuses for matching weapons that match to the map. If 'm' is nil, it will be created. The provided map (or the newly created one) will be returned.

func (*Entity) Ancestry

func (e *Entity) Ancestry() *Ancestry

Ancestry returns the current Ancestry.

func (*Entity) AttributeBonusFor

func (e *Entity) AttributeBonusFor(attributeID string, limitation BonusLimitation, tooltip *xio.ByteBuffer) fxp.Int

AttributeBonusFor returns the bonus for the given attribute.

func (*Entity) AttributePoints

func (e *Entity) AttributePoints() fxp.Int

AttributePoints returns the number of points spent on attributes.

func (*Entity) BaseSkill

func (e *Entity) BaseSkill(def *SkillDefault, requirePoints bool) *Skill

BaseSkill returns the best skill for the given default, or nil.

func (*Entity) BasicLift

func (e *Entity) BasicLift() Weight

BasicLift returns the entity's Basic Lift.

func (*Entity) BestSkillNamed

func (e *Entity) BestSkillNamed(name, specialization string, requirePoints bool, excludes map[string]bool) *Skill

BestSkillNamed returns the best skill that matches.

func (*Entity) CRC64

func (e *Entity) CRC64() uint64

CRC64 computes a CRC-64 value for the canonical disk format of the data. The ModifiedOn field is ignored for this calculation.

func (*Entity) CarriedEquipmentList

func (e *Entity) CarriedEquipmentList() []*Equipment

CarriedEquipmentList implements ListProvider

func (*Entity) CarryOnBack

func (e *Entity) CarryOnBack() Weight

CarryOnBack returns the carry on back value.

func (*Entity) ConditionalModifiers

func (e *Entity) ConditionalModifiers() []*ConditionalModifier

ConditionalModifiers returns the current set of conditional modifiers.

func (*Entity) CostReductionFor

func (e *Entity) CostReductionFor(attributeID string) fxp.Int

CostReductionFor returns the total cost reduction for the given ID.

func (*Entity) DiscardCaches

func (e *Entity) DiscardCaches()

DiscardCaches discards the internal caches.

func (*Entity) Dodge

func (e *Entity) Dodge(enc Encumbrance) int

Dodge returns the current Dodge value for the given Encumbrance.

func (*Entity) EncumbranceLevel

func (e *Entity) EncumbranceLevel(forSkills bool) Encumbrance

EncumbranceLevel returns the current Encumbrance level.

func (*Entity) Entity

func (e *Entity) Entity() *Entity

Entity implements EntityProvider.

func (*Entity) EquippedWeapons

func (e *Entity) EquippedWeapons(weaponType WeaponType) []*Weapon

EquippedWeapons returns a sorted list of equipped weapons.

func (*Entity) MarshalJSON

func (e *Entity) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Entity) MaximumCarry

func (e *Entity) MaximumCarry(encumbrance Encumbrance) Weight

MaximumCarry returns the maximum amount the Entity can carry for the specified encumbrance level.

func (*Entity) Move

func (e *Entity) Move(enc Encumbrance) int

Move returns the current Move value for the given Encumbrance.

func (*Entity) NamedWeaponSkillBonusesFor

func (e *Entity) NamedWeaponSkillBonusesFor(name, usage string, tags []string, tooltip *xio.ByteBuffer) []*SkillBonus

NamedWeaponSkillBonusesFor returns the bonuses for matching weapons.

func (*Entity) NoteList

func (e *Entity) NoteList() []*Note

NoteList implements ListProvider

func (*Entity) OneHandedLift

func (e *Entity) OneHandedLift() Weight

OneHandedLift returns the one-handed lift value.

func (*Entity) OtherEquipmentList

func (e *Entity) OtherEquipmentList() []*Equipment

OtherEquipmentList implements ListProvider

func (*Entity) PreservesUserDesc

func (e *Entity) PreservesUserDesc() bool

PreservesUserDesc returns true if the user description widget should be preserved when written to disk. Normally, only character sheets should return true for this.

func (*Entity) Reactions

func (e *Entity) Reactions() []*ConditionalModifier

Reactions returns the current set of reactions.

func (*Entity) Recalculate

func (e *Entity) Recalculate()

Recalculate the statistics.

func (*Entity) ResolveAttribute

func (e *Entity) ResolveAttribute(attrID string) *Attribute

ResolveAttribute resolves the given attribute ID to its Attribute, or nil.

func (*Entity) ResolveAttributeCurrent

func (e *Entity) ResolveAttributeCurrent(attrID string) fxp.Int

ResolveAttributeCurrent resolves the given attribute ID to its current value, or fxp.Min.

func (*Entity) ResolveAttributeDef

func (e *Entity) ResolveAttributeDef(attrID string) *AttributeDef

ResolveAttributeDef resolves the given attribute ID to its AttributeDef, or nil.

func (*Entity) ResolveAttributeName

func (e *Entity) ResolveAttributeName(attrID string) string

ResolveAttributeName resolves the given attribute ID to its name, or <unknown>.

func (*Entity) ResolveVariable

func (e *Entity) ResolveVariable(variableName string) string

ResolveVariable implements eval.VariableResolver.

func (*Entity) RunningShoveAndKnockOver

func (e *Entity) RunningShoveAndKnockOver() Weight

RunningShoveAndKnockOver returns the running shove & knock over value.

func (*Entity) Save

func (e *Entity) Save(filePath string) error

Save the Entity to a file as JSON.

func (*Entity) SetCarriedEquipmentList

func (e *Entity) SetCarriedEquipmentList(list []*Equipment)

SetCarriedEquipmentList implements ListProvider

func (*Entity) SetNoteList

func (e *Entity) SetNoteList(list []*Note)

SetNoteList implements ListProvider

func (*Entity) SetOtherEquipmentList

func (e *Entity) SetOtherEquipmentList(list []*Equipment)

SetOtherEquipmentList implements ListProvider

func (*Entity) SetPointsRecord

func (e *Entity) SetPointsRecord(record []*PointsRecord)

SetPointsRecord sets a new points record list, adjusting the total points.

func (*Entity) SetSkillList

func (e *Entity) SetSkillList(list []*Skill)

SetSkillList implements ListProvider

func (*Entity) SetSpellList

func (e *Entity) SetSpellList(list []*Spell)

SetSpellList implements ListProvider

func (*Entity) SetTraitList

func (e *Entity) SetTraitList(list []*Trait)

SetTraitList implements ListProvider

func (*Entity) SetUnspentPoints

func (e *Entity) SetUnspentPoints(unspent fxp.Int)

SetUnspentPoints sets the number of unspent points.

func (*Entity) SetWeapons

func (e *Entity) SetWeapons(_ WeaponType, _ []*Weapon)

SetWeapons implements WeaponListProvider.

func (*Entity) ShiftSlightly

func (e *Entity) ShiftSlightly() Weight

ShiftSlightly returns the shift slightly value.

func (*Entity) ShoveAndKnockOver

func (e *Entity) ShoveAndKnockOver() Weight

ShoveAndKnockOver returns the shove & knock over value.

func (*Entity) SkillBonusFor

func (e *Entity) SkillBonusFor(name, specialization string, tags []string, tooltip *xio.ByteBuffer) fxp.Int

SkillBonusFor returns the total bonus for the matching skill bonuses.

func (*Entity) SkillList

func (e *Entity) SkillList() []*Skill

SkillList implements ListProvider

func (*Entity) SkillNamed

func (e *Entity) SkillNamed(name, specialization string, requirePoints bool, excludes map[string]bool) []*Skill

SkillNamed returns a list of skills that match.

func (*Entity) SkillPointBonusFor

func (e *Entity) SkillPointBonusFor(name, specialization string, tags []string, tooltip *xio.ByteBuffer) fxp.Int

SkillPointBonusFor returns the total point bonus for the matching skill point bonuses.

func (*Entity) SkillPoints

func (e *Entity) SkillPoints() fxp.Int

SkillPoints returns the number of points spent on skills.

func (*Entity) SpellBonusFor

func (e *Entity) SpellBonusFor(name, powerSource string, colleges, tags []string, tooltip *xio.ByteBuffer) fxp.Int

SpellBonusFor returns the total bonus for the matching spell bonuses.

func (*Entity) SpellList

func (e *Entity) SpellList() []*Spell

SpellList implements ListProvider

func (*Entity) SpellPointBonusFor

func (e *Entity) SpellPointBonusFor(name, powerSource string, colleges, tags []string, tooltip *xio.ByteBuffer) fxp.Int

SpellPointBonusFor returns the total point bonus for the matching spell point bonuses.

func (*Entity) SpellPoints

func (e *Entity) SpellPoints() fxp.Int

SpellPoints returns the number of points spent on spells.

func (*Entity) SpentPoints

func (e *Entity) SpentPoints() fxp.Int

SpentPoints returns the number of spent points.

func (*Entity) StrengthOrZero

func (e *Entity) StrengthOrZero() fxp.Int

StrengthOrZero returns the current ST value, or zero if no such attribute exists.

func (*Entity) Swing

func (e *Entity) Swing() *dice.Dice

Swing returns the swing value for the current strength.

func (*Entity) SwingFor

func (e *Entity) SwingFor(st int) *dice.Dice

SwingFor returns the swing value for the provided strength.

func (*Entity) Thrust

func (e *Entity) Thrust() *dice.Dice

Thrust returns the thrust value for the current strength.

func (*Entity) ThrustFor

func (e *Entity) ThrustFor(st int) *dice.Dice

ThrustFor returns the thrust value for the provided strength.

func (*Entity) TraitList

func (e *Entity) TraitList() []*Trait

TraitList implements ListProvider

func (*Entity) TraitPoints

func (e *Entity) TraitPoints() (ad, disad, race, quirk fxp.Int)

TraitPoints returns the number of points spent on traits.

func (*Entity) TwoHandedLift

func (e *Entity) TwoHandedLift() Weight

TwoHandedLift returns the two-handed lift value.

func (*Entity) UnmarshalJSON

func (e *Entity) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Entity) UnspentPoints

func (e *Entity) UnspentPoints() fxp.Int

UnspentPoints returns the number of unspent points.

func (*Entity) UpdateSkills

func (e *Entity) UpdateSkills() bool

UpdateSkills updates the levels of all skills.

func (*Entity) UpdateSpells

func (e *Entity) UpdateSpells() bool

UpdateSpells updates the levels of all spells.

func (*Entity) WealthCarried

func (e *Entity) WealthCarried() fxp.Int

WealthCarried returns the current wealth being carried.

func (*Entity) WealthNotCarried

func (e *Entity) WealthNotCarried() fxp.Int

WealthNotCarried returns the current wealth not being carried.

func (*Entity) WeaponOwner

func (e *Entity) WeaponOwner() WeaponOwner

WeaponOwner implements WeaponListProvider. In the case of an Entity, always returns nil, as entities rely on sub-components for their weapons and don't allow them to be created directly.

func (*Entity) Weapons

func (e *Entity) Weapons(weaponType WeaponType) []*Weapon

Weapons implements WeaponListProvider.

func (*Entity) WeightCarried

func (e *Entity) WeightCarried(forSkills bool) Weight

WeightCarried returns the carried weight.

type EntityData

type EntityData struct {
	Type             EntityType      `json:"type"`
	Version          int             `json:"version"`
	ID               uuid.UUID       `json:"id"`
	TotalPoints      fxp.Int         `json:"total_points"`
	PointsRecord     []*PointsRecord `json:"points_record,omitempty"`
	Profile          *Profile        `json:"profile,omitempty"`
	SheetSettings    *SheetSettings  `json:"settings,omitempty"`
	Attributes       *Attributes     `json:"attributes,omitempty"`
	Traits           []*Trait        `json:"traits,alt=advantages,omitempty"`
	Skills           []*Skill        `json:"skills,omitempty"`
	Spells           []*Spell        `json:"spells,omitempty"`
	CarriedEquipment []*Equipment    `json:"equipment,omitempty"`
	OtherEquipment   []*Equipment    `json:"other_equipment,omitempty"`
	Notes            []*Note         `json:"notes,omitempty"`
	CreatedOn        jio.Time        `json:"created_date"`
	ModifiedOn       jio.Time        `json:"modified_date"`
	ThirdParty       map[string]any  `json:"third_party,omitempty"`
}

EntityData holds the Entity data that is written to disk.

type EntityProvider

type EntityProvider interface {
	Entity() *Entity
}

EntityProvider provides a way to retrieve a (possibly nil) Entity.

type EntityType

type EntityType byte

EntityType holds the type of an Entity.

const (
	PC             EntityType = iota
	LastEntityType            = PC
)

Possible values.

func ExtractEntityType

func ExtractEntityType(str string) EntityType

ExtractEntityType extracts the value from a string.

func (EntityType) EnsureValid

func (enum EntityType) EnsureValid() EntityType

EnsureValid ensures this is of a known value.

func (EntityType) Key

func (enum EntityType) Key() string

Key returns the key used in serialization.

func (EntityType) MarshalText

func (enum EntityType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (EntityType) String

func (enum EntityType) String() string

String implements fmt.Stringer.

func (*EntityType) UnmarshalText

func (enum *EntityType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Equipment

type Equipment struct {
	EquipmentData
	Entity            *Entity
	UnsatisfiedReason string
}

Equipment holds a piece of equipment.

func NewEquipment

func NewEquipment(entity *Entity, parent *Equipment, container bool) *Equipment

NewEquipment creates a new Equipment.

func NewEquipmentFromFile

func NewEquipmentFromFile(fileSystem fs.FS, filePath string) ([]*Equipment, error)

NewEquipmentFromFile loads an Equipment list from a file.

func (*Equipment) ActiveModifierFor

func (e *Equipment) ActiveModifierFor(name string) *EquipmentModifier

ActiveModifierFor returns the first modifier that matches the name (case-insensitive).

func (*Equipment) AdjustedValue

func (e *Equipment) AdjustedValue() fxp.Int

AdjustedValue returns the value after adjustments for any modifiers. Does not include the value of children.

func (*Equipment) AdjustedWeight

func (e *Equipment) AdjustedWeight(forSkills bool, defUnits WeightUnits) Weight

AdjustedWeight returns the weight after adjustments for any modifiers. Does not include the weight of children.

func (*Equipment) ApplyNameableKeys

func (e *Equipment) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*Equipment) CellData

func (e *Equipment) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Equipment) Clone

func (e *Equipment) Clone(entity *Entity, parent *Equipment, preserveID bool) *Equipment

Clone implements Node.

func (*Equipment) Depth

func (e *Equipment) Depth() int

Depth returns the number of parents this node has.

func (*Equipment) Description

func (e *Equipment) Description() string

Description returns a description.

func (*Equipment) DisplayLegalityClass

func (e *Equipment) DisplayLegalityClass() string

DisplayLegalityClass returns a display version of the LegalityClass.

func (*Equipment) Enabled

func (e *Equipment) Enabled() bool

Enabled returns true if this node is enabled.

func (*Equipment) ExtendedValue

func (e *Equipment) ExtendedValue() fxp.Int

ExtendedValue returns the extended value.

func (*Equipment) ExtendedWeight

func (e *Equipment) ExtendedWeight(forSkills bool, defUnits WeightUnits) Weight

ExtendedWeight returns the extended weight.

func (*Equipment) FeatureList

func (e *Equipment) FeatureList() Features

FeatureList returns the list of Features.

func (*Equipment) FillWithNameableKeys

func (e *Equipment) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*Equipment) MarshalJSON

func (e *Equipment) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Equipment) ModifierNotes

func (e *Equipment) ModifierNotes() string

ModifierNotes returns the notes due to modifiers.

func (*Equipment) Notes

func (e *Equipment) Notes() string

Notes returns the local notes.

func (*Equipment) OwningEntity

func (e *Equipment) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Equipment) RequiresTL

func (e *Equipment) RequiresTL() bool

RequiresTL implements TechLevelProvider.

func (*Equipment) SecondaryText

func (e *Equipment) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the "secondary" text: the text display below the description.

func (*Equipment) SetOwningEntity

func (e *Equipment) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Equipment) SetTL

func (e *Equipment) SetTL(tl string)

SetTL implements TechLevelProvider.

func (*Equipment) String

func (e *Equipment) String() string

String implements fmt.Stringer.

func (*Equipment) TL

func (e *Equipment) TL() string

TL implements TechLevelProvider.

func (*Equipment) TagList

func (e *Equipment) TagList() []string

TagList returns the list of tags.

func (*Equipment) UnmarshalJSON

func (e *Equipment) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type EquipmentData

type EquipmentData struct {
	ContainerBase[*Equipment]
	EquipmentEditData
}

EquipmentData holds the Equipment data that is written to disk.

func (*EquipmentData) ClearUnusedFieldsForType

func (d *EquipmentData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*EquipmentData) Kind

func (d *EquipmentData) Kind() string

Kind returns the kind of data.

type EquipmentEditData

type EquipmentEditData struct {
	Name                   string               `json:"description,omitempty"`
	PageRef                string               `json:"reference,omitempty"`
	LocalNotes             string               `json:"notes,omitempty"`
	VTTNotes               string               `json:"vtt_notes,omitempty"`
	TechLevel              string               `json:"tech_level,omitempty"`
	LegalityClass          string               `json:"legality_class,omitempty"`
	Tags                   []string             `json:"tags,omitempty"`
	Modifiers              []*EquipmentModifier `json:"modifiers,omitempty"`
	Quantity               fxp.Int              `json:"quantity,omitempty"`
	Value                  fxp.Int              `json:"value,omitempty"`
	Weight                 Weight               `json:"weight,omitempty"`
	MaxUses                int                  `json:"max_uses,omitempty"`
	Uses                   int                  `json:"uses,omitempty"`
	Prereq                 *PrereqList          `json:"prereqs,omitempty"`
	Weapons                []*Weapon            `json:"weapons,omitempty"`
	Features               Features             `json:"features,omitempty"`
	Equipped               bool                 `json:"equipped,omitempty"`
	WeightIgnoredForSkills bool                 `json:"ignore_weight_for_skills,omitempty"`
}

EquipmentEditData holds the Equipment data that can be edited by the UI detail editor.

func (*EquipmentEditData) ApplyTo

func (d *EquipmentEditData) ApplyTo(e *Equipment)

ApplyTo implements node.EditorData.

func (*EquipmentEditData) CopyFrom

func (d *EquipmentEditData) CopyFrom(e *Equipment)

CopyFrom implements node.EditorData.

type EquipmentListProvider

type EquipmentListProvider interface {
	EntityProvider
	CarriedEquipmentList() []*Equipment
	SetCarriedEquipmentList(list []*Equipment)
	OtherEquipmentList() []*Equipment
	SetOtherEquipmentList(list []*Equipment)
}

EquipmentListProvider defines the method needed to access the equipment list data.

type EquipmentModifier

type EquipmentModifier struct {
	EquipmentModifierData
	Entity *Entity
}

EquipmentModifier holds a modifier to a piece of Equipment.

func NewEquipmentModifier

func NewEquipmentModifier(entity *Entity, parent *EquipmentModifier, container bool) *EquipmentModifier

NewEquipmentModifier creates an EquipmentModifier.

func NewEquipmentModifiersFromFile

func NewEquipmentModifiersFromFile(fileSystem fs.FS, filePath string) ([]*EquipmentModifier, error)

NewEquipmentModifiersFromFile loads an EquipmentModifier list from a file.

func (*EquipmentModifier) ApplyNameableKeys

func (m *EquipmentModifier) ApplyNameableKeys(keyMap map[string]string)

ApplyNameableKeys replaces any nameable keys found in this EquipmentModifier with the corresponding values in the provided map.

func (*EquipmentModifier) CellData

func (m *EquipmentModifier) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*EquipmentModifier) Clone

func (m *EquipmentModifier) Clone(entity *Entity, parent *EquipmentModifier, preserveID bool) *EquipmentModifier

Clone implements Node.

func (*EquipmentModifier) CostDescription

func (m *EquipmentModifier) CostDescription() string

CostDescription returns the formatted cost.

func (*EquipmentModifier) Depth

func (m *EquipmentModifier) Depth() int

Depth returns the number of parents this node has.

func (*EquipmentModifier) Enabled

func (m *EquipmentModifier) Enabled() bool

Enabled returns true if this node is enabled.

func (*EquipmentModifier) FillWithNameableKeys

func (m *EquipmentModifier) FillWithNameableKeys(keyMap map[string]string)

FillWithNameableKeys adds any nameable keys found in this EquipmentModifier to the provided map.

func (*EquipmentModifier) FullCostDescription

func (m *EquipmentModifier) FullCostDescription() string

FullCostDescription returns a combination of the cost and weight descriptions.

func (*EquipmentModifier) FullDescription

func (m *EquipmentModifier) FullDescription() string

FullDescription returns a full description.

func (*EquipmentModifier) MarshalJSON

func (m *EquipmentModifier) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*EquipmentModifier) OwningEntity

func (m *EquipmentModifier) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*EquipmentModifier) SecondaryText

func (m *EquipmentModifier) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the "secondary" text: the text display below an Trait.

func (*EquipmentModifier) SetEnabled

func (m *EquipmentModifier) SetEnabled(enabled bool)

SetEnabled makes the node enabled, if possible.

func (*EquipmentModifier) SetOwningEntity

func (m *EquipmentModifier) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*EquipmentModifier) String

func (m *EquipmentModifier) String() string

func (*EquipmentModifier) TagList

func (m *EquipmentModifier) TagList() []string

TagList returns the list of tags.

func (*EquipmentModifier) UnmarshalJSON

func (m *EquipmentModifier) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*EquipmentModifier) WeightDescription

func (m *EquipmentModifier) WeightDescription() string

WeightDescription returns the formatted weight.

type EquipmentModifierCostType

type EquipmentModifierCostType byte

EquipmentModifierCostType describes how an Equipment Modifier's cost is applied.

const (
	OriginalEquipmentModifierCostType EquipmentModifierCostType = iota
	BaseEquipmentModifierCostType
	FinalBaseEquipmentModifierCostType
	FinalEquipmentModifierCostType
	LastEquipmentModifierCostType = FinalEquipmentModifierCostType
)

Possible values.

func ExtractEquipmentModifierCostType

func ExtractEquipmentModifierCostType(str string) EquipmentModifierCostType

ExtractEquipmentModifierCostType extracts the value from a string.

func (EquipmentModifierCostType) AltString

func (enum EquipmentModifierCostType) AltString() string

AltString returns the alternate string.

func (EquipmentModifierCostType) EnsureValid

EnsureValid ensures this is of a known value.

func (EquipmentModifierCostType) ExtractValue

func (enum EquipmentModifierCostType) ExtractValue(s string) fxp.Int

ExtractValue from the string.

func (EquipmentModifierCostType) Format

func (enum EquipmentModifierCostType) Format(s string) string

Format returns a formatted version of the value.

func (EquipmentModifierCostType) FromString

FromString examines a string to determine what type it is, but restricts the result to those allowed for this EquipmentModifierCostValueType.

func (EquipmentModifierCostType) Key

func (enum EquipmentModifierCostType) Key() string

Key returns the key used in serialization.

func (EquipmentModifierCostType) MarshalText

func (enum EquipmentModifierCostType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (EquipmentModifierCostType) Permitted

Permitted returns the permitted EquipmentModifierCostValueType values.

func (EquipmentModifierCostType) String

func (enum EquipmentModifierCostType) String() string

String implements fmt.Stringer.

func (EquipmentModifierCostType) StringWithExample

func (enum EquipmentModifierCostType) StringWithExample() string

StringWithExample returns an example along with the normal String() content.

func (*EquipmentModifierCostType) UnmarshalText

func (enum *EquipmentModifierCostType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type EquipmentModifierCostValueType

type EquipmentModifierCostValueType byte

EquipmentModifierCostValueType describes how an Equipment Modifier's cost value is applied.

const (
	AdditionEquipmentModifierCostValueType EquipmentModifierCostValueType = iota
	PercentageEquipmentModifierCostValueType
	MultiplierEquipmentModifierCostValueType
	CostFactorEquipmentModifierCostValueType
	LastEquipmentModifierCostValueType = CostFactorEquipmentModifierCostValueType
)

Possible values.

func ExtractEquipmentModifierCostValueType

func ExtractEquipmentModifierCostValueType(str string) EquipmentModifierCostValueType

ExtractEquipmentModifierCostValueType extracts the value from a string.

func (EquipmentModifierCostValueType) EnsureValid

EnsureValid ensures this is of a known value.

func (EquipmentModifierCostValueType) ExtractValue

func (enum EquipmentModifierCostValueType) ExtractValue(s string) fxp.Int

ExtractValue from the string.

func (EquipmentModifierCostValueType) Format

func (enum EquipmentModifierCostValueType) Format(value fxp.Int) string

Format returns a formatted version of the value.

func (EquipmentModifierCostValueType) FromString

FromString examines a string to determine what type it is.

func (EquipmentModifierCostValueType) Key

Key returns the key used in serialization.

func (EquipmentModifierCostValueType) MarshalText

func (enum EquipmentModifierCostValueType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (EquipmentModifierCostValueType) String

func (enum EquipmentModifierCostValueType) String() string

String implements fmt.Stringer.

func (*EquipmentModifierCostValueType) UnmarshalText

func (enum *EquipmentModifierCostValueType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type EquipmentModifierData

type EquipmentModifierData struct {
	ContainerBase[*EquipmentModifier]
	EquipmentModifierEditData
}

EquipmentModifierData holds the EquipmentModifier data that is written to disk.

func (*EquipmentModifierData) ClearUnusedFieldsForType

func (d *EquipmentModifierData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*EquipmentModifierData) Kind

func (d *EquipmentModifierData) Kind() string

Kind returns the kind of data.

type EquipmentModifierEditData

type EquipmentModifierEditData struct {
	Name         string                      `json:"name,omitempty"`
	PageRef      string                      `json:"reference,omitempty"`
	LocalNotes   string                      `json:"notes,omitempty"`
	VTTNotes     string                      `json:"vtt_notes,omitempty"`
	Tags         []string                    `json:"tags,omitempty"`
	CostType     EquipmentModifierCostType   `json:"cost_type,omitempty"`   // Non-container only
	WeightType   EquipmentModifierWeightType `json:"weight_type,omitempty"` // Non-container only
	Disabled     bool                        `json:"disabled,omitempty"`    // Non-container only
	TechLevel    string                      `json:"tech_level,omitempty"`  // Non-container only
	CostAmount   string                      `json:"cost,omitempty"`        // Non-container only
	WeightAmount string                      `json:"weight,omitempty"`      // Non-container only
	Features     Features                    `json:"features,omitempty"`    // Non-container only
}

EquipmentModifierEditData holds the EquipmentModifier data that can be edited by the UI detail editor.

func (*EquipmentModifierEditData) ApplyTo

ApplyTo implements node.EditorData.

func (*EquipmentModifierEditData) CopyFrom

func (d *EquipmentModifierEditData) CopyFrom(mod *EquipmentModifier)

CopyFrom implements node.EditorData.

type EquipmentModifierListProvider

type EquipmentModifierListProvider interface {
	EntityProvider
	EquipmentModifierList() []*EquipmentModifier
	SetEquipmentModifierList(list []*EquipmentModifier)
}

EquipmentModifierListProvider defines the method needed to access the equipment modifier list data.

type EquipmentModifierWeightType

type EquipmentModifierWeightType byte

EquipmentModifierWeightType describes how an Equipment Modifier's weight is applied.

const (
	OriginalEquipmentModifierWeightType EquipmentModifierWeightType = iota
	BaseEquipmentModifierWeightType
	FinalBaseEquipmentModifierWeightType
	FinalEquipmentModifierWeightType
	LastEquipmentModifierWeightType = FinalEquipmentModifierWeightType
)

Possible values.

func ExtractEquipmentModifierWeightType

func ExtractEquipmentModifierWeightType(str string) EquipmentModifierWeightType

ExtractEquipmentModifierWeightType extracts the value from a string.

func (EquipmentModifierWeightType) AltString

func (enum EquipmentModifierWeightType) AltString() string

AltString returns the alternate string.

func (EquipmentModifierWeightType) DetermineModifierWeightValueTypeFromString

func (enum EquipmentModifierWeightType) DetermineModifierWeightValueTypeFromString(s string) EquipmentModifierWeightValueType

DetermineModifierWeightValueTypeFromString examines a string to determine what type it is, but restricts the result to those allowed for this EquipmentModifierWeightType.

func (EquipmentModifierWeightType) EnsureValid

EnsureValid ensures this is of a known value.

func (EquipmentModifierWeightType) ExtractFraction

func (enum EquipmentModifierWeightType) ExtractFraction(s string) fxp.Fraction

ExtractFraction from the string.

func (EquipmentModifierWeightType) Format

func (enum EquipmentModifierWeightType) Format(s string, defUnits WeightUnits) string

Format returns a formatted version of the value.

func (EquipmentModifierWeightType) Key

Key returns the key used in serialization.

func (EquipmentModifierWeightType) MarshalText

func (enum EquipmentModifierWeightType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (EquipmentModifierWeightType) Permitted

Permitted returns the permitted EquipmentModifierCostValueType values.

func (EquipmentModifierWeightType) String

func (enum EquipmentModifierWeightType) String() string

String implements fmt.Stringer.

func (EquipmentModifierWeightType) StringWithExample

func (enum EquipmentModifierWeightType) StringWithExample() string

StringWithExample returns an example along with the normal String() content.

func (*EquipmentModifierWeightType) UnmarshalText

func (enum *EquipmentModifierWeightType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type EquipmentModifierWeightValueType

type EquipmentModifierWeightValueType byte

EquipmentModifierWeightValueType describes how an Equipment Modifier's weight value is applied.

const (
	AdditionEquipmentModifierWeightValueType EquipmentModifierWeightValueType = iota
	PercentageAdderEquipmentModifierWeightValueType
	PercentageMultiplierEquipmentModifierWeightValueType
	MultiplierEquipmentModifierWeightValueType
	LastEquipmentModifierWeightValueType = MultiplierEquipmentModifierWeightValueType
)

Possible values.

func ExtractEquipmentModifierWeightValueType

func ExtractEquipmentModifierWeightValueType(str string) EquipmentModifierWeightValueType

ExtractEquipmentModifierWeightValueType extracts the value from a string.

func (EquipmentModifierWeightValueType) EnsureValid

EnsureValid ensures this is of a known value.

func (EquipmentModifierWeightValueType) ExtractFraction

func (enum EquipmentModifierWeightValueType) ExtractFraction(s string) fxp.Fraction

ExtractFraction from the string.

func (EquipmentModifierWeightValueType) Format

func (enum EquipmentModifierWeightValueType) Format(fraction fxp.Fraction) string

Format returns a formatted version of the value.

func (EquipmentModifierWeightValueType) FromString

FromString examines a string to determine what type it is.

func (EquipmentModifierWeightValueType) Key

Key returns the key used in serialization.

func (EquipmentModifierWeightValueType) MarshalText

func (enum EquipmentModifierWeightValueType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (EquipmentModifierWeightValueType) String

String implements fmt.Stringer.

func (*EquipmentModifierWeightValueType) UnmarshalText

func (enum *EquipmentModifierWeightValueType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type EquippedEquipmentPrereq

type EquippedEquipmentPrereq struct {
	Parent       *PrereqList    `json:"-"`
	Type         PrereqType     `json:"type"`
	NameCriteria StringCriteria `json:"name,omitempty"`
}

EquippedEquipmentPrereq holds a prerequisite for an equipped piece of equipment.

func NewEquippedEquipmentPrereq

func NewEquippedEquipmentPrereq() *EquippedEquipmentPrereq

NewEquippedEquipmentPrereq creates a new EquippedEquipmentPrereq.

func (*EquippedEquipmentPrereq) ApplyNameableKeys

func (e *EquippedEquipmentPrereq) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Prereq.

func (*EquippedEquipmentPrereq) Clone

func (e *EquippedEquipmentPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*EquippedEquipmentPrereq) FillWithNameableKeys

func (e *EquippedEquipmentPrereq) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Prereq.

func (*EquippedEquipmentPrereq) ParentList

func (e *EquippedEquipmentPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*EquippedEquipmentPrereq) PrereqType

func (e *EquippedEquipmentPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*EquippedEquipmentPrereq) Satisfied

func (e *EquippedEquipmentPrereq) Satisfied(entity *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, hasEquipmentPenalty *bool) bool

Satisfied implements Prereq.

type ExportInfo

type ExportInfo struct {
	FilePath     string   `json:"file_path"`
	TemplatePath string   `json:"template_path"`
	ExportPath   string   `json:"export_path"`
	LastUsed     jio.Time `json:"last_used"`
}

ExportInfo holds information about a recent export so that it can be redone quickly.

type Feature

type Feature interface {
	Nameables
	FeatureType() FeatureType
	Clone() Feature
}

Feature holds data that affects another object.

type FeatureType

type FeatureType byte

FeatureType holds the type of a Feature.

const (
	AttributeBonusFeatureType FeatureType = iota
	ConditionalModifierFeatureType
	DRBonusFeatureType
	ReactionBonusFeatureType
	SkillBonusFeatureType
	SkillPointBonusFeatureType
	SpellBonusFeatureType
	SpellPointBonusFeatureType
	WeaponBonusFeatureType
	WeaponDRDivisorBonusFeatureType
	CostReductionFeatureType
	ContainedWeightReductionFeatureType
	LastFeatureType = ContainedWeightReductionFeatureType
)

Possible values.

func ExtractFeatureType

func ExtractFeatureType(str string) FeatureType

ExtractFeatureType extracts the value from a string.

func (FeatureType) EnsureValid

func (enum FeatureType) EnsureValid() FeatureType

EnsureValid ensures this is of a known value.

func (FeatureType) Key

func (enum FeatureType) Key() string

Key returns the key used in serialization.

func (FeatureType) MarshalText

func (enum FeatureType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (FeatureType) String

func (enum FeatureType) String() string

String implements fmt.Stringer.

func (*FeatureType) UnmarshalText

func (enum *FeatureType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Features

type Features []Feature

Features holds a list of features.

func (Features) Clone

func (f Features) Clone() Features

Clone creates a copy of the features.

func (*Features) UnmarshalJSON

func (f *Features) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface.

type FileInfo

type FileInfo struct {
	Name         string
	UTI          string
	ConformsTo   []string
	Extensions   []string
	GroupWith    []string
	MimeTypes    []string
	SVG          *unison.SVG
	Load         func(filePath string) (unison.Dockable, error)
	IsSpecial    bool
	IsGCSData    bool
	IsImage      bool
	IsPDF        bool
	IsExportable bool
}

FileInfo contains some static information about a given file type.

func FileInfoFor

func FileInfoFor(filePath string) FileInfo

FileInfoFor returns the FileInfo for the given file path's extension.

func (FileInfo) Register

func (f FileInfo) Register()

Register with the central registry.

type Fonts

type Fonts struct {
	// contains filtered or unexported fields
}

Fonts holds a set of themed fonts.

func NewFontsFromFS

func NewFontsFromFS(fileSystem fs.FS, filePath string) (*Fonts, error)

NewFontsFromFS creates a new set of fonts from a file. Any missing values will be filled in with defaults.

func (*Fonts) MakeCurrent

func (f *Fonts) MakeCurrent()

MakeCurrent applies these fonts to the current theme font set and updates all windows.

func (*Fonts) MarshalJSON

func (f *Fonts) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Fonts) Reset

func (f *Fonts) Reset()

Reset to factory defaults.

func (*Fonts) ResetOne

func (f *Fonts) ResetOne(id string)

ResetOne resets one font by ID to factory defaults.

func (*Fonts) Save

func (f *Fonts) Save(filePath string) error

Save writes the Fonts to the file as JSON.

func (*Fonts) UnmarshalJSON

func (f *Fonts) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type GeneralModifier

type GeneralModifier interface {
	Container() bool
	Depth() int
	FullDescription() string
	FullCostDescription() string
	Enabled() bool
	SetEnabled(enabled bool)
}

GeneralModifier is used for common access to modifiers.

type GeneralSheetSettings

type GeneralSheetSettings struct {
	DefaultPlayerName     string  `json:"default_player_name,omitempty"`
	DefaultTechLevel      string  `json:"default_tech_level,omitempty"`
	CalendarName          string  `json:"calendar_ref,omitempty"`
	ExternalPDFCmdLine    string  `json:"external_pdf_cmd_line,omitempty"`
	InitialPoints         fxp.Int `json:"initial_points"`
	TooltipDelay          fxp.Int `json:"tooltip_delay"`
	TooltipDismissal      fxp.Int `json:"tooltip_dismissal"`
	ScrollWheelMultiplier fxp.Int `json:"scroll_wheel_multiplier"`
	NavigatorUIScale      int     `json:"navigator_scale"`
	InitialListUIScale    int     `json:"initial_list_scale"`
	InitialEditorUIScale  int     `json:"initial_editor_scale"`
	InitialSheetUIScale   int     `json:"initial_sheet_scale"`
	MaximumAutoColWidth   int     `json:"maximum_auto_col_width"`
	ImageResolution       int     `json:"image_resolution"`
	AutoFillProfile       bool    `json:"auto_fill_profile"`
	AutoAddNaturalAttacks bool    `json:"add_natural_attacks"`
}

GeneralSheetSettings holds general settings for a sheet.

func NewGeneralSheetSettings

func NewGeneralSheetSettings() *GeneralSheetSettings

NewGeneralSheetSettings creates settings with factory defaults.

func NewGeneralSheetSettingsFromFile

func NewGeneralSheetSettingsFromFile(fileSystem fs.FS, filePath string) (*GeneralSheetSettings, error)

NewGeneralSheetSettingsFromFile loads new settings from a file.

func (*GeneralSheetSettings) CalendarRef

func (s *GeneralSheetSettings) CalendarRef(libraries Libraries) *CalendarRef

CalendarRef returns the CalendarRef these settings refer to.

func (*GeneralSheetSettings) EnsureValidity

func (s *GeneralSheetSettings) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

func (*GeneralSheetSettings) Save

func (s *GeneralSheetSettings) Save(filePath string) error

Save writes the settings to the file as JSON.

func (*GeneralSheetSettings) UpdateToolTipTiming

func (s *GeneralSheetSettings) UpdateToolTipTiming()

UpdateToolTipTiming updates the default tooltip theme to use the timing values from this object.

type HitLocation

type HitLocation struct {
	HitLocationData
	Entity    *Entity
	RollRange string
	KeyPrefix string
	// contains filtered or unexported fields
}

HitLocation holds a single hit location.

func NewHitLocation

func NewHitLocation(entity *Entity, keyPrefix string) *HitLocation

NewHitLocation creates a new hit location.

func (*HitLocation) Clone

func (h *HitLocation) Clone(entity *Entity, owningTable *Body) *HitLocation

Clone a copy of this.

func (*HitLocation) DR

func (h *HitLocation) DR(entity *Entity, tooltip *xio.ByteBuffer, drMap map[string]int) map[string]int

DR computes the DR coverage for this HitLocation. If 'tooltip' isn't nil, the buffer will be updated with details on how the DR was calculated. If 'drMap' isn't nil, it will be returned.

func (*HitLocation) DisplayDR

func (h *HitLocation) DisplayDR(entity *Entity, tooltip *xio.ByteBuffer) string

DisplayDR returns the DR for this location, formatted as a string.

func (*HitLocation) ID

func (h *HitLocation) ID() string

ID returns the ID.

func (*HitLocation) MarshalJSON

func (h *HitLocation) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*HitLocation) OwningTable

func (h *HitLocation) OwningTable() *Body

OwningTable returns the owning table.

func (*HitLocation) ResetTargetKeyPrefixes

func (h *HitLocation) ResetTargetKeyPrefixes(prefixProvider func() string)

ResetTargetKeyPrefixes assigns new key prefixes for all data within this HitLocation.

func (*HitLocation) SetID

func (h *HitLocation) SetID(value string)

SetID sets the ID, sanitizing it in the process (i.e. it may be changed from what you set -- read it back if you want to be sure of what it gets set to.

func (*HitLocation) SetSubTable

func (h *HitLocation) SetSubTable(bodyType *Body)

SetSubTable sets the Body as a sub-table.

func (*HitLocation) UnmarshalJSON

func (h *HitLocation) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type HitLocationChoice

type HitLocationChoice struct {
	Key   string
	Title string
}

HitLocationChoice holds a single hit location choice.

func (*HitLocationChoice) String

func (c *HitLocationChoice) String() string

type HitLocationData

type HitLocationData struct {
	LocID       string `json:"id"`
	ChoiceName  string `json:"choice_name"`
	TableName   string `json:"table_name"`
	Slots       int    `json:"slots,omitempty"`
	HitPenalty  int    `json:"hit_penalty,omitempty"`
	DRBonus     int    `json:"dr_bonus,omitempty"`
	Description string `json:"description,omitempty"`
	SubTable    *Body  `json:"sub_table,omitempty"`
}

HitLocationData holds the Hitlocation data that gets written to disk.

type KeyBindings

type KeyBindings struct {
	// contains filtered or unexported fields
}

KeyBindings holds a set of key bindings.

func NewKeyBindingsFromFS

func NewKeyBindingsFromFS(fileSystem fs.FS, filePath string) (*KeyBindings, error)

NewKeyBindingsFromFS creates a new set of key bindings from a file. Any missing values will be filled in with defaults.

func (*KeyBindings) Current

func (b *KeyBindings) Current(id string) unison.KeyBinding

Current returns the binding for the given ID.

func (*KeyBindings) MakeCurrent

func (b *KeyBindings) MakeCurrent()

MakeCurrent applies these key bindings to the current key bindings set.

func (*KeyBindings) MarshalJSON

func (b *KeyBindings) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*KeyBindings) Reset

func (b *KeyBindings) Reset()

Reset to factory defaults.

func (*KeyBindings) ResetOne

func (b *KeyBindings) ResetOne(id string)

ResetOne resets one font by ID to factory defaults.

func (*KeyBindings) Save

func (b *KeyBindings) Save(filePath string) error

Save writes the Fonts to the file as JSON.

func (*KeyBindings) Set

func (b *KeyBindings) Set(id string, binding unison.KeyBinding)

Set the binding for the given ID.

func (*KeyBindings) ShouldOmit

func (b *KeyBindings) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (*KeyBindings) UnmarshalJSON

func (b *KeyBindings) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type Length

type Length fxp.Int

Length contains a fixed-point value in inches. Conversions to/from metric are done using the simplified Length metric conversion of 1 yd = 1 meter. For consistency, all metric lengths are converted to meters, then to yards, rather than the variations at different lengths that the Length rules suggest.

func LengthFromInteger

func LengthFromInteger[T constraints.Integer](value T, unit LengthUnits) Length

LengthFromInteger creates a new Length.

func LengthFromString

func LengthFromString(text string, defaultUnits LengthUnits) (Length, error)

LengthFromString creates a new Length. May have any of the known Units suffixes, a feet and inches format (e.g. 6'2"), or no notation at all, in which case defaultUnits is used.

func LengthFromStringForced

func LengthFromStringForced(text string, defaultUnits LengthUnits) Length

LengthFromStringForced creates a new Length. May have any of the known Units suffixes, a feet and inches format (e.g. 6'2"), or no notation at all, in which case defaultUnits is used.

func (Length) MarshalJSON

func (l Length) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (Length) String

func (l Length) String() string

func (*Length) UnmarshalJSON

func (l *Length) UnmarshalJSON(in []byte) error

UnmarshalJSON implements json.Unmarshaler.

type LengthUnits

type LengthUnits byte

LengthUnits holds the length unit type. Note that conversions to/from metric are done using the simplified GURPS metric conversion of 1 yd = 1 meter. For consistency, all metric lengths are converted to meters, then to yards, rather than the variations at different lengths that the GURPS rules suggest.

const (
	FeetAndInches LengthUnits = iota
	Inch
	Feet
	Yard
	Mile
	Centimeter
	Kilometer
	Meter
	LastLengthUnits = Meter
)

Possible values.

func ExtractLengthUnits

func ExtractLengthUnits(str string) LengthUnits

ExtractLengthUnits extracts the value from a string.

func (LengthUnits) EnsureValid

func (enum LengthUnits) EnsureValid() LengthUnits

EnsureValid ensures this is of a known value.

func (LengthUnits) Format

func (enum LengthUnits) Format(length Length) string

Format the length for this LengthUnits.

func (LengthUnits) Key

func (enum LengthUnits) Key() string

Key returns the key used in serialization.

func (LengthUnits) MarshalText

func (enum LengthUnits) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (LengthUnits) String

func (enum LengthUnits) String() string

String implements fmt.Stringer.

func (LengthUnits) ToInches

func (enum LengthUnits) ToInches(length fxp.Int) fxp.Int

ToInches converts the length in this LengthUnits to inches.

func (*LengthUnits) UnmarshalText

func (enum *LengthUnits) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Level

type Level struct {
	Level         fxp.Int
	RelativeLevel fxp.Int
	Tooltip       string
}

Level provides a level & relative level pair, plus a tooltip.

func CalculateRitualMagicSpellLevel

func CalculateRitualMagicSpellLevel(entity *Entity, name, powerSource, ritualSkillName string, ritualPrereqCount int, colleges, tags []string, difficulty AttributeDifficulty, points fxp.Int) Level

CalculateRitualMagicSpellLevel returns the calculated spell level.

func CalculateSkillLevel

func CalculateSkillLevel(entity *Entity, name, specialization string, tags []string, def *SkillDefault, difficulty AttributeDifficulty, points, encumbrancePenaltyMultiplier fxp.Int) Level

CalculateSkillLevel returns the calculated level for a skill.

func CalculateSpellLevel

func CalculateSpellLevel(entity *Entity, name, powerSource string, colleges, tags []string, difficulty AttributeDifficulty, pts fxp.Int) Level

CalculateSpellLevel returns the calculated spell level.

func CalculateTechniqueLevel

func CalculateTechniqueLevel(entity *Entity, name, specialization string, tags []string, def *SkillDefault, difficulty Difficulty, points fxp.Int, requirePoints bool, limitModifier *fxp.Int) Level

CalculateTechniqueLevel returns the calculated level for a technique.

func (Level) LevelAsString

func (l Level) LevelAsString(forContainer bool) string

LevelAsString returns the level as a string.

type LeveledAmount

type LeveledAmount struct {
	Level    fxp.Int `json:"-"`
	Amount   fxp.Int `json:"amount"`
	PerLevel bool    `json:"per_level,omitempty"`
}

LeveledAmount holds an amount that can be either a fixed amount, or an amount per level.

func (*LeveledAmount) AdjustedAmount

func (l *LeveledAmount) AdjustedAmount() fxp.Int

AdjustedAmount returns the amount, adjusted for level, if requested.

func (*LeveledAmount) Format

func (l *LeveledAmount) Format(asPercentage bool, what string) string

Format the value.

func (*LeveledAmount) FormatWithLevel

func (l *LeveledAmount) FormatWithLevel(asPercentage bool) string

FormatWithLevel calls Format(asPercentage, "level").

type Libraries

type Libraries map[string]*Library

Libraries holds a Library set.

func NewLibraries

func NewLibraries() Libraries

NewLibraries creates a new, empty, Libraries object.

func NewLibrariesFromFS

func NewLibrariesFromFS(fileSystem fs.FS, filePath string) (Libraries, error)

NewLibrariesFromFS creates a new set of libraries from a file.

func (Libraries) List

func (l Libraries) List() []*Library

List returns an ordered list of Library objects.

func (Libraries) Master

func (l Libraries) Master() *Library

Master holds information about the master library.

func (Libraries) PerformUpdateChecks

func (l Libraries) PerformUpdateChecks()

PerformUpdateChecks checks each of the libraries for updates.

func (*Libraries) UnmarshalJSON

func (l *Libraries) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (Libraries) User

func (l Libraries) User() *Library

User holds information about the user library.

type Library

type Library struct {
	Title             string `json:"title,omitempty"`
	GitHubAccountName string `json:"-"`
	AccessToken       string `json:"access_token,omitempty"`
	RepoName          string `json:"-"`
	PathOnDisk        string `json:"path,omitempty"`
	CachedVersion     string `json:"-"`
	// contains filtered or unexported fields
}

Library holds information about a library of data files.

func NewLibrary

func NewLibrary(title, githubAccountName, accessToken, repoName, pathOnDisk string) *Library

NewLibrary creates a new library.

func (*Library) AvailableUpdate

func (l *Library) AvailableUpdate() *Release

AvailableUpdate returns the available release that can be updated to.

func (*Library) CheckForAvailableUpgrade

func (l *Library) CheckForAvailableUpgrade(ctx context.Context, client *http.Client)

CheckForAvailableUpgrade returns releases that can be upgraded to.

func (*Library) ConfigureForKey

func (l *Library) ConfigureForKey(key string)

ConfigureForKey configures the GitHubAccountName and RepoName from the given key.

func (*Library) Download

func (l *Library) Download(ctx context.Context, client *http.Client, release Release) error

Download the release onto the local disk.

func (*Library) IsMaster

func (l *Library) IsMaster() bool

IsMaster returns true if this is the Master Library.

func (*Library) IsUser

func (l *Library) IsUser() bool

IsUser returns true if this is the User Library.

func (*Library) Key

func (l *Library) Key() string

Key returns a key representing this Library.

func (*Library) Less

func (l *Library) Less(other *Library) bool

Less returns true if this Library should be placed before the other Library.

func (*Library) Path

func (l *Library) Path() string

Path returns the path on disk to this Library, creating any necessary directories.

func (*Library) SetPath

func (l *Library) SetPath(newPath string) error

SetPath updates the path to the Library as well as the version.

func (*Library) StopAllWatches

func (l *Library) StopAllWatches()

StopAllWatches that were previously established.

func (*Library) Valid

func (l *Library) Valid() bool

Valid returns true if the library has a path on disk and a title.

func (*Library) VersionOnDisk

func (l *Library) VersionOnDisk() string

VersionOnDisk returns the version of the data on disk, if it can be determined.

func (*Library) Watch

func (l *Library) Watch(callback func(lib *Library, fullPath string, what notify.Event), callbackOnUIThread bool) *MonitorToken

Watch for changes in the directory tree of this library.

type ListProvider

ListProvider defines the methods needed to access list data.

type MonitorToken

type MonitorToken struct {
	// contains filtered or unexported fields
}

MonitorToken holds a token that can be used to stop a library watch.

func (*MonitorToken) AddSubPath

func (m *MonitorToken) AddSubPath(relativePath string)

AddSubPath adds a sub-path within the library to watch. Should only be called for symlinks, since the native OS monitoring typically does not traverse those on its own.

func (*MonitorToken) Library

func (m *MonitorToken) Library() *Library

Library returns the library this token is attached to.

func (*MonitorToken) Stop

func (m *MonitorToken) Stop()

Stop this watch.

type NameGenerationType

type NameGenerationType byte

NameGenerationType holds a name generation type.

const (
	SimpleNameGenerationType NameGenerationType = iota
	MarkovChainNameGenerationType
	LastNameGenerationType = MarkovChainNameGenerationType
)

Possible values.

func ExtractNameGenerationType

func ExtractNameGenerationType(str string) NameGenerationType

ExtractNameGenerationType extracts the value from a string.

func (NameGenerationType) EnsureValid

func (enum NameGenerationType) EnsureValid() NameGenerationType

EnsureValid ensures this is of a known value.

func (NameGenerationType) Key

func (enum NameGenerationType) Key() string

Key returns the key used in serialization.

func (NameGenerationType) MarshalText

func (enum NameGenerationType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (NameGenerationType) String

func (enum NameGenerationType) String() string

String implements fmt.Stringer.

func (*NameGenerationType) UnmarshalText

func (enum *NameGenerationType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type NameGenerator

type NameGenerator struct {
	Type         NameGenerationType `json:"type"`
	TrainingData []string           `json:"training_data"`
	// contains filtered or unexported fields
}

NameGenerator holds the data for name generation.

func NewNameGeneratorFromFS

func NewNameGeneratorFromFS(fileSystem fs.FS, filePath string) (*NameGenerator, error)

NewNameGeneratorFromFS creates a new NameGenerator from a file.

func (*NameGenerator) Generate

func (n *NameGenerator) Generate() string

Generate a name.

type NameGeneratorRef

type NameGeneratorRef struct {
	FileRef *NamedFileRef
	// contains filtered or unexported fields
}

NameGeneratorRef holds a reference to a NameGenerator.

func AvailableNameGenerators

func AvailableNameGenerators(libraries Libraries) []*NameGeneratorRef

AvailableNameGenerators scans the libraries and returns the available name generators.

func (*NameGeneratorRef) Generator

func (n *NameGeneratorRef) Generator() (*NameGenerator, error)

Generator returns the NameGenerator, loading it if needed.

type Nameables

type Nameables interface {
	// FillWithNameableKeys fills the map with nameable keys.
	FillWithNameableKeys(m map[string]string)
	// ApplyNameableKeys applies the nameable keys to this object.
	ApplyNameableKeys(m map[string]string)
}

Nameables defines methods types that want to participate the nameable adjustments should implement.

type NamedFileRef

type NamedFileRef struct {
	Name       string
	FileSystem fs.FS
	FilePath   string
}

NamedFileRef holds a reference to a file.

func (*NamedFileRef) String

func (n *NamedFileRef) String() string

type NamedFileSet

type NamedFileSet struct {
	Name string
	List []*NamedFileRef
}

NamedFileSet holds a named list of file references.

func AvailableAncestries

func AvailableAncestries(libraries Libraries) []*NamedFileSet

AvailableAncestries scans the libraries and returns the available ancestries.

func AvailableCalendarRefs

func AvailableCalendarRefs(libraries Libraries) []*NamedFileSet

AvailableCalendarRefs scans the libraries and returns the available calendars.

func ScanForNamedFileSets

func ScanForNamedFileSets(builtIn fs.FS, builtInDir string, omitDuplicateNames bool, libraries Libraries, extensions ...string) []*NamedFileSet

ScanForNamedFileSets scans for settings files of a particular type.

type NavigatorSettings struct {
	DividerPosition float32  `json:"divider_position"`
	OpenRowKeys     []string `json:"open_row_keys,omitempty"`
}

NavigatorSettings holds settings for the navigator view.

type Node

type Node[T NodeTypes] interface {
	fmt.Stringer
	UUID() uuid.UUID
	Clone(newEntity *Entity, newParent T, preserveID bool) T
	OwningEntity() *Entity
	SetOwningEntity(entity *Entity)
	Kind() string
	Container() bool
	Parent() T
	SetParent(parent T)
	HasChildren() bool
	NodeChildren() []T
	SetChildren(children []T)
	Enabled() bool
	Open() bool
	SetOpen(open bool)
	CellData(column int, data *CellData)
	FillWithNameableKeys(m map[string]string)
	ApplyNameableKeys(m map[string]string)
}

Node defines the methods required of nodes in our tables.

func AsNode

func AsNode[T NodeTypes](in T) Node[T]

AsNode converts a T to a Node[T]. This shouldn't require these hoops, but Go generics (as of 1.19) fails to compile otherwise.

type NodeTypes

type NodeTypes interface {
	*ConditionalModifier | *Equipment | *EquipmentModifier | *Note | *Skill | *Spell | *Trait | *TraitModifier | *Weapon
}

NodeTypes is a constraint that defines the types that may be nodes.

type Note

type Note struct {
	NoteData
	Entity *Entity
}

Note holds a note.

func NewNote

func NewNote(entity *Entity, parent *Note, container bool) *Note

NewNote creates a new Note.

func NewNotesFromFile

func NewNotesFromFile(fileSystem fs.FS, filePath string) ([]*Note, error)

NewNotesFromFile loads an Note list from a file.

func (*Note) ApplyNameableKeys

func (n *Note) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*Note) CellData

func (n *Note) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Note) Clone

func (n *Note) Clone(entity *Entity, parent *Note, preserveID bool) *Note

Clone implements Node.

func (*Note) Depth

func (n *Note) Depth() int

Depth returns the number of parents this node has.

func (*Note) Enabled

func (n *Note) Enabled() bool

Enabled returns true if this node is enabled.

func (*Note) FillWithNameableKeys

func (n *Note) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*Note) MarshalJSON

func (n *Note) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Note) OwningEntity

func (n *Note) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Note) SetOwningEntity

func (n *Note) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Note) String

func (n *Note) String() string

func (*Note) UnmarshalJSON

func (n *Note) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type NoteData

type NoteData struct {
	ContainerBase[*Note]
	NoteEditData
}

NoteData holds the Note data that is written to disk.

func (*NoteData) ClearUnusedFieldsForType

func (d *NoteData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*NoteData) Kind

func (d *NoteData) Kind() string

Kind returns the kind of data.

type NoteEditData

type NoteEditData struct {
	Text    string `json:"text,omitempty"`
	PageRef string `json:"reference,omitempty"`
}

NoteEditData holds the Note data that can be edited by the UI detail editor.

func (*NoteEditData) ApplyTo

func (d *NoteEditData) ApplyTo(note *Note)

ApplyTo implements node.EditorData.

func (*NoteEditData) CopyFrom

func (d *NoteEditData) CopyFrom(note *Note)

CopyFrom implements node.EditorData.

type NoteListProvider

type NoteListProvider interface {
	EntityProvider
	NoteList() []*Note
	SetNoteList(list []*Note)
}

NoteListProvider defines the method needed to access the note list data.

type NumericCompareType

type NumericCompareType string

NumericCompareType holds the type for a numeric comparison.

func (NumericCompareType) AltDescribe

func (n NumericCompareType) AltDescribe(qualifier fxp.Int) string

AltDescribe returns an alternate description of this NumericCompareType using a qualifier.

func (NumericCompareType) AltString

func (n NumericCompareType) AltString() string

AltString returns an alternate string for this.

func (NumericCompareType) Describe

func (n NumericCompareType) Describe(qualifier fxp.Int) string

Describe returns a description of this NumericCompareType using a qualifier.

func (NumericCompareType) EnsureValid

func (n NumericCompareType) EnsureValid() NumericCompareType

EnsureValid ensures this is of a known value.

func (NumericCompareType) Matches

func (n NumericCompareType) Matches(qualifier, data fxp.Int) bool

Matches performs a comparison and returns true if the data matches.

func (NumericCompareType) String

func (n NumericCompareType) String() string

String implements fmt.Stringer.

type NumericCriteria

type NumericCriteria struct {
	NumericCriteriaData
}

NumericCriteria holds the criteria for matching a number.

func (NumericCriteria) AltString

func (n NumericCriteria) AltString() string

AltString returns the alternate description.

func (NumericCriteria) Matches

func (n NumericCriteria) Matches(value fxp.Int) bool

Matches performs a comparison and returns true if the data matches.

func (NumericCriteria) ShouldOmit

func (n NumericCriteria) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (NumericCriteria) String

func (n NumericCriteria) String() string

func (*NumericCriteria) UnmarshalJSON

func (n *NumericCriteria) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type NumericCriteriaData

type NumericCriteriaData struct {
	Compare   NumericCompareType `json:"compare,omitempty"`
	Qualifier fxp.Int            `json:"qualifier,omitempty"`
}

NumericCriteriaData holds the criteria for matching a number that should be written to disk.

type PageRef

type PageRef struct {
	ID     string `json:"-"`
	Path   string `json:"path,omitempty"`
	Offset int    `json:"offset,omitempty"`
}

PageRef holds a path to a file and an offset for all page references within that file.

type PageRefs

type PageRefs struct {
	// contains filtered or unexported fields
}

PageRefs holds a set of page references.

func NewPageRefsFromFS

func NewPageRefsFromFS(fileSystem fs.FS, filePath string) (*PageRefs, error)

NewPageRefsFromFS creates a new set of page references from a file.

func (*PageRefs) List

func (p *PageRefs) List() []*PageRef

List returns a sorted list of page references.

func (*PageRefs) Lookup

func (p *PageRefs) Lookup(id string) *PageRef

Lookup the PageRef for the given ID. If not found or if the path it points to isn't a readable file, returns nil.

func (*PageRefs) MarshalJSON

func (p *PageRefs) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*PageRefs) Remove

func (p *PageRefs) Remove(id string)

Remove the PageRef for the ID.

func (*PageRefs) Save

func (p *PageRefs) Save(filePath string) error

Save writes the PageRefs to the file as JSON.

func (*PageRefs) Set

func (p *PageRefs) Set(pageRef *PageRef)

Set the PageRef.

func (*PageRefs) ShouldOmit

func (p *PageRefs) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (*PageRefs) UnmarshalJSON

func (p *PageRefs) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type PageSettings

type PageSettings struct {
	Size         PaperSize        `json:"paper_size"`
	Orientation  PaperOrientation `json:"orientation"`
	TopMargin    PaperLength      `json:"top_margin"`
	LeftMargin   PaperLength      `json:"left_margin"`
	BottomMargin PaperLength      `json:"bottom_margin"`
	RightMargin  PaperLength      `json:"right_margin"`
}

PageSettings holds page settings.

func NewPageSettings

func NewPageSettings() *PageSettings

NewPageSettings returns new settings with factory defaults.

func (*PageSettings) Clone

func (p *PageSettings) Clone() *PageSettings

Clone a copy of this.

func (*PageSettings) EnsureValidity

func (p *PageSettings) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

type PageSettingsOverrides

type PageSettingsOverrides struct {
	Size         *PaperSize
	Orientation  *PaperOrientation
	TopMargin    *PaperLength
	LeftMargin   *PaperLength
	BottomMargin *PaperLength
	RightMargin  *PaperLength
}

PageSettingsOverrides holds page setting overrides.

func (*PageSettingsOverrides) Apply

func (p *PageSettingsOverrides) Apply(page *PageSettings)

Apply the overrides to a Page.

func (*PageSettingsOverrides) ParseBottomMargin

func (p *PageSettingsOverrides) ParseBottomMargin(in string)

ParseBottomMargin and set the override, if applicable.

func (*PageSettingsOverrides) ParseLeftMargin

func (p *PageSettingsOverrides) ParseLeftMargin(in string)

ParseLeftMargin and set the override, if applicable.

func (*PageSettingsOverrides) ParseOrientation

func (p *PageSettingsOverrides) ParseOrientation(in string)

ParseOrientation and set the override, if applicable.

func (*PageSettingsOverrides) ParseRightMargin

func (p *PageSettingsOverrides) ParseRightMargin(in string)

ParseRightMargin and set the override, if applicable.

func (*PageSettingsOverrides) ParseSize

func (p *PageSettingsOverrides) ParseSize(in string)

ParseSize and set the override, if applicable.

func (*PageSettingsOverrides) ParseTopMargin

func (p *PageSettingsOverrides) ParseTopMargin(in string)

ParseTopMargin and set the override, if applicable.

type PaperLength

type PaperLength struct {
	Length float64
	Units  PaperUnits
}

PaperLength contains a real-world length value with an attached units.

func PaperLengthFromString

func PaperLengthFromString(text string) PaperLength

PaperLengthFromString creates a new PaperLength. May have any of the known unit suffixes or no notation at all, in which case inch is used.

func ParsePaperLengthFromString

func ParsePaperLengthFromString(text string) (length PaperLength, err error)

ParsePaperLengthFromString parses a PaperLength from the text. May have any of the known unit suffixes or no notation at all, in which case inch is used.

func (*PaperLength) EnsureValidity

func (l *PaperLength) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

func (PaperLength) MarshalJSON

func (l PaperLength) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (PaperLength) Pixels

func (l PaperLength) Pixels() float32

Pixels returns the number of 72-pixels-per-inch pixels this represents.

func (PaperLength) String

func (l PaperLength) String() string

func (*PaperLength) UnmarshalJSON

func (l *PaperLength) UnmarshalJSON(in []byte) error

UnmarshalJSON implements json.Unmarshaler.

type PaperOrientation

type PaperOrientation byte

PaperOrientation holds the orientation of the page.

const (
	Portrait PaperOrientation = iota
	Landscape
	LastPaperOrientation = Landscape
)

Possible values.

func ExtractPaperOrientation

func ExtractPaperOrientation(str string) PaperOrientation

ExtractPaperOrientation extracts the value from a string.

func (PaperOrientation) Dimensions

func (enum PaperOrientation) Dimensions(width, height PaperLength) (adjustedWidth, adjustedHeight PaperLength)

Dimensions returns the paper dimensions after orienting the paper.

func (PaperOrientation) EnsureValid

func (enum PaperOrientation) EnsureValid() PaperOrientation

EnsureValid ensures this is of a known value.

func (PaperOrientation) Key

func (enum PaperOrientation) Key() string

Key returns the key used in serialization.

func (PaperOrientation) MarshalText

func (enum PaperOrientation) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (PaperOrientation) String

func (enum PaperOrientation) String() string

String implements fmt.Stringer.

func (*PaperOrientation) UnmarshalText

func (enum *PaperOrientation) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type PaperSize

type PaperSize byte

PaperSize holds a standard paper dimension.

const (
	LetterPaperSize PaperSize = iota
	LegalPaperSize
	TabloidPaperSize
	A0PaperSize
	A1PaperSize
	A2PaperSize
	A3PaperSize
	A4PaperSize
	A5PaperSize
	A6PaperSize
	LastPaperSize = A6PaperSize
)

Possible values.

func ExtractPaperSize

func ExtractPaperSize(str string) PaperSize

ExtractPaperSize extracts the value from a string.

func (PaperSize) Dimensions

func (enum PaperSize) Dimensions() (width, height PaperLength)

Dimensions returns the paper dimensions.

func (PaperSize) EnsureValid

func (enum PaperSize) EnsureValid() PaperSize

EnsureValid ensures this is of a known value.

func (PaperSize) Key

func (enum PaperSize) Key() string

Key returns the key used in serialization.

func (PaperSize) MarshalText

func (enum PaperSize) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (PaperSize) String

func (enum PaperSize) String() string

String implements fmt.Stringer.

func (*PaperSize) UnmarshalText

func (enum *PaperSize) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type PaperUnits

type PaperUnits byte

PaperUnits holds the real-world length unit type.

const (
	InchPaperUnits PaperUnits = iota
	CentimeterPaperUnits
	MillimeterPaperUnits
	LastPaperUnits = MillimeterPaperUnits
)

Possible values.

func ExtractPaperUnits

func ExtractPaperUnits(str string) PaperUnits

ExtractPaperUnits extracts the value from a string.

func (PaperUnits) EnsureValid

func (enum PaperUnits) EnsureValid() PaperUnits

EnsureValid ensures this is of a known value.

func (PaperUnits) Key

func (enum PaperUnits) Key() string

Key returns the key used in serialization.

func (PaperUnits) MarshalText

func (enum PaperUnits) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (PaperUnits) String

func (enum PaperUnits) String() string

String implements fmt.Stringer.

func (PaperUnits) ToPixels

func (enum PaperUnits) ToPixels(length float64) float32

ToPixels converts the given length in this PaperUnits to the number of 72-pixels-per-inch pixels it represents.

func (*PaperUnits) UnmarshalText

func (enum *PaperUnits) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type PointsRecord

type PointsRecord struct {
	When   jio.Time `json:"when"`
	Points fxp.Int  `json:"points"`
	Reason string   `json:"reason,omitempty"`
}

PointsRecord holds information about when and why points were adjusted.

func ClonePointsRecordList

func ClonePointsRecordList(list []*PointsRecord) []*PointsRecord

ClonePointsRecordList creates a clone of the provided PointsRecord list.

type PoolThreshold

type PoolThreshold struct {
	PoolThresholdData
	KeyPrefix string
}

PoolThreshold holds a point within an attribute pool where changes in state occur.

func (*PoolThreshold) AddOp

func (p *PoolThreshold) AddOp(op ThresholdOp)

AddOp adds the specified ThresholdOp.

func (*PoolThreshold) Clone

func (p *PoolThreshold) Clone() *PoolThreshold

Clone a copy of this.

func (*PoolThreshold) ContainsOp

func (p *PoolThreshold) ContainsOp(op ThresholdOp) bool

ContainsOp returns true if this PoolThreshold contains the specified ThresholdOp.

func (*PoolThreshold) MarshalJSON

func (p *PoolThreshold) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*PoolThreshold) RemoveOp

func (p *PoolThreshold) RemoveOp(op ThresholdOp)

RemoveOp removes the specified ThresholdOp.

func (*PoolThreshold) String

func (p *PoolThreshold) String() string

func (*PoolThreshold) Threshold

func (p *PoolThreshold) Threshold(resolver eval.VariableResolver) fxp.Int

Threshold returns the threshold value for the given maximum.

func (*PoolThreshold) UnmarshalJSON

func (p *PoolThreshold) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type PoolThresholdData

type PoolThresholdData struct {
	State       string        `json:"state"`
	Expression  string        `json:"expression"`
	Explanation string        `json:"explanation,omitempty"`
	Ops         []ThresholdOp `json:"ops,omitempty"`
}

PoolThresholdData holds the data that will be serialized for the PoolThreshold.

type Prereq

type Prereq interface {
	Nameables
	PrereqType() PrereqType
	// ParentList returns the owning parent list, if any.
	ParentList() *PrereqList
	// Clone creates a new copy of this Prereq.
	Clone(parent *PrereqList) Prereq
	// Satisfied returns true if this Prereq is satisfied by the specified Entity. 'buffer' will be used, if not nil, to
	// write a description of what was unsatisfied. 'prefix' will be appended to each line of the description.
	Satisfied(entity *Entity, exclude any, buffer *xio.ByteBuffer, prefix string, hasEquipmentPenalty *bool) bool
}

Prereq holds data necessary to track a prerequisite.

type PrereqList

type PrereqList struct {
	Parent  *PrereqList     `json:"-"`
	Type    PrereqType      `json:"type"`
	All     bool            `json:"all"`
	WhenTL  NumericCriteria `json:"when_tl,omitempty"`
	Prereqs Prereqs         `json:"prereqs,omitempty"`
}

PrereqList holds a prereq that contains a list of prerequisites.

func NewPrereqList

func NewPrereqList() *PrereqList

NewPrereqList creates a new PrereqList.

func (*PrereqList) ApplyNameableKeys

func (p *PrereqList) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Prereq.

func (*PrereqList) Clone

func (p *PrereqList) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*PrereqList) CloneAsPrereqList

func (p *PrereqList) CloneAsPrereqList(parent *PrereqList) *PrereqList

CloneAsPrereqList clones this prereq list.

func (*PrereqList) CloneResolvingEmpty

func (p *PrereqList) CloneResolvingEmpty(isContainer, pruneIfEmpty bool) *PrereqList

CloneResolvingEmpty clones this prereq list. If the result would be nil and it isn't a container, a new, empty, list is created. If the result would not be nil but pruneIfEmpty is true and calling ShouldOmit() on it would return true, then nil is returned.

func (*PrereqList) FillWithNameableKeys

func (p *PrereqList) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Prereq.

func (*PrereqList) ParentList

func (p *PrereqList) ParentList() *PrereqList

ParentList implements Prereq.

func (*PrereqList) PrereqType

func (p *PrereqList) PrereqType() PrereqType

PrereqType implements Prereq.

func (*PrereqList) Satisfied

func (p *PrereqList) Satisfied(entity *Entity, exclude any, buffer *xio.ByteBuffer, prefix string, hasEquipmentPenalty *bool) bool

Satisfied implements Prereq.

func (*PrereqList) ShouldOmit

func (p *PrereqList) ShouldOmit() bool

ShouldOmit implements json.Omitter.

type PrereqType

type PrereqType byte

PrereqType holds the type of a Prereq.

const (
	ListPrereqType PrereqType = iota
	TraitPrereqType
	AttributePrereqType
	ContainedQuantityPrereqType
	ContainedWeightPrereqType
	EquippedEquipmentPrereqType
	SkillPrereqType
	SpellPrereqType
	LastPrereqType = SpellPrereqType
)

Possible values.

func ExtractPrereqType

func ExtractPrereqType(str string) PrereqType

ExtractPrereqType extracts the value from a string.

func (PrereqType) EnsureValid

func (enum PrereqType) EnsureValid() PrereqType

EnsureValid ensures this is of a known value.

func (PrereqType) Key

func (enum PrereqType) Key() string

Key returns the key used in serialization.

func (PrereqType) MarshalText

func (enum PrereqType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (PrereqType) String

func (enum PrereqType) String() string

String implements fmt.Stringer.

func (*PrereqType) UnmarshalText

func (enum *PrereqType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Prereqs

type Prereqs []Prereq

Prereqs holds a list of prerequisites.

func (*Prereqs) UnmarshalJSON

func (p *Prereqs) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface.

type Profile

type Profile struct {
	PlayerName        string        `json:"player_name,omitempty"`
	Name              string        `json:"name,omitempty"`
	Title             string        `json:"title,omitempty"`
	Organization      string        `json:"organization,omitempty"`
	Religion          string        `json:"religion,omitempty"`
	Age               string        `json:"age,omitempty"`
	Birthday          string        `json:"birthday,omitempty"`
	Eyes              string        `json:"eyes,omitempty"`
	Hair              string        `json:"hair,omitempty"`
	Skin              string        `json:"skin,omitempty"`
	Handedness        string        `json:"handedness,omitempty"`
	Gender            string        `json:"gender,omitempty"`
	TechLevel         string        `json:"tech_level,omitempty"`
	PortraitData      []byte        `json:"portrait,omitempty"`
	PortraitImage     *unison.Image `json:"-"`
	Height            Length        `json:"height,omitempty"`
	Weight            Weight        `json:"weight,omitempty"`
	SizeModifier      int           `json:"SM,omitempty"`
	SizeModifierBonus fxp.Int       `json:"-"`
}

Profile holds the profile information for an NPC.

func (*Profile) AdjustedSizeModifier

func (p *Profile) AdjustedSizeModifier() int

AdjustedSizeModifier returns the adjusted size modifier.

func (*Profile) AutoFill

func (p *Profile) AutoFill(entity *Entity)

AutoFill fills in the default profile entries.

func (*Profile) Portrait

func (p *Profile) Portrait() *unison.Image

Portrait returns the portrait image, if there is one.

func (*Profile) SetAdjustedSizeModifier

func (p *Profile) SetAdjustedSizeModifier(value int)

SetAdjustedSizeModifier sets the adjusted size modifier.

func (*Profile) Update

func (p *Profile) Update(entity *Entity)

Update any derived values.

type QuickExports

type QuickExports struct {
	QuickExportsData
}

QuickExports holds a list containing information about previous exports.

func NewQuickExports

func NewQuickExports() *QuickExports

NewQuickExports creates a new, empty, QuickExports object.

func (*QuickExports) Empty

func (q *QuickExports) Empty() bool

Empty implements encoding.Empty.

func (*QuickExports) MarshalJSON

func (q *QuickExports) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*QuickExports) UnmarshalJSON

func (q *QuickExports) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type QuickExportsData

type QuickExportsData struct {
	Max     int           `json:"max"`
	Exports []*ExportInfo `json:"exports,omitempty"`
}

QuickExportsData holds the QuickExports data that is written to disk.

type RawPointsAdjuster

type RawPointsAdjuster[T NodeTypes] interface {
	Node[T]
	RawPoints() fxp.Int
	SetRawPoints(points fxp.Int) bool
}

RawPointsAdjuster defines methods for nodes that can have their raw points adjusted must implement.

type ReactionBonus

type ReactionBonus struct {
	Type      FeatureType `json:"type"`
	Situation string      `json:"situation,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

ReactionBonus holds a modifier due to a reaction.

func NewReactionBonus

func NewReactionBonus() *ReactionBonus

NewReactionBonus creates a new ReactionBonus.

func (*ReactionBonus) AddToTooltip

func (r *ReactionBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*ReactionBonus) ApplyNameableKeys

func (r *ReactionBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*ReactionBonus) Clone

func (r *ReactionBonus) Clone() Feature

Clone implements Feature.

func (*ReactionBonus) FeatureType

func (r *ReactionBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*ReactionBonus) FillWithNameableKeys

func (r *ReactionBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*ReactionBonus) Owner

func (r *ReactionBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*ReactionBonus) SetLevel

func (r *ReactionBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*ReactionBonus) SetOwner

func (r *ReactionBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type ReactionModifierListProvider

type ReactionModifierListProvider interface {
	EntityProvider
	Reactions() []*ConditionalModifier
}

ReactionModifierListProvider defines the method needed to access the reaction modifier list data.

type Release

type Release struct {
	Version     string
	Notes       string
	ZipFileURL  string
	CheckFailed bool
}

Release holds information about a single release of a GitHub repo.

func LoadReleases

func LoadReleases(ctx context.Context, client *http.Client, githubAccountName, accessToken, repoName, currentVersion string, filter func(version, notes string) bool) ([]Release, error)

LoadReleases loads the list of releases available from a given GitHub repo.

func (*Release) HasReleaseNotes

func (r *Release) HasReleaseNotes() bool

HasReleaseNotes returns true if there are release notes available.

func (*Release) HasUpdate

func (r *Release) HasUpdate() bool

HasUpdate returns true if there is an update available.

type SelfControlRoll

type SelfControlRoll int

SelfControlRoll holds the information about a self-control roll, from B121.

func (SelfControlRoll) DescriptionWithCost

func (s SelfControlRoll) DescriptionWithCost() string

DescriptionWithCost returns a formatted description that includes the cost multiplier.

func (SelfControlRoll) EnsureValid

func (s SelfControlRoll) EnsureValid() SelfControlRoll

EnsureValid ensures this is of a known value.

func (SelfControlRoll) Index

func (s SelfControlRoll) Index() int

Index returns of the SelfControlRoll within AllSelfControlRolls.

func (SelfControlRoll) MinimumRoll

func (s SelfControlRoll) MinimumRoll() int

MinimumRoll returns the minimum roll to retain control.

func (SelfControlRoll) Multiplier

func (s SelfControlRoll) Multiplier() fxp.Int

Multiplier returns the cost multiplier.

func (SelfControlRoll) String

func (s SelfControlRoll) String() string

String implements fmt.Stringer.

type SelfControlRollAdj

type SelfControlRollAdj byte

SelfControlRollAdj holds an Adjustment for a self-control roll.

const (
	NoCRAdj SelfControlRollAdj = iota
	ActionPenalty
	ReactionPenalty
	FrightCheckPenalty
	FrightCheckBonus
	MinorCostOfLivingIncrease
	MajorCostOfLivingIncrease
	LastSelfControlRollAdj = MajorCostOfLivingIncrease
)

Possible values.

func ExtractSelfControlRollAdj

func ExtractSelfControlRollAdj(str string) SelfControlRollAdj

ExtractSelfControlRollAdj extracts the value from a string.

func (SelfControlRollAdj) Adjustment

func (enum SelfControlRollAdj) Adjustment(cr SelfControlRoll) int

Adjustment returns the adjustment amount.

func (SelfControlRollAdj) AltString

func (enum SelfControlRollAdj) AltString() string

AltString returns the alternate string.

func (SelfControlRollAdj) Description

func (enum SelfControlRollAdj) Description(cr SelfControlRoll) string

Description returns a formatted description.

func (SelfControlRollAdj) EnsureValid

func (enum SelfControlRollAdj) EnsureValid() SelfControlRollAdj

EnsureValid ensures this is of a known value.

func (SelfControlRollAdj) Features

func (enum SelfControlRollAdj) Features(cr SelfControlRoll) Features

Features returns the set of features to apply.

func (SelfControlRollAdj) Key

func (enum SelfControlRollAdj) Key() string

Key returns the key used in serialization.

func (SelfControlRollAdj) MarshalText

func (enum SelfControlRollAdj) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (SelfControlRollAdj) String

func (enum SelfControlRollAdj) String() string

String implements fmt.Stringer.

func (*SelfControlRollAdj) UnmarshalText

func (enum *SelfControlRollAdj) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Settings

type Settings struct {
	LastSeenGCSVersion string                `json:"last_seen_gcs_version,omitempty"`
	General            *GeneralSheetSettings `json:"general,omitempty"`
	LibrarySet         Libraries             `json:"libraries,omitempty"`
	LibraryExplorer    NavigatorSettings     `json:"library_explorer"`
	RecentFiles        []string              `json:"recent_files,omitempty"`
	LastDirs           map[string]string     `json:"last_dirs,omitempty"`
	PageRefs           PageRefs              `json:"page_refs,omitempty"`
	KeyBindings        KeyBindings           `json:"key_bindings,omitempty"`
	WorkspaceFrame     *unison.Rect          `json:"workspace_frame,omitempty"`
	Colors             Colors                `json:"colors"`
	Fonts              Fonts                 `json:"fonts"`
	QuickExports       *QuickExports         `json:"quick_exports,omitempty"`
	Sheet              *SheetSettings        `json:"sheet_settings,omitempty"`
	ColorMode          unison.ColorMode      `json:"color_mode"`
}

Settings holds the application settings.

func DefaultSettings

func DefaultSettings() *Settings

DefaultSettings returns new default settings.

func GlobalSettings

func GlobalSettings() *Settings

GlobalSettings returns the global settings.

func (*Settings) AddRecentFile

func (s *Settings) AddRecentFile(filePath string)

AddRecentFile adds a file path to the list of recently opened files.

func (*Settings) EnsureValidity

func (s *Settings) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

func (*Settings) GeneralSettings

func (s *Settings) GeneralSettings() *GeneralSheetSettings

GeneralSettings implements gurps.SettingsProvider.

func (*Settings) LastDir

func (s *Settings) LastDir(key string) string

LastDir returns the last directory used for the given key.

func (*Settings) Libraries

func (s *Settings) Libraries() Libraries

Libraries implements gurps.SettingsProvider.

func (*Settings) ListRecentFiles

func (s *Settings) ListRecentFiles() []string

ListRecentFiles returns the current list of recently opened files. Files that are no longer readable for any reason are omitted.

func (*Settings) Save

func (s *Settings) Save() error

Save to the standard path.

func (*Settings) SetLastDir

func (s *Settings) SetLastDir(key, dir string)

SetLastDir sets the last directory used for the given key. Ignores attempts to set it to an empty string.

func (*Settings) SheetSettings

func (s *Settings) SheetSettings() *SheetSettings

SheetSettings implements gurps.SettingsProvider.

type SheetSettings

type SheetSettings struct {
	SheetSettingsData
	Entity *Entity `json:"-"`
}

SheetSettings holds sheet settings.

func FactorySheetSettings

func FactorySheetSettings() *SheetSettings

FactorySheetSettings returns a new SheetSettings with factory defaults.

func NewSheetSettingsFromFile

func NewSheetSettingsFromFile(fileSystem fs.FS, filePath string) (*SheetSettings, error)

NewSheetSettingsFromFile loads new settings from a file.

func SheetSettingsFor

func SheetSettingsFor(entity *Entity) *SheetSettings

SheetSettingsFor returns the SheetSettings for the given Entity, or the global settings if the Entity is nil.

func (*SheetSettings) Clone

func (s *SheetSettings) Clone(entity *Entity) *SheetSettings

Clone creates a copy of this.

func (*SheetSettings) EnsureValidity

func (s *SheetSettings) EnsureValidity()

EnsureValidity checks the current settings for validity and if they aren't valid, makes them so.

func (*SheetSettings) MarshalJSON

func (s *SheetSettings) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*SheetSettings) Save

func (s *SheetSettings) Save(filePath string) error

Save writes the settings to the file as JSON.

func (*SheetSettings) SetOwningEntity

func (s *SheetSettings) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*SheetSettings) UnmarshalJSON

func (s *SheetSettings) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type SheetSettingsData

type SheetSettingsData struct {
	Page                          *PageSettings     `json:"page,omitempty"`
	BlockLayout                   *BlockLayout      `json:"block_layout,omitempty"`
	Attributes                    *AttributeDefs    `json:"attributes,omitempty"`
	BodyType                      *Body             `json:"body_type,alt=hit_locations,omitempty"`
	DamageProgression             DamageProgression `json:"damage_progression"`
	DefaultLengthUnits            LengthUnits       `json:"default_length_units"`
	DefaultWeightUnits            WeightUnits       `json:"default_weight_units"`
	UserDescriptionDisplay        DisplayOption     `json:"user_description_display"`
	ModifiersDisplay              DisplayOption     `json:"modifiers_display"`
	NotesDisplay                  DisplayOption     `json:"notes_display"`
	SkillLevelAdjDisplay          DisplayOption     `json:"skill_level_adj_display"`
	UseMultiplicativeModifiers    bool              `json:"use_multiplicative_modifiers,omitempty"`
	UseModifyingDicePlusAdds      bool              `json:"use_modifying_dice_plus_adds,omitempty"`
	ShowTraitModifierAdj          bool              `json:"show_trait_modifier_adj,alt=show_advantage_modifier_adj,omitempty"`
	ShowEquipmentModifierAdj      bool              `json:"show_equipment_modifier_adj,omitempty"`
	ShowSpellAdj                  bool              `json:"show_spell_adj,omitempty"`
	UseTitleInFooter              bool              `json:"use_title_in_footer,omitempty"`
	ExcludeUnspentPointsFromTotal bool              `json:"exclude_unspent_points_from_total"`
}

SheetSettingsData holds the SheetSettings data that is written to disk.

type SheetSettingsResponder

type SheetSettingsResponder interface {
	// SheetSettingsUpdated will be called when the SheetSettings have been updated. The provided Entity will be nil if
	// it was the default SheetSettings that was updated rather than one attached to a specific entity. blockLayout will
	// be true if the BlockLayout was altered, which usually requires a full rebuild.
	SheetSettingsUpdated(entity *Entity, blockLayout bool)
}

SheetSettingsResponder defines the method required to be notified of updates to the SheetSettings.

type Skill

type Skill struct {
	SkillData
	Entity            *Entity
	LevelData         Level
	UnsatisfiedReason string
}

Skill holds the data for a skill.

func NewSkill

func NewSkill(entity *Entity, parent *Skill, container bool) *Skill

NewSkill creates a new Skill.

func NewSkillsFromFile

func NewSkillsFromFile(fileSystem fs.FS, filePath string) ([]*Skill, error)

NewSkillsFromFile loads an Skill list from a file.

func NewTechnique

func NewTechnique(entity *Entity, parent *Skill, skillName string) *Skill

NewTechnique creates a new technique (i.e. a specialized use of a Skill). All parameters may be nil or empty.

func (*Skill) AdjustedPoints

func (s *Skill) AdjustedPoints(tooltip *xio.ByteBuffer) fxp.Int

AdjustedPoints returns the points, adjusted for any bonuses.

func (*Skill) AdjustedRelativeLevel

func (s *Skill) AdjustedRelativeLevel() fxp.Int

AdjustedRelativeLevel returns the relative skill level.

func (*Skill) ApplyNameableKeys

func (s *Skill) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*Skill) BestSwappableSkill

func (s *Skill) BestSwappableSkill() *Skill

BestSwappableSkill returns the best skill to swap with.

func (*Skill) CalculateLevel

func (s *Skill) CalculateLevel() Level

CalculateLevel returns the computed level without updating it.

func (*Skill) CanSwapDefaults

func (s *Skill) CanSwapDefaults() bool

CanSwapDefaults returns true if this skill's default can be swapped.

func (*Skill) CanSwapDefaultsWith

func (s *Skill) CanSwapDefaultsWith(other *Skill) bool

CanSwapDefaultsWith returns true if this skill's default can be swapped with the other skill.

func (*Skill) CellData

func (s *Skill) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Skill) Clone

func (s *Skill) Clone(entity *Entity, parent *Skill, preserveID bool) *Skill

Clone implements Node.

func (*Skill) DecrementSkillLevel

func (s *Skill) DecrementSkillLevel()

DecrementSkillLevel removes enough points to decrement the skill level to the previous level.

func (*Skill) DefaultSkill

func (s *Skill) DefaultSkill() *Skill

DefaultSkill returns the skill currently defaulted to, or nil.

func (*Skill) Depth

func (s *Skill) Depth() int

Depth returns the number of parents this node has.

func (*Skill) Description

func (s *Skill) Description() string

Description implements WeaponOwner.

func (*Skill) Enabled

func (s *Skill) Enabled() bool

Enabled returns true if this node is enabled.

func (*Skill) FeatureList

func (s *Skill) FeatureList() Features

FeatureList returns the list of Features.

func (*Skill) FillWithNameableKeys

func (s *Skill) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*Skill) HasDefaultTo

func (s *Skill) HasDefaultTo(other *Skill) bool

HasDefaultTo returns true if the set of possible defaults includes the other skill.

func (*Skill) IncrementSkillLevel

func (s *Skill) IncrementSkillLevel()

IncrementSkillLevel adds enough points to increment the skill level to the next level.

func (*Skill) MarshalJSON

func (s *Skill) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Skill) ModifierNotes

func (s *Skill) ModifierNotes() string

ModifierNotes returns the notes due to modifiers.

func (*Skill) Notes

func (s *Skill) Notes() string

Notes implements WeaponOwner.

func (*Skill) OwningEntity

func (s *Skill) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Skill) RawPoints

func (s *Skill) RawPoints() fxp.Int

RawPoints returns the unadjusted points.

func (*Skill) RelativeLevel

func (s *Skill) RelativeLevel() string

RelativeLevel returns the adjusted relative level as a string.

func (*Skill) RequiresTL

func (s *Skill) RequiresTL() bool

RequiresTL implements TechLevelProvider.

func (*Skill) SecondaryText

func (s *Skill) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the less important information that should be displayed with the description.

func (*Skill) SetOwningEntity

func (s *Skill) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Skill) SetRawPoints

func (s *Skill) SetRawPoints(points fxp.Int) bool

SetRawPoints sets the unadjusted points and updates the level. Returns true if the level changed.

func (*Skill) SetTL

func (s *Skill) SetTL(tl string)

SetTL implements TechLevelProvider.

func (*Skill) String

func (s *Skill) String() string

func (*Skill) SwapDefaults

func (s *Skill) SwapDefaults()

SwapDefaults causes this skill's default to be swapped.

func (*Skill) TL

func (s *Skill) TL() string

TL implements TechLevelProvider.

func (*Skill) TagList

func (s *Skill) TagList() []string

TagList returns the list of tags.

func (*Skill) TechniqueSatisfied

func (s *Skill) TechniqueSatisfied(tooltip *xio.ByteBuffer, prefix string) bool

TechniqueSatisfied returns true if the Technique is satisfied.

func (*Skill) TemplatePickerData

func (s *Skill) TemplatePickerData() *TemplatePicker

TemplatePickerData returns the TemplatePicker data, if any.

func (*Skill) UnmarshalJSON

func (s *Skill) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Skill) UpdateLevel

func (s *Skill) UpdateLevel() bool

UpdateLevel updates the level of the skill, returning true if it has changed.

type SkillAdjustmentProvider

type SkillAdjustmentProvider[T NodeTypes] interface {
	RawPointsAdjuster[T]
	IncrementSkillLevel()
	DecrementSkillLevel()
}

SkillAdjustmentProvider defines methods for nodes that can have their skill level adjusted must implement.

type SkillBonus

type SkillBonus struct {
	Type                   FeatureType        `json:"type"`
	SelectionType          SkillSelectionType `json:"selection_type"`
	NameCriteria           StringCriteria     `json:"name,omitempty"`
	SpecializationCriteria StringCriteria     `json:"specialization,omitempty"`
	TagsCriteria           StringCriteria     `json:"tags,alt=category,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

SkillBonus holds an adjustment to a skill.

func NewSkillBonus

func NewSkillBonus() *SkillBonus

NewSkillBonus creates a new SkillBonus.

func (*SkillBonus) AddToTooltip

func (s *SkillBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*SkillBonus) ApplyNameableKeys

func (s *SkillBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*SkillBonus) Clone

func (s *SkillBonus) Clone() Feature

Clone implements Feature.

func (*SkillBonus) FeatureType

func (s *SkillBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*SkillBonus) FillWithNameableKeys

func (s *SkillBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*SkillBonus) Owner

func (s *SkillBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*SkillBonus) SetLevel

func (s *SkillBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*SkillBonus) SetOwner

func (s *SkillBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type SkillData

type SkillData struct {
	ContainerBase[*Skill]
	SkillEditData
}

SkillData holds the Skill data that is written to disk.

func (*SkillData) ClearUnusedFieldsForType

func (d *SkillData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*SkillData) Kind

func (d *SkillData) Kind() string

Kind returns the kind of data.

type SkillDefault

type SkillDefault struct {
	DefaultType    string  `json:"type"`
	Name           string  `json:"name,omitempty"`
	Specialization string  `json:"specialization,omitempty"`
	Modifier       fxp.Int `json:"modifier,omitempty"`
	Level          fxp.Int `json:"level,omitempty"`
	AdjLevel       fxp.Int `json:"adjusted_level,omitempty"`
	Points         fxp.Int `json:"points,omitempty"`
}

SkillDefault holds data for a Skill default.

func (*SkillDefault) ApplyNameableKeys

func (s *SkillDefault) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found in this SkillDefault with the corresponding values in the provided map.

func (*SkillDefault) CloneWithoutLevelOrPoints

func (s *SkillDefault) CloneWithoutLevelOrPoints() *SkillDefault

CloneWithoutLevelOrPoints creates a copy, but without the level or points set.

func (*SkillDefault) Equivalent

func (s *SkillDefault) Equivalent(other *SkillDefault) bool

Equivalent returns true if this can be considered equivalent to other.

func (*SkillDefault) FillWithNameableKeys

func (s *SkillDefault) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found in this SkillDefault to the provided map.

func (*SkillDefault) FullName

func (s *SkillDefault) FullName(entity *Entity) string

FullName returns the full name of the skill to default from.

func (*SkillDefault) ModifierAsString

func (s *SkillDefault) ModifierAsString() string

ModifierAsString returns the modifier as a string suitable for appending.

func (*SkillDefault) SetType

func (s *SkillDefault) SetType(t string)

SetType sets the type of the SkillDefault.

func (*SkillDefault) SkillBased

func (s *SkillDefault) SkillBased() bool

SkillBased returns true if the Type() is Skill-based.

func (*SkillDefault) SkillLevel

func (s *SkillDefault) SkillLevel(entity *Entity, requirePoints bool, excludes map[string]bool, ruleOf20 bool) fxp.Int

SkillLevel returns the base skill level for this SkillDefault.

func (*SkillDefault) SkillLevelFast

func (s *SkillDefault) SkillLevelFast(entity *Entity, requirePoints bool, excludes map[string]bool, ruleOf20 bool) fxp.Int

SkillLevelFast returns the base skill level for this SkillDefault.

func (*SkillDefault) Type

func (s *SkillDefault) Type() string

Type returns the type of the SkillDefault.

type SkillEditData

type SkillEditData struct {
	Name                         string              `json:"name,omitempty"`
	PageRef                      string              `json:"reference,omitempty"`
	LocalNotes                   string              `json:"notes,omitempty"`
	VTTNotes                     string              `json:"vtt_notes,omitempty"`
	Tags                         []string            `json:"tags,omitempty"`
	Specialization               string              `json:"specialization,omitempty"`                 // Non-container only
	TechLevel                    *string             `json:"tech_level,omitempty"`                     // Non-container only
	Difficulty                   AttributeDifficulty `json:"difficulty,omitempty"`                     // Non-container only
	Points                       fxp.Int             `json:"points,omitempty"`                         // Non-container only
	EncumbrancePenaltyMultiplier fxp.Int             `json:"encumbrance_penalty_multiplier,omitempty"` // Non-container only
	DefaultedFrom                *SkillDefault       `json:"defaulted_from,omitempty"`                 // Non-container only
	Defaults                     []*SkillDefault     `json:"defaults,omitempty"`                       // Non-container only
	TechniqueDefault             *SkillDefault       `json:"default,omitempty"`                        // Non-container only
	TechniqueLimitModifier       *fxp.Int            `json:"limit,omitempty"`                          // Non-container only
	Prereq                       *PrereqList         `json:"prereqs,omitempty"`                        // Non-container only
	Weapons                      []*Weapon           `json:"weapons,omitempty"`                        // Non-container only
	Features                     Features            `json:"features,omitempty"`                       // Non-container only
	Study                        []*Study            `json:"study,omitempty"`                          // Non-container only
	TemplatePicker               *TemplatePicker     `json:"template_picker,omitempty"`                // Container only
}

SkillEditData holds the Skill data that can be edited by the UI detail editor.

func (*SkillEditData) ApplyTo

func (d *SkillEditData) ApplyTo(s *Skill)

ApplyTo implements node.EditorData.

func (*SkillEditData) CopyFrom

func (d *SkillEditData) CopyFrom(s *Skill)

CopyFrom implements node.EditorData.

type SkillListProvider

type SkillListProvider interface {
	EntityProvider
	SkillList() []*Skill
	SetSkillList(list []*Skill)
}

SkillListProvider defines the method needed to access the skill list data.

type SkillPointBonus

type SkillPointBonus struct {
	Type                   FeatureType    `json:"type"`
	NameCriteria           StringCriteria `json:"name,omitempty"`
	SpecializationCriteria StringCriteria `json:"specialization,omitempty"`
	TagsCriteria           StringCriteria `json:"tags,alt=category,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

SkillPointBonus holds an adjustment to a skill's points.

func NewSkillPointBonus

func NewSkillPointBonus() *SkillPointBonus

NewSkillPointBonus creates a new SkillPointBonus.

func (*SkillPointBonus) AddToTooltip

func (s *SkillPointBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*SkillPointBonus) ApplyNameableKeys

func (s *SkillPointBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*SkillPointBonus) Clone

func (s *SkillPointBonus) Clone() Feature

Clone implements Feature.

func (*SkillPointBonus) FeatureType

func (s *SkillPointBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*SkillPointBonus) FillWithNameableKeys

func (s *SkillPointBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*SkillPointBonus) Owner

func (s *SkillPointBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*SkillPointBonus) SetLevel

func (s *SkillPointBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*SkillPointBonus) SetOwner

func (s *SkillPointBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type SkillPrereq

type SkillPrereq struct {
	Parent                 *PrereqList     `json:"-"`
	Type                   PrereqType      `json:"type"`
	Has                    bool            `json:"has"`
	NameCriteria           StringCriteria  `json:"name,omitempty"`
	LevelCriteria          NumericCriteria `json:"level,omitempty"`
	SpecializationCriteria StringCriteria  `json:"specialization,omitempty"`
}

SkillPrereq holds a prerequisite for a skill.

func NewSkillPrereq

func NewSkillPrereq() *SkillPrereq

NewSkillPrereq creates a new SkillPrereq.

func (*SkillPrereq) ApplyNameableKeys

func (s *SkillPrereq) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Prereq.

func (*SkillPrereq) Clone

func (s *SkillPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*SkillPrereq) FillWithNameableKeys

func (s *SkillPrereq) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Prereq.

func (*SkillPrereq) ParentList

func (s *SkillPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*SkillPrereq) PrereqType

func (s *SkillPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*SkillPrereq) Satisfied

func (s *SkillPrereq) Satisfied(entity *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type SkillSelectionType

type SkillSelectionType byte

SkillSelectionType holds the type of a selection.

const (
	NameSkillSelectionType SkillSelectionType = iota
	ThisWeaponSkillSelectionType
	WeaponsWithNameSkillSelectionType
	LastSkillSelectionType = WeaponsWithNameSkillSelectionType
)

Possible values.

func ExtractSkillSelectionType

func ExtractSkillSelectionType(str string) SkillSelectionType

ExtractSkillSelectionType extracts the value from a string.

func (SkillSelectionType) EnsureValid

func (enum SkillSelectionType) EnsureValid() SkillSelectionType

EnsureValid ensures this is of a known value.

func (SkillSelectionType) Key

func (enum SkillSelectionType) Key() string

Key returns the key used in serialization.

func (SkillSelectionType) MarshalText

func (enum SkillSelectionType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (SkillSelectionType) String

func (enum SkillSelectionType) String() string

String implements fmt.Stringer.

func (*SkillSelectionType) UnmarshalText

func (enum *SkillSelectionType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Spell

type Spell struct {
	SpellData
	Entity            *Entity
	LevelData         Level
	UnsatisfiedReason string
}

Spell holds the data for a spell.

func NewRitualMagicSpell

func NewRitualMagicSpell(entity *Entity, parent *Spell, _ bool) *Spell

NewRitualMagicSpell creates a new Ritual Magic Spell.

func NewSpell

func NewSpell(entity *Entity, parent *Spell, container bool) *Spell

NewSpell creates a new Spell.

func NewSpellsFromFile

func NewSpellsFromFile(fileSystem fs.FS, filePath string) ([]*Spell, error)

NewSpellsFromFile loads an Spell list from a file.

func (*Spell) AdjustedPoints

func (s *Spell) AdjustedPoints(tooltip *xio.ByteBuffer) fxp.Int

AdjustedPoints returns the points, adjusted for any bonuses.

func (*Spell) AdjustedRelativeLevel

func (s *Spell) AdjustedRelativeLevel() fxp.Int

AdjustedRelativeLevel returns the relative skill level.

func (*Spell) ApplyNameableKeys

func (s *Spell) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*Spell) CalculateLevel

func (s *Spell) CalculateLevel() Level

CalculateLevel returns the computed level without updating it.

func (*Spell) CellData

func (s *Spell) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Spell) Clone

func (s *Spell) Clone(entity *Entity, parent *Spell, preserveID bool) *Spell

Clone implements Node.

func (*Spell) DecrementSkillLevel

func (s *Spell) DecrementSkillLevel()

DecrementSkillLevel removes enough points to decrement the skill level to the previous level.

func (*Spell) Depth

func (s *Spell) Depth() int

Depth returns the number of parents this node has.

func (*Spell) Description

func (s *Spell) Description() string

Description implements WeaponOwner.

func (*Spell) Enabled

func (s *Spell) Enabled() bool

Enabled returns true if this node is enabled.

func (*Spell) FeatureList

func (s *Spell) FeatureList() Features

FeatureList returns the list of Features.

func (*Spell) FillWithNameableKeys

func (s *Spell) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*Spell) IncrementSkillLevel

func (s *Spell) IncrementSkillLevel()

IncrementSkillLevel adds enough points to increment the skill level to the next level.

func (*Spell) MarshalJSON

func (s *Spell) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Spell) Notes

func (s *Spell) Notes() string

Notes implements WeaponOwner.

func (*Spell) OwningEntity

func (s *Spell) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Spell) RawPoints

func (s *Spell) RawPoints() fxp.Int

RawPoints returns the unadjusted points.

func (*Spell) RelativeLevel

func (s *Spell) RelativeLevel() string

RelativeLevel returns the adjusted relative level as a string.

func (*Spell) RequiresTL

func (s *Spell) RequiresTL() bool

RequiresTL implements TechLevelProvider.

func (*Spell) RitualMagicSatisfied

func (s *Spell) RitualMagicSatisfied(tooltip *xio.ByteBuffer, prefix string) bool

RitualMagicSatisfied returns true if the Ritual Magic Spell is satisfied.

func (*Spell) Rituals

func (s *Spell) Rituals() string

Rituals returns the rituals required to cast the spell.

func (*Spell) SecondaryText

func (s *Spell) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the less important information that should be displayed with the description.

func (*Spell) SetOwningEntity

func (s *Spell) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Spell) SetRawPoints

func (s *Spell) SetRawPoints(points fxp.Int) bool

SetRawPoints sets the unadjusted points and updates the level. Returns true if the level changed.

func (*Spell) SetTL

func (s *Spell) SetTL(tl string)

SetTL implements TechLevelProvider.

func (*Spell) String

func (s *Spell) String() string

func (*Spell) TL

func (s *Spell) TL() string

TL implements TechLevelProvider.

func (*Spell) TagList

func (s *Spell) TagList() []string

TagList returns the list of tags.

func (*Spell) TemplatePickerData

func (s *Spell) TemplatePickerData() *TemplatePicker

TemplatePickerData returns the TemplatePicker data, if any.

func (*Spell) UnmarshalJSON

func (s *Spell) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Spell) UpdateLevel

func (s *Spell) UpdateLevel() bool

UpdateLevel updates the level of the spell, returning true if it has changed.

type SpellBonus

type SpellBonus struct {
	Type           FeatureType    `json:"type"`
	SpellMatchType SpellMatchType `json:"match"`
	NameCriteria   StringCriteria `json:"name,omitempty"`
	TagsCriteria   StringCriteria `json:"tags,alt=category,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

SpellBonus holds the data for a bonus to a spell.

func NewSpellBonus

func NewSpellBonus() *SpellBonus

NewSpellBonus creates a new SpellBonus.

func (*SpellBonus) AddToTooltip

func (s *SpellBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*SpellBonus) ApplyNameableKeys

func (s *SpellBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*SpellBonus) Clone

func (s *SpellBonus) Clone() Feature

Clone implements Feature.

func (*SpellBonus) FeatureType

func (s *SpellBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*SpellBonus) FillWithNameableKeys

func (s *SpellBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*SpellBonus) MatchForType

func (s *SpellBonus) MatchForType(name, powerSource string, colleges []string) bool

MatchForType returns true if this spell bonus matches the data for its match type.

func (*SpellBonus) Owner

func (s *SpellBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*SpellBonus) SetLevel

func (s *SpellBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*SpellBonus) SetOwner

func (s *SpellBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type SpellComparisonType

type SpellComparisonType byte

SpellComparisonType holds the type of a comparison.

const (
	NameSpellComparisonType SpellComparisonType = iota
	TagSpellComparisonType
	CollegeSpellComparisonType
	CollegeCountSpellComparisonType
	AnySpellComparisonType
	LastSpellComparisonType = AnySpellComparisonType
)

Possible values.

func ExtractSpellComparisonType

func ExtractSpellComparisonType(str string) SpellComparisonType

ExtractSpellComparisonType extracts the value from a string.

func (SpellComparisonType) EnsureValid

func (enum SpellComparisonType) EnsureValid() SpellComparisonType

EnsureValid ensures this is of a known value.

func (SpellComparisonType) Key

func (enum SpellComparisonType) Key() string

Key returns the key used in serialization.

func (SpellComparisonType) MarshalText

func (enum SpellComparisonType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (SpellComparisonType) String

func (enum SpellComparisonType) String() string

String implements fmt.Stringer.

func (*SpellComparisonType) UnmarshalText

func (enum *SpellComparisonType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (SpellComparisonType) UsesStringCriteria

func (enum SpellComparisonType) UsesStringCriteria() bool

UsesStringCriteria returns true if the comparison uses a string value.

type SpellData

type SpellData struct {
	ContainerBase[*Spell]
	SpellEditData
}

SpellData holds the Spell data that is written to disk.

func (*SpellData) ClearUnusedFieldsForType

func (d *SpellData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*SpellData) Kind

func (d *SpellData) Kind() string

Kind returns the kind of data.

type SpellEditData

type SpellEditData struct {
	Name              string              `json:"name,omitempty"`
	PageRef           string              `json:"reference,omitempty"`
	LocalNotes        string              `json:"notes,omitempty"`
	VTTNotes          string              `json:"vtt_notes,omitempty"`
	Tags              []string            `json:"tags,omitempty"`
	TechLevel         *string             `json:"tech_level,omitempty"`       // Non-container only
	Difficulty        AttributeDifficulty `json:"difficulty,omitempty"`       // Non-container only
	College           CollegeList         `json:"college,omitempty"`          // Non-container only
	PowerSource       string              `json:"power_source,omitempty"`     // Non-container only
	Class             string              `json:"spell_class,omitempty"`      // Non-container only
	Resist            string              `json:"resist,omitempty"`           // Non-container only
	CastingCost       string              `json:"casting_cost,omitempty"`     // Non-container only
	MaintenanceCost   string              `json:"maintenance_cost,omitempty"` // Non-container only
	CastingTime       string              `json:"casting_time,omitempty"`     // Non-container only
	Duration          string              `json:"duration,omitempty"`         // Non-container only
	RitualSkillName   string              `json:"base_skill,omitempty"`       // Non-container only
	RitualPrereqCount int                 `json:"prereq_count,omitempty"`     // Non-container only
	Points            fxp.Int             `json:"points,omitempty"`           // Non-container only
	Prereq            *PrereqList         `json:"prereqs,omitempty"`          // Non-container only
	Weapons           []*Weapon           `json:"weapons,omitempty"`          // Non-container only
	Study             []*Study            `json:"study,omitempty"`            // Non-container only
	TemplatePicker    *TemplatePicker     `json:"template_picker,omitempty"`  // Container only
}

SpellEditData holds the Spell data that can be edited by the UI detail editor.

func (*SpellEditData) ApplyTo

func (d *SpellEditData) ApplyTo(s *Spell)

ApplyTo implements node.EditorData.

func (*SpellEditData) CopyFrom

func (d *SpellEditData) CopyFrom(s *Spell)

CopyFrom implements node.EditorData.

type SpellListProvider

type SpellListProvider interface {
	EntityProvider
	SpellList() []*Spell
	SetSpellList(list []*Spell)
}

SpellListProvider defines the method needed to access the spell list data.

type SpellMatchType

type SpellMatchType byte

SpellMatchType holds the type of a match.

const (
	AllCollegesSpellMatchType SpellMatchType = iota
	CollegeNameSpellMatchType
	PowerSourceSpellMatchType
	NameSpellMatchType
	LastSpellMatchType = NameSpellMatchType
)

Possible values.

func ExtractSpellMatchType

func ExtractSpellMatchType(str string) SpellMatchType

ExtractSpellMatchType extracts the value from a string.

func (SpellMatchType) EnsureValid

func (enum SpellMatchType) EnsureValid() SpellMatchType

EnsureValid ensures this is of a known value.

func (SpellMatchType) Key

func (enum SpellMatchType) Key() string

Key returns the key used in serialization.

func (SpellMatchType) MarshalText

func (enum SpellMatchType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (SpellMatchType) MatchForType

func (enum SpellMatchType) MatchForType(matcher StringCriteria, name, powerSource string, colleges []string) bool

MatchForType applies the matcher and returns the result.

func (SpellMatchType) String

func (enum SpellMatchType) String() string

String implements fmt.Stringer.

func (*SpellMatchType) UnmarshalText

func (enum *SpellMatchType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type SpellPointBonus

type SpellPointBonus struct {
	Type           FeatureType    `json:"type"`
	SpellMatchType SpellMatchType `json:"match"`
	NameCriteria   StringCriteria `json:"name,omitempty"`
	TagsCriteria   StringCriteria `json:"tags,alt=category,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

SpellPointBonus holds an adjustment to a spell's points.

func NewSpellPointBonus

func NewSpellPointBonus() *SpellPointBonus

NewSpellPointBonus creates a new SpellPointBonus.

func (*SpellPointBonus) AddToTooltip

func (s *SpellPointBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*SpellPointBonus) ApplyNameableKeys

func (s *SpellPointBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*SpellPointBonus) Clone

func (s *SpellPointBonus) Clone() Feature

Clone implements Feature.

func (*SpellPointBonus) FeatureType

func (s *SpellPointBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*SpellPointBonus) FillWithNameableKeys

func (s *SpellPointBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*SpellPointBonus) MatchForType

func (s *SpellPointBonus) MatchForType(name, powerSource string, colleges []string) bool

MatchForType returns true if this spell bonus matches the data for its match type.

func (*SpellPointBonus) Owner

func (s *SpellPointBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*SpellPointBonus) SetLevel

func (s *SpellPointBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*SpellPointBonus) SetOwner

func (s *SpellPointBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type SpellPrereq

type SpellPrereq struct {
	Parent            *PrereqList         `json:"-"`
	Type              PrereqType          `json:"type"`
	SubType           SpellComparisonType `json:"sub_type"`
	Has               bool                `json:"has"`
	QualifierCriteria StringCriteria      `json:"qualifier,omitempty"`
	QuantityCriteria  NumericCriteria     `json:"quantity,omitempty"`
}

SpellPrereq holds a prerequisite for a spell.

func NewSpellPrereq

func NewSpellPrereq() *SpellPrereq

NewSpellPrereq creates a new SpellPrereq.

func (*SpellPrereq) ApplyNameableKeys

func (s *SpellPrereq) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Prereq.

func (*SpellPrereq) Clone

func (s *SpellPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*SpellPrereq) FillWithNameableKeys

func (s *SpellPrereq) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Prereq.

func (*SpellPrereq) ParentList

func (s *SpellPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*SpellPrereq) PrereqType

func (s *SpellPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*SpellPrereq) Satisfied

func (s *SpellPrereq) Satisfied(entity *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type StrengthDamage

type StrengthDamage byte

StrengthDamage holds the type of strength dice to add to damage.

const (
	NoneStrengthDamage StrengthDamage = iota
	ThrustStrengthDamage
	LeveledThrustStrengthDamage
	SwingStrengthDamage
	LeveledSwingStrengthDamage
	LastStrengthDamage = LeveledSwingStrengthDamage
)

Possible values.

func ExtractStrengthDamage

func ExtractStrengthDamage(str string) StrengthDamage

ExtractStrengthDamage extracts the value from a string.

func (StrengthDamage) EnsureValid

func (enum StrengthDamage) EnsureValid() StrengthDamage

EnsureValid ensures this is of a known value.

func (StrengthDamage) Key

func (enum StrengthDamage) Key() string

Key returns the key used in serialization.

func (StrengthDamage) MarshalText

func (enum StrengthDamage) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (StrengthDamage) String

func (enum StrengthDamage) String() string

String implements fmt.Stringer.

func (*StrengthDamage) UnmarshalText

func (enum *StrengthDamage) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type StringCompareType

type StringCompareType string

StringCompareType holds the type for a string comparison.

func (StringCompareType) AltString

func (s StringCompareType) AltString() string

AltString provides a variant of String() for the not cases.

func (StringCompareType) Describe

func (s StringCompareType) Describe(qualifier string) string

Describe returns a description of this StringCompareType using a qualifier.

func (StringCompareType) EnsureValid

func (s StringCompareType) EnsureValid() StringCompareType

EnsureValid ensures this is of a known value.

func (StringCompareType) Matches

func (s StringCompareType) Matches(qualifier, data string) bool

Matches performs a comparison and returns true if the data matches.

func (StringCompareType) String

func (s StringCompareType) String() string

String implements fmt.Stringer.

type StringCriteria

type StringCriteria struct {
	StringCriteriaData
}

StringCriteria holds the criteria for matching a string.

func (StringCriteria) Matches

func (s StringCriteria) Matches(value string) bool

Matches performs a comparison and returns true if the data matches.

func (StringCriteria) MatchesList

func (s StringCriteria) MatchesList(value ...string) bool

MatchesList performs a comparison and returns true if the data matches.

func (StringCriteria) ShouldOmit

func (s StringCriteria) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (StringCriteria) String

func (s StringCriteria) String() string

func (*StringCriteria) UnmarshalJSON

func (s *StringCriteria) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type StringCriteriaData

type StringCriteriaData struct {
	Compare   StringCompareType `json:"compare,omitempty"`
	Qualifier string            `json:"qualifier,omitempty"`
}

StringCriteriaData holds the criteria for matching a string that should be written to disk.

type Study

type Study struct {
	Type  StudyType `json:"type"`
	Hours fxp.Int   `json:"hours"`
	Note  string    `json:"note,omitempty"`
}

Study holds data about a single study session.

func (*Study) Clone

func (s *Study) Clone() *Study

Clone creates a copy of the TemplatePicker.

type StudyType

type StudyType byte

StudyType holds the type of study.

const (
	SelfStudyType StudyType = iota
	JobStudyType
	TeacherStudyType
	IntensiveStudyType
	LastStudyType = IntensiveStudyType
)

Possible values.

func ExtractStudyType

func ExtractStudyType(str string) StudyType

ExtractStudyType extracts the value from a string.

func (StudyType) EnsureValid

func (enum StudyType) EnsureValid() StudyType

EnsureValid ensures this is of a known value.

func (StudyType) Key

func (enum StudyType) Key() string

Key returns the key used in serialization.

func (StudyType) Limitations

func (enum StudyType) Limitations() []string

Limitations returns a list of strings describing the limitations when doing this type of study.

func (StudyType) MarshalText

func (enum StudyType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (StudyType) Multiplier

func (enum StudyType) Multiplier() fxp.Int

Multiplier returns the amount to multiply hours spent by for effective study hours.

func (StudyType) String

func (enum StudyType) String() string

String implements fmt.Stringer.

func (*StudyType) UnmarshalText

func (enum *StudyType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type TechLevelProvider

type TechLevelProvider[T NodeTypes] interface {
	Node[T]
	RequiresTL() bool
	TL() string
	SetTL(tl string)
}

TechLevelProvider defines methods that a TechLevel provider must implement.

type Template

type Template struct {
	Type      string       `json:"type"`
	Version   int          `json:"version"`
	ID        uuid.UUID    `json:"id"`
	Traits    []*Trait     `json:"traits,alt=advantages,omitempty"`
	Skills    []*Skill     `json:"skills,omitempty"`
	Spells    []*Spell     `json:"spells,omitempty"`
	Equipment []*Equipment `json:"equipment,omitempty"`
	Notes     []*Note      `json:"notes,omitempty"`
}

Template holds the GURPS Template data that is written to disk.

func NewTemplate

func NewTemplate() *Template

NewTemplate creates a new Template.

func NewTemplateFromFile

func NewTemplateFromFile(fileSystem fs.FS, filePath string) (*Template, error)

NewTemplateFromFile loads a Template from a file.

func (*Template) CRC64

func (t *Template) CRC64() uint64

CRC64 computes a CRC-64 value for the canonical disk format of the data.

func (*Template) CarriedEquipmentList

func (t *Template) CarriedEquipmentList() []*Equipment

CarriedEquipmentList implements ListProvider

func (*Template) Entity

func (t *Template) Entity() *Entity

Entity implements EntityProvider.

func (*Template) NoteList

func (t *Template) NoteList() []*Note

NoteList implements ListProvider

func (*Template) OtherEquipmentList

func (t *Template) OtherEquipmentList() []*Equipment

OtherEquipmentList implements ListProvider

func (*Template) Save

func (t *Template) Save(filePath string) error

Save the Template to a file as JSON.

func (*Template) SetCarriedEquipmentList

func (t *Template) SetCarriedEquipmentList(list []*Equipment)

SetCarriedEquipmentList implements ListProvider

func (*Template) SetNoteList

func (t *Template) SetNoteList(list []*Note)

SetNoteList implements ListProvider

func (*Template) SetOtherEquipmentList

func (t *Template) SetOtherEquipmentList(_ []*Equipment)

SetOtherEquipmentList implements ListProvider

func (*Template) SetSkillList

func (t *Template) SetSkillList(list []*Skill)

SetSkillList implements ListProvider

func (*Template) SetSpellList

func (t *Template) SetSpellList(list []*Spell)

SetSpellList implements ListProvider

func (*Template) SetTraitList

func (t *Template) SetTraitList(list []*Trait)

SetTraitList implements ListProvider

func (*Template) SkillList

func (t *Template) SkillList() []*Skill

SkillList implements ListProvider

func (*Template) SpellList

func (t *Template) SpellList() []*Spell

SpellList implements ListProvider

func (*Template) TraitList

func (t *Template) TraitList() []*Trait

TraitList implements ListProvider

type TemplatePicker

type TemplatePicker struct {
	Type      TemplatePickerType `json:"type"`
	Qualifier NumericCriteria    `json:"qualifier"`
}

TemplatePicker holds the data necessary to allow a template choice to be made.

func (*TemplatePicker) Clone

func (t *TemplatePicker) Clone() *TemplatePicker

Clone creates a copy of the TemplatePicker.

func (*TemplatePicker) Description

func (t *TemplatePicker) Description() string

Description returns a description of the picker action.

func (*TemplatePicker) ShouldOmit

func (t *TemplatePicker) ShouldOmit() bool

ShouldOmit implements json.Omitter.

type TemplatePickerProvider

type TemplatePickerProvider interface {
	TemplatePickerData() *TemplatePicker
}

TemplatePickerProvider defines the methods a TemplatePicker provider has.

type TemplatePickerType

type TemplatePickerType byte

TemplatePickerType holds the type of template picker.

const (
	NotApplicableTemplatePickerType TemplatePickerType = iota
	CountTemplatePickerType
	PointsTemplatePickerType
	LastTemplatePickerType = PointsTemplatePickerType
)

Possible values.

func ExtractTemplatePickerType

func ExtractTemplatePickerType(str string) TemplatePickerType

ExtractTemplatePickerType extracts the value from a string.

func (TemplatePickerType) EnsureValid

func (enum TemplatePickerType) EnsureValid() TemplatePickerType

EnsureValid ensures this is of a known value.

func (TemplatePickerType) Key

func (enum TemplatePickerType) Key() string

Key returns the key used in serialization.

func (TemplatePickerType) MarshalText

func (enum TemplatePickerType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (TemplatePickerType) String

func (enum TemplatePickerType) String() string

String implements fmt.Stringer.

func (*TemplatePickerType) UnmarshalText

func (enum *TemplatePickerType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type ThemedColor

type ThemedColor struct {
	ID    string
	Title string
	Color *unison.ThemeColor
}

ThemedColor holds a themed color.

type ThemedFont

type ThemedFont struct {
	ID    string
	Title string
	Font  *unison.IndirectFont
}

ThemedFont holds a themed font.

type ThresholdOp

type ThresholdOp byte

ThresholdOp holds an operation to apply when a pool threshold is hit.

const (
	UnknownThresholdOp ThresholdOp = iota
	HalveMoveThresholdOp
	HalveDodgeThresholdOp
	HalveSTThresholdOp
	LastThresholdOp = HalveSTThresholdOp
)

Possible values.

func ExtractThresholdOp

func ExtractThresholdOp(str string) ThresholdOp

ExtractThresholdOp extracts the value from a string.

func (ThresholdOp) AltString

func (enum ThresholdOp) AltString() string

AltString returns the alternate string.

func (ThresholdOp) EnsureValid

func (enum ThresholdOp) EnsureValid() ThresholdOp

EnsureValid ensures this is of a known value.

func (ThresholdOp) Key

func (enum ThresholdOp) Key() string

Key returns the key used in serialization.

func (ThresholdOp) MarshalText

func (enum ThresholdOp) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (ThresholdOp) String

func (enum ThresholdOp) String() string

String implements fmt.Stringer.

func (*ThresholdOp) UnmarshalText

func (enum *ThresholdOp) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Trait

type Trait struct {
	TraitData
	Entity            *Entity
	UnsatisfiedReason string
}

Trait holds an advantage, disadvantage, quirk, or perk.

func NewNaturalAttacks

func NewNaturalAttacks(entity *Entity, parent *Trait) *Trait

NewNaturalAttacks creates a new "Natural Attacks" trait.

func NewTrait

func NewTrait(entity *Entity, parent *Trait, container bool) *Trait

NewTrait creates a new Trait.

func NewTraitsFromFile

func NewTraitsFromFile(fileSystem fs.FS, filePath string) ([]*Trait, error)

NewTraitsFromFile loads an Trait list from a file.

func (*Trait) ActiveModifierFor

func (a *Trait) ActiveModifierFor(name string) *TraitModifier

ActiveModifierFor returns the first modifier that matches the name (case-insensitive).

func (*Trait) AdjustedPoints

func (a *Trait) AdjustedPoints() fxp.Int

AdjustedPoints returns the total points, taking levels and modifiers into account.

func (*Trait) AllModifiers

func (a *Trait) AllModifiers() []*TraitModifier

AllModifiers returns the modifiers plus any inherited from parents.

func (*Trait) ApplyNameableKeys

func (a *Trait) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found with the corresponding values in the provided map.

func (*Trait) CellData

func (a *Trait) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Trait) Clone

func (a *Trait) Clone(entity *Entity, parent *Trait, preserveID bool) *Trait

Clone implements Node.

func (*Trait) Depth

func (a *Trait) Depth() int

Depth returns the number of parents this node has.

func (*Trait) Description

func (a *Trait) Description() string

Description returns a description, which doesn't include any levels.

func (*Trait) EffectivelyDisabled

func (a *Trait) EffectivelyDisabled() bool

EffectivelyDisabled returns true if this node or a parent is disabled.

func (*Trait) Enabled

func (a *Trait) Enabled() bool

Enabled returns true if this Trait and all of its parents are enabled.

func (*Trait) FeatureList

func (a *Trait) FeatureList() Features

FeatureList returns the list of Features.

func (*Trait) FillWithNameableKeys

func (a *Trait) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found to the provided map.

func (*Trait) IsLeveled

func (a *Trait) IsLeveled() bool

IsLeveled returns true if the Trait is capable of having levels.

func (*Trait) MarshalJSON

func (a *Trait) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Trait) ModifierNotes

func (a *Trait) ModifierNotes() string

ModifierNotes returns the notes due to modifiers.

func (*Trait) Notes

func (a *Trait) Notes() string

Notes returns the local notes.

func (*Trait) OwningEntity

func (a *Trait) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Trait) SecondaryText

func (a *Trait) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the "secondary" text: the text display below an Trait.

func (*Trait) SetOwningEntity

func (a *Trait) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Trait) String

func (a *Trait) String() string

String implements fmt.Stringer.

func (*Trait) TagList

func (a *Trait) TagList() []string

TagList returns the list of tags.

func (*Trait) TemplatePickerData

func (a *Trait) TemplatePickerData() *TemplatePicker

TemplatePickerData returns the TemplatePicker data, if any.

func (*Trait) UnmarshalJSON

func (a *Trait) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type TraitData

type TraitData struct {
	ContainerBase[*Trait]
	TraitEditData
}

TraitData holds the Trait data that is written to disk.

func (*TraitData) ClearUnusedFieldsForType

func (d *TraitData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*TraitData) Kind

func (d *TraitData) Kind() string

Kind returns the kind of data.

type TraitEditData

type TraitEditData struct {
	Name           string             `json:"name,omitempty"`
	PageRef        string             `json:"reference,omitempty"`
	LocalNotes     string             `json:"notes,omitempty"`
	VTTNotes       string             `json:"vtt_notes,omitempty"`
	Ancestry       string             `json:"ancestry,omitempty"` // Container only
	UserDesc       string             `json:"userdesc,omitempty"`
	Tags           []string           `json:"tags,omitempty"`
	Modifiers      []*TraitModifier   `json:"modifiers,omitempty"`
	BasePoints     fxp.Int            `json:"base_points,omitempty"`      // Non-container only
	Levels         fxp.Int            `json:"levels,omitempty"`           // Non-container only
	PointsPerLevel fxp.Int            `json:"points_per_level,omitempty"` // Non-container only
	Prereq         *PrereqList        `json:"prereqs,omitempty"`          // Non-container only
	Weapons        []*Weapon          `json:"weapons,omitempty"`          // Non-container only
	Features       Features           `json:"features,omitempty"`         // Non-container only
	Study          []*Study           `json:"study,omitempty"`            // Non-container only
	TemplatePicker *TemplatePicker    `json:"template_picker,omitempty"`  // Container only
	CR             SelfControlRoll    `json:"cr,omitempty"`
	CRAdj          SelfControlRollAdj `json:"cr_adj,omitempty"`
	ContainerType  ContainerType      `json:"container_type,omitempty"` // Container only
	Disabled       bool               `json:"disabled,omitempty"`
	RoundCostDown  bool               `json:"round_down,omitempty"` // Non-container only
	CanLevel       bool               `json:"can_level,omitempty"`  // Non-container only
}

TraitEditData holds the Trait data that can be edited by the UI detail editor.

func (*TraitEditData) ApplyTo

func (d *TraitEditData) ApplyTo(t *Trait)

ApplyTo implements node.EditorData.

func (*TraitEditData) CopyFrom

func (d *TraitEditData) CopyFrom(t *Trait)

CopyFrom implements node.EditorData.

type TraitListProvider

type TraitListProvider interface {
	EntityProvider
	TraitList() []*Trait
	SetTraitList(list []*Trait)
}

TraitListProvider defines the method needed to access the trait list data.

type TraitModifier

type TraitModifier struct {
	TraitModifierData
	Entity *Entity
}

TraitModifier holds a modifier to an Trait.

func NewTraitModifier

func NewTraitModifier(entity *Entity, parent *TraitModifier, container bool) *TraitModifier

NewTraitModifier creates a TraitModifier.

func NewTraitModifiersFromFile

func NewTraitModifiersFromFile(fileSystem fs.FS, filePath string) ([]*TraitModifier, error)

NewTraitModifiersFromFile loads a TraitModifier list from a file.

func (*TraitModifier) ApplyNameableKeys

func (m *TraitModifier) ApplyNameableKeys(keyMap map[string]string)

ApplyNameableKeys replaces any nameable keys found in this TraitModifier with the corresponding values in the provided map.

func (*TraitModifier) CellData

func (m *TraitModifier) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*TraitModifier) Clone

func (m *TraitModifier) Clone(entity *Entity, parent *TraitModifier, preserveID bool) *TraitModifier

Clone implements Node.

func (*TraitModifier) CostDescription

func (m *TraitModifier) CostDescription() string

CostDescription returns the formatted cost.

func (*TraitModifier) CostModifier

func (m *TraitModifier) CostModifier() fxp.Int

CostModifier returns the total cost modifier.

func (*TraitModifier) Depth

func (m *TraitModifier) Depth() int

Depth returns the number of parents this node has.

func (*TraitModifier) Enabled

func (m *TraitModifier) Enabled() bool

Enabled returns true if this node is enabled.

func (*TraitModifier) FillWithNameableKeys

func (m *TraitModifier) FillWithNameableKeys(keyMap map[string]string)

FillWithNameableKeys adds any nameable keys found in this TraitModifier to the provided map.

func (*TraitModifier) FullCostDescription

func (m *TraitModifier) FullCostDescription() string

FullCostDescription is the same as CostDescription().

func (*TraitModifier) FullDescription

func (m *TraitModifier) FullDescription() string

FullDescription returns a full description.

func (*TraitModifier) HasLevels

func (m *TraitModifier) HasLevels() bool

HasLevels returns true if this TraitModifier has levels.

func (*TraitModifier) MarshalJSON

func (m *TraitModifier) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*TraitModifier) OwningEntity

func (m *TraitModifier) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*TraitModifier) SecondaryText

func (m *TraitModifier) SecondaryText(optionChecker func(DisplayOption) bool) string

SecondaryText returns the "secondary" text: the text display below an Trait.

func (*TraitModifier) SetEnabled

func (m *TraitModifier) SetEnabled(enabled bool)

SetEnabled makes the node enabled, if possible.

func (*TraitModifier) SetOwningEntity

func (m *TraitModifier) SetOwningEntity(entity *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*TraitModifier) String

func (m *TraitModifier) String() string

func (*TraitModifier) TagList

func (m *TraitModifier) TagList() []string

TagList returns the list of tags.

func (*TraitModifier) UnmarshalJSON

func (m *TraitModifier) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type TraitModifierCostType

type TraitModifierCostType byte

TraitModifierCostType describes how a TraitModifier's point cost is applied.

const (
	PercentageTraitModifierCostType TraitModifierCostType = iota
	PointsTraitModifierCostType
	MultiplierTraitModifierCostType
	LastTraitModifierCostType = MultiplierTraitModifierCostType
)

Possible values.

func ExtractTraitModifierCostType

func ExtractTraitModifierCostType(str string) TraitModifierCostType

ExtractTraitModifierCostType extracts the value from a string.

func (TraitModifierCostType) EnsureValid

func (enum TraitModifierCostType) EnsureValid() TraitModifierCostType

EnsureValid ensures this is of a known value.

func (TraitModifierCostType) Key

func (enum TraitModifierCostType) Key() string

Key returns the key used in serialization.

func (TraitModifierCostType) MarshalText

func (enum TraitModifierCostType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (TraitModifierCostType) String

func (enum TraitModifierCostType) String() string

String implements fmt.Stringer.

func (*TraitModifierCostType) UnmarshalText

func (enum *TraitModifierCostType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type TraitModifierData

type TraitModifierData struct {
	ContainerBase[*TraitModifier]
	TraitModifierEditData
}

TraitModifierData holds the TraitModifier data that is written to disk.

func (*TraitModifierData) ClearUnusedFieldsForType

func (d *TraitModifierData) ClearUnusedFieldsForType()

ClearUnusedFieldsForType zeroes out the fields that are not applicable to this type (container vs not-container).

func (*TraitModifierData) Kind

func (d *TraitModifierData) Kind() string

Kind returns the kind of data.

type TraitModifierEditData

type TraitModifierEditData struct {
	Name       string                `json:"name,omitempty"`
	PageRef    string                `json:"reference,omitempty"`
	LocalNotes string                `json:"notes,omitempty"`
	VTTNotes   string                `json:"vtt_notes,omitempty"`
	Tags       []string              `json:"tags,omitempty"`
	Cost       fxp.Int               `json:"cost,omitempty"`      // Non-container only
	Levels     fxp.Int               `json:"levels,omitempty"`    // Non-container only
	Affects    Affects               `json:"affects,omitempty"`   // Non-container only
	CostType   TraitModifierCostType `json:"cost_type,omitempty"` // Non-container only
	Disabled   bool                  `json:"disabled,omitempty"`  // Non-container only
	Features   Features              `json:"features,omitempty"`  // Non-container only
}

TraitModifierEditData holds the TraitModifier data that can be edited by the UI detail editor.

func (*TraitModifierEditData) ApplyTo

func (d *TraitModifierEditData) ApplyTo(mod *TraitModifier)

ApplyTo implements node.EditorData.

func (*TraitModifierEditData) CopyFrom

func (d *TraitModifierEditData) CopyFrom(mod *TraitModifier)

CopyFrom implements node.EditorData.

type TraitModifierListProvider

type TraitModifierListProvider interface {
	EntityProvider
	TraitModifierList() []*TraitModifier
	SetTraitModifierList(list []*TraitModifier)
}

TraitModifierListProvider defines the method needed to access the trait modifier list data.

type TraitPrereq

type TraitPrereq struct {
	Parent        *PrereqList     `json:"-"`
	Type          PrereqType      `json:"type"`
	Has           bool            `json:"has"`
	NameCriteria  StringCriteria  `json:"name,omitempty"`
	LevelCriteria NumericCriteria `json:"level,omitempty"`
	NotesCriteria StringCriteria  `json:"notes,omitempty"`
}

TraitPrereq holds a prereq against a Trait.

func NewTraitPrereq

func NewTraitPrereq() *TraitPrereq

NewTraitPrereq creates a new TraitPrereq.

func (*TraitPrereq) ApplyNameableKeys

func (a *TraitPrereq) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Prereq.

func (*TraitPrereq) Clone

func (a *TraitPrereq) Clone(parent *PrereqList) Prereq

Clone implements Prereq.

func (*TraitPrereq) FillWithNameableKeys

func (a *TraitPrereq) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Prereq.

func (*TraitPrereq) ParentList

func (a *TraitPrereq) ParentList() *PrereqList

ParentList implements Prereq.

func (*TraitPrereq) PrereqType

func (a *TraitPrereq) PrereqType() PrereqType

PrereqType implements Prereq.

func (*TraitPrereq) Satisfied

func (a *TraitPrereq) Satisfied(entity *Entity, exclude any, tooltip *xio.ByteBuffer, prefix string, _ *bool) bool

Satisfied implements Prereq.

type Weapon

type Weapon struct {
	WeaponData
	Owner WeaponOwner
}

Weapon holds the stats for a weapon.

func ExtractWeaponsOfType

func ExtractWeaponsOfType(desiredType WeaponType, list []*Weapon) []*Weapon

ExtractWeaponsOfType filters the input list down to only those weapons of the given type.

func NewWeapon

func NewWeapon(owner WeaponOwner, weaponType WeaponType) *Weapon

NewWeapon creates a new weapon of the given type.

func SeparateWeapons

func SeparateWeapons(list []*Weapon) (melee, ranged []*Weapon)

SeparateWeapons returns separate lists for melee and ranged weapons found in the input list.

func (*Weapon) ApplyNameableKeys

func (w *Weapon) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys replaces any nameable keys found in this Weapon with the corresponding values in the provided map.

func (*Weapon) ApplyTo

func (w *Weapon) ApplyTo(t *Weapon)

ApplyTo implements node.EditorData.

func (*Weapon) CellData

func (w *Weapon) CellData(column int, data *CellData)

CellData returns the cell data information for the given column.

func (*Weapon) Clone

func (w *Weapon) Clone(_ *Entity, _ *Weapon, preserveID bool) *Weapon

Clone implements Node.

func (*Weapon) Container

func (w *Weapon) Container() bool

Container returns true if this is a container.

func (*Weapon) CopyFrom

func (w *Weapon) CopyFrom(t *Weapon)

CopyFrom implements node.EditorData.

func (*Weapon) Enabled

func (w *Weapon) Enabled() bool

Enabled returns true if this node is enabled.

func (*Weapon) EncumbrancePenalty

func (w *Weapon) EncumbrancePenalty(entity *Entity, tooltip *xio.ByteBuffer) fxp.Int

EncumbrancePenalty returns the current encumbrance penalty.

func (*Weapon) Entity

func (w *Weapon) Entity() *Entity

Entity returns the owning entity, if any.

func (*Weapon) FillWithNameableKeys

func (w *Weapon) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys adds any nameable keys found in this Weapon to the provided map.

func (*Weapon) HasChildren

func (w *Weapon) HasChildren() bool

HasChildren returns true if this node has children.

func (*Weapon) HashCode

func (w *Weapon) HashCode() uint32

HashCode returns a hash value for this weapon's resolved state.

func (*Weapon) Kind

func (w *Weapon) Kind() string

Kind returns the kind of data.

func (*Weapon) Less

func (w *Weapon) Less(other *Weapon) bool

Less returns true if this weapon should be sorted above the other weapon.

func (*Weapon) MarshalJSON

func (w *Weapon) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Weapon) NodeChildren

func (w *Weapon) NodeChildren() []*Weapon

NodeChildren returns the children of this node, if any.

func (*Weapon) Notes

func (w *Weapon) Notes() string

Notes returns the notes for this weapon.

func (*Weapon) Open

func (w *Weapon) Open() bool

Open returns true if this node is currently open.

func (*Weapon) OwningEntity

func (w *Weapon) OwningEntity() *Entity

OwningEntity returns the owning Entity.

func (*Weapon) PC

func (w *Weapon) PC() *Entity

PC returns the owning PC, if any.

func (*Weapon) Parent

func (w *Weapon) Parent() *Weapon

Parent returns the parent.

func (*Weapon) ResolvedBlock

func (w *Weapon) ResolvedBlock(tooltip *xio.ByteBuffer) string

ResolvedBlock returns the resolved block level.

func (*Weapon) ResolvedMinimumStrength

func (w *Weapon) ResolvedMinimumStrength() fxp.Int

ResolvedMinimumStrength returns the resolved minimum strength required to use this weapon, or 0 if there is none.

func (*Weapon) ResolvedParry

func (w *Weapon) ResolvedParry(tooltip *xio.ByteBuffer) string

ResolvedParry returns the resolved parry level.

func (*Weapon) ResolvedRange

func (w *Weapon) ResolvedRange() string

ResolvedRange returns the range, fully resolved for the user's ST, if possible.

func (*Weapon) SetChildren

func (w *Weapon) SetChildren(_ []*Weapon)

SetChildren sets the children of this node.

func (*Weapon) SetOpen

func (w *Weapon) SetOpen(_ bool)

SetOpen sets the current open state for this node.

func (*Weapon) SetOwner

func (w *Weapon) SetOwner(owner WeaponOwner)

SetOwner sets the owner and ensures sub-components have their owners set.

func (*Weapon) SetOwningEntity

func (w *Weapon) SetOwningEntity(_ *Entity)

SetOwningEntity sets the owning entity and configures any sub-components as needed.

func (*Weapon) SetParent

func (w *Weapon) SetParent(_ *Weapon)

SetParent sets the parent.

func (*Weapon) SkillLevel

func (w *Weapon) SkillLevel(tooltip *xio.ByteBuffer) fxp.Int

SkillLevel returns the resolved skill level.

func (*Weapon) String

func (w *Weapon) String() string

func (*Weapon) UUID

func (w *Weapon) UUID() uuid.UUID

UUID returns the UUID of this data.

func (*Weapon) UnmarshalJSON

func (w *Weapon) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type WeaponBonus

type WeaponBonus struct {
	Type                   FeatureType         `json:"type"`
	Percent                bool                `json:"percent,omitempty"`
	SelectionType          WeaponSelectionType `json:"selection_type"`
	NameCriteria           StringCriteria      `json:"name,omitempty"`
	SpecializationCriteria StringCriteria      `json:"specialization,omitempty"`
	RelativeLevelCriteria  NumericCriteria     `json:"level,omitempty"`
	TagsCriteria           StringCriteria      `json:"tags,alt=category,omitempty"`
	LeveledAmount
	// contains filtered or unexported fields
}

WeaponBonus holds the data for an adjustment to weapon damage.

func NewWeaponDRDivisorBonus

func NewWeaponDRDivisorBonus() *WeaponBonus

NewWeaponDRDivisorBonus creates a new weapon DR divisor bonus.

func NewWeaponDamageBonus

func NewWeaponDamageBonus() *WeaponBonus

NewWeaponDamageBonus creates a new weapon damage bonus.

func (*WeaponBonus) AddToTooltip

func (w *WeaponBonus) AddToTooltip(buffer *xio.ByteBuffer)

AddToTooltip implements Bonus.

func (*WeaponBonus) ApplyNameableKeys

func (w *WeaponBonus) ApplyNameableKeys(m map[string]string)

ApplyNameableKeys implements Feature.

func (*WeaponBonus) Clone

func (w *WeaponBonus) Clone() Feature

Clone implements Feature.

func (*WeaponBonus) FeatureType

func (w *WeaponBonus) FeatureType() FeatureType

FeatureType implements Feature.

func (*WeaponBonus) FillWithNameableKeys

func (w *WeaponBonus) FillWithNameableKeys(m map[string]string)

FillWithNameableKeys implements Feature.

func (*WeaponBonus) Owner

func (w *WeaponBonus) Owner() fmt.Stringer

Owner implements Bonus.

func (*WeaponBonus) SetLevel

func (w *WeaponBonus) SetLevel(level fxp.Int)

SetLevel implements Bonus.

func (*WeaponBonus) SetOwner

func (w *WeaponBonus) SetOwner(owner fmt.Stringer)

SetOwner implements Bonus.

type WeaponDamage

type WeaponDamage struct {
	WeaponDamageData
	Owner *Weapon
}

WeaponDamage holds the damage information for a weapon.

func (*WeaponDamage) Clone

func (w *WeaponDamage) Clone(owner *Weapon) *WeaponDamage

Clone creates a copy of this data.

func (*WeaponDamage) DamageTooltip

func (w *WeaponDamage) DamageTooltip() string

DamageTooltip returns a formatted tooltip for the damage.

func (*WeaponDamage) MarshalJSON

func (w *WeaponDamage) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*WeaponDamage) ResolvedDamage

func (w *WeaponDamage) ResolvedDamage(tooltip *xio.ByteBuffer) string

ResolvedDamage returns the damage, fully resolved for the user's sw or thr, if possible.

func (*WeaponDamage) String

func (w *WeaponDamage) String() string

func (*WeaponDamage) UnmarshalJSON

func (w *WeaponDamage) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type WeaponDamageData

type WeaponDamageData struct {
	Type                      string         `json:"type"`
	StrengthType              StrengthDamage `json:"st,omitempty"`
	Base                      *dice.Dice     `json:"base,omitempty"`
	ArmorDivisor              fxp.Int        `json:"armor_divisor,omitempty"`
	Fragmentation             *dice.Dice     `json:"fragmentation,omitempty"`
	FragmentationArmorDivisor fxp.Int        `json:"fragmentation_armor_divisor,omitempty"`
	FragmentationType         string         `json:"fragmentation_type,omitempty"`
	ModifierPerDie            fxp.Int        `json:"modifier_per_die,omitempty"`
}

WeaponDamageData holds the WeaponDamage data that is written to disk.

type WeaponData

type WeaponData struct {
	ID              uuid.UUID       `json:"id"`
	Type            WeaponType      `json:"type"`
	Damage          WeaponDamage    `json:"damage"`
	MinimumStrength string          `json:"strength,omitempty"`
	Usage           string          `json:"usage,omitempty"`
	UsageNotes      string          `json:"usage_notes,omitempty"`
	Reach           string          `json:"reach,omitempty"`
	Parry           string          `json:"parry,omitempty"`
	Block           string          `json:"block,omitempty"`
	Accuracy        string          `json:"accuracy,omitempty"`
	Range           string          `json:"range,omitempty"`
	RateOfFire      string          `json:"rate_of_fire,omitempty"`
	Shots           string          `json:"shots,omitempty"`
	Bulk            string          `json:"bulk,omitempty"`
	Recoil          string          `json:"recoil,omitempty"`
	Defaults        []*SkillDefault `json:"defaults,omitempty"`
}

WeaponData holds the Weapon data that is written to disk.

type WeaponListProvider

type WeaponListProvider interface {
	EntityProvider
	WeaponOwner() WeaponOwner
	Weapons(weaponType WeaponType) []*Weapon
	SetWeapons(weaponType WeaponType, list []*Weapon)
}

WeaponListProvider defines the method needed to access the weapon list data.

type WeaponOwner

type WeaponOwner interface {
	fmt.Stringer
	OwningEntity() *Entity
	Description() string
	Notes() string
	FeatureList() Features
	TagList() []string
}

WeaponOwner defines the methods required of a Weapon owner.

type WeaponSelectionType

type WeaponSelectionType byte

WeaponSelectionType holds the type of a weapon selection.

const (
	WithRequiredSkillWeaponSelectionType WeaponSelectionType = iota
	ThisWeaponWeaponSelectionType
	WithNameWeaponSelectionType
	LastWeaponSelectionType = WithNameWeaponSelectionType
)

Possible values.

func ExtractWeaponSelectionType

func ExtractWeaponSelectionType(str string) WeaponSelectionType

ExtractWeaponSelectionType extracts the value from a string.

func (WeaponSelectionType) EnsureValid

func (enum WeaponSelectionType) EnsureValid() WeaponSelectionType

EnsureValid ensures this is of a known value.

func (WeaponSelectionType) Key

func (enum WeaponSelectionType) Key() string

Key returns the key used in serialization.

func (WeaponSelectionType) MarshalText

func (enum WeaponSelectionType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (WeaponSelectionType) String

func (enum WeaponSelectionType) String() string

String implements fmt.Stringer.

func (*WeaponSelectionType) UnmarshalText

func (enum *WeaponSelectionType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type WeaponType

type WeaponType byte

WeaponType holds the type of an weapon definition.

const (
	MeleeWeaponType WeaponType = iota
	RangedWeaponType
	LastWeaponType = RangedWeaponType
)

Possible values.

func ExtractWeaponType

func ExtractWeaponType(str string) WeaponType

ExtractWeaponType extracts the value from a string.

func (WeaponType) AltString

func (enum WeaponType) AltString() string

AltString returns the alternate string.

func (WeaponType) EnsureValid

func (enum WeaponType) EnsureValid() WeaponType

EnsureValid ensures this is of a known value.

func (WeaponType) Key

func (enum WeaponType) Key() string

Key returns the key used in serialization.

func (WeaponType) MarshalText

func (enum WeaponType) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (WeaponType) SVG

func (enum WeaponType) SVG() *unison.SVG

SVG returns the SVG that should be used for this type.

func (WeaponType) String

func (enum WeaponType) String() string

String implements fmt.Stringer.

func (*WeaponType) UnmarshalText

func (enum *WeaponType) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type Weight

type Weight fxp.Int

Weight contains a fixed-point value in pounds.

func ExtendedWeightAdjustedForModifiers

func ExtendedWeightAdjustedForModifiers(defUnits WeightUnits, qty fxp.Int, baseWeight Weight, modifiers []*EquipmentModifier, features Features, children []*Equipment, forSkills, weightIgnoredForSkills bool) Weight

ExtendedWeightAdjustedForModifiers calculates the extended weight.

func WeightAdjustedForModifiers

func WeightAdjustedForModifiers(weight Weight, modifiers []*EquipmentModifier, defUnits WeightUnits) Weight

WeightAdjustedForModifiers returns the weight after adjusting it for a set of modifiers.

func WeightFromInteger

func WeightFromInteger[T constraints.Integer](value T, unit WeightUnits) Weight

WeightFromInteger creates a new Weight.

func WeightFromString

func WeightFromString(text string, defaultUnits WeightUnits) (Weight, error)

WeightFromString creates a new Weight. May have any of the known Weight suffixes or no notation at all, in which case defaultUnits is used.

func WeightFromStringForced

func WeightFromStringForced(text string, defaultUnits WeightUnits) Weight

WeightFromStringForced creates a new Weight. May have any of the known Weight suffixes or no notation at all, in which case defaultUnits is used.

func (Weight) MarshalJSON

func (w Weight) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (Weight) String

func (w Weight) String() string

func (*Weight) UnmarshalJSON

func (w *Weight) UnmarshalJSON(in []byte) error

UnmarshalJSON implements json.Unmarshaler.

type WeightCriteria

type WeightCriteria struct {
	WeightCriteriaData
}

WeightCriteria holds the criteria for matching a number.

func (WeightCriteria) Matches

func (w WeightCriteria) Matches(value Weight) bool

Matches performs a comparison and returns true if the data matches.

func (WeightCriteria) ShouldOmit

func (w WeightCriteria) ShouldOmit() bool

ShouldOmit implements json.Omitter.

func (WeightCriteria) String

func (w WeightCriteria) String() string

func (*WeightCriteria) UnmarshalJSON

func (w *WeightCriteria) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type WeightCriteriaData

type WeightCriteriaData struct {
	Compare   NumericCompareType `json:"compare,omitempty"`
	Qualifier Weight             `json:"qualifier,omitempty"`
}

WeightCriteriaData holds the criteria for matching a number that should be written to disk.

type WeightUnits

type WeightUnits byte

WeightUnits holds the weight unit type. Note that conversions to/from metric are done using the simplified GURPS metric conversion of 1 lb = 0.5kg. For consistency, all metric weights are converted to kilograms, then to pounds, rather than the variations at different weights that the GURPS rules suggest.

const (
	Pound WeightUnits = iota
	PoundAlt
	Ounce
	Ton
	TonAlt
	Kilogram
	Gram
	LastWeightUnits = Gram
)

Possible values.

func ExtractWeightUnits

func ExtractWeightUnits(str string) WeightUnits

ExtractWeightUnits extracts the value from a string.

func TrailingWeightUnitsFromString

func TrailingWeightUnitsFromString(s string, defUnits WeightUnits) WeightUnits

TrailingWeightUnitsFromString extracts a trailing WeightUnits from a string.

func (WeightUnits) EnsureValid

func (enum WeightUnits) EnsureValid() WeightUnits

EnsureValid ensures this is of a known value.

func (WeightUnits) Format

func (enum WeightUnits) Format(weight Weight) string

Format the weight for this WeightUnits.

func (WeightUnits) Key

func (enum WeightUnits) Key() string

Key returns the key used in serialization.

func (WeightUnits) MarshalText

func (enum WeightUnits) MarshalText() (text []byte, err error)

MarshalText implements the encoding.TextMarshaler interface.

func (WeightUnits) String

func (enum WeightUnits) String() string

String implements fmt.Stringer.

func (WeightUnits) ToPounds

func (enum WeightUnits) ToPounds(weight fxp.Int) fxp.Int

ToPounds the weight for this WeightUnits.

func (*WeightUnits) UnmarshalText

func (enum *WeightUnits) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

type WeightedAncestryOptions

type WeightedAncestryOptions struct {
	Weight int              `json:"weight"`
	Value  *AncestryOptions `json:"value"`
}

WeightedAncestryOptions is a string that has a weight associated with it.

func (*WeightedAncestryOptions) Valid

func (o *WeightedAncestryOptions) Valid() bool

Valid returns true if this option has a valid weight.

type WeightedStringOption

type WeightedStringOption struct {
	Weight int    `json:"weight"`
	Value  string `json:"value"`
}

WeightedStringOption is a string that has a weight associated with it.

func (*WeightedStringOption) Valid

func (o *WeightedStringOption) Valid() bool

Valid returns true if this option has a valid weight.

Source Files

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL