func addItem(c web.C, w http.ResponseWriter, r *http.Request, addTo []string) (string, string) { if len(addTo) != 2 { return "", "" } group := addTo[0] item := addTo[1] switch group { case "vorteil": { vorteil := basiswerte.GetVorteil(item) if vorteil != nil { for _, v := range PageData.Held.Vorteile { if v.Name == vorteil.Name { return "", "" } } PageData.Held.Vorteile = append(PageData.Held.Vorteile, *vorteil) PageData.Held.APAusgeben(vorteil.APKosten) return "/held/page/allgemeines", "" } } case "nachteil": { nachteil := basiswerte.GetNachteil(item) if nachteil != nil { for _, v := range PageData.Held.Nachteile { if v.Name == nachteil.Name { return "", "" } } PageData.Held.Nachteile = append(PageData.Held.Nachteile, *nachteil) PageData.Held.APAusgeben(nachteil.APKosten) return "/held/page/allgemeines", "" } } case "SFToAddAllgemein", "SFToAddKarmal", "SFToAddMagisch", "SFToAddKampf", "SFToAddSprache", "SFToAddSchrift": { var bereich *[]*basiswerte.Sonderfertigkeit switch group { case "SFToAddAllgemein": bereich = &PageData.Held.Sonderfertigkeiten.Allgemeine case "SFToAddKarmal": bereich = &PageData.Held.Sonderfertigkeiten.Karmale case "SFToAddMagisch": bereich = &PageData.Held.Sonderfertigkeiten.Magische case "SFToAddKampf": bereich = &PageData.Held.Sonderfertigkeiten.Kampf case "SFToAddSprache": bereich = &PageData.Held.Sonderfertigkeiten.Sprachen case "SFToAddSchrift": bereich = &PageData.Held.Sonderfertigkeiten.Schriften default: return "", "" } sf := basiswerte.GetSF(item) if sf != nil { for _, v := range *bereich { if v.Name == sf.Name { return "", "" } } *bereich = append(*bereich, sf) PageData.Held.APAusgeben(sf.APKosten) switch group { case "SFToAddAllgemein", "SFToAddSprache", "SFToAddSchrift": return "/held/page/allgemeines", "" case "SFToAddKarmal": return "/held/page/karmales", "" case "SFToAddMagisch": return "/held/page/magie", "" case "SFToAddKampf": return "/held/page/kampftechniken", "" default: return "", "" } } } case "zauber": { ok, _ := erschaffung.VorUndNachteilAvailable(PageData.Held, basiswerte.GetVorteil("Zauberer")) if !ok { return "", "" } _, exists := basiswerte.AlleZauber[item] if !exists { return "", "" } zauber, _ := basiswerte.AlleZauber[item] // first we need to check if there are still zauber left to add in this category... ownCategory := false for _, v := range zauber.Verbreitung { if v == "allgemein" || v == "Allgemein" { ownCategory = true break } lookForSF := fmt.Sprintf("Tradition (%s)", v) for _, s := range PageData.Held.Sonderfertigkeiten.Magische { if s.Name == lookForSF { ownCategory = true break } } } idx := 0 if !ownCategory { idx = 1 } if PageData.Held.ZauberCount[idx] >= PageData.Validator.Grad.Zauber[idx] { // no room left, we cant add it... return "", "Kann Zauber nicht hinzufügen, maximale Anzahl in dieser Kategorie bereits erreicht." } if PageData.Held.Zauber.Exists(item) { return "", "Der Held beherrscht diesen Zauber bereits." } PageData.Held.ZauberCount[idx]++ PageData.Held.NewZauber(&zauber) PageData.Held.Zauber.Get(item).SetMaxErschaffung(PageData.Validator.Grad.Fertigkeit) if zauber.Steigerungsfaktor != "-" { PageData.Held.APAusgeben(basiswerte.Kosten(zauber.Steigerungsfaktor, 0)) } else { PageData.Held.APAusgeben(1) // Zaubertrick + Segnung 1 AP } return "/held/page/magie", "" } case "liturgie": { ok, _ := erschaffung.VorUndNachteilAvailable(PageData.Held, basiswerte.GetVorteil("Geweihter")) if !ok { return "", "" } _, exists := basiswerte.AlleLiturgien[item] if !exists { return "", "" } liturgie, _ := basiswerte.AlleLiturgien[item] PageData.Held.NewLiturgie(&liturgie) PageData.Held.Liturgien.Get(item).SetMaxErschaffung(PageData.Validator.Grad.Fertigkeit) if liturgie.Steigerungsfaktor != "-" { PageData.Held.APAusgeben(basiswerte.Kosten(liturgie.Steigerungsfaktor, 0)) } else { PageData.Held.APAusgeben(1) // Zaubertrick + Segnung 1 AP } return "/held/page/karmales", "" } } return "", "" }
func addToValue(c web.C, w http.ResponseWriter, r *http.Request, addTo []string, val int) (string, string) { if len(addTo) != 2 { return "", "" } group := addTo[0] item := addTo[1] switch group { case "eigenschaft": { e := PageData.Held.Eigenschaften.Get(item) if e != nil { if basiswerte.Kosten("E", e.Wert+val) > -1 { kosten := basiswerte.Kosten("E", e.Wert+val) if val < 0 { kosten *= -1 } e.Add(val) PageData.Held.APAusgeben(kosten) return "/held/page/allgemeines", "" } } } // if we have not found it in eigenschaften, it might be a Talent... case "talent": { t := PageData.Held.Talente.Get(item) if t != nil { if basiswerte.Kosten(t.SK, t.Value()+val) > -1 { kosten := basiswerte.Kosten(t.SK, t.Value()+val) if val < 0 { kosten *= -1 } t.AddValue(val) PageData.Held.APAusgeben(kosten) return "/held/page/talente", "" } } } case "kampftechnik": { t := PageData.Held.Kampftechniken.Get(item) if t != nil { if basiswerte.Kosten(t.SK, t.Value()+val) > -1 { kosten := basiswerte.Kosten(t.SK, t.Value()+val) if val < 0 { kosten *= -1 } t.AddValue(val) PageData.Held.APAusgeben(kosten) return "/held/page/kampftechniken", "" } } } case "zauber": { z := PageData.Held.Zauber.Get(item) if z != nil { kosten := basiswerte.Kosten(z.SK(), z.Value()+val) if kosten > -1 { if val < 0 { kosten *= -1 } z.AddValue(val) PageData.Held.APAusgeben(kosten) return "/held/page/magie", "" } } } case "liturgie": { l := PageData.Held.Liturgien.Get(item) if l != nil { kosten := basiswerte.Kosten(l.SK(), l.Value()+val) if kosten > -1 { if val < 0 { kosten *= -1 } l.AddValue(val) PageData.Held.APAusgeben(kosten) return "/held/page/karmales", "" } } } } return "", "" }