Ich bin auf das Thema gestoßen, weil ich mich schon vor einer Weile mit einem ähnlichen Problem beschäftigt habe. Die einfachste Lösung dafür wäre, einfach im Spiel einer Klasse ein Trait hinzuzufügen. Dann hätte ich für jeden Charakter eine eigene Klasse erstellt usw.
Das war auch meine Hauptmotivation dafür, mich mit der Pluginentwicklung auseinanderzusetzen. Und letztendlich bin ich zu dem Schluss gekommen, dass es ohne Weiteres so nicht möglich ist.
Nach vielem Rumgesuche glaube ich, dass es allgemein nicht (zumindest nicht ohne weiteres) möglich ist Daten aus der Datenbank über ein Plugin dauerhaft zu ändern. Auf jeden Fall gibt es keine offizielle Funktion dafür um Traits hinzuzufügen. Was man machen kann ist folgendes:
$dataClasses[1].traits.push({code: 51, dataId: 5, value: 1})
Das ändert die Klassen direkt.
$dataClasses[1] -- Ist die Klasse in der Bibliothek
code: 51 -- Ist die Art des Traits, in diesem Fall "Waffen ausrüsten"
dataId: 5 -- Ist die Waffenart, in meinem Fall "Peitsche"
value: 1 -- steht vermutlich dafür, dass der Trait aktiv ist
Also das funktioniert! Fügt man auf diese Weise einen Trait hinzu, ist er auch sofort aktiv. Das Problem ist allerdings, dass das nicht gespeichert wird. Beim nächsten Laden würde zwar der Gegenstand immer noch ausgerüstet sein, der Trait ist aber nicht mehr Bestandteil der Klasse. Ein Möglichkeit wäre es jetzt natürlich immer zu prüfen, ob die Bedingung für den Trait erfüllt ist und es ihn dann jedes Mal wieder hinzuzufügen.
Meine Idee war nun es genau umgekehrt zu machen. Den Trait einfach der Klasse hinzufügen und dann über ein Plugin nach Belieben aktivieren und deaktivieren. Aber den Value zu ändern bringt leider nichts. Und selbst wenn es funktionieren würde, würde dieser Wert auch nicht gespeichert werden. Habe auch ein Plugin ausprobiert "Dynamic Traits". Das ändert die Traits auf gleiche Weise. Aber auch hier werden die Werte nicht gespeichert.
Ich glaube die Lösung über Traits ist etwas komplizierter als man denkt. Aber mal gucken, bin ja selbst noch anfänger