+/* If "name" fits "moa"->name, set "moa"->func to "func". */
+static uint8_t try_func_name(struct MapObjAct * moa,
+ char * name, void (* func) (struct MapObj *));
+
+/* One actor "wounds" another actor, decrementing his lifepoints and, if they
+ * reach zero in the process, killing it. Generates appropriate log message.
+ */
+static void actor_hits_actor(struct MapObj * hitter, struct MapObj * hitted);
+
+/* Bonus stuff to actor_*() to happen if actor==player. Mostly writing of log
+ * messages; _pick and _drop also decrement world.inventory_sel by 1 if >0.
+ */
+static void playerbonus_wait();
+static void playerbonus_move(char d, uint8_t passable);
+static void playerbonus_drop(uint8_t owns_none);
+static void playerbonus_pick(uint8_t picked);
+static void playerbonus_use(uint8_t no_object, uint8_t wrong_object);
+
+
+
+static uint8_t try_func_name(struct MapObjAct * moa,
+ char * name, void (* func) (struct MapObj *))
+{
+ if (0 == strcmp(moa->name, name))
+ {
+ moa->func = func;
+ return 1;
+ }
+ return 0;
+}
+
+
+
+static void actor_hits_actor(struct MapObj * hitter, struct MapObj * hitted)