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); } }
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); }
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); }
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); }
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); }
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; } }
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); }
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; } } }
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); }
void CK6_KeenSatelliteDraw(CK_object *obj) { RF_AddSpriteDraw(&(obj->sde), obj->posX +0x40, obj->posY + 0x80, 0xE3, false, 1); }