add and remove PP for Weaponskill fixed
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/bmrt/models"
|
||||
"bamort/database"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
@@ -160,28 +160,49 @@ func AddPracticePoint(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Praxispunkt zur entsprechenden Fertigkeit hinzufügen
|
||||
found := false
|
||||
foundSkill := false
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
character.Fertigkeiten[i].Pp += request.Amount
|
||||
found = true
|
||||
foundSkill = true
|
||||
break
|
||||
}
|
||||
}
|
||||
foundWeaponSkill := false
|
||||
for i := range character.Waffenfertigkeiten {
|
||||
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||
character.Waffenfertigkeiten[i].Pp += request.Amount
|
||||
foundWeaponSkill = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
if !foundSkill && !foundWeaponSkill {
|
||||
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
||||
return
|
||||
}
|
||||
|
||||
// Fertigkeiten explizit speichern
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||
return
|
||||
if foundSkill {
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||
return
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if foundWeaponSkill {
|
||||
for i := range character.Waffenfertigkeiten {
|
||||
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Waffenfertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Waffenfertigkeit: "+err.Error())
|
||||
return
|
||||
}
|
||||
break
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,12 +217,23 @@ func AddPracticePoint(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
for _, skill := range character.Waffenfertigkeiten {
|
||||
if skill.Pp > 0 {
|
||||
practicePoints = append(practicePoints, PracticePointResponse{
|
||||
SkillName: skill.Name,
|
||||
Amount: skill.Pp,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Erfolgreiche Response mit Details zurückgeben
|
||||
var message string
|
||||
if isSpellFlag {
|
||||
message = "Praxispunkt für Zauber '" + request.SkillName + "' wurde der Zaubergruppe '" + targetSkillName + "' hinzugefügt"
|
||||
} else {
|
||||
} else if foundSkill {
|
||||
message = "Praxispunkt für Fertigkeit '" + targetSkillName + "' hinzugefügt"
|
||||
} else if foundWeaponSkill {
|
||||
message = "Praxispunkt für Waffenfertigkeit '" + targetSkillName + "' hinzugefügt"
|
||||
}
|
||||
|
||||
response := PracticePointActionResponse{
|
||||
@@ -263,12 +295,25 @@ func UsePracticePoint(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Praxispunkt von der entsprechenden Fertigkeit abziehen
|
||||
found := false
|
||||
foundSkill := false
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
if character.Fertigkeiten[i].Pp >= request.Amount {
|
||||
character.Fertigkeiten[i].Pp -= request.Amount
|
||||
found = true
|
||||
foundSkill = true
|
||||
} else {
|
||||
respondWithError(c, http.StatusBadRequest, "Nicht genügend Praxispunkte verfügbar")
|
||||
return
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
foundWeaponSkill := false
|
||||
for i := range character.Waffenfertigkeiten {
|
||||
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||
if character.Waffenfertigkeiten[i].Pp >= request.Amount {
|
||||
character.Waffenfertigkeiten[i].Pp -= request.Amount
|
||||
foundWeaponSkill = true
|
||||
} else {
|
||||
respondWithError(c, http.StatusBadRequest, "Nicht genügend Praxispunkte verfügbar")
|
||||
return
|
||||
@@ -277,19 +322,32 @@ func UsePracticePoint(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
if !foundSkill && !foundWeaponSkill {
|
||||
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
||||
return
|
||||
}
|
||||
|
||||
// Fertigkeiten explizit speichern
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||
return
|
||||
if foundSkill {
|
||||
for i := range character.Fertigkeiten {
|
||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||
return
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if foundWeaponSkill {
|
||||
for i := range character.Waffenfertigkeiten {
|
||||
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||
if err := database.DB.Save(&character.Waffenfertigkeiten[i]).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Waffenfertigkeit: "+err.Error())
|
||||
return
|
||||
}
|
||||
break
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,9 +362,18 @@ func UsePracticePoint(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
for _, skill := range character.Waffenfertigkeiten {
|
||||
if skill.Pp > 0 {
|
||||
practicePoints = append(practicePoints, PracticePointResponse{
|
||||
SkillName: skill.Name,
|
||||
Amount: skill.Pp,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
response := PracticePointActionResponse{
|
||||
Success: true,
|
||||
Message: fmt.Sprintf("%d Übungspunkte erfolgreich von %s verwendet", request.Amount, targetSkillName),
|
||||
Message: fmt.Sprintf("%d Praxispunkte erfolgreich von %s verwendet/reduziert", request.Amount, targetSkillName),
|
||||
RequestedSkill: request.SkillName,
|
||||
TargetSkill: targetSkillName,
|
||||
IsSpell: isSpellFlag,
|
||||
|
||||
Reference in New Issue
Block a user