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:
parent
ab803630ee
commit
8942049af7
3 changed files with 46 additions and 4 deletions
|
@ -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);
|
||||
|
|
38
src/dokick.c
38
src/dokick.c
|
@ -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!
|
||||
|
|
11
src/xhity.c
11
src/xhity.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue