[Modding] Wie ersetze ich eine ausgerüstete Waffe temporär durch eine andere?

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
2.239
Es geht um ein Katana. Die Waffe hat einen Grundbonus von +2. Der Träger kann sich einmal täglich selbst mit der Waffe erheblich verletzen, um den Verzauberungsgrad der Waffe stufenabhängig zu erhöhen. Von Stufe 8 bis 12 wird es eine +3 Waffe, von 13 bis 17 eine +4 Waffe, ab 18 eine +5 Waffe.
Das Blut des Trägers steigert also temporär für eine festgelegte Zeit die Waffe.
Lava hat eine schöne Grafik dafür erstellt, wenn diese aktiviert wurde:
Katana.png

Dorns Waffe macht etwas Ähnliches. Sein Gegenstand Rancor+1 gibt ihm jedoch selbst (also nicht der Waffe) einen Bonus auf EtW0. Allerdings kann ich dieses Vorgehen nicht nutzen, da es auf Dorn abgestimmt ist. Dorns Script checkt immer, ob er die Waffe noch ausgerüstet hat. Das geht nicht, weil ich nicht weiß, wer die Waffe trägt.

Insofern hatte ich mir überlegt, über den Opcode #122 (Create Inventory Item) die verbesserte Form der Waffe zu erschaffen und die andere verschwinden zu lassen.

Folgende Probleme habe ich:
Die Waffe landet im Inventar und wird nicht ausgerüstet
Nach einer vom Spiel festgelegten Zeit (nicht der im Effekt eingestellten Zeit) tauscht die Engine die Waffe durch MISC56 (Broken Weapon) aus.
Die durch den Effekt nach der Zeit wieder erstellte Basiswaffe ist dann natürlich wieder nicht ausgerüstet.

Ich könnte die Waffe auch wie eine magisch erschaffene Waffe behandeln und z.B. wie die Flammenklinge des Druide oder den Geisterhammer die Itemslots blockieren lassen. Schöner wäre es jedoch, wenn man einfach vorübergehend die Waffen ersetzen könnte.
Alternativ könnte ich auch eine Kreatur erscheinen lassen und mittels TakeItemReplace(S:Give*,S:Take*,O:Object*) die Waffen tauschen lassen, bin mir aber nicht sicher, ob dies reibungslos funktioniert.

Habt Ihr dazu Ideen?
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
13.073
Wäre für die Problematik, dass Du nicht weißt, wer die Waffe trägt, das Nutzen der über die KI gesteuerten allgemeinen Skripte eine Option? Dann könntest Du TakeItemReplace mit "Myself" als lokale Variable machen (wenn ausgerüstet), oder über eine Abfrage von Player1-6.
Ich meine, bis auf die Tatsache, dass Du dann unendlich viele Bugreports bekämst, weil niemand den Hinweis in der Liesmich gelesen hat, dass die KI an sein muss.

Andere Überlegung: wäre es eventuell sogar gut, wenn der Spieler die Waffe im Blutmodus nicht entfernen kann? Ich kann mir vorstellöen, dass es sonst zu einem Durcheinander kommt. Worst Case: jemand nimmt die Waffe im Blutmodus und legt sie auf den Boden, so dass Dein Zurücktausch-Skript sie nach Ablauf des Timers nicht mehr findet etc.
Ich meine, wir reden hier über Spieler(_*:Innen)!
 

Argent

Senior Member
Registriert
13.07.2010
Beiträge
242
Ich denke auch, dass es hier zu viele Unwägbarkeiten gibt, bei der das Skripting oder die Effektmechanik durcheinandergebracht werden kann.

Eine andere Idee wäre, dass man durch die Selbstverletzung generell die Fähigkeit erhält, Gegner mit einer +X Verzauberung zu verletzen (so ähnlich, wie die neue Version des Zaubers "Verzauberte Waffe" funktioniert).
 

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
2.239
wäre es eventuell sogar gut, wenn der Spieler die Waffe im Blutmodus nicht entfernen kann?
Ich denke auch, dass es hier zu viele Unwägbarkeiten gibt, bei der das Skripting oder die Effektmechanik durcheinandergebracht werden kann.
Ja, stimmt, da habt Ihr vollkommen Recht. Das hatte ich nicht bedacht.
Ich meine, wir reden hier über Spieler(_*:Innen)!
:D ;)!
Eine andere Idee wäre, dass man durch die Selbstverletzung generell die Fähigkeit erhält, Gegner mit einer +X Verzauberung zu verletzen (so ähnlich, wie die neue Version des Zaubers "Verzauberte Waffe" funktioniert).
Oh, das wäre auch eine gute Idee! Ich hätte jedoch gerne eine Veränderung in der Waffenoptik, dass die bluttriefende Version der Waffe wirklich nur dann erscheint, wenn der Spieler sein Opfer dargebracht hat.

Ich habe jetzt alles erstellt: Waffe mit der Fähigkeit, einen Zauber zu sprechen, der Levelabhängig eine +3, +4 und +5-Waffe erschafft. Momentan erscheint nur die +3-Version - unabhängig von der Stufe des Trägers. :c:
Wird bei dem Level, welches die Zauber sortiert nicht die Charakterstufe, sondern das Magierlevel gecheckt?
 

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
347
Wird bei dem Level, welches die Zauber sortiert nicht die Charakterstufe, sondern das Magierlevel gecheckt?
Es ist noch schlimmer. Die Stufen werden addiert und durch die Anzahl der Klassen geteilt. Krieger 10 / Magier 30 = Zauberstufe 20
 

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
347
Das gilt übrigens auch für die Levelüberprüfung in Dialogen und Scripts mit Level(LastTalkedToBy,9) bzw. LevelGT, LevelLT. Beispielsweise beim GolemConstruction-Mod werden Dualklassen dadurch deutlich benachteiligt. Beim Goblinmod habe ich alles nochmal mit XP-Checks umgeschrieben.
 

Argent

Senior Member
Registriert
13.07.2010
Beiträge
242
Das gilt übrigens auch für die Levelüberprüfung in Dialogen und Scripts mit Level(LastTalkedToBy,9) bzw. LevelGT, LevelLT. Beispielsweise beim GolemConstruction-Mod werden Dualklassen dadurch deutlich benachteiligt.
Das sollte bei der Golem Construction Mod eigentlich nicht so sein, da für Levelüberprüfungen ClassLevelGT() genutzt wird. Damit wird die reale Stufe der angegebenen Klasse des Charakters verglichen, unabhängig von Mehrklassigkeit.

Ansonsten hast du Recht. LevelGT(), LevelLT(), usw. prüfen die durchschnittliche Stufe des Charakters (aufgerundet bei ungeraden Summen), was bei Dualklassen ziemlich ungenau sein kann.
 

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
347
Das sollte bei der Golem Construction Mod eigentlich nicht so sein, da für Levelüberprüfungen ClassLevelGT() genutzt wird. Damit wird die reale Stufe der angegebenen Klasse des Charakters verglichen, unabhängig von Mehrklassigkeit.

Dann fehlten mir wahrscheinlich nur die Materialien und ich bin unberechtigt von dieser Ursache ausgegangen, da ich mich vorher mit dem Problem beschäftigt hatte :hae:

Nachdem ich erst Wares of the Planes deinstalliert und durch die neue Version ersetzt habe und dann das gleiche mit Call of the Lost Goddess gemacht habe, hat Knarrknie im neuen Durchgang übrigens die Gestalt eines Frostriesen abbekommen. Beim letzten Ansatz war es eine Art Sumpftroll.
Ich habe gesehen, dass Ihr einen Script benutzt, der das eigentlich verhindern sollte und vermute, dass der bei derDeinstallation irgendwie umgangen wird (Absicht habe ich jetzt mal ausgeschlossen).
 

Argent

Senior Member
Registriert
13.07.2010
Beiträge
242
Nachdem ich erst Wares of the Planes deinstalliert und durch die neue Version ersetzt habe und dann das gleiche mit Call of the Lost Goddess gemacht habe, hat Knarrknie im neuen Durchgang übrigens die Gestalt eines Frostriesen abbekommen. Beim letzten Ansatz war es eine Art Sumpftroll.
Ich habe gesehen, dass Ihr einen Script benutzt, der das eigentlich verhindern sollte und vermute, dass der bei derDeinstallation irgendwie umgangen wird (Absicht habe ich jetzt mal ausgeschlossen).
Es kann sein, dass Knarrknie der Vorversion bereits im Save gespeichert war. Er wird automatisch erzeugt und mit MakeGlobal() persistent gemacht, wenn man das Gebiet, in dem er auftaucht, zum ersten Mal betritt, selbst wenn man ihn erst später antreffen kann. Das passierte wahrscheinlich bereits beim ersten Betreten von Waukeens Promenade.
 
Oben