Beispiel #1
0
void ai_ccs_gun(Object *o)
{
	Object *curly = o->linkedobject;
	if (!curly) return;
	
	o->dir = curly->dir;
	o->frame = curly->frame;
	
	switch(o->frame)
	{
		case 0:		// horizontal/normal
		{
			if (curly->dir == RIGHT)
				o->x = curly->x + (8 << CSF);
			else
				o->x = curly->x - (8 << CSF);
			
			o->y = curly->y;
		}
		break;
		
		case 1:		// looking up
		{
			o->x = curly->x;
			o->y = curly->y - (10 << CSF);
		}
		break;
		
		case 2:		// looking down
		{
			o->x = curly->x;
			o->y = curly->y + (10 << CSF);
		}
		break;
	}
	
	if (pinputs[FIREKEY] != o->timer2)
	{
		o->timer2 = pinputs[FIREKEY];
		if (pinputs[FIREKEY])
		{
			if (CountObjectsOfType(OBJ_NEMESIS_SHOT_CURLY) < 2)
			{
				int shotdir = curly->dir;
				if (curly->frame == 1) shotdir = UP;
				if (curly->frame == 2) shotdir = DOWN;
				
				Object *shot = CreateObject(0, 0, OBJ_NEMESIS_SHOT_CURLY);
				SetupBullet(shot, curly->x, curly->y, B_CURLYS_NEMESIS, shotdir);
			}
		}
	}
}
Beispiel #2
0
static void PFirePolarStar(int level)
{
        // at level 3 only two shots per screen permitted
        if (level < 2 || CountObjectsOfType(OBJ_POLAR_SHOT) < 2) {
                int xoff;
                if (level == 2) xoff = -5<<CSF;
                else xoff = -4<<CSF;

                FireSimpleBulletOffset(OBJ_POLAR_SHOT, B_PSTAR_L1+level, xoff, 0);
                rumble(0.2,200);
        }
}