Example #1
0
void CK6_NospikeChargeDraw(CK_object *obj)
{
	if (obj->topTI)
	{
		obj->user1 = 0;
		if (obj->rightTI || obj->leftTI)
		{
			obj->posX -= obj->xDirection * 128;
			CK_SetAction(obj, CK_GetActionByName("CK6_ACT_NospikeSit0")); // Not Setaction2
			RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
			obj->user2 = 0;
			return;
		}
	}
	else if (++obj->user1 == 6)
	{
		CK_SetAction2(obj, CK_GetActionByName("CK6_ACT_NospikeFall0"));
	}

	if (obj->user2 & 0xFF00)
	{
		uint16_t user2 = obj->user2 & 0xFFFF; // Need to use 16-bit arithmetic here
		user2 -= 0x100;
		obj->user2 = user2;
		RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, true, obj->zLayer);
	}
	else
	{
		RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
	}
}
Example #2
0
void CK6_FlectDraw(CK_object *obj)
{
	// Hit wall walking right; turn around and go left
	if (obj->xDirection == IN_motion_Right && obj->leftTI != 0)
	{
		obj->posX -= obj->deltaPosX;
		obj->xDirection = IN_motion_Left;
		obj->timeUntillThink = US_RndT() / 32;
		CK_SetAction2(obj, obj->currentAction);
	}
	// Hit wall walking left; turn around and go right
	else if (obj->xDirection == IN_motion_Left && obj->rightTI != 0)
	{
		obj->posX -= obj->deltaPosX;
		obj->xDirection = IN_motion_Right;
		obj->timeUntillThink = US_RndT() / 32;
		CK_SetAction2(obj, obj->currentAction);
	}
	// Walked off of ledge; turn around
	else if (obj->topTI == 0)
	{
		obj->posX -= obj->deltaPosX;
		obj->xDirection = -obj->xDirection;
		CK_SetAction2(obj, obj->currentAction);
	}

	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
}
Example #3
0
void CK6_BipShotDraw(CK_object *obj)
{
	if (obj->topTI || obj->bottomTI || obj->rightTI || obj->leftTI)
		CK_RemoveObj(obj);
	else
		RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
}
Example #4
0
void CK6_GikSlideDraw(CK_object *obj)
{
	if ((obj->rightTI && obj->velX < 0) || (obj->leftTI && obj->velX > 0))
		obj->velX = 0;

	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
}
Example #5
0
void CK6_NospikeFallDraw(CK_object *obj)
{
	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);

	// Place the question mark
	RF_AddSpriteDrawUsing16BitOffset(&(obj->user3), obj->posX + 0x100, obj->posY - 0x80, 0x13C, false, 3);
}
Example #6
0
void CK6_NospikeFallDraw2(CK_object *obj)
{
	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);

	if (obj->topTI)
	{
		obj->user1 = obj->user2 = obj->user3;
		obj->user4 = obj->type;
		CK_SetAction2(obj, CK_GetActionByName("CK6_ACT_NospikeStunned0"));
		SD_PlaySound(SOUND_NOSPIKECOLLIDE);
		obj->type = CT6_StunnedCreature;
		obj->velY = -24;
	}
}
Example #7
0
void CK6_GikJumpDraw(CK_object *obj)
{
	if (obj->rightTI || obj->leftTI)
		obj->velX = 0;

	if (obj->bottomTI)
		obj->velY = 0;

	if (obj->topTI)
	{
		obj->velY = 0;
		SD_PlaySound(SOUND_GIKLAND);
		CK_SetAction2(obj, obj->currentAction->next);
	}

	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
}
Example #8
0
void CK6_OrbatrixBounceDraw(CK_object *obj)
{
	RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);

	if (obj->topTI)
		obj->velY = -obj->velY;

	if (obj->topTI || obj->leftTI || obj->rightTI)
	{
		obj->velX = -obj->velX;
		SD_PlaySound(SOUND_ORBATRIXBOUNCE);

		if (obj->topTI && --obj->user1 == 0)
		{
			CK_SetAction2(obj, CK_GetActionByName("CK6_ACT_OrbatrixUncurl0"));
			obj->user2 = 0x180;
		}
	}
}
Example #9
0
void CK6_GoPlatDraw(CK_object *obj)
{
  RF_AddSpriteDraw(&(obj->sde), obj->posX, obj->posY, obj->gfxChunk, false, obj->zLayer);
  RF_AddSpriteDrawUsing16BitOffset(&(obj->user3), obj->posX + 0x100, obj->posY + 0x100, obj->user1 + 425, false, 0);
}
Example #10
0
void CK6_KeenSatelliteDraw(CK_object *obj)
{
  RF_AddSpriteDraw(&(obj->sde), obj->posX +0x40, obj->posY + 0x80, 0xE3, false, 1);
}