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

Method Sprite_Create_Bullet

Source/Fodder.cpp:17019–17165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17017}
17018
17019int16 cFodder::Sprite_Create_Bullet(sSprite* pSprite) {
17020 int16 Data0 = 1, Data8, Data4;
17021 sSprite* Data2C = 0, *Data30 = 0;
17022
17023 if (mPhase_Completed_Timer)
17024 return -1;
17025
17026 if (!pSprite->field_2E)
17027 return -1;
17028
17029 if (pSprite == mSquad_Leader)
17030 if (pSprite->field_54 == 1)
17031 return -1;
17032
17033 if (Sprite_Get_Free_Max42(Data0, Data2C, Data30))
17034 return -1;
17035
17036 if (mSprite_Projectile_Counters[2] == 0x14)
17037 return -1;
17038
17039 ++mSprite_Projectile_Counters[2];
17040 pSprite->field_54 = 2;
17041 pSprite->field_5A = -1;
17042 pSprite->field_57 = 8;
17043 Data2C->field_0 = pSprite->field_0;
17044 Data2C->field_2 = pSprite->field_2;
17045 Data2C->field_4 = pSprite->field_4;
17046 Data2C->field_6 = pSprite->field_6;
17047 Data2C->field_8 = 0x9D;
17048 //seg005:1023
17049 Data0 = pSprite->field_3C;
17050 Data0 >>= 1;
17051 Data0 &= 0x07;
17052 Data2C->field_A = Data0;
17053 Data2C->field_12 = 9;
17054
17055 if (pSprite->field_18 != eSprite_Player) {
17056
17057 Data0 = pSprite->field_62;
17058 Data0 >>= 3;
17059 Data0 += 8;
17060 if (Data0 > 0x10)
17061 Data0 = 0x10;
17062 Data2C->field_12 = Data0;
17063 }
17064 else {
17065
17066 Data2C->field_5E_SoldierAllocated = pSprite->field_46_mission_troop;
17067 Data2C->field_5D = -1;
17068
17069 // Bullet Travel time
17070 Data0 = mSprite_Weapon_Data.mAliveTime;
17071 Data0 += mSprite_Bullet_Time_Modifier;
17072 Data2C->field_12 = Data0;
17073 }
17074
17075 Data2C->field_18 = eSprite_Bullet;
17076 Data2C->field_1E_Big = pSprite->field_1E_Big;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected