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