When wizzes make unique monster code, they often create functions
where the variable queried is already defined. This process is inefficient
for Nirvana and for the coding wiz.
Example:
if(this_object()->query_hp() < 100) blah
can be simply if(hit_point < 100) blah
the second line uses a defined variable in living.c (which is in all
living things) to get the required result, instead of running two
functions needlessly.

In monster code, there are very few instances where this_object() should
be called. Nearly all of the time, this_object() is implicitly defined.
Almost every standard query function, such as
query_hp(), query_attack(), query_name(), etc is a variable already defined within
the monster (living.c or monster.c).

Another example:
if(this_object()->query_hp() < 100) {
  tell_room(environment(this_object()),this_object()->query_name()+
             " is hurt bad!\n");
  if(this_object()->query_attack()) {
    this_object()->heal_self(100); }

can be changed to

if(hit_point < 100) {
  tell_room(environment(),cap_name+" is hurt bad.\n");
  if(attacker_ob) hit_point += 100;

which has exactly the same result.
-Snow
