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

Method Sprite_Create_Missile

Source/Fodder.cpp:5410–5494  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5408}
5409
5410int16 cFodder::Sprite_Create_Missile(sSprite* pSprite, sSprite*& pData2C) {
5411 if (mPhase_Completed_Timer)
5412 return 0;
5413
5414 if (mSprite_Missile_Projectile_Counters[pSprite->field_22] == 2)
5415 return 0;
5416
5417 if (!pSprite->field_2E)
5418 return 0;
5419
5420 int16 Data0 = 2;
5421 sSprite* Data30 = 0;
5422 if (Sprite_Get_Free_Max42(Data0, pData2C, Data30))
5423 return 0;
5424
5425 ++mSprite_Missile_Projectile_Counters[pSprite->field_22];
5426 Data30 = pData2C + 1;
5427
5428 pData2C->field_0 = pSprite->field_0;
5429 pData2C->field_2 = pSprite->field_2;
5430 pData2C->field_4 = pSprite->field_4;
5431 pData2C->field_6 = pSprite->field_6;
5432
5433 Data30->field_0 = pSprite->field_0;
5434 Data30->field_2 = pSprite->field_2;
5435 Data30->field_4 = pSprite->field_4;
5436 Data30->field_6 = pSprite->field_6;
5437
5438 pData2C->field_0 += mSprite_Missile_LaunchDistance_X;
5439 Data30->field_0 += mSprite_Missile_LaunchDistance_X;
5440 if (Data30->field_0 < 0)
5441 return 0;
5442
5443 pData2C->field_4 += mSprite_Missile_LaunchDistance_Y;
5444 Data30->field_4 += mSprite_Missile_LaunchDistance_Y;
5445
5446 if (Data30->field_4 < 0)
5447 return 0;
5448
5449 pData2C->field_32 = 0;
5450 if (pSprite->field_6F == eVehicle_Turret_Cannon)
5451 pData2C->field_32 = -1;
5452
5453 pData2C->field_1E = pSprite->field_1E;
5454 pData2C->field_20 = pSprite->field_20;
5455 pData2C->field_20 -= 0x0D;
5456 pData2C->field_26 = pSprite->field_2E;
5457 pData2C->field_28 = pSprite->field_30;
5458 pData2C->field_28 += 0x10;
5459
5460 if (pSprite->field_22 != eSprite_PersonType_Human) {
5461 Sprite_Enemy_Set_Target(pData2C);
5462 }
5463 else {
5464 pData2C->field_26 -= 1;
5465 pData2C->field_28 += 3;
5466 }
5467

Callers

nothing calls this directly

Calls 1

isCoverDiskMethod · 0.80

Tested by

no test coverage detected