Bug: Vagabundensattel
Verfasst: 19.09.2022 17:45
Hi,
Ich wollte nur melden, dass das Script des Vagabundensattels (Questbelohnung für "Das Trostlose Feld") ein paar Bugs enthält:
- Man kann am Gerbgestell beliebig viele davon herstellen, wobei jeder neue Sattel das Spielerpferd um weitere 20% schneller macht. Bei 10 Sätteln (Speedmult 120 * 1,2 ^ 10 = 743,008) brettert das Pferd mit mindestens 100kmh dahin, lässt sich aber auch nur noch schwer steuern, da es einen riesigen Wendekreis hat und dabei auch oft hohe Felsen hochrennt und dann abstürzt.
- Manchmal wird nach der Herstellung das Event "OnContainerChanged" nicht ausgelöst, wodurch der Sattel ohne irgendeine Meldung im Spielerinventar bleibt und keinen Effekt auf das Pferd hat. Nachdem man den Sattel in eine Truhe gelegt und wieder entnommen hat funktioniert dann alles wieder.
- Dem Pferd wird der Sattel samt neuen Outfit auch angelegt, wenn man es noch gar nicht gekauft hat und es wird auch nirgendwo erwähnt, dass andere Reittiere wie z.B. Wirbelwind nicht damit ausgerüstet werden.
Hier das betreffende Script: _00E_FS_HeavySaddleSC
Und hier ein Vorschlag, wie das Script evtl. geändert werden könnte:
Ich wollte nur melden, dass das Script des Vagabundensattels (Questbelohnung für "Das Trostlose Feld") ein paar Bugs enthält:
- Man kann am Gerbgestell beliebig viele davon herstellen, wobei jeder neue Sattel das Spielerpferd um weitere 20% schneller macht. Bei 10 Sätteln (Speedmult 120 * 1,2 ^ 10 = 743,008) brettert das Pferd mit mindestens 100kmh dahin, lässt sich aber auch nur noch schwer steuern, da es einen riesigen Wendekreis hat und dabei auch oft hohe Felsen hochrennt und dann abstürzt.
- Manchmal wird nach der Herstellung das Event "OnContainerChanged" nicht ausgelöst, wodurch der Sattel ohne irgendeine Meldung im Spielerinventar bleibt und keinen Effekt auf das Pferd hat. Nachdem man den Sattel in eine Truhe gelegt und wieder entnommen hat funktioniert dann alles wieder.
- Dem Pferd wird der Sattel samt neuen Outfit auch angelegt, wenn man es noch gar nicht gekauft hat und es wird auch nirgendwo erwähnt, dass andere Reittiere wie z.B. Wirbelwind nicht damit ausgerüstet werden.
Hier das betreffende Script: _00E_FS_HeavySaddleSC
Code: Alles auswählen
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
if akNewContainer == Game.GetPlayer()
_00E_FS_SaddleEquipped.Show()
PlayerHorse.SetOutfit(_00E_FS_HeavySaddleOutfit)
PlayerHorse.SetActorValue("speedMult", PlayerHorse.GetAV("speedMult")*1.20)
Game.GetPlayer().RemoveItem(Self, 1)
endIf
endEvent
Und hier ein Vorschlag, wie das Script evtl. geändert werden könnte:
Code: Alles auswählen
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
if akNewContainer == Game.GetPlayer()
applySaddle()
endIf
endEvent
Event OnEquipped(Actor akActor)
if akActor == Game.GetPlayer()
applySaddle()
endIf
endEvent
Function applySaddle()
if _00E_HorseOwned.GetValueInt() == 1
if _00E_FS_SaddleEquippedGlobal.GetValueInt() != 1
_00E_FS_SaddleEquipped.Show()
PlayerHorse.SetOutfit(_00E_FS_HeavySaddleOutfit)
PlayerHorse.SetActorValue("speedMult", PlayerHorse.GetAV("speedMult")*1.20)
Game.GetPlayer().RemoveItem(Self, 1)
_00E_FS_SaddleEquippedGlobal.SetValueInt(1)
else
_00E_FS_SaddleAlreadyEquipped.Show()
endIf
else
_00E_FS_SaddleNoOwnedHorse.Show()
endIf
endFunction
GlobalVariable Property _00E_FS_SaddleEquippedGlobal Auto
;Message _00E_FS_SaddleAlreadyEquipped: Ihr habt eurem Pferd bereits solch einen Sattel angelegt!
;Message _00E_FS_SaddleNoOwnedHorse: Ihr besitzt derzeit kein Pferd (Der Sattel ist nicht geeignet für Esel und sonstige Reittiere)! Solltet ihr euch später ein Pferd kaufen, wählt diesen Sattel erneut in eurem Inventar aus, um das Pferd damit auszurüsten.
; Constructible Object _03E_FS_RecipeSaddle_VagabondsSaddle: evtl. noch eine zusätzliche Condition (AND GetGlobalValue _00E_FS_SaddleEquippedGlobal != 1) einfügen, damit man nach einmaligen Ausrüsten keine weiteren unnützen Sättel mehr herstellen kann.