U_REQ

NAME

U_REQ                         "u_req"

DEFINIERT IN

/sys/unit.h

BESCHREIBUNG

Die Prop kann in Unitobjekten gesetzt werden.
Sie gibt die Anzahl der Einheiten an, die an der Unit manipuliert werden
sollen, falls mit weniger als P_AMOUNT umgegegangen werden soll.



Die Prop wird automatisch gesetzt, wenn id() an einem Unitobjekt gerufen
wird und die ID grundsaetzlich zutreffend ist, die aus der ID ermittelte
Zahl aber kleiner als P_AMOUNT ist.
Sie kann auch manuell mittel SetProp() (aber nicht Set()) gesetzt werden.

U_REQ wird beim Bewegen und Zerstoeren, bei Ermittlung von Wert und
Gewicht beruecksichtigt.

U_REQ wird vom Unitobjekt automatisch wieder auf P_AMOUNT gesetzt, wenn
sich query_verb() oder debug_info(DINFO_EVAL_NUMBER) veraendert haben.
(DINFO_EVAL_NUMBER ist eine Zahl, die sich jedesmal erhoeht, wenn der
 Driver eine neue Berechnung/Ausfuehrung beginnt. Diese Nummer wird fuer
 jeden vom driver initiierten Aufruf von LPC-Code erhoeht, z.B. bei jedem
 Kommando, call_out, heart_beat etc. Details s. debug_info().)

Ebenso wird U_REQ bei der Vereinigung mit einem anderen (gleichen)
Objekt auf P_AMOUNT des vereinigten Objektes gesetzt.

BUGS

Viele. Dies ist ein uebler Hack. Geht aber nicht ohne.
Diese Prop war endlos lang gar nicht dokumentiert. Hier beschrieben ist
das Verhalten, was zur Zeit vorliegt. Dies mag unterschiedlich zu dem
irgendwann intendierten sein.

BEISPIELE

object o = clone_object("unitobjekt");
o->SetProp(P_AMOUNT, 100);   // ab jetzt hat o 100 Einheiten.
o->move(npc, M_GET);         // ob mit 100 Einheiten wird bewegt
o->SetProp(U_REQ, 50);
o->move(anderernpc, M_GIVE); // 50 Einheiten werden bewegt, 50 verbleiben
(Technisch: das Objekt wird auf 50 Einheiten geaendert, bewegt und in der
 alten Umgebung wird ein neues Objekt mit 50 Einheiten erzeugt.)

o->SetProp(U_REQ, 42);
o->remove(1);               // 42 Einheiten von den 50 werden zerstoert.
(Technisch: P_AMOUNT wird einfach um U_REQ reduziert.)

# gib 18 muenzen an blupp
Hierbei wird ob->id("18 muenzen") gerufen, was U_REQ im Geldobjekt auf 18
setzt. Bei der Bewegung bekommt blupp daher das Objekt mit P_AMOUNT==18
und der Rest wird im Abgebenden neu erzeugt.
# gib geld an flubbel
Das U_REQ aus dem verherigen Kommando ist jetzt nicht mehr gueltig. Zwar
ist es das gleiche Kommandoverb, aber DINFO_EVAL_NUMBER ist jetzt
anders.

ZULETZT GEAeNDERT

16.01.2015, Zesstra