Unify spitmu and spitmm
This commit is contained in:
+12
-38
@@ -753,6 +753,10 @@ struct attack *mattk;
|
|||||||
return MM_MISS;
|
return MM_MISS;
|
||||||
}
|
}
|
||||||
if (m_lined_up(mtarg, mtmp)) {
|
if (m_lined_up(mtarg, mtmp)) {
|
||||||
|
boolean utarg = (mtarg == &g.youmonst);
|
||||||
|
xchar tx = utarg ? mtmp->mux : mtarg->mx;
|
||||||
|
xchar ty = utarg ? mtmp->muy : mtarg->my;
|
||||||
|
|
||||||
switch (mattk->adtyp) {
|
switch (mattk->adtyp) {
|
||||||
case AD_BLND:
|
case AD_BLND:
|
||||||
case AD_DRST:
|
case AD_DRST:
|
||||||
@@ -765,12 +769,13 @@ struct attack *mattk;
|
|||||||
otmp = mksobj(ACID_VENOM, TRUE, FALSE);
|
otmp = mksobj(ACID_VENOM, TRUE, FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!rn2(BOLT_LIM-distmin(mtmp->mx,mtmp->my,mtarg->mx,mtarg->my))) {
|
if (!rn2(BOLT_LIM-distmin(mtmp->mx,mtmp->my,tx,ty))) {
|
||||||
if (canseemon(mtmp))
|
if (canseemon(mtmp))
|
||||||
pline("%s spits venom!", Monnam(mtmp));
|
pline("%s spits venom!", Monnam(mtmp));
|
||||||
g.mtarget = mtarg;
|
if (!utarg)
|
||||||
|
g.mtarget = mtarg;
|
||||||
m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby),
|
m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby),
|
||||||
distmin(mtmp->mx,mtmp->my,mtarg->mx,mtarg->my), otmp);
|
distmin(mtmp->mx,mtmp->my,tx,ty), otmp);
|
||||||
g.mtarget = (struct monst *)0;
|
g.mtarget = (struct monst *)0;
|
||||||
nomul(0);
|
nomul(0);
|
||||||
|
|
||||||
@@ -785,6 +790,9 @@ struct attack *mattk;
|
|||||||
}
|
}
|
||||||
|
|
||||||
return MM_HIT;
|
return MM_HIT;
|
||||||
|
} else {
|
||||||
|
obj_extract_self(otmp);
|
||||||
|
obfree(otmp, (struct obj *) 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return MM_MISS;
|
return MM_MISS;
|
||||||
@@ -949,41 +957,7 @@ spitmu(mtmp, mattk)
|
|||||||
struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
struct attack *mattk;
|
struct attack *mattk;
|
||||||
{
|
{
|
||||||
struct obj *otmp;
|
return spitmm(mtmp, mattk, &g.youmonst);
|
||||||
|
|
||||||
if (mtmp->mcan) {
|
|
||||||
if (!Deaf)
|
|
||||||
pline("A dry rattle comes from %s throat.",
|
|
||||||
s_suffix(mon_nam(mtmp)));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (lined_up(mtmp)) {
|
|
||||||
switch (mattk->adtyp) {
|
|
||||||
case AD_BLND:
|
|
||||||
case AD_DRST:
|
|
||||||
otmp = mksobj(BLINDING_VENOM, TRUE, FALSE);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
impossible("bad attack type in spitmu");
|
|
||||||
/* fall through */
|
|
||||||
case AD_ACID:
|
|
||||||
otmp = mksobj(ACID_VENOM, TRUE, FALSE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!rn2(BOLT_LIM
|
|
||||||
- distmin(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy))) {
|
|
||||||
if (canseemon(mtmp))
|
|
||||||
pline("%s spits venom!", Monnam(mtmp));
|
|
||||||
m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby),
|
|
||||||
distmin(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy), otmp);
|
|
||||||
nomul(0);
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
obj_extract_self(otmp);
|
|
||||||
obfree(otmp, (struct obj *) 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* monster breathes at you (ranged) */
|
/* monster breathes at you (ranged) */
|
||||||
|
|||||||
Reference in New Issue
Block a user