*/
static void monster_hits_player(struct World * world, char * dsc_monster);
-/* Decrement HP of "monster" hit by player, kill it if its HP hit zero; log the
- * whole action.
+/* Decrement HP of "monster" hit by player, kill it if its HP hit zero, create a
+ * corpse and increment player's score by the amount of hitpoints the monster
+ * started with; log the whole action.
*/
static void player_hits_monster(struct World * world, struct Monster * monster);
update_log(world, msg);
free(msg);
monster->hitpoints--;
-
if (0 == monster->hitpoints)
{
hit_dsc = "You kill the ";
sprintf(msg, "\n%s%s.", hit_dsc, monster_dsc);
update_log(world, msg);
free(msg);
+ struct MonsterDef * md = (struct MonsterDef * ) mod;
+ struct Item * corpse = malloc(sizeof(struct Item));
+ corpse->map_obj.type = md->corpse_id;
+ corpse->map_obj.pos = monster->map_obj.pos;
+ corpse->map_obj.next = world->item;
+ world->item = corpse;
if (world->monster == monster)
{
world->monster = world->monster->map_obj.next;
m_prev->map_obj.next = monster->map_obj.next;
}
}
+ uint8_t score = md->hitpoints_start;
+ world->score = world->score + score;
free(monster);
}
}
}
return passable;
}
-