MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Sprite_Handle_Missile

Method Sprite_Handle_Missile

Source/Fodder.cpp:12510–12571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12508}
12509
12510void cFodder::Sprite_Handle_Missile(sSprite* pSprite) {
12511
12512 dword_3B24B = -1;
12513 Sprite_Create_FireTrail(pSprite);
12514
12515 pSprite->field_8 = 0xA3;
12516 int16 Data0 = pSprite->field_26;
12517 int16 Data4 = pSprite->field_28;
12518 int16 Data8 = pSprite->field_0;
12519 int16 DataC = pSprite->field_4;
12520 int16 Data10 = 0x10;
12521
12522 Map_Get_Distance_BetweenPoints(Data0, Data4, Data8, Data10, DataC);
12523 if (Data0 <= 7)
12524 goto loc_1BECD;
12525
12526 if (pSprite->field_20 > 4) {
12527 pSprite->field_1E_Big -= 0xA000;
12528 }
12529
12530 Data0 = pSprite->field_26;
12531 Data4 = pSprite->field_28;
12532
12533 Sprite_Direction_Between_Points(pSprite, Data0, Data4);
12534 Sprite_Movement_Calculate(pSprite);
12535
12536 if (mSprite_Bullet_Destroy)
12537 goto loc_1BECD;
12538
12539 Data0 = pSprite->field_10;
12540
12541 Data0 >>= 5;
12542 Data0 -= 1;
12543 Data0 ^= 0x0F;
12544 Data0 &= 0x0F;
12545 pSprite->field_A = Data0;
12546
12547 if (pSprite->field_36 < 0x60)
12548 pSprite->field_36 += pSprite->field_3A;
12549
12550 Data0 = mMission_EngineTicks;
12551 Data0 &= 3;
12552
12553 if (!Data0)
12554 pSprite->field_3A <<= 1;
12555
12556 if (!pSprite->field_32)
12557 return;
12558
12559 Data0 = -9;
12560 Data4 = 2;
12561 if (!Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4))
12562 return;
12563
12564loc_1BECD:;
12565
12566 pSprite->field_18 = eSprite_Explosion2;
12567 pSprite->field_4 -= 4;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected