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

Method Sprite_Handle_Helicopter_Enemy

Source/Fodder.cpp:6486–6681  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6484}
6485
6486void cFodder::Sprite_Handle_Helicopter_Enemy(sSprite* pSprite) {
6487 int16 Data0;
6488 int16 Data4;
6489 int16 Data8;
6490 int16 DataC;
6491 int16 Data10, Data14, Data1C;
6492 sSprite* Data24 = 0, *Data30 = 0;
6493
6494 // Bullets don't hit choppers
6495 if (pSprite->field_38 == eSprite_Anim_Hit)
6496 pSprite->field_38 = eSprite_Anim_None;
6497
6498 if (pSprite->field_38) {
6499 mSprite_Helicopter_DestroyLight = -1;
6500
6501 pSprite->field_22 = eSprite_PersonType_AI;
6502 Sprite_Handle_Helicopter(pSprite);
6503 pSprite->field_22 = eSprite_PersonType_AI;
6504
6505 mSprite_Helicopter_DestroyLight = 0;
6506 goto loc_25288;
6507 }
6508
6509 if (!pSprite->field_43) {
6510 pSprite->field_46 = (pSprite->field_0 << 16) | (pSprite->field_4 & 0xFFFF);
6511 pSprite->field_43 = -1;
6512 }
6513
6514 if (pSprite->field_4C)
6515 --pSprite->field_4C;
6516
6517 if (pSprite->field_20)
6518 goto loc_250D2;
6519
6520 Data0 = pSprite->field_0;
6521 Data4 = pSprite->field_4;
6522 Data8 = ((int64)pSprite->field_46) >> 16;
6523 DataC = ((int64)pSprite->field_46) & 0xFFFF;
6524
6525 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
6526 if (Data0 > 0x14)
6527 goto loc_250D2;
6528
6529 Data8 = pSprite->field_62;
6530 if ((uint16)Data8 >= 0x1F4) {
6531 if (pSprite->field_18 == eSprite_Helicopter_Homing_Enemy2)
6532 if (mHelicopterCall_X < 0)
6533 goto loc_24FF1;
6534
6535 if (!(tool_RandomGet() & 1))
6536 goto loc_2500F;
6537 }
6538
6539loc_24FF1:;
6540 if (mVersionCurrent->isDemo()) {
6541 Data8 += 0x20;
6542 if (Data8)
6543 pSprite->field_62 = Data8;

Callers

nothing calls this directly

Calls 3

isDemoMethod · 0.80
getWidthMethod · 0.45
getHeightMethod · 0.45

Tested by

no test coverage detected