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