@@ -3961,15 +3961,21 @@ register struct monst *mtmp;
3961
3961
return TRUE;
3962
3962
3963
3963
/* Major demons will sometimes be peaceful to unaligned Infidels.
3964
- * They must pass this 50% check, then the 50% check for chaotics
3965
- * being non-hostile to unaligned, then the usual check for coaligned.
3966
- * For crowned Infidels, the random check is bypassed */
3964
+ They must pass this 50% check, then the 50% check for chaotics
3965
+ being non-hostile to unaligned, then the usual check for coaligned.
3966
+ For crowned Infidels, the random check is bypassed. Followers of
3967
+ Lolth - if they are Drow, stay chaotic, and are at least fervently
3968
+ aligned, she will spawn peaceful */
3967
3969
if (always_hostile (ptr )) {
3968
3970
if (Role_if (PM_INFIDEL ) && is_demon (ptr )
3969
- && (u .uevent .uhand_of_elbereth || rn2 (2 )))
3971
+ && (u .uevent .uhand_of_elbereth || rn2 (2 ))) {
3970
3972
return TRUE;
3971
- else
3973
+ } else if (ptr == & mons [PM_LOLTH ] && ual == A_CHAOTIC
3974
+ && u .ualign .record >= 9 && Race_if (PM_DROW )) {
3975
+ return TRUE;
3976
+ } else {
3972
3977
return FALSE;
3978
+ }
3973
3979
}
3974
3980
3975
3981
if (ptr -> msound == MS_LEADER || ptr -> msound == MS_GUARDIAN )
@@ -3989,26 +3995,25 @@ register struct monst *mtmp;
3989
3995
return FALSE;
3990
3996
3991
3997
/* the monster is hostile if its alignment is different from the
3992
- * player's */
3998
+ player's */
3993
3999
if (sgn (mal ) != sgn (ual ))
3994
4000
return FALSE;
3995
4001
3996
- /* Not all chaotics support Moloch. This goes especially for elves. */
4002
+ /* Not all chaotics support Moloch. This goes especially for elves */
3997
4003
if (ual == A_NONE && (racial_elf (mtmp ) || rn2 (2 )))
3998
4004
return FALSE;
3999
4005
4000
- /* Chaotic monsters hostile to players with Amulet, except Infidels. */
4006
+ /* Chaotic monsters hostile to players with Amulet, except Infidels */
4001
4007
if (mal < A_NEUTRAL && u .uhave .amulet && !Role_if (PM_INFIDEL ))
4002
4008
return FALSE;
4003
4009
4004
4010
/* minions are hostile to players that have strayed at all */
4005
4011
if (is_minion (ptr ))
4006
4012
return (boolean ) (u .ualign .record >= 0 );
4007
4013
4008
- /* Last case: a chance of a co-aligned monster being
4009
- * hostile. This chance is greater if the player has strayed
4010
- * (u.ualign.record negative) or the monster is not strongly aligned.
4011
- */
4014
+ /* Last case: a chance of a co-aligned monster being
4015
+ hostile. This chance is greater if the player has strayed
4016
+ (u.ualign.record negative) or the monster is not strongly aligned */
4012
4017
return (boolean ) (!!rn2 (16 + (u .ualign .record < -15 ? -15
4013
4018
: u .ualign .record ))
4014
4019
&& !!rn2 (2 + abs (mal )));
0 commit comments