[Papyrus] ActorValues

azraelb

Abenteurer
Hi,

ich habe zwar die Dokumentation auf creationkit.com mehrmals durchgelesen, aber noch nicht annähernd verstanden was ich mit diesen ActorValues machen kann und was nicht.

So wie ich das verstanden habe besteht ein ActorValue aus 4 Teilen:
- Basiswert
- Permanenter Modifier
- Temporärer Modifier
- Damage Modifier

Aber was sind diese Teile genau?

Annahme:

Base Actor Value:
Laut Beschreibung ist der Basiswert meißtens '0' in manchen Fällen '1' oder '100'.
Betrachten wir z.B. mal den ActorValue "Health". Wenn ich nun einen neuen Character erstelle, ist der Basiswert dann der Health-Startwert der ausgewählten Rasse?
Wenn ich das richtig verstehe, dann kann der Basiswert auch nicht geändert werden (bleibt also immer der Health-Startwert der ausgewählten Rasse)?

Permanent Modifier:
Der Permanente Modifier wird anscheinend durch ModActorValue() geändert.
Ich stelle mir das folgendermaßen vor:
Ich starte meinen neuen Char mit Permanent Modifier = 0. Wenn ich nun ein lvl-up habe und Health um 5 steigere, dann wird ModActorValue(health, 5) aufgerufen und der Perm.Modifier = +5.
Wenn ich nun einen Helm mit +20 Health aufsetze, dann wird ModActorValue(20) aufgerufen und der Perm.Modifier ist +25. Wenn ich den Helm wieder absetze, dann wird ModActorValue(-20)
aufgerufen und Perm.Modifier ist wieder +5.

Temporary Modifier:
Ist im Prinzip das Gleiche wie der PermModifier, gilt aber nur für Effekte... die eine feste Dauer haben.
Wird hier auch ModActorValue(x) aufgerufen und nach dem Ablauf der Spelldauer automatisch wieder ModActorValue(-x)?

Damage Modifier:
Eigentlich klar, wenn man getroffen wird verliert man health; dieser Modifier ändert aber nicht wie die anderen den maxHealth-Wert?

=> sind meine Annahmen korrekt?

=> Mit GetActorValue() bekomme ich also den aktuellen HealthWert?
=> Wie komme ich nun an den aktuellen maxHealth Wert?
=> Wie komme ich an den Basis-Health-Wert ohne Items, Zauber... (also nur basiswert und Steigerungen durch lvl-up)
=> Wie kann ich auf den Wert der Modifier zugreifen? So etwas wie GetPermanentModifier() habe ich in der Doku nicht gefunden.
=> Was ist genau der Unterschied zwischen setActorValue() und forceActorValue()? So wie ich das verstehe werden die Modifier bei forceActorValue() zurück gesetzt?
Wie funktioniert das dann (Base+Modifier ist ja dann ungleich dem ActorValue egal, ob die Modifier beibehalten, oder verworfen werden)?



Meine eigentliche Intetion ist folgende (stark vereinfacht):

Wenn Bedingung XY wahr ist, dann verringere/erhöhe den basis-Wert (Basis+Steigerungen durch lvl-ups + evtl. Permanente Effekte) um x%.
Wenn Bedingung XY falsch ist, dann stelle den alten basis-Wert wieder her.


Weiß aber überhaupt nicht, wie ich das realisieren soll.

Danke für eure Hilfe,

Gruß, Az