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

Method Sprite_Handle_Turret

Source/Fodder.cpp:5628–5741  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5626}
5627
5628void cFodder::Sprite_Handle_Turret(sSprite* pSprite) {
5629 sSprite* Data28 = 0;
5630 sSprite* Data34 = 0;
5631 int16 Data0, Data4, Data8, DataC, Data10;
5632
5633 // Turrets in Moors / Interior can't be destroyed
5634 if (mVersionCurrent->isCannonFodder1()) {
5635 if (mMapLoaded->getTileType() == eTileTypes_Moors || mMapLoaded->getTileType() == eTileTypes_Int) {
5636
5637 if (pSprite->field_38 == eSprite_Anim_Die1)
5638 pSprite->field_38 = eSprite_Anim_None;
5639 }
5640 }
5641
5642 if (pSprite->field_38 == eSprite_Anim_Die3 || pSprite->field_38 == eSprite_Anim_Die1) {
5643
5644 pSprite->field_18 = eSprite_Explosion;
5645 pSprite->field_26 = 0x1F45;
5646 pSprite->field_28 = -2;
5647 if (pSprite->field_22 == eSprite_PersonType_Human)
5648 return;
5649
5650 Sprite_Destroy(pSprite + 1);
5651 return;
5652 }
5653
5654 //loc_23F70
5655 pSprite->field_8 = 0xD2;
5656 pSprite->field_65 = -1;
5657 if (pSprite->field_22 == eSprite_PersonType_Human)
5658 goto loc_24075;
5659
5660 mTurretFires_HomingMissile = 0;
5661 Data0 = eSprite_Player;
5662 Data4 = -1;
5663 Data8 = -1;
5664 DataC = -1;
5665 Data10 = -1;
5666
5667 if (mGame_Data.mGamePhase_Data.mGoals_Remaining[eObjective_Get_Civilian_Home - 1]) {
5668 Data4 = eSprite_Civilian;
5669 Data8 = eSprite_Civilian2;
5670 DataC = eSprite_Civilian_Spear;
5671 Data10 = -1;
5672 }
5673
5674 if (Sprite_Find_By_Types(pSprite, Data0, Data4, Data8, DataC, Data10, Data28))
5675 goto loc_240F3;
5676
5677 if (mSprite_Find_Distance >= 0x28) {
5678
5679 Data0 = tool_RandomGet();
5680 if (mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionAverage < 5)
5681 Data0 &= 0x3F;
5682 else
5683 Data0 &= 0x1F;
5684
5685 if (Data0 == 4)

Callers

nothing calls this directly

Calls 2

isCannonFodder1Method · 0.80
getTileTypeMethod · 0.80

Tested by

no test coverage detected