blob: 1b481800c3e4a7dfc8ffd7bcc81d238742a2233a [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001P_LIGHT_MODIFIER
2****************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005NAME
6====
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 P_LIGHT_MODIFIER "light_modifier"
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /sys/properties.h
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017BESCHREIBUNG
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
26
27ANMERKUNG
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
35
36BEISPIELE
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
70
71SIEHE AUCH
72==========
73
74 P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()