diff --git a/src/makemon.c b/src/makemon.c index a712b6a31..828328ab2 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -329,20 +329,27 @@ m_initweap(struct monst *mtmp) case S_ANGEL: if (humanoid(ptr)) { - /* create minion stuff; can't use mongets */ - otmp = mksobj(LONG_SWORD, FALSE, FALSE); - - /* maybe make it special */ + /* create minion stuff; can't use mongets; + weapon: long sword [rn2(5) > 1 == 60%] or mace [40%] */ + otmp = mksobj((rn2(5) > 1) ? LONG_SWORD : MACE, FALSE, FALSE); + /* maybe promote weapon to an artifact */ if ((!rn2(20) || is_lord(ptr)) && sgn(mtmp->isminion ? EMIN(mtmp)->min_align - : ptr->maligntyp) == A_LAWFUL) - /* [note: this used to have a 50:50 chance for Sunsword or - Demonbane, but Demonbane has been changed into a mace] */ - otmp = oname(otmp, artiname(ART_SUNSWORD), + : ptr->maligntyp) == A_LAWFUL) { + /* Sunsword and Demonbane both used to be long swords and + Angels always got a long sword, so might get either of + the two artifacts; Demonbane has been changed to be a + mace; this deliberately makes an independent choice of + which artifact and if it picks the wrong name for 'otmp's + type, then 'otmp' won't be upgraded into an artifact */ + otmp = oname(otmp, artiname((rn2(5) > 1) ? ART_SUNSWORD + : ART_DEMONBANE), ONAME_RANDOM); /* randomly created */ + } bless(otmp); otmp->oerodeproof = TRUE; - otmp->spe = rn2(4); + /* make long sword be +0 to +3, weaker mace be +3 to +6 */ + otmp->spe = (otmp->otyp == LONG_SWORD) ? rn2(4) : rn1(4, 3); (void) mpickobj(mtmp, otmp); otmp = mksobj(!rn2(4) || is_lord(ptr) ? SHIELD_OF_REFLECTION