diff --git a/backend/character/handlers.go b/backend/character/handlers.go index 81f6c0d..549a49f 100644 --- a/backend/character/handlers.go +++ b/backend/character/handlers.go @@ -191,6 +191,12 @@ func ToFeChar(object *models.Char) *models.FeChar { feC := &models.FeChar{ Char: *object, } + for idx, fertigkeit := range object.Fertigkeiten { + fertigkeit.Bonus = GetSkillBonus(&object.Eigenschaften, &fertigkeit) + if fertigkeit.Bonus > 0 { + object.Fertigkeiten[idx].Bonus = fertigkeit.Bonus + } + } skills, innateSkills, categories := splitSkills(object.Fertigkeiten) feC.Fertigkeiten = skills feC.InnateSkills = innateSkills @@ -199,6 +205,32 @@ func ToFeChar(object *models.Char) *models.FeChar { return feC } +func GetSkillBonus(eigenschaften *[]models.Eigenschaft, skill *models.SkFertigkeit) int { + bonus := 0 + gsmsk := skill.GetSkillByName() + if gsmsk.Bonuseigenschaft != "check" { + for _, eigenschaft := range *eigenschaften { + if eigenschaft.Name == gsmsk.Bonuseigenschaft { + if eigenschaft.Value < 6 { + bonus = -2 + break + } else if eigenschaft.Value < 21 { + bonus = -1 + break + } else if eigenschaft.Value > 81 && eigenschaft.Value < 96 { + bonus = 1 + break + } else if eigenschaft.Value >= 96 { + bonus = 2 + break + } + } + } + } + skill.Bonus = bonus + return bonus +} + func splitSkills(object []models.SkFertigkeit) ([]models.SkFertigkeit, []models.SkFertigkeit, map[string][]models.SkFertigkeit) { var normSkills []models.SkFertigkeit var innateSkills []models.SkFertigkeit diff --git a/backend/character/handlers_test.go b/backend/character/handlers_test.go index 35412f7..2406bd2 100644 --- a/backend/character/handlers_test.go +++ b/backend/character/handlers_test.go @@ -1198,3 +1198,15 @@ func TestSearchBeliefs(t *testing.T) { }) } } + +func TestToFeChar(t *testing.T) { + // Setup test database + database.SetupTestDB(true) + defer database.ResetTestDB() + char := &models.Char{} + char.FirstID("18") + feChar := ToFeChar(char) + assert.Equal(t, "18", feChar.ID) + assert.Equal(t, 2, feChar.Fertigkeiten[6].Bonus) + +} diff --git a/frontend/src/components/SkillView.vue b/frontend/src/components/SkillView.vue index b12deae..50a39d2 100644 --- a/frontend/src/components/SkillView.vue +++ b/frontend/src/components/SkillView.vue @@ -3,7 +3,16 @@
-
+
+ + ? +
@@ -64,8 +73,42 @@