You've already forked obsidian-visualiser
Item Improvements added to the homebrew manager.
This commit is contained in:
26
app/types/character.d.ts
vendored
26
app/types/character.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
import type { MAIN_STATS, ABILITIES, LEVELS, TRAINING_LEVELS, SPELL_TYPES, CATEGORIES, SPELL_ELEMENTS, ALIGNMENTS, RESISTANCES, DAMAGE_TYPES, WEAPON_TYPES, PropertySum, ITEM_BUFFER_KEYS } from "#shared/character";
|
||||
import type { MAIN_STATS, ABILITIES, LEVELS, TRAINING_LEVELS, SPELL_TYPES, CATEGORIES, SPELL_ELEMENTS, ALIGNMENTS, RESISTANCES, DAMAGE_TYPES, WEAPON_TYPES, CRAFTING_TYPES, PropertySum, ITEM_BUFFER_KEYS } from "#shared/character";
|
||||
import type { Localized } from "../types/general";
|
||||
|
||||
export type MainStat = typeof MAIN_STATS[number];
|
||||
@@ -12,6 +12,7 @@ export type Alignment = typeof ALIGNMENTS[number];
|
||||
export type Resistance = typeof RESISTANCES[number];
|
||||
export type DamageType = typeof DAMAGE_TYPES[number];
|
||||
export type WeaponType = typeof WEAPON_TYPES[number];
|
||||
export type CraftingType = typeof CRAFTING_TYPES[number];
|
||||
|
||||
export type FeatureID = string;
|
||||
export type FeatureEffectID = string;
|
||||
@@ -56,8 +57,9 @@ export type CharacterVariables = {
|
||||
spells: string[]; //Spell ID
|
||||
items: ItemState[];
|
||||
|
||||
money: number;
|
||||
components: { money: number, natural: number, mineral: number, processed: number, magical: number };
|
||||
transformed: boolean;
|
||||
craft?: { item: string, progress: number };
|
||||
};
|
||||
export type TreeLeaf = {
|
||||
id: FeatureID;
|
||||
@@ -81,7 +83,7 @@ type MundaneState = { };
|
||||
type ItemState = {
|
||||
id: string;
|
||||
amount: number;
|
||||
enchantments?: string[];
|
||||
improvements?: string[];
|
||||
charges?: number;
|
||||
equipped?: boolean;
|
||||
state?: (ArmorState | WeaponState | WondrousState | MundaneState) & CommonState;
|
||||
@@ -93,7 +95,7 @@ export type CharacterConfig = {
|
||||
spells: Record<string, SpellConfig>;
|
||||
aspects: Record<string, AspectConfig>;
|
||||
features: Record<FeatureID, Feature>;
|
||||
enchantments: Record<string, EnchantementConfig>;
|
||||
improvements: Record<string, ImprovementConfig>;
|
||||
items: Record<string, ItemConfig>;
|
||||
action: Record<string, { id: string, name: string, description: string, cost?: number, variants?: string[], parent?: string }>;
|
||||
reaction: Record<string, { id: string, name: string, description: string, cost?: number, variants?: string[], parent?: string }>;
|
||||
@@ -107,13 +109,15 @@ export type CharacterConfig = {
|
||||
poison: Record<FeatureID, { name: string, difficulty: number, efficienty: number, solubility: number }>; //TODO
|
||||
dedication: Record<FeatureID, { name: string, requirement: Array<{ stat: MainStat, amount: number }> }>; //TODO
|
||||
};
|
||||
export type EnchantementConfig = {
|
||||
export type ImprovementConfig = {
|
||||
id: string;
|
||||
name: string; //TODO -> TextID
|
||||
description: i18nID;
|
||||
rarity: 'common' | 'uncommon' | 'rare' | 'veryrare' | 'legendary';
|
||||
effect: Array<FeatureEquipment | FeatureValue | FeatureList>;
|
||||
power: number;
|
||||
restrictions?: Array<'armor' | 'mundane' | 'wondrous' | 'weapon' | `armor/${ArmorConfig['type']}` | `weapon/${WeaponConfig['type'][number]}`>; // Need to respect *any* of the restriction, not every restrictions.
|
||||
craft: { difficulty?: number, ability?: CraftingType };
|
||||
restrictions?: Partial<Record<'armor' | 'mundane' | 'wondrous' | 'weapon' | `armor/${ArmorConfig['type']}` | `weapon/${WeaponConfig['type'][number]}` | string, boolean>>; // Need to respect *any* of the restriction, not every restrictions.
|
||||
cursed: boolean;
|
||||
}
|
||||
export type ItemConfig = CommonItemConfig & (ArmorConfig | WeaponConfig | WondrousConfig | MundaneConfig);
|
||||
@@ -122,18 +126,18 @@ type CommonItemConfig = {
|
||||
name: string; //TODO -> TextID
|
||||
flavoring?: i18nID;
|
||||
description: i18nID;
|
||||
rarity: 'common' | 'uncommon' | 'rare' | 'legendary';
|
||||
rarity: 'common' | 'uncommon' | 'rare' | 'veryrare' | 'legendary';
|
||||
weight?: number; //Optionnal but highly recommended
|
||||
price?: number; //Optionnal but highly recommended
|
||||
capacity?: number; //Optionnal as most mundane items should not receive enchantments (potions, herbal heals, etc...)
|
||||
capacity?: number; //Optionnal as most mundane items should not receive improvements (potions, herbal heals, etc...)
|
||||
powercost?: number; //Optionnal
|
||||
charge?: number //Max amount of charges
|
||||
enchantments?: string[]; //Enchantment ID
|
||||
improvements?: string[]; //Improvement ID
|
||||
effects?: Array<FeatureValue | FeatureState | FeatureEquipment | FeatureList>;
|
||||
equippable: boolean;
|
||||
consummable: boolean;
|
||||
craft?: { mineral: number, natural: number, processed: number, magical: number };
|
||||
//variants?: string[];
|
||||
craft: { mineral: number, natural: number, processed: number, magical: number, difficulty?: number, ability?: CraftingType };
|
||||
variants?: string[]; //ID array
|
||||
};
|
||||
type ArmorConfig = {
|
||||
category: 'armor';
|
||||
|
||||
Reference in New Issue
Block a user