- mod.next = 0;
- mod.id = atoi(strtok(defline, delim));
- mod.m_or_i = * strtok(NULL, delim);
- mod.mapchar = * strtok(NULL, delim);
- if ('i' == mod.m_or_i)
- {
- line_p = strtok(NULL, delim);
- }
- else
- {
- md.corpse_id = atoi(strtok(NULL, delim));
- md.hitpoints_start = atoi(strtok(NULL, delim));
- line_p = strtok(NULL, delim);
- }
- mod.desc = try_calloc(strlen(line_p), sizeof(char), world, f_name);
- memcpy(mod.desc, line_p, strlen(line_p) - 1);
- if ('i' == mod.m_or_i)
- {
- id.map_obj_def = mod;
- * p_p_id = try_malloc(sizeof(struct ItemDef), world, f_name);
- * * p_p_id = id;
- p_p_id = (struct ItemDef * *) * p_p_id;
- }
- else
- {
- md.map_obj_def = mod;
- * p_p_md = try_malloc(sizeof(struct MonsterDef), world, f_name);
- * * p_p_md = md;
- p_p_md = (struct MonsterDef * *) * p_p_md;
- }
+ struct MapObjDef * mod;
+ mod = try_malloc(sizeof(struct MapObjDef), f_name);
+ mod->next = NULL;
+ mod->id = atoi(strtok(line, delim));
+ mod->corpse_id = atoi(strtok(NULL, delim));
+ mod->char_on_map = * strtok(NULL, delim);
+ mod->lifepoints = atoi(strtok(NULL, delim));
+ char * name = strtok(NULL, "\n");
+ mod->name = try_malloc(strlen(name) + 1, f_name);
+ memcpy(mod->name, name, strlen(name) + 1);
+ * last_mod_ptr_ptr = mod;
+ last_mod_ptr_ptr = &mod->next;