blob: 3246b41ffdf37270d8f93dfeeb9ec49c2dab3504 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001U_REQ
2=====
3
4NAME
5----
6::
7
8 U_REQ "u_req"
9
10DEFINIERT IN
11------------
12::
13
14 /sys/unit.h
15
16BESCHREIBUNG
17------------
18::
19
20 Die Prop kann in Unitobjekten gesetzt werden.
21 Sie gibt die Anzahl der Einheiten an, die an der Unit manipuliert werden
22 sollen, falls mit weniger als P_AMOUNT umgegegangen werden soll.
23
24
25
26 Die Prop wird automatisch gesetzt, wenn id() an einem Unitobjekt gerufen
27 wird und die ID grundsaetzlich zutreffend ist, die aus der ID ermittelte
28 Zahl aber kleiner als P_AMOUNT ist.
29 Sie kann auch manuell mittel SetProp() (aber nicht Set()) gesetzt werden.
30
31 U_REQ wird beim Bewegen und Zerstoeren, bei Ermittlung von Wert und
32 Gewicht beruecksichtigt.
33
34 U_REQ wird vom Unitobjekt automatisch wieder auf P_AMOUNT gesetzt, wenn
35 sich query_verb() oder debug_info(DINFO_EVAL_NUMBER) veraendert haben.
36 (DINFO_EVAL_NUMBER ist eine Zahl, die sich jedesmal erhoeht, wenn der
37 Driver eine neue Berechnung/Ausfuehrung beginnt. Diese Nummer wird fuer
38 jeden vom driver initiierten Aufruf von LPC-Code erhoeht, z.B. bei jedem
39 Kommando, call_out, heart_beat etc. Details s. debug_info().)
40
41 Ebenso wird U_REQ bei der Vereinigung mit einem anderen (gleichen)
42 Objekt auf P_AMOUNT des vereinigten Objektes gesetzt.
43
44BUGS
45----
46::
47
48 Viele. Dies ist ein uebler Hack. Geht aber nicht ohne.
49 Diese Prop war endlos lang gar nicht dokumentiert. Hier beschrieben ist
50 das Verhalten, was zur Zeit vorliegt. Dies mag unterschiedlich zu dem
51 irgendwann intendierten sein.
52
53BEISPIELE
54---------
55::
56
57 object o = clone_object("unitobjekt");
58 o->SetProp(P_AMOUNT, 100); // ab jetzt hat o 100 Einheiten.
59 o->move(npc, M_GET); // ob mit 100 Einheiten wird bewegt
60 o->SetProp(U_REQ, 50);
61 o->move(anderernpc, M_GIVE); // 50 Einheiten werden bewegt, 50 verbleiben
62 (Technisch: das Objekt wird auf 50 Einheiten geaendert, bewegt und in der
63 alten Umgebung wird ein neues Objekt mit 50 Einheiten erzeugt.)
64
65 o->SetProp(U_REQ, 42);
66 o->remove(1); // 42 Einheiten von den 50 werden zerstoert.
67 (Technisch: P_AMOUNT wird einfach um U_REQ reduziert.)
68
69 # gib 18 muenzen an blupp
70 Hierbei wird ob->id("18 muenzen") gerufen, was U_REQ im Geldobjekt auf 18
71 setzt. Bei der Bewegung bekommt blupp daher das Objekt mit P_AMOUNT==18
72 und der Rest wird im Abgebenden neu erzeugt.
73 # gib geld an flubbel
74 Das U_REQ aus dem verherigen Kommando ist jetzt nicht mehr gueltig. Zwar
75 ist es das gleiche Kommandoverb, aber DINFO_EVAL_NUMBER ist jetzt
76 anders.
77
78ZULETZT GEAeNDERT
79-----------------
80::
81
8216.01.2015, Zesstra
83