Skip to content

Commit 9496b65

Browse files
committed
use CrawlTable for CTA of MAI_Fallen
1 parent 6366933 commit 9496b65

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Source/monster.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3316,7 +3316,8 @@ void MAI_Sneak(int mnum)
33163316
void MonCallToArms(int mnum)
33173317
{
33183318
MonsterStruct* mon = &monsters[mnum];
3319-
int x, y, mx, my, tx, ty, m, rad, amount;
3319+
int i, j, x, y, mx, my, tx, ty, m, rad, amount;
3320+
const int8_t* cr;
33203321
const int MAX_RAD = 5;
33213322
rad = mon->_mAI.aiInt;
33223323
//if (!(mon->_mFlags & MFLAG_NOHEAL)) {
@@ -3334,9 +3335,14 @@ void MonCallToArms(int mnum)
33343335
my = mon->_my;
33353336
tx = mon->_menemyx;
33363337
ty = mon->_menemyy;
3337-
for (y = -rad; y <= rad; y++) {
3338-
for (x = -rad; x <= rad; x++) {
3339-
m = dMonster[x + mx][y + my];
3338+
static_assert(lengthof(CrawlNum) > 2 * MAX_RAD + 4, "MonCallToArm uses CrawlTable/CrawlNum up to radius 5.");
3339+
for (i = 0; i <= rad; i++) {
3340+
cr = &CrawlTable[CrawlNum[i]];
3341+
for (j = (BYTE)*cr; j > 0; j--) {
3342+
x = mx + *++cr;
3343+
y = my + *++cr;
3344+
// assert(IN_DUNGEON_AREA(x, y));
3345+
m = dMonster[x][y];
33403346
if (m > 0) {
33413347
mon = &monsters[m - 1];
33423348
if (mon->_mAI.aiType == AI_FALLEN /*&& !MON_RELAXED*/ && (mon->_mleader == MON_NO_LEADER || mon->_mleader == mnum) && LineClear(mx, my, mon->_mx, mon->_my)) {

0 commit comments

Comments
 (0)