DoAracPatternMovement(enemy * en,const unsigned char * mx,const unsigned char * my,const unsigned int * mt)1 void DoAracPatternMovement(enemy *en,const unsigned char *mx,const unsigned char *my,const unsigned int *mt)
2 {
3 // Move
4 en->enemyposx+=mx[en->enemyparamb]-4;
5 en->enemyposy+=my[en->enemyparamb]-4;
6
7 if(en->enemyframe>=mt[en->enemyparamb])
8 {
9 en->enemyparama++;
10 en->enemyframe=0;
11 en->enemyparamb++;
12 en->enemyparamb%=8;
13 }
14 }
15
DrawAracMoving(enemy * en)16 void DrawAracMoving(enemy *en)
17 {
18 DrawSpriteArray(STAGE7MIDDLEBOSSBASE+(((en->enemyframe>>1)%2)*24),en->enemyposx,en->enemyposy,48,32);
19 }
20
UpdateStage7MiddleBoss0(enemy * en)21 void UpdateStage7MiddleBoss0(enemy *en)
22 {
23 // Move and test for change
24 en->enemyposy++;
25 if(en->enemyposy>=30)
26 {
27 en->enemyparama=2;
28 en->enemyparamb=0;
29 en->enemyframe=0;
30 }
31 // Draw arac moving
32 DrawAracMoving(en);
33 }
34
UpdateStage7MiddleBoss1(enemy * en)35 void UpdateStage7MiddleBoss1(enemy *en)
36 {
37 // Do pattern movement
38 DoAracPatternMovement(en,aracmovingx,aracmovingy,aracmovingt);
39
40 // Draw arac moving
41 DrawAracMoving(en);
42 }
43
UpdateStage7MiddleBoss2(enemy * en)44 void UpdateStage7MiddleBoss2(enemy *en)
45 {
46 // Shoot
47 if(en->enemyframe<41)
48 TestEnemyShootComplex(en,8,20,24);
49
50 // Test for change
51 if(en->enemyframe>=80)
52 {
53 en->enemyparama=1;
54 en->enemyframe=0;
55 }
56 // Draw arac quiet
57 DrawSpriteArray(STAGE7MIDDLEBOSSBASE,en->enemyposx,en->enemyposy,48,32);
58 }
59
FinishStage7MiddleBoss()60 void FinishStage7MiddleBoss()
61 {
62 // Nos cargamos las arañillas
63 KillEnemies(1);
64
65 // Metemos un enemigo que retrase esto
66 InitEnemy(0,0,STAGE7OBJECT);
67 }
68
InitStage7MiddleBoss(enemy * en)69 void InitStage7MiddleBoss(enemy *en)
70 {
71 // Disable scroll
72 disablescroll=1;
73 }
74
UpdateStage7MiddleBoss(enemy * en)75 unsigned char UpdateStage7MiddleBoss(enemy *en)
76 {
77 // Spread blobs
78 if(stageframe%175==33)
79 InitEnemy(32+myRand()%208,0,MONSTERBLOB);
80 if(stageframe%175==161)
81 InitEnemy(32+myRand()%208,176,MONSTERBLOB);
82
83 // Call custom function
84 //changeBank(FIXEDBANKSLOT);
85 (*(updatestage7middlebossfunctions[en->enemyparama]))(en);
86
87 // Return
88 return 1;
89 }
90
91