blob: b7144181396f3e122e13977da4331a2c3182950e [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001P_LIGHT_MODIFIER
2================
3
4NAME
5----
6::
7
8 P_LIGHT_MODIFIER "light_modifier"
9
10DEFINIERT IN
11------------
12::
13
14 /sys/properties.h
15
16BESCHREIBUNG
17------------
18::
19
20 Veraendert das Lichtlevel das von einem Lebewesen wahrgenommen wird.
21 Der Wert dieser Property wird additiv in P_PLAYER_LIGHT beruecksichtigt.
22 Es ist hiermit z.B. moeglich eine Sonnenbrille zu programmieren, diese
23 veraendert ja nicht das tatsaechliche Lichtlevel, sondern verdunkelt nur
24 die Sicht.
25
26ANMERKUNG
27---------
28::
29
30 Damit NPCs in der Lage sind solche Gegenstaende richtig einzuschaetzen,
31 sollte diese Property in jedem Gegenstand der einen Light-Modifier setzt,
32 auch gesetzt sein. Das veraendern dieser Property in Spielern durch NPCs
33 oder Gegenstaende ist selbstverstaendlich genehmigungspflichtig.
34
35BEISPIELE
36---------
37::
38
39 // Ein NPC der auch in relativ dunklen Raeumen mit Lichtlevel -2
40 // noch sehen kann...
41 create_default_npc(10);
42 SetProp(P_LIGHT_MODIFIER, 3);
43
44 // Eine Sonnenbrille, die das Lichtlevel um eins senkt.
45
46 create()
47 {
48
49 :
50
51 SetProp(P_ARMOUR_TYPE, AT_GLASSES);
52 SetProp(P_LIGHT_MODIFIER, -1);
53
54 :
55
56 }
57
58 // Achtung: Falls pl Query- oder Set-Methoden auf P_LIGHT_MODIFIER hat,
59 // wird diese Methode hier furchtbar schief gehen und im besten Fall
60 // nichts veraendern. In realen Objekten empfiehlt sich zumindest eine
61 // Pruefung im Vorfeld, ob eine Query-/Set-Methode gesetzt ist.
62 protected void InformWear(object pl, int silent, int all) {
63 pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) -1);
64 }
65
66 protected void InformUnwear(object pl, int silent, int all) {
67 pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) +1);
68 }
69
70SIEHE AUCH
71----------
72::
73
74 P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
75