static int light, int_light;
int query_light() {
return light + int_light;
}
int query_my_light() {
return light;
}
int query_int_light() {
return int_light;
}
int set_opaque() {
if (!this_object()->query_property("opaque") && environment())
environment()->adjust_light(-int_light);
this_object()->add_property("opaque",1);
return 1;
}
int reset_opaque() {
if (this_object()->query_property("opaque") && environment())
environment()->adjust_light(int_light);
this_object()->remove_property("opaque");
}
/* this is used by objects being added to the inventory etc. */
int adjust_light(int i) {
if (i) {
if (environment() && !this_object()->query_property("opaque"))
environment()->adjust_light(i);
event(this_object(), "light_change", i);
}
return (int_light += i);
}
int set_light(int i) {
if (light - i) {
if (environment())
environment()->adjust_light(i-light);
event(this_object(), "light_change", i-light);
}
return (light = i);
}
mixed *stats() {
return ({
({ "light", light }),
({ "int light", int_light }),
({ "opaque", this_object()->query_property("opaque") }),
});
}