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