Skip to content

Commit

Permalink
Move lizards back to : and leprechauns back to l
Browse files Browse the repository at this point in the history
Same rationale for this as with the sea monster move. The reason for
moving lizards off : in the first place was just "get monsters off
punctuation". If I wanted to add a new object class, then : would be a
great symbol for it, but I don't, and if I want to add a new piece of
furniture I can make do with \.
  • Loading branch information
copperwater committed Feb 28, 2021
1 parent 17f54d6 commit 6f0e026
Show file tree
Hide file tree
Showing 11 changed files with 1,768 additions and 1,762 deletions.
2 changes: 2 additions & 0 deletions doc/xnh-changelog-6.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,8 @@ changes:
- Revert some of version 3.0's monster letter changes:
- Sea monsters moved back to ';'
- Zruties reintroduced as 'z'
- Lizards moved back to ':'
- Leprechauns moved back to 'l'

### Interface changes

Expand Down
12 changes: 7 additions & 5 deletions include/monsym.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ enum mon_class_types {
S_IMP = 9, /* i: minor demons */
S_JELLY = 10, /* j */
S_KOBOLD = 11, /* k */
S_LIZARD = 12, /* l */
S_LEPRECHAUN = 12, /* l */
S_MIMIC = 13, /* m */
S_NYMPH = 14, /* n */
S_ORC = 15, /* o */
Expand Down Expand Up @@ -68,11 +68,12 @@ enum mon_class_types {
S_GOLEM = 54, /* ' */
S_DEMON = 55, /* & */
S_EEL = 56, /* ; */
S_LIZARD = 57, /* : */

S_WORM_TAIL = 57, /* ~ */
S_MIMIC_DEF = 58, /* ] */
S_WORM_TAIL = 58, /* ~ */
S_MIMIC_DEF = 59, /* ] */

MAXMCLASSES = 59 /* number of monster classes */
MAXMCLASSES = 60 /* number of monster classes */
};

/*
Expand All @@ -91,7 +92,7 @@ enum mon_class_types {
#define DEF_IMP 'i'
#define DEF_JELLY 'j'
#define DEF_KOBOLD 'k'
#define DEF_LIZARD 'l'
#define DEF_LEPRECHAUN 'l'
#define DEF_MIMIC 'm'
#define DEF_NYMPH 'n'
#define DEF_ORC 'o'
Expand Down Expand Up @@ -135,6 +136,7 @@ enum mon_class_types {
#define DEF_GOLEM '\''
#define DEF_DEMON '&'
#define DEF_EEL ';'
#define DEF_LIZARD ':'

#define DEF_INVISIBLE 'I'
#define DEF_WORM_TAIL '~'
Expand Down
5 changes: 3 additions & 2 deletions src/drawing.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ const struct class_sym def_monsyms[MAXMCLASSES] = {
{ DEF_FELINE, "", "cat or other feline" },
{ DEF_GREMLIN, "", "gremlin" },
{ DEF_HUMANOID, "", "humanoid" },
{ DEF_IMP, "", "impish creature" },
{ DEF_IMP, "", "imp or minor demon" },
{ DEF_JELLY, "", "jelly" },
{ DEF_KOBOLD, "", "kobold" },
{ DEF_LIZARD, "", "lizard" },
{ DEF_LEPRECHAUN, "", "leprechaun" },
{ DEF_MIMIC, "", "mimic" },
{ DEF_NYMPH, "", "nymph" },
{ DEF_ORC, "", "orc" },
Expand Down Expand Up @@ -105,6 +105,7 @@ const struct class_sym def_monsyms[MAXMCLASSES] = {
{ DEF_GOLEM, "", "golem" },
{ DEF_DEMON, "", "major demon" },
{ DEF_EEL, "", "sea monster" },
{ DEF_LIZARD, "", "lizard" },
{ DEF_WORM_TAIL, "", "long worm tail" },
{ DEF_MIMIC_DEF, "", "mimic" },
};
Expand Down
12 changes: 5 additions & 7 deletions src/makemon.c
Original file line number Diff line number Diff line change
Expand Up @@ -763,10 +763,10 @@ m_initinv(register struct monst *mtmp)
(void) mpickobj(mtmp, otmp);
}
break;
case S_LEPRECHAUN:
mkmonmoney(mtmp, (long) d(level_difficulty(), 30));
break;
case S_IMP:
if (ptr == &mons[PM_LEPRECHAUN]) {
mkmonmoney(mtmp, (long) d(level_difficulty(), 30));
}
if (ptr == &mons[PM_QUASIT] && !rn2(4)) {
mtmp->minvis = mtmp->perminvis = 1;
}
Expand Down Expand Up @@ -1327,10 +1327,8 @@ makemon(register struct permonst *ptr,
case S_EEL:
(void) hideunder(mtmp);
break;
case S_IMP:
if(mndx == PM_LEPRECHAUN) {
mtmp->msleeping = 1;
}
case S_LEPRECHAUN:
mtmp->msleeping = 1;
break;
case S_JABBERWOCK:
case S_NYMPH:
Expand Down
2 changes: 1 addition & 1 deletion src/mondata.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ hates_material(register struct permonst *ptr, int material)
if (material == SILVER) {
if (ptr->mlet == S_IMP) {
/* impish creatures that aren't actually demonic */
if (ptr == &mons[PM_TENGU] || ptr == &mons[PM_LEPRECHAUN])
if (ptr == &mons[PM_TENGU])
return FALSE;
}
return (is_were(ptr) || ptr->mlet == S_VAMPIRE
Expand Down
4 changes: 2 additions & 2 deletions src/monmove.c
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ disturb(register struct monst* mtmp)
#if 0 /* DEFERRED */
|| mtmp->data == &mons[PM_VORPAL_JABBERWOCK]
#endif
|| monsndx(mtmp->data) == PM_LEPRECHAUN) || !rn2(50))
|| mtmp->data->mlet == S_LEPRECHAUN) || !rn2(50))
&& (Aggravate_monster
|| (mtmp->data->mlet == S_DOG || mtmp->data->mlet == S_HUMAN)
|| (!rn2(7) && M_AP_TYPE(mtmp) != M_AP_FURNITURE
Expand Down Expand Up @@ -703,7 +703,7 @@ dochug(register struct monst* mtmp)

if (!nearby || mtmp->mflee || scared || mtmp->mconf || mtmp->mstun
|| (mtmp->minvis && !rn2(3))
|| (monsndx(mdat) == PM_LEPRECHAUN && !findgold(g.invent, FALSE)
|| (mdat->mlet == S_LEPRECHAUN && !findgold(g.invent, FALSE)
&& (findgold(mtmp->minvent, FALSE) || rn2(2)))
|| (is_wanderer(mdat) && !rn2(4)) || (Conflict && !mtmp->iswiz)
|| (!mtmp->mcansee && !rn2(4)) || mtmp->mpeaceful) {
Expand Down
113 changes: 58 additions & 55 deletions src/monst.c
Original file line number Diff line number Diff line change
Expand Up @@ -494,12 +494,6 @@ NEARDATA struct permonst mons_init[] = {
SIZ(300, 200, MS_SQAWK, MZ_SMALL), MR_POISON, MR_POISON,
M1_TPORT | M1_TPORT_CNTRL | M1_CARNIVORE, M2_STALK,
M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_CYAN),
MON("leprechaun", S_IMP, LVL(5, 15, 8, 20, 0), (G_GENO | 4),
A(ATTK(AT_CLAW, AD_SGLD, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(60, 30, MS_LAUGH, MZ_TINY), 0, 0,
M1_HUMANOID | M1_TPORT | M1_CARNIVORE, M2_HOSTILE | M2_GREEDY,
M3_INFRAVISIBLE, 4, CLR_BRIGHT_GREEN),
/*
* jellies
*/
Expand Down Expand Up @@ -555,57 +549,14 @@ NEARDATA struct permonst mons_init[] = {
M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_MAGIC,
M3_INFRAVISIBLE | M3_INFRAVISION, 4, HI_ZAP),
/*
* lizards, &c
* leprechauns
*/
MON("newt", S_LIZARD, LVL(0, 6, 8, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 20, MS_SILENT, MZ_TINY), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE, 0, 1, CLR_YELLOW),
MON("gecko", S_LIZARD, LVL(1, 6, 8, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 20, MS_SQEEK, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 2,
CLR_BRIGHT_GREEN),
MON("iguana", S_LIZARD, LVL(2, 6, 7, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(30, 30, MS_SILENT, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 3, CLR_BROWN),
MON("baby crocodile", S_LIZARD, LVL(3, 6, 7, 0, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE, 0, 4, CLR_RED),
MON("lizard", S_LIZARD, LVL(5, 6, 6, 10, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 40, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 6, CLR_GREEN),
MON("chameleon", S_LIZARD, LVL(6, 5, 6, 10, 0), (G_GENO | 2),
A(ATTK(AT_BITE, AD_PHYS, 4, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(100, 100, MS_SILENT, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_NOPOLY | M2_HOSTILE | M2_SHAPESHIFTER, 0, 7, CLR_GRAY),
MON("crocodile", S_LIZARD, LVL(6, 9, 5, 0, 0), (G_GENO | 1),
A(ATTK(AT_BITE, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 1, 12),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS
| M1_OVIPAROUS | M1_CARNIVORE,
M2_STRONG | M2_HOSTILE, 0, 7, CLR_RED),
MON("salamander", S_LIZARD, LVL(8, 12, -1, 0, -9), (G_HELL | 1),
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_TUCH, AD_FIRE, 1, 6),
ATTK(AT_HUGS, AD_PHYS, 2, 6), ATTK(AT_HUGS, AD_FIRE, 3, 6), NO_ATTK,
MON("leprechaun", S_LEPRECHAUN, LVL(5, 15, 8, 20, 0), (G_GENO | 4),
A(ATTK(AT_CLAW, AD_SGLD, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(1500, 400, MS_MUMBLE, MZ_HUMAN), MR_SLEEP | MR_FIRE, MR_FIRE,
M1_HUMANOID | M1_SLITHY | M1_THICK_HIDE | M1_POIS | M1_CARNIVORE,
M2_STALK | M2_HOSTILE | M2_COLLECT | M2_MAGIC, M3_INFRAVISIBLE,
12, CLR_ORANGE),
SIZ(60, 30, MS_LAUGH, MZ_TINY), 0, 0,
M1_HUMANOID | M1_TPORT | M1_CARNIVORE, M2_HOSTILE | M2_GREEDY,
M3_INFRAVISIBLE, 4, CLR_BRIGHT_GREEN),
/*
* mimics
*/
Expand Down Expand Up @@ -2751,6 +2702,58 @@ struct permonst _mons2[] = {
SIZ(1800, 1000, MS_SILENT, MZ_GIGANTIC), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_NOPOLY | M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 22, CLR_RED),
/*
* lizards, &c
*/
MON("newt", S_LIZARD, LVL(0, 6, 8, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 20, MS_SILENT, MZ_TINY), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE, 0, 1, CLR_YELLOW),
MON("gecko", S_LIZARD, LVL(1, 6, 8, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 20, MS_SQEEK, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 2,
CLR_BRIGHT_GREEN),
MON("iguana", S_LIZARD, LVL(2, 6, 7, 0, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(30, 30, MS_SILENT, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 3, CLR_BROWN),
MON("baby crocodile", S_LIZARD, LVL(3, 6, 7, 0, 0), G_GENO,
A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_HOSTILE, 0, 4, CLR_RED),
MON("lizard", S_LIZARD, LVL(5, 6, 6, 10, 0), (G_GENO | 5),
A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(10, 40, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 6, CLR_GREEN),
MON("chameleon", S_LIZARD, LVL(6, 5, 6, 10, 0), (G_GENO | 2),
A(ATTK(AT_BITE, AD_PHYS, 4, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(100, 100, MS_SILENT, MZ_TINY), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
M2_NOPOLY | M2_HOSTILE | M2_SHAPESHIFTER, 0, 7, CLR_GRAY),
MON("crocodile", S_LIZARD, LVL(6, 9, 5, 0, 0), (G_GENO | 1),
A(ATTK(AT_BITE, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 1, 12),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), 0, 0,
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS
| M1_OVIPAROUS | M1_CARNIVORE,
M2_STRONG | M2_HOSTILE, 0, 7, CLR_RED),
MON("salamander", S_LIZARD, LVL(8, 12, -1, 0, -9), (G_HELL | 1),
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_TUCH, AD_FIRE, 1, 6),
ATTK(AT_HUGS, AD_PHYS, 2, 6), ATTK(AT_HUGS, AD_FIRE, 3, 6), NO_ATTK,
NO_ATTK),
SIZ(1500, 400, MS_MUMBLE, MZ_HUMAN), MR_SLEEP | MR_FIRE, MR_FIRE,
M1_HUMANOID | M1_SLITHY | M1_THICK_HIDE | M1_POIS | M1_CARNIVORE,
M2_STALK | M2_HOSTILE | M2_COLLECT | M2_MAGIC, M3_INFRAVISIBLE,
12, CLR_ORANGE),

/*
* dummy monster needed for visual interface
Expand Down
5 changes: 2 additions & 3 deletions src/polyself.c
Original file line number Diff line number Diff line change
Expand Up @@ -1813,7 +1813,7 @@ mbodypart(struct monst *mon, int part)
/* claw attacks are overloaded in mons[]; most humanoids with
such attacks should still reference hands rather than claws */
static const char not_claws[] = {
S_HUMAN, S_MUMMY, S_ZOMBIE, S_ANGEL, S_NYMPH,
S_HUMAN, S_MUMMY, S_ZOMBIE, S_ANGEL, S_NYMPH, S_LEPRECHAUN,
S_VAMPIRE, S_ORC, S_GIANT, /* quest nemeses */
'\0' /* string terminator; assert( S_xxx != 0 ); */
};
Expand Down Expand Up @@ -1842,8 +1842,7 @@ mbodypart(struct monst *mon, int part)
if ((part == HAND || part == HANDED)
&& (humanoid(mptr) && attacktype(mptr, AT_CLAW)
&& !index(not_claws, mptr->mlet) && mptr != &mons[PM_STONE_GOLEM]
&& mptr != &mons[PM_AMOROUS_DEMON]
&& mptr != &mons[PM_LEPRECHAUN]))
&& mptr != &mons[PM_AMOROUS_DEMON]))
return (part == HAND) ? "claw" : "clawed";
if ((mptr == &mons[PM_MUMAK] || mptr == &mons[PM_MASTODON])
&& part == NOSE)
Expand Down
3 changes: 2 additions & 1 deletion src/symbols.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ const struct symparse loadsyms[] = {
{ SYM_MON, S_IMP + SYM_OFF_M, "S_imp" },
{ SYM_MON, S_JELLY + SYM_OFF_M, "S_jelly" },
{ SYM_MON, S_KOBOLD + SYM_OFF_M, "S_kobold" },
{ SYM_MON, S_LIZARD + SYM_OFF_M, "S_lizard" },
{ SYM_MON, S_LEPRECHAUN + SYM_OFF_M, "S_leprechaun" },
{ SYM_MON, S_MIMIC + SYM_OFF_M, "S_mimic" },
{ SYM_MON, S_NYMPH + SYM_OFF_M, "S_nymph" },
{ SYM_MON, S_ORC + SYM_OFF_M, "S_orc" },
Expand Down Expand Up @@ -445,6 +445,7 @@ const struct symparse loadsyms[] = {
{ SYM_MON, S_GOLEM + SYM_OFF_M, "S_golem" },
{ SYM_MON, S_DEMON + SYM_OFF_M, "S_demon" },
{ SYM_MON, S_EEL + SYM_OFF_M, "S_eel" },
{ SYM_MON, S_LIZARD + SYM_OFF_M, "S_lizard" },
{ SYM_MON, S_WORM_TAIL + SYM_OFF_M, "S_worm_tail" },
{ SYM_MON, S_MIMIC_DEF + SYM_OFF_M, "S_mimic_def" },
{ SYM_OTH, SYM_NOTHING + SYM_OFF_X, "S_nothing" },
Expand Down
2 changes: 1 addition & 1 deletion src/uhitm.c
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ do_attack(struct monst *mtmp)
u_wipe_engr(3);

/* Is the "it died" check actually correct? */
if (monsndx(mdat) == PM_LEPRECHAUN && !mtmp->mfrozen && !mtmp->msleeping
if (mdat->mlet == S_LEPRECHAUN && !mtmp->mfrozen && !mtmp->msleeping
&& !mtmp->mconf && mtmp->mcansee && !rn2(7)
&& (m_move(mtmp, 0) == 2 /* it died */
|| mtmp->mx != u.ux + u.dx
Expand Down
Loading

0 comments on commit 6f0e026

Please sign in to comment.