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