How attacks are performed.
==========================

An attack can be started in two ways. Either the player use the
'kill' command, or he is attacked.

The kill command in defined in /basic/living/attack.c. It will check that
the victim is present.

All victims currently being attacked are stored in an array. If a new
player joins the fight against someone, he will be added last.

If the victim specified in the attack command is already in the array
of all attacking objects, then that object will be moved first. Otherwise,
the array will be extended, with the new victim first.

There is an internal flag, "any_attack", that is set to true as long as
there are any objects in the array of victims.

Next thing that happens, is that the general heart_beat of the player object
will call continue_attack() every time.

continue_attack() will check the internal flag if there is anything to
attack, and return immediately if not.

Otherwise, a function clean_up_attackers() will be called that will check
that the objects in the array of victims are still present and alive.

A check will be made that the player has some weapon set up. If not,
will will have the default "hands" as weapon.

The weapon will be asked for how much damage it will do (compute_damage
in /basic/weapon_logic.c.

The function do_damage() will be called in the victim with the damage as
argument. It will return how much damage was actually done. It willl also
take care of killing the character when his hp goes below 0.

If a damage is done, the player can get the chance to raise his skills
and stats. This is done by calling general_reward() in player.c.


