unnötige Doku entfernt

This commit is contained in:
2025-07-25 11:17:50 +02:00
parent 81c5cffe2d
commit 0d38cb87e8
2 changed files with 0 additions and 341 deletions
-142
View File
@@ -1,142 +0,0 @@
# Praxispunkte (PP) Funktionalität
## Übersicht
Die Praxispunkte-Funktionalität ermöglicht es Spielern, ihre Charaktere effizienter zu entwickeln, indem sie gesammelte Praxispunkte nutzen können, um die Kosten für das Erlernen und Verbessern von Fertigkeiten und Zaubern zu reduzieren.
## Regeln
### Ausbildungsmöglichkeiten mit Praxispunkten (PP)
1. **1 TE für 1 PP** beim Verbessern der Fertigkeit, für die der PP vergeben wurde
2. **1 LE für 1 PP** beim Lernen von Zaubern aus der Gruppe, für die der PP vergeben wurde
## API-Endpunkte
### Praxispunkte abrufen
```
GET /api/characters/{id}/practice-points
```
Gibt alle verfügbaren Praxispunkte für einen Charakter zurück.
### Praxispunkte hinzufügen
```
POST /api/characters/{id}/practice-points/add
```
Fügt Praxispunkte zu einer Kategorie hinzu.
Request Body:
```json
{
"kategorie": "Sozial",
"anzahl": 3
}
```
### Praxispunkte verwenden
```
POST /api/characters/{id}/practice-points/use
```
Verbraucht Praxispunkte aus einer Kategorie.
Request Body:
```json
{
"kategorie": "Sozial",
"anzahl": 1
}
```
### Kostenberechnung mit Praxispunkten
```
POST /api/characters/{id}/skill-cost
```
Berechnet die Kosten für das Erlernen oder Verbessern einer Fertigkeit/Zauber und berücksichtigt dabei die Verwendung von Praxispunkten.
Request Body:
```json
{
"name": "Menschenkenntnis",
"type": "skill",
"action": "improve",
"current_level": 10,
"use_pp": 2
}
```
Response:
```json
{
"stufe": 11,
"le": 0,
"ep": 180,
"money": 200,
"skill_name": "Menschenkenntnis",
"skill_type": "skill",
"action": "improve",
"character_id": 1,
"current_level": 10,
"target_level": 11,
"category": "Sozial",
"difficulty": "schwer",
"can_afford": true,
"notes": "Verbesserung von 10 auf 11. Kosten für Hx. Verwendung von 2 Praxispunkten",
"pp_used": 2,
"pp_available": 5,
"pp_reduction": 2,
"original_cost": 200,
"final_cost": 180
}
```
## Datenstruktur
### Praxispunkt
```go
type Praxispunkt struct {
CharacterID uint `json:"character_id"`
SkillName string `json:"skill_name"` // Name der spezifischen Fertigkeit
Anzahl int `json:"anzahl"` // Anzahl der verfügbaren PP
}
```
## Kategorien
### Fertigkeiten
- Alltag
- Freiland
- Halbwelt
- Kampf
- Körper
- Sozial
- Unterwelt
- Waffen
- Wissen
### Zauber
- Beherr (Beherrschen)
- Beweg (Bewegen)
- Erkenn (Erkennen)
- Erschaff (Erschaffen)
- Formen
- Veränd (Verändern)
- Zerstören
- Wunder
- Dweom
- Lied
## Verwendung
1. **Fertigkeiten verbessern**: Wenn ein Charakter eine Fertigkeit verbessert, können verfügbare Praxispunkte der entsprechenden Kategorie verwendet werden, um die benötigten Trainingseinheiten (TE) zu reduzieren.
2. **Zauber lernen**: Beim Erlernen neuer Zauber können Praxispunkte der entsprechenden Zauberschule verwendet werden, um die benötigten Lerneinheiten (LE) zu reduzieren.
3. **Automatische Berechnung**: Das System berechnet automatisch die reduzierten Kosten basierend auf den verfügbaren und verwendeten Praxispunkten.
## Implementierungsdetails
- Praxispunkte werden pro Kategorie verwaltet
- Die API verhindert die Verwendung von mehr PP als verfügbar sind
- Originalkosten und reduzierte Kosten werden beide in der Response angezeigt
- Geldkosten bleiben unverändert, nur EP/LE-Kosten werden reduziert
- Multi-Level-Verbesserungen verteilen PP intelligent auf die verschiedenen Level
@@ -1,199 +0,0 @@
# Praxispunkte (PP) API - Fertigkeitsspezifisch (Vereinfacht)
## Übersicht
Praxispunkte sind in Midgard **fertigkeitsspezifisch** vergeben. Jede Fertigkeit und jeder Zauber kann individuelle Praxispunkte haben, die nur für die Verbesserung oder das Lernen dieser spezifischen Fertigkeit verwendet werden können.
**Vereinfachung**: Der SkillType wird automatisch anhand des Fertigkeitsnamens ermittelt, sodass nur der Name angegeben werden muss.
## Regeln
- **1 TE für 1 PP** beim Verbessern von Fertigkeiten
- **1 LE für 1 PP** beim Lernen von Zaubern aus der Gruppe
- Praxispunkte sind **fertigkeitsspezifisch** - sie können nur für die Fertigkeit verwendet werden, für die sie erworben wurden
- Praxispunkte für "Menschenkenntnis" können nur für "Menschenkenntnis" verwendet werden
- Praxispunkte für "Bannbalken" können nur für "Bannbalken" verwendet werden
## Datenstruktur
```go
type Praxispunkt struct {
CharacterID uint `json:"character_id"`
SkillName string `json:"skill_name"` // Name der spezifischen Fertigkeit
Anzahl int `json:"anzahl"` // Anzahl der verfügbaren PP
}
```
## API-Endpunkte
### 1. Praxispunkte abrufen
```http
GET /api/characters/{id}/practice-points
```
**Response:**
```json
[
{
"character_id": 1,
"skill_name": "Menschenkenntnis",
"anzahl": 5
},
{
"character_id": 1,
"skill_name": "Bannbalken",
"anzahl": 3
}
]
```
### 2. Praxispunkte hinzufügen
```http
POST /api/characters/{id}/practice-points/add
```
**Request Body:**
```json
{
"skill_name": "Menschenkenntnis",
"anzahl": 2
}
```
### 3. Praxispunkte verwenden
```http
POST /api/characters/{id}/practice-points/use
```
**Request Body:**
```json
{
"skill_name": "Menschenkenntnis",
"anzahl": 1
}
```
### 4. Aktualisierte Praxispunkte setzen
```http
PUT /api/characters/{id}/practice-points
```
**Request Body:**
```json
[
{
"skill_name": "Menschenkenntnis",
"anzahl": 3
},
{
"skill_name": "Bannbalken",
"anzahl": 2
}
]
```
## Integration in Kostenberechnung
Die PP-Funktionalität ist in die bestehende `/api/characters/{id}/skill-cost` API integriert:
```http
POST /api/characters/{id}/skill-cost
```
**Request Body mit PP:**
```json
{
"name": "Menschenkenntnis",
"type": "skill",
"action": "improve",
"current_level": 10,
"use_pp": 2
}
```
**Response:**
```json
{
"skill_name": "Menschenkenntnis",
"skill_type": "skill",
"action": "improve",
"character_id": 1,
"current_level": 10,
"target_level": 11,
"ep": 8,
"le": 0,
"money": 0,
"pp_used": 2,
"pp_available": 5,
"pp_reduction": 2,
"original_cost": 10,
"final_cost": 8,
"can_afford": true
}
```
## Beispiele
### Praxispunkte für Fertigkeit vergeben
```bash
curl -X POST http://localhost:8180/api/characters/1/practice-points/add \
-H "Content-Type: application/json" \
-d '{
"skill_name": "Menschenkenntnis",
"anzahl": 3
}'
```
### Praxispunkte für Zauber vergeben
```bash
curl -X POST http://localhost:8180/api/characters/1/practice-points/add \
-H "Content-Type: application/json" \
-d '{
"skill_name": "Bannbalken",
"anzahl": 2
}'
```
### Kostenberechnung mit PP für Fertigkeitsverbesserung
```bash
curl -X POST http://localhost:8180/api/characters/1/skill-cost \
-H "Content-Type: application/json" \
-d '{
"name": "Menschenkenntnis",
"type": "skill",
"action": "improve",
"current_level": 10,
"use_pp": 2
}'
```
### Kostenberechnung mit PP für Zauber lernen
```bash
curl -X POST http://localhost:8180/api/characters/1/skill-cost \
-H "Content-Type: application/json" \
-d '{
"name": "Bannbalken",
"type": "spell",
"action": "learn",
"use_pp": 1
}'
```
## Technische Details
### Automatische Skill-Type-Erkennung
Das System erkennt automatisch den Typ einer Fertigkeit anhand des Namens:
```go
func determineSkillType(skillName string) string {
// Prüft automatisch in den Tabellen:
// - skill_skills (Fertigkeiten)
// - skill_weaponskills (Waffenfertigkeiten)
// - skill_spells (Zauber)
}
```
### Validierung
In der Produktionsumgebung kann optional validiert werden, ob eine Fertigkeit existiert. In der Test-Umgebung ist dies deaktiviert für Flexibilität.