| 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 |