mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2025-05-10 17:25:12 +01:00
Merge branch 'development-manticore' into compat-3.9.0
Conflicts: src/mon.c
This commit is contained in:
commit
e61ad34f9a
4 changed files with 50 additions and 13 deletions
42
src/mon.c
42
src/mon.c
|
@ -252,6 +252,20 @@ register struct monst *mtmp;
|
|||
obj->cursed = obj->blessed = FALSE;
|
||||
}
|
||||
goto default_1;
|
||||
case PM_CHROMATIC_DRAGON:
|
||||
obj = mksobj_at(BLACK_DRAGON_SCALES, x, y, FALSE, FALSE);
|
||||
obj = oname(obj, artiname(ART_CHROMATIC_DRAGON_SCALES));
|
||||
goto default_1;
|
||||
case PM_MANTICORE:
|
||||
if (mtmp->mrevived ? !rn2(6) : TRUE) {
|
||||
obj = mksobj_at(SPIKE, x, y, TRUE, FALSE);
|
||||
obj->blessed = 0;
|
||||
obj->cursed = 0;
|
||||
obj->quan = d(4,6);
|
||||
obj->spe = 0;
|
||||
obj->opoisoned = (OPOISON_PARAL);
|
||||
}
|
||||
goto default_1;
|
||||
case PM_SON_OF_TYPHON:
|
||||
if (!rn2(mtmp->mrevived ? 20 : 3)) {
|
||||
obj = mksobj_at(LEO_NEMAEUS_HIDE, x, y, FALSE, FALSE);
|
||||
|
@ -517,14 +531,6 @@ register struct monst *mtmp;
|
|||
}
|
||||
mtmp->mnamelth = 0;
|
||||
break;
|
||||
case PM_LIVING_LECTURN:
|
||||
num = d(2,3);
|
||||
while(num--) {
|
||||
obj = mksobj_at(CLUB, x, y, TRUE, FALSE);
|
||||
}
|
||||
obj = mkobj_at(SPBOOK_CLASS, x, y, FALSE);
|
||||
mtmp->mnamelth = 0;
|
||||
break;
|
||||
case PM_LEATHER_GOLEM:
|
||||
num = d(2,4);
|
||||
while(num--)
|
||||
|
@ -934,7 +940,7 @@ movemon()
|
|||
!rn2(4)
|
||||
){
|
||||
struct monst *sprout = (struct monst *) 0;
|
||||
sprout = makemon(mtmp->data,(mtmp->mx-1)+rn2(3),(mtmp->my-1)+rn2(3),MM_NOCOUNTBIRTH|NO_MINVENT);
|
||||
sprout = makemon(mtmp->data,(mtmp->mx-1)+rn2(3),(mtmp->my-1)+rn2(3),MM_CHECK_GOODPOS|MM_NOCOUNTBIRTH|NO_MINVENT);
|
||||
if(sprout) sprout->mhp = In_hell(&u.uz) ? sprout->mhp*3/4 : sprout->mhp/2;
|
||||
}
|
||||
}
|
||||
|
@ -3335,9 +3341,21 @@ register struct monst *mtmp;
|
|||
}
|
||||
aggravate();
|
||||
} else if(mtmp->data->msound == MS_JUBJUB && !(mtmp->mspec_used)) {
|
||||
domonnoise(mtmp);
|
||||
} else if(mtmp->data->msound == MS_DREAD && !(mtmp->mspec_used)) {
|
||||
domonnoise(mtmp);
|
||||
struct monst *tmpm;
|
||||
mtmp->mspec_used = 10;
|
||||
if(flags.soundok) {
|
||||
pline("%s screams high and shrill.", Monnam(mtmp));
|
||||
stop_occupation();
|
||||
}
|
||||
for(tmpm = fmon; tmpm; tmpm = tmpm->nmon){
|
||||
if(tmpm != mtmp){
|
||||
if(tmpm->mtame && tmpm->mtame<20) tmpm->mtame++;
|
||||
if(tmpm->mhp > 0 && d(1,tmpm->mhp) < mtmp->mhpmax){
|
||||
tmpm->mflee = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
make_stunned(HStun + mtmp->mhp/10, TRUE);
|
||||
}
|
||||
if(mtmp->data == &mons[PM_MEDUSA]) {
|
||||
register int i;
|
||||
|
|
11
src/monst.c
11
src/monst.c
|
@ -541,6 +541,15 @@ NEARDATA struct permonst mons[] = {
|
|||
SIZ(600, 300, 0, MS_GROWL, MZ_LARGE), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
||||
CLR_RED),
|
||||
MON("manticore", S_FELINE,//12
|
||||
LVL(8, 12, 3, 30, -1), (G_GENO|1),
|
||||
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
||||
ATTK(AT_BITE, AD_PHYS, 1,8), ATTK(AT_STNG, AD_DRST, 1, 4),
|
||||
ATTK(AT_ARRW, AD_PLYS, 1, 6), NO_ATTK),
|
||||
SIZ(800, 600, 0, MS_ROAR, MZ_HUGE), MR_POISON, MR_POISON,
|
||||
M1_FLY|M1_NOHANDS|M1_ANIMAL|M1_SEE_INVIS|M1_POIS|M1_CARNIVORE,
|
||||
M2_NASTY|M2_STRONG, M3_INFRAVISIBLE,
|
||||
CLR_BRIGHT_GREEN),
|
||||
MON("displacer beast", S_FELINE,//14
|
||||
LVL(12, 12, -10, 0, -3), (G_GENO|1),
|
||||
A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_CLAW, AD_PHYS, 4, 4),
|
||||
|
@ -549,7 +558,7 @@ NEARDATA struct permonst mons[] = {
|
|||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE|M1_FLY, M2_HOSTILE,
|
||||
M3_INFRAVISIBLE|M3_TRAITOR,
|
||||
CLR_BLUE),
|
||||
MON("son of Typhon", S_FELINE,//17
|
||||
MON("son of Typhon", S_FELINE,//18
|
||||
LVL(15, 12, -20, 90, -7), (G_GENO|1),
|
||||
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
||||
ATTK(AT_BITE, AD_PHYS, 1,10), NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
|
|
|
@ -1146,6 +1146,14 @@ register struct attack *mattk;
|
|||
qvr->opoisoned = (OPOISON_BASIC|OPOISON_BLIND);
|
||||
bypassDR = 1;
|
||||
break;
|
||||
case AD_PLYS:
|
||||
ammo_type = SPIKE;
|
||||
qvr = mksobj(ammo_type, TRUE, FALSE);
|
||||
qvr->blessed = 0;
|
||||
qvr->cursed = 0;
|
||||
qvr->quan = 1;
|
||||
qvr->opoisoned = (OPOISON_PARAL);
|
||||
break;
|
||||
case AD_SOLR:
|
||||
ammo_type = SILVER_ARROW;
|
||||
qvr = mksobj(ammo_type, TRUE, FALSE);
|
||||
|
|
|
@ -102,6 +102,8 @@ WEAPON("shuriken", "throwing star",
|
|||
0, 1, 0, 35, 1, 5, 8, 6, 2, P, -P_SHURIKEN, IRON, HI_METAL),
|
||||
WEAPON("boomerang", (char *)0,
|
||||
1, 1, 0, 15, 5, 20, 9, 9, 0, 0, -P_BOOMERANG, WOOD, HI_WOOD),
|
||||
WEAPON("spike", (char *)0,
|
||||
1, 1, 0, 0, 1, 2, 3, 2, 0, P, -P_DART, BONE, CLR_WHITE),
|
||||
|
||||
/* spears */
|
||||
WEAPON("spear", (char *)0,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue