blob: c7741eef12bac5057ace6ea595a10d2f573dd4ef [file] [log] [blame]
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()