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

Method Sprite_Create_Grenade

Source/Fodder.cpp:17167–17301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17165}
17166
17167int16 cFodder::Sprite_Create_Grenade(sSprite* pSprite) {
17168 int16 Data0, Data4, Data8, DataC;
17169 sSprite* Data2C = 0, *Data30 = 0;
17170
17171 if (mPhase_Completed_Timer)
17172 goto loc_20ADE;
17173
17174 if (mSprite_Projectile_Counters[pSprite->field_22] == 2)
17175 goto loc_20ADE;
17176
17177 if (!pSprite->field_2E)
17178 goto loc_20ADE;
17179
17180 if (pSprite->field_18 != eSprite_Enemy)
17181 goto loc_20AC1;
17182
17183 Data0 = pSprite->field_0;
17184 Data4 = pSprite->field_4;
17185 Data8 = pSprite->field_2E;
17186 DataC = pSprite->field_30;
17187 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
17188 if (Data0 >= 0x82)
17189 goto loc_20ADE;
17190
17191loc_20AC1:;
17192
17193 Data0 = 2;
17194
17195 if (!Sprite_Get_Free_Max42(Data0, Data2C, Data30))
17196 goto loc_20B0A;
17197
17198 return -1;
17199
17200loc_20ADE:;
17201 if (pSprite == mSquad_Leader)
17202 mMouse_Button_LeftRight_Toggle = false;
17203
17204 return -1;
17205
17206loc_20B0A:;
17207 if (pSprite->field_18 != eSprite_Player)
17208 goto loc_20B6E;
17209
17210 Data0 = pSprite->field_32;
17211 Data4 = Data0;
17212 if (!mSquad_Grenades[Data0])
17213 goto loc_20ADE;
17214
17215 --mSquad_Grenades[Data0];
17216 mGUI_RefreshSquadGrenades[Data4] = -1;
17217
17218loc_20B6E:;
17219
17220 ++mSprite_Projectile_Counters[pSprite->field_22];
17221 pSprite->field_55 = 1;
17222 pSprite->field_5A = -1;
17223 pSprite->field_54 = 1;
17224

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected