void name_unit(unit * u) { if (u_race(u)->generate_name) { const char *gen_name = u_race(u)->generate_name(u); if (gen_name) { unit_setname(u, gen_name); } else { unit_setname(u, racename(u->faction->locale, u, u_race(u))); } } else { char name[32]; const char * result; const struct locale * lang = u->faction ? u->faction->locale : default_locale; if (lang) { static const char * prefix[MAXLOCALES]; int i = locale_index(lang); if (!prefix[i]) { prefix[i] = LOC(lang, "unitdefault"); if (!prefix[i]) { prefix[i] = parameters[P_UNIT]; } } result = prefix[i]; } else { result = parameters[P_UNIT]; } strlcpy(name, result, sizeof(name)); strlcat(name, " ", sizeof(name)); strlcat(name, itoa36(u->no), sizeof(name)); unit_setname(u, name); } }
void save_special_items(unit *usrc) { unit *u; region *r = usrc->region; faction *fm = get_monsters(); static const race *rc_ghost; static int cache; if (rc_changed(&cache)) { rc_ghost = get_race(RC_TEMPLATE); } for (u = r->units; u; u = u->next) { if (u->faction == fm) { give_special_items(u, &usrc->items); return; } } u = create_unit(r, fm, 1, rc_ghost, 0, NULL, NULL); unit_setname(u, unit_getname(usrc)); if (usrc->number > 1) { /* some units have plural names, it would be neat if they aren't single: */ scale_number(u, 2); } set_racename(&u->attribs, "ghost"); give_special_items(u, &usrc->items); }
int sp_igjarjuk(castorder *co) { unit *u; fighter *fm = co->magician.fig, *fi; const race *rc = get_race(RC_WYRM); fi = summon_allies(fm, rc, 1); u = fi->unit; unit_setname(u, "Igjarjuk"); log_info("%s summons Igjarjuk in %s", unitname(fm->unit), regionname(u->region, 0)); return co->level; }