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

Method Sprite_Create_Grenade2

Source/Fodder.cpp:6156–6244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6154}
6155
6156int16 cFodder::Sprite_Create_Grenade2(sSprite* pSprite) {
6157 int16 Data0, Data4, Data8, DataC;
6158
6159 if (mPhase_Completed_Timer)
6160 return 0;
6161
6162 if (mSprite_Projectile_Counters[pSprite->field_22] == 2)
6163 return 0;
6164
6165 if (!pSprite->field_2E)
6166 return 0;
6167
6168 Data0 = 2;
6169 sSprite* Data2C, *Data30;
6170 if (Sprite_Get_Free_Max42(Data0, Data2C, Data30))
6171 return 0;
6172
6173 ++mSprite_Projectile_Counters[pSprite->field_22];
6174 Data30 = Data2C + 1;
6175 Data2C->field_0 = pSprite->field_0;
6176 Data30->field_0 = pSprite->field_0;
6177 Data2C->field_4 = pSprite->field_4;
6178 Data30->field_4 = pSprite->field_4;
6179 Data2C->field_8 = 0x7D;
6180 Data30->field_8 = 0x7E;
6181 Data2C->field_A = 0;
6182 Data30->field_A = 0;
6183
6184 Data8 = pSprite->field_2E;
6185 DataC = pSprite->field_30;
6186 DataC += 6;
6187
6188 Data2C->field_26 = Data8;
6189 Data2C->field_28 = DataC;
6190
6191 if (pSprite->field_22 != eSprite_PersonType_Human)
6192 Sprite_Enemy_Set_Target(Data2C);
6193
6194 Data0 = pSprite->field_0;
6195 Data4 = pSprite->field_4;
6196
6197 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
6198 if (Data0 < 0x28)
6199 Data0 = 0x28;
6200
6201 Data0 = Data0 / 5;
6202 if (Data0 > 0x64)
6203 Data0 = 0x64;
6204
6205 Data2C->field_12 = Data0;
6206 Data2C->field_36 = 0x32;
6207 Data30->field_36 = 0x32;
6208 Data0 = pSprite->field_20;
6209 Data0 += 2;
6210
6211 Data2C->field_1E = 0;
6212 Data2C->field_20 = Data0;
6213 Data30->field_1E = 0;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected