MCPcopy Create free account
hub / github.com/diasurgical/devilution / GroupUnity

Function GroupUnity

Source/monster.cpp:2735–2794  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2733}
2734
2735void 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 }

Callers 1

ProcessMonstersFunction · 0.85

Calls 2

app_fatalFunction · 0.85
LineClearFFunction · 0.85

Tested by

no test coverage detected