-
🎲 Würfelproben
-
- {!isAvailable && (
-
- ⚠️ TaleSpire Dice API nicht verfügbar - Development Mode aktiv
-
- )}
-
- {/* Modifikator */}
-
-
- setModifier(parseInt(e.target.value) || 0)}
- min="-10"
- max="10"
- className="modifier-input"
- />
-
-
- {/* Letztes Ergebnis */}
- {lastResult && (
-
-
Letztes Ergebnis:
-
-
Würfel: {lastResult.dice?.join(', ')}
- {lastResult.type === 'initiative' ? (
-
Initiative: {lastResult.total}
- ) : (
- <>
-
{lastResult.success ? '✅ Erfolg' : '❌ Fehlschlag'}
- {lastResult.success && (
-
Qualitätsstufe: {lastResult.qualityLevel}
- )}
- >
- )}
-
-
- )}
-
- {/* Eigenschaften */}
-
-
Eigenschaftsproben
-
- {Object.entries(character.attributes).map(([key, value]) => (
-
- ))}
-
-
-
- {/* Fertigkeiten */}
- {Object.keys(character.skills).length > 0 && (
-
-
Fertigkeitsproben
-
- {Object.values(character.skills).slice(0, 6).map((skill) => (
-
- ))}
-
-
- )}
-
- {/* Zauberproben */}
- {Object.keys(character.spells).length > 0 && (
-
-
Zauberproben
-
- {Object.values(character.spells).slice(0, 4).map((spell) => (
-
- ))}
-
-
- )}
-
- {/* Kampf */}
-
-
Kampfwürfe
-
-
-
-
-
-
- );
-};
-
-export default DSADiceRoller;
\ No newline at end of file
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 46f7cd2..d1791aa 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -14,6 +14,12 @@
"culturePlaceholder": "z.B. Mittelländisch, Thorwalsch",
"profession": "Profession",
"professionPlaceholder": "z.B. Krieger, Magier, Kundschafter",
+ "socialstatus": "Sozialstatus",
+ "socialstatusPlaceholder": "z.B. Unfrei, Bürger, Adel",
+ "hometown": "Heimatort",
+ "hometownPlaceholder": "Geburts- oder Heimatort",
+ "family": "Familie",
+ "familyPlaceholder": "Familienstand und Verwandtschaft",
"experienceLevel": "Erfahrungsstufe",
"experienceLevels": {
"inexperienced": "Unerfahren",
@@ -25,6 +31,21 @@
"legendary": "Legendär"
}
},
+ "appearance": {
+ "title": "Aussehen",
+ "age": "Alter",
+ "agePlaceholder": "Alter in Jahren",
+ "haircolor": "Haarfarbe",
+ "haircolorPlaceholder": "z.B. Braun, Blond, Schwarz",
+ "eyecolor": "Augenfarbe",
+ "eyecolorPlaceholder": "z.B. Braun, Blau, Grün",
+ "height": "Größe",
+ "heightPlaceholder": "Größe in cm",
+ "weight": "Gewicht",
+ "weightPlaceholder": "Gewicht in kg",
+ "characteristics": "Besondere Merkmale",
+ "characteristicsPlaceholder": "Narben, Tätowierungen, etc."
+ },
"attributes": {
"title": "Eigenschaften",
"courage": "MU - Mut",
@@ -39,16 +60,62 @@
"combat": {
"title": "Kampfwerte",
"lifePoints": "Lebenspunkte",
- "stamina": "Ausdauer",
+ "astralEnergy": "Astralpunkte",
"initiative": "Initiative",
- "speed": "Geschwindigkeit"
+ "speed": "Geschwindigkeit",
+ "max": "Max",
+ "current": "Aktuell"
},
"skills": {
- "title": "Fertigkeiten"
+ "title": "Fertigkeiten",
+ "skillValue": "FW",
+ "addSkill": "Fertigkeit hinzufügen"
+ },
+ "advantages": {
+ "title": "Vorteile",
+ "addAdvantage": "Vorteil hinzufügen"
+ },
+ "disadvantages": {
+ "title": "Nachteile",
+ "addDisadvantage": "Nachteil hinzufügen"
+ },
+ "equipment": {
+ "title": "Ausrüstung",
+ "addEquipment": "Ausrüstung hinzufügen"
},
"spells": {
"title": "Zauber",
- "addMagic": "🪄 Zauberfähigkeiten hinzufügen"
+ "addMagic": "Zauberfähigkeiten hinzufügen",
+ "addSpell": "Zauber hinzufügen",
+ "magicalTraditions": "Magische Traditionen",
+ "tradition": "Tradition",
+ "skillValue": "ZfW - Zauberfertigkeit",
+ "aspCost": "AsP-Kosten",
+ "castingTime": "Zauberdauer",
+ "range": "Reichweite",
+ "duration": "Wirkungsdauer",
+ "difficulty": "Erschwernis",
+ "description": "Beschreibung",
+ "effect": "Wirkung",
+ "traditions": {
+ "gildenmagier": "Gildenmagier",
+ "hexe": "Hexe",
+ "druide": "Druide",
+ "elf": "Elf",
+ "scharlatane": "Scharlatane",
+ "zauberbarde": "Zauberbarde",
+ "zaubertänzer": "Zaubertänzer",
+ "intuitivezauberer": "Intuitive Zauberer"
+ }
+ },
+ "common": {
+ "save": "Speichern",
+ "cancel": "Abbrechen",
+ "edit": "Bearbeiten",
+ "delete": "Löschen",
+ "add": "Hinzufügen",
+ "close": "Schließen",
+ "confirm": "Bestätigen"
}
}
-}
+}
\ No newline at end of file
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 7532c31..d534734 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -48,7 +48,7 @@
},
"spells": {
"title": "Spells",
- "addMagic": "🪄 Add Magic Abilities"
+ "addMagic": "Add Magic Abilities"
}
}
}
diff --git a/src/types/baseCharacter.ts b/src/types/baseCharacter.ts
new file mode 100644
index 0000000..86bdf02
--- /dev/null
+++ b/src/types/baseCharacter.ts
@@ -0,0 +1,46 @@
+import type {DSACalculatedValue} from "./baseDSA.ts";
+
+export interface DSAAttributes {
+ courage: number;
+ cleverness: number;
+ intuition: number;
+ charisma: number;
+ dexterity: number;
+ agility: number;
+ constitution: number;
+ strength: number;
+}
+
+export interface DSAPersonalData {
+ id: string;
+ name: string;
+ species: string;
+ culture: string;
+ profession: string;
+ socialstatus: string;
+ hometown: string;
+ family: string;
+ looks: DSALooks;
+}
+
+export interface DSALooks {
+ age: string;
+ haircolor: string;
+ eyecolor: string;
+ height: string;
+ weight: string;
+ characteristics: string;
+}
+
+export interface DSAHealth {
+ lifePoints: DSACalculatedValue;
+ conditions: string[];
+ pain: number;
+ fatigue: number;
+}
+
+export interface DSAResistances {
+ spirit: DSACalculatedValue;
+ thoughness: DSACalculatedValue;
+ dodge: DSACalculatedValue;
+}
diff --git a/src/types/baseDSA.ts b/src/types/baseDSA.ts
new file mode 100644
index 0000000..939ede6
--- /dev/null
+++ b/src/types/baseDSA.ts
@@ -0,0 +1,23 @@
+export interface DSACalculatedValue {
+ base: number;
+ modifier: number;
+ purchased: number;
+ max: number;
+ current: number;
+}
+
+export interface DSAMinMaxValue {
+ max: number;
+ current: number;
+}
+
+export interface DSANamedEntity {
+ id: string;
+ name: string;
+ description?: string;
+}
+
+export interface DSATimedEffect {
+ duration: string;
+ remaining?: number;
+}
diff --git a/src/types/character.ts b/src/types/character.ts
index e0fbcdb..fe5f16b 100644
--- a/src/types/character.ts
+++ b/src/types/character.ts
@@ -1,13 +1,4 @@
-export interface DSAAttributes {
- courage: number; // Mut
- cleverness: number; // Klugheit
- intuition: number; // Intuition
- charisma: number; // Charisma
- dexterity: number; // Fingerfertigkeit
- agility: number; // Gewandtheit
- constitution: number; // Konstitution
- strength: number; // Körperkraft
-}
+import type {DSAAttributes, DSAHealth, DSAPersonalData, DSAResistances} from "./baseCharacter.ts";
export interface DSASkill {
name: string;
@@ -16,54 +7,62 @@ export interface DSASkill {
}
export interface DSACombatValues {
- lifePoints: {
- max: number;
- current: number;
- };
- stamina: {
- max: number;
- current: number;
- };
- astralEnergy?: {
- max: number;
- current: number;
- };
initiative: number;
speed: number;
+ dodge: number;
+ unarmedAttack: number;
+ unarmedParry: number;
+ weapons: Record