| 2733 | } |
| 2734 | |
| 2735 | void GroupUnity(int i) |
| 2736 | { |
| 2737 | int leader, m, j; |
| 2738 | BOOL clear; |
| 2739 | |
| 2740 | if ((DWORD)i >= MAXMONSTERS) |
| 2741 | app_fatal("GroupUnity: Invalid monster %d", i); |
| 2742 | |
| 2743 | if (monster[i].leaderflag) { |
| 2744 | leader = monster[i].leader; |
| 2745 | clear = LineClearF(CheckNoSolid, monster[i]._mx, monster[i]._my, monster[leader]._mfutx, monster[leader]._mfuty); |
| 2746 | if (clear || monster[i].leaderflag != 1) { |
| 2747 | if (clear |
| 2748 | && monster[i].leaderflag == 2 |
| 2749 | && abs(monster[i]._mx - monster[leader]._mfutx) < 4 |
| 2750 | && abs(monster[i]._my - monster[leader]._mfuty) < 4) { |
| 2751 | monster[leader].packsize++; |
| 2752 | monster[i].leaderflag = 1; |
| 2753 | } |
| 2754 | } else { |
| 2755 | monster[leader].packsize--; |
| 2756 | monster[i].leaderflag = 2; |
| 2757 | } |
| 2758 | } |
| 2759 | |
| 2760 | if (monster[i].leaderflag == 1) { |
| 2761 | if (monster[i]._msquelch > monster[leader]._msquelch) { |
| 2762 | monster[leader]._lastx = monster[i]._mx; |
| 2763 | monster[leader]._lasty = monster[i]._my; |
| 2764 | monster[leader]._msquelch = monster[i]._msquelch - 1; |
| 2765 | } |
| 2766 | if (monster[leader]._mAi == AI_GARG) { |
| 2767 | if (monster[leader]._mFlags & MFLAG_ALLOW_SPECIAL) { |
| 2768 | monster[leader]._mmode = MM_SATTACK; |
| 2769 | monster[leader]._mFlags &= ~MFLAG_ALLOW_SPECIAL; |
| 2770 | } |
| 2771 | } |
| 2772 | return; |
| 2773 | } |
| 2774 | if (monster[i]._uniqtype != 0) { |
| 2775 | if (UniqMonst[monster[i]._uniqtype - 1].mUnqAttr & 2) { |
| 2776 | for (j = 0; j < nummonsters; j++) { |
| 2777 | m = monstactive[j]; |
| 2778 | if (monster[m].leaderflag == 1 && monster[m].leader == i) { |
| 2779 | if (monster[i]._msquelch > monster[m]._msquelch) { |
| 2780 | monster[m]._lastx = monster[i]._mx; |
| 2781 | monster[m]._lasty = monster[i]._my; |
| 2782 | monster[m]._msquelch = monster[i]._msquelch - 1; |
| 2783 | } |
| 2784 | if (monster[m]._mAi == AI_GARG) { |
| 2785 | if (monster[m]._mFlags & MFLAG_ALLOW_SPECIAL) { |
| 2786 | monster[m]._mmode = MM_SATTACK; |
| 2787 | monster[m]._mFlags &= ~MFLAG_ALLOW_SPECIAL; |
| 2788 | } |
| 2789 | } |
| 2790 | } |
| 2791 | } |
| 2792 | } |
no test coverage detected