lawful minions vs Demonbane

Back then Demonbane was a long sword, lawful Angels and Archons
could get either it or Sunsword as part of their starting equipment.
After it got changed into a mace instead, they could only get
Sunsword.  Rather than always giving them a long sword, sometimes
give them a mace so that they get back the chance to start with
Demonbane.

Since mace is quite a bit weaker that long sword against large
opponents, provide a better enchantment for maces given to lawful
minions.
This commit is contained in:
PatR
2024-10-11 23:34:26 -07:00
parent 11a4fe42de
commit c4a1f298e8
+16 -9
View File
@@ -329,20 +329,27 @@ m_initweap(struct monst *mtmp)
case S_ANGEL: case S_ANGEL:
if (humanoid(ptr)) { if (humanoid(ptr)) {
/* create minion stuff; can't use mongets */ /* create minion stuff; can't use mongets;
otmp = mksobj(LONG_SWORD, FALSE, FALSE); weapon: long sword [rn2(5) > 1 == 60%] or mace [40%] */
otmp = mksobj((rn2(5) > 1) ? LONG_SWORD : MACE, FALSE, FALSE);
/* maybe make it special */ /* maybe promote weapon to an artifact */
if ((!rn2(20) || is_lord(ptr)) if ((!rn2(20) || is_lord(ptr))
&& sgn(mtmp->isminion ? EMIN(mtmp)->min_align && sgn(mtmp->isminion ? EMIN(mtmp)->min_align
: ptr->maligntyp) == A_LAWFUL) : ptr->maligntyp) == A_LAWFUL) {
/* [note: this used to have a 50:50 chance for Sunsword or /* Sunsword and Demonbane both used to be long swords and
Demonbane, but Demonbane has been changed into a mace] */ Angels always got a long sword, so might get either of
otmp = oname(otmp, artiname(ART_SUNSWORD), 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 */ ONAME_RANDOM); /* randomly created */
}
bless(otmp); bless(otmp);
otmp->oerodeproof = TRUE; 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); (void) mpickobj(mtmp, otmp);
otmp = mksobj(!rn2(4) || is_lord(ptr) ? SHIELD_OF_REFLECTION otmp = mksobj(!rn2(4) || is_lord(ptr) ? SHIELD_OF_REFLECTION