Ejemplo n.º 1
0
void CK6_BipshipCol(CK_object *a, CK_object *b)
{
	if (b->type == CT_Stunner)
	{
		CK_ShotHit(b);
		CK_SetAction2(a, CK_GetActionByName("CK6_ACT_BipshipHit0"));
	}
}
Ejemplo n.º 2
0
void CK6_OrbatrixCol(CK_object *a, CK_object *b)
{
	if (b->type == CT_Stunner)
	{
		CK_ShotHit(b);
		CK_SetAction2(a, CK_GetActionByName("CK6_ACT_OrbatrixUncurl2"));
	}
}
Ejemplo n.º 3
0
void CK6_OrbatrixCol2(CK_object *a, CK_object *b)
{
	if (b->type == CT_Player)
	{
		CK_KillKeen();
	}
	else if (b->type == CT_Stunner)
	{
		CK_ShotHit(b);
		a->velX = 0;
	}
}
Ejemplo n.º 4
0
void CK6_NospikeCol(CK_object *a, CK_object *b)
{
	if (b->type == CT_Player)
	{
		CK_KillKeen();
	}
	else if (b->type == CT_Stunner)
	{
		if (--a->user4 == 0)
		{
			CK_StunCreature(a, b, CK_GetActionByName("CK6_ACT_NospikeStunned0"));
		}
		else
		{
			a->xDirection = ck_keenObj->posX < a->posX ? IN_motion_Left : IN_motion_Right;
			a->user2 |= 0x400;
			a->visible = true;

			if (a->currentAction == CK_GetActionByName("CK6_ACT_NospikeSit0") ||
				a->currentAction == CK_GetActionByName("CK6_ACT_NospikeWalk0"))
				CK_SetAction2(a, CK_GetActionByName("CK6_ACT_NospikeCharge1"));
			else if (a->currentAction == CK_GetActionByName("CK6_ACT_NospikeWalk1"))
				CK_SetAction2(a, CK_GetActionByName("CK6_ACT_NospikeCharge2"));
			else if (a->currentAction == CK_GetActionByName("CK6_ACT_NospikeWalk2"))
				CK_SetAction2(a, CK_GetActionByName("CK6_ACT_NospikeCharge3"));
			else if (a->currentAction == CK_GetActionByName("CK6_ACT_NospikeWalk3"))
				CK_SetAction2(a, CK_GetActionByName("CK6_ACT_NospikeCharge0"));

			CK_ShotHit(b);
		}
	}
	else if (b->type == CT6_Nospike)
	{
		// Two charging nospikes will stun each other if they collide head on
		if ((a->user2 & 0xFF) && (b->user2 & 0xFF) && a->xDirection != b->xDirection)
		{
			a->user1 = a->user2 = a->user3 = 0;
			b->user1 = b->user2 = b->user3 = 0;
			a->user4 = b->user4 = a->type;
			CK_SetAction2(a, CK_GetActionByName("CK6_ACT_NospikeStunned0"));
			CK_SetAction2(b, CK_GetActionByName("CK6_ACT_NospikeStunned0"));
			SD_PlaySound(SOUND_NOSPIKECOLLIDE);
			a->type = b->type = CT6_StunnedCreature;
			a->velY = b->velY = -24;
		}
	}
}
Ejemplo n.º 5
0
void CK6_BloogguardCol(CK_object *a, CK_object *b)
{
  if (b->type == CT_Player)
  {
    CK_KillKeen();
  }
  else if (b->type == CT_Stunner)
  {
    if (--a->user2 == 0)
    {
      CK_StunCreature(a, b, CK_GetActionByName("CK6_ACT_BloogguardStunned0"));
    }
    else
    {
      a->user1 = 2;
      a->visible = true;
      CK_ShotHit(b);
    }
  }
}