Da du ja ein ABS verwendest, mal folgende Frage:
Brauchst du die Statuswerte wie Attack, Defense etc. eigentlich? Gibt es da eventuell einen, den du nicht verwendest? Könnte mir das bei Agility gut vorstellen. Sofern du einen Statuswert entbehren könntest, liesse sich was sehr simples einrichten.
Dann hätte ich folgenden Vorschlag, der deinen Code sehr verkürzen kann:
Setze in der Database die Agility deines Helden auf 1. Bei jeder Waffe setzt du je nach Waffentyp die Agility auf einen anderen Wert. Dann brauchst du lediglich die Agility deines Helden in einer Variable abspeichern und diese Abfragen.
Ein Beispiel:
Jedes Gewehr erhöht die Agility beim Ausrüsten um 1, jeder Bogen um 2 etc.
usw.
Der Basiswert für Agility ist immer 1. Bei einem Wert von 1 weisst du, es ist keine Waffe ausgerüstet. Bei jedem anderen Wert rechnest du eben diese 1+ den jeweiligen Wert, der durch die Waffe erhöht wird. Dadurch weisst du, welcher Waffentyp ausgerüstet ist.
Dies hat den Vorteil, dass der Code kürzer ist und du deine Waffen nicht mehr zwingend sortieren musst. Wenn du später mal was erweiterst, ist es somit egal welche ID die Waffe haben sollte. Du ermittelst den Waffentyp durch die Erhöhung der Agility, nicht die ID. Das vereinfacht die Angelegenheit, folgt aber ansonsten dem gleichen Prinzip.
Dieser Weg macht natürlich nur dann Sinn, wenn du einen Statuswert entbehren kannst, was ja glücklicherweise der Fall ist.
@Nagasaki Das sieht auf jeden Fall schön einfach aus. Das werde ich sofort ausprobieren, wenn ich mit den Variablen nicht weiterkommen sollte.
EDIT: Der Einfall, den Agility-Wert als Indikator für die Waffengattung zu benutzen, war übrigens genial. Alles funktioniert jetzt, wie es funktionieren soll. Danke dafür. (: