1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2025-08-13 16:11:41 +01:00

Chiro monks get wing storm instead of bird kick

Knocks small monsters back.

Weaker than bird kick, vs swoop which is stronger than dive kick.
This commit is contained in:
chris 2022-02-05 18:31:58 -05:00
parent ab803630ee
commit 8942049af7
3 changed files with 46 additions and 4 deletions

View file

@ -659,6 +659,7 @@ E struct obj *FDECL(drop_envy, (struct monst *));
E void FDECL(kickdmg, (struct monst *, BOOLEAN_P));
E void FDECL(dive_kick_monster, (struct monst *));
E void NDECL(bird_kick_monsters);
E void NDECL(wing_storm_monsters);
E boolean FDECL(ghitm, (struct monst *,struct obj *));
E void FDECL(container_impact_dmg, (struct obj *));
E int NDECL(dokick);

View file

@ -277,6 +277,44 @@ doit:
}
}
void
wing_storm_monsters()
{
struct monst *mon;
int sdx = u.dx;
int sdy = u.dy;
extern const int clockwisex[8];
extern const int clockwisey[8];
int offset = rn2(8);
int ix, iy;
int j;
for(int i = 0; i < 4; i++){
for(j = 0; j < 2; j++){
//Necessary so that the kicking functions can knock the monster in the right direction.
if(j){
u.dx = clockwisex[(offset+(4+i))%8];
u.dy = clockwisey[(offset+(4+i))%8];
}
else {
u.dx = clockwisex[(offset+i)%8];
u.dy = clockwisey[(offset+i)%8];
}
ix = u.ux + u.dx;
iy = u.uy + u.dy;
if(!isok(ix, iy))
continue;
mon = m_at(ix, iy);
if(!mon || (mon->mpeaceful && !Hallucination))
continue;
mhurtle(mon, u.dx, u.dy, 4, FALSE);
}
}
u.dx = sdx;
u.dy = sdy;
}
/*
* Return TRUE if caught (the gold taken care of), FALSE otherwise.
* The gold object is *not* attached to the fobj chain!

View file

@ -17256,11 +17256,14 @@ monk_moves()
break;
case BIRD_KICK:
if(!EWounded_legs && circle_monk_target(uarmf)){
if(Race_if(PM_CHIROPTERAN))
pline("Wing bash!");
else
if(Race_if(PM_CHIROPTERAN)){
pline("Wing storm!");
wing_storm_monsters();
}
else {
pline("Bird kick!");
bird_kick_monsters();
bird_kick_monsters();
}
DID_MOVE
}
break;