Example #1
0
func calculateAvailable() {

	PageData.Available.Nachteile = PageData.Available.Nachteile[:0]
	PageData.Available.Vorteile = PageData.Available.Vorteile[:0]
	PageData.Available.SF_Allgemein = PageData.Available.SF_Allgemein[:0]
	PageData.Available.SF_Karmal = PageData.Available.SF_Karmal[:0]
	PageData.Available.SF_Magisch = PageData.Available.SF_Magisch[:0]
	PageData.Available.SF_Kampf = PageData.Available.SF_Kampf[:0]
	PageData.Available.ProfessionenNachKulturUndSpezies = PageData.Available.ProfessionenNachKulturUndSpezies[:0]
	PageData.Available.SF_Sprachen = PageData.Available.SF_Sprachen[:0]
	PageData.Available.SF_Schriften = PageData.Available.SF_Schriften[:0]

	for _, v := range basiswerte.Nachteile {
		ok, _ := erschaffung.VorUndNachteilAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Nachteile {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.Nachteile = append(PageData.Available.Nachteile, v)
			}
		}
	}
	for _, v := range basiswerte.Vorteile {
		ok, _ := erschaffung.VorUndNachteilAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Vorteile {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.Vorteile = append(PageData.Available.Vorteile, v)
			}
		}
	}
	for _, v := range basiswerte.AllgemeineSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Allgemeine {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Allgemein = append(PageData.Available.SF_Allgemein, v)
			}
		}
	}
	for _, v := range basiswerte.KarmaleSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Karmale {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Karmal = append(PageData.Available.SF_Karmal, v)
			}
		}
	}
	for _, v := range basiswerte.MagischeSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Magische {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Magisch = append(PageData.Available.SF_Magisch, v)
			}
		}
	}
	for _, v := range basiswerte.KampfSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Kampf {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Kampf = append(PageData.Available.SF_Kampf, v)
			}
		}
	}
	for _, v := range basiswerte.SprachenSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Sprachen {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Sprachen = append(PageData.Available.SF_Sprachen, v)
			}
		}
	}
	for _, v := range basiswerte.SchriftenSF {
		ok, _ := erschaffung.SFAvailable(PageData.Held, &v)
		if ok {
			// only append if not already selected
			selected := false
			for _, w := range PageData.Held.Sonderfertigkeiten.Schriften {
				if w.Name == v.Name {
					selected = true
					break
				}
			}
			if !selected {
				PageData.Available.SF_Schriften = append(PageData.Available.SF_Schriften, v)
			}
		}
	}

	PageData.Available.ProfessionenNachKulturUndSpezies = basiswerte.AlleProfessionen.NachKulturUndSpezies(PageData.Held.Kultur.Name, PageData.Held.Spezies.Name)
}
Example #2
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 "", ""
}