
P_LIGHT_MODIFIER
****************


NAME
====

   P_LIGHT_MODIFIER                     "light_modifier"


DEFINIERT IN
============

   /sys/properties.h


BESCHREIBUNG
============

   Veraendert das Lichtlevel das von einem Lebewesen wahrgenommen wird.
   Der Wert dieser Property wird additiv in P_PLAYER_LIGHT beruecksichtigt.
   Es ist hiermit z.B. moeglich eine Sonnenbrille zu programmieren, diese
   veraendert ja nicht das tatsaechliche Lichtlevel, sondern verdunkelt nur
   die Sicht.


ANMERKUNG
=========

   Damit NPCs in der Lage sind solche Gegenstaende richtig einzuschaetzen,
   sollte diese Property in jedem Gegenstand der einen Light-Modifier setzt,
   auch gesetzt sein. Das veraendern dieser Property in Spielern durch NPCs
   oder Gegenstaende ist selbstverstaendlich genehmigungspflichtig.


BEISPIELE
=========

   // Ein NPC der auch in relativ dunklen Raeumen mit Lichtlevel -2
   // noch sehen kann...
   create_default_npc(10);
   SetProp(P_LIGHT_MODIFIER, 3);

   // Eine Sonnenbrille, die das Lichtlevel um eins senkt.

   create()
   {

      :

      SetProp(P_ARMOUR_TYPE, AT_GLASSES);
      SetProp(P_LIGHT_MODIFIER, -1);

      :

   }

   // Achtung: Falls pl Query- oder Set-Methoden auf P_LIGHT_MODIFIER hat,
   // wird diese Methode hier furchtbar schief gehen und im besten Fall
   // nichts veraendern. In realen Objekten empfiehlt sich zumindest eine
   // Pruefung im Vorfeld, ob eine Query-/Set-Methode gesetzt ist.
   protected void InformWear(object pl, int silent, int all) {
       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) -1);
   }

   protected void InformUnwear(object pl, int silent, int all) {
       pl->SetProp(P_LIGHT_MODIFIER, pl->QueryProp(P_LIGHT_MODIFIER) +1);
   }


SIEHE AUCH
==========

   P_TOTAL_LIGHT, P_INT_LIGHT, P_PLAYER_LIGHT, P_LIGHT_MODIFIER, CannotSee()
