unnötige Doku entfernt
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user