1
0
Fork 0
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:
Chris-plus-alphanumericgibberish 2015-04-24 19:28:56 -04:00
commit e61ad34f9a
4 changed files with 50 additions and 13 deletions

View file

@ -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;

View file

@ -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),

View file

@ -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);

View file

@ -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,