struct obj *oname(struct obj *obj, const char *name) { int lth; char buf[PL_PSIZ]; lth = *name ? (int)(strlen(name) + 1) : 0; if (lth > PL_PSIZ) { lth = PL_PSIZ; name = strncpy(buf, name, PL_PSIZ - 1); buf[PL_PSIZ - 1] = '\0'; } /* If named artifact exists in the game, do not create another. * Also trying to create an artifact shouldn't de-artifact * it (e.g. Excalibur from prayer). In this case the object * will retain its current name. */ if (obj->oartifact || (lth && exist_artifact(obj->otyp, name))) return obj; if (lth == obj->onamelth) { /* no need to replace entire object */ if (lth) strcpy(ONAME(obj), name); } else { obj = realloc_obj(obj, obj->oxlth, obj->oextra, lth, name); } if (lth) artifact_exists(obj, name, TRUE); if (obj->oartifact) { /* can't dual-wield with artifact as secondary weapon */ if (obj == uswapwep) untwoweapon(); /* activate warning if you've just named your weapon "Sting" */ if (obj == uwep) set_artifact_intrinsic(obj, TRUE, W_WEP); } if (carried(obj)) update_inventory(); return obj; }
struct obj * oname(struct obj *obj, const char *name) { int lth; lth = *name ? (int)(strlen(name) + 1) : 0; /* If named artifact exists in the game, do not create another. Also trying to create an artifact shouldn't de-artifact it (e.g. Excalibur from prayer). In this case the object will retain its current name. */ if (obj->oartifact || (lth && exist_artifact(obj->otyp, name))) return obj; christen_obj(obj, name); if (lth) artifact_exists(obj, name, TRUE); if (obj->oartifact) { /* can't dual-wield with artifact as secondary weapon */ if (obj == uswapwep) untwoweapon(); } if (carried(obj)) update_inventory(); return obj; }