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

Method Sprite_Handle_Troop_Weapon

Source/Fodder.cpp:15303–15412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15301}
15302
15303void cFodder::Sprite_Handle_Troop_Weapon(sSprite* pSprite) {
15304
15305 if (pSprite->field_22 == eSprite_PersonType_Human) {
15306
15307 // Fired Weapon?
15308 if (!pSprite->field_4A)
15309 return;
15310
15311 // Delay before weapon fires?
15312 if (pSprite->field_4A >= 0) {
15313
15314 pSprite->field_4A--;
15315 if (pSprite->field_4A)
15316 return;
15317 }
15318
15319 }
15320 else {
15321 // No weapon firing?
15322 if (!pSprite->field_4A)
15323 return;
15324
15325 if (pSprite->field_4A >= 0) {
15326
15327 pSprite->field_4A -= 1;
15328 if (pSprite->field_4A)
15329 return;
15330
15331 pSprite->field_4A = -1;
15332 }
15333 }
15334
15335 // In water? no weapons
15336 if (pSprite->field_4F)
15337 return;
15338
15339 // Are we enemy with rockets?
15340 if (pSprite->field_18 == eSprite_Enemy_Rocket) {
15341 mTroop_Weapon_Bullet_Disabled = true;
15342 mTroop_Weapon_Grenade_Disabled = true;
15343 mTroop_Weapon_Rocket_Disabled = true;
15344
15345 // Only fire is unit is more than 24 away
15346 if (mSprite_Find_Distance > 0x18)
15347 mTroop_Weapon_Rocket_Disabled = false;
15348
15349 }
15350 else {
15351
15352 // Enemy, after 4th map (can throw grenades)
15353 //loc_1F4B0
15354 if (pSprite->field_18 == eSprite_Enemy) {
15355
15356 // Retail CF didn't allow enemy troops to use grenades until mission 4
15357 if(!(mVersionCurrent->isRetail() && mGame_Data.mMission_Number < 4)) {
15358
15359 // Use a grenade?
15360 if (!(tool_RandomGet() & 0x1F)) {

Callers

nothing calls this directly

Calls 1

isRetailMethod · 0.80

Tested by

no test coverage detected