FUNKTION:
varargs int QueryLight(int emitting)
IMPLEMENTIERT:
/std/thing/light.c
/std/room/description.c
ARGUMENTE:
emitting (optional): Welches Licht wollen wir?
BESCHREIBUNG:
Diese Funktion berechnet immer das gerade aktuelle Gesamtlichtlevel
an oder in einem Objekt. Es bildet also dynamisch die Summe aller
im oder am Objekt befindlichen Lichtquellen und der Grundhelligkeit
des Raumes.
Wenn 'emitting' nicht gesetzt ist, so wird zurueckgegeben, welche
Helligkeit 'innerhalb' des Objektes herrscht. Also z.B. wie hell es
in einem Raum ist. Dies ist die gebraeuchlichste Variante. Man kann
auch berechnen lassen, wie hell es in/bei einem Spieler oder NPC
ist, indem man lebewesen->QueryLight() aufruft.
Ist 'emitting' gesetzt, so wird zurueckgegeben, wieviel Licht von
diesem Objekt und seinem Inhalt nach 'aussen' ausgeht. Ist natuer-
lich nur dann sinnvoll, wenn das Objekt lichtdurchlaessig
(P_TRANSLUCENT gesetzt) ist.
In Raeumen wird hier automatisch beruecksichtigt ob der Raum
in einem Gebaeude ist oder draussen und ob dort Nacht oder
Tag herrscht. Bei nicht in Gebaeuden liegenden Raeumen (P_INDOORS
nicht gesetzt) wird nachts 1 vom Lichtlevel abgezogen, wenn der
Raum keine weiteren Umgebungsraeume hat. Liegt der Raum wiederum
in einem anderen Raum, wird nur beim aeussersten Raum der
Tag-/Nachtunterschied eingerechnet, damit es nicht zu Dopplungen
kommt.
RÜCKGABEWERT:
Der 'Lichtwert', siehe dazu auch P_LIGHT.
BEACHTE:
Im Wunderland wird die gesamte Lichtverwaltung von der MUDLib
uebernommen. DIE EFUN set_light(E) HAT KEINERLEI FUNKTION MEHR.
BEISPIEL:
if (environment(this_player())->QueryLight() > 0)
write("Es ist hell!\n");
else
write("Es ist dunkel!\n");
SIEHE AUCH:
P_LIGHT, P_TRANSLUCENT, P_INDOORS, uhr(WL), P_LIGHT_CHANGE,
set_light(E)
|