Ejemplo n.º 1
0
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 "", ""
}
Ejemplo n.º 2
0
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 "", ""
}