| 6034 | } |
| 6035 | |
| 6036 | int16 cFodder::Sprite_Create_Cannon(sSprite* pSprite) { |
| 6037 | if (mPhase_Completed_Timer) |
| 6038 | return -1; |
| 6039 | |
| 6040 | int16 Data0 = 1; |
| 6041 | sSprite* Data2C = 0, *Data30 = 0; |
| 6042 | |
| 6043 | if (Sprite_Get_Free_Max42(Data0, Data2C, Data30)) |
| 6044 | return -1; |
| 6045 | |
| 6046 | if (mSprite_Projectile_Counters[2] == 0x14) |
| 6047 | return -1; |
| 6048 | |
| 6049 | ++mSprite_Projectile_Counters[2]; |
| 6050 | Data2C->field_0 = pSprite->field_0; |
| 6051 | Data2C->field_2 = pSprite->field_2; |
| 6052 | Data2C->field_4 = pSprite->field_4; |
| 6053 | Data2C->field_6 = pSprite->field_6; |
| 6054 | Data2C->field_8 = 0x7F; |
| 6055 | Data2C->field_A = 3; |
| 6056 | Data2C->field_12 = 9; |
| 6057 | Data2C->field_18 = eSprite_Cannon; |
| 6058 | |
| 6059 | Data2C->field_1E_Big += 0x60000; |
| 6060 | |
| 6061 | Data2C->field_52 = pSprite->field_52; |
| 6062 | Data2C->field_22 = pSprite->field_22; |
| 6063 | Data2C->field_2C = eSprite_Draw_Second; |
| 6064 | Data0 = 0x321; |
| 6065 | |
| 6066 | Data0 += pSprite->field_62; |
| 6067 | Data2C->field_4A = Data0; |
| 6068 | Data0 = pSprite->field_36; |
| 6069 | Data0 += 0x50; |
| 6070 | Data2C->field_36 = Data0; |
| 6071 | Data2C->field_43 = 0; |
| 6072 | Data2C->field_44 = 0; |
| 6073 | Data0 = pSprite->field_A; |
| 6074 | Data0 -= 1; |
| 6075 | Data0 ^= 0x0F; |
| 6076 | Data0 &= 0x0F; |
| 6077 | Data0 <<= 5; |
| 6078 | Data2C->field_10 = Data0; |
| 6079 | Data2C->field_3A = 0; |
| 6080 | Data2C->field_1A_sprite = pSprite; |
| 6081 | Data2C->field_2A = 2; |
| 6082 | Data2C->field_16 = 0; |
| 6083 | Data2C->field_14 = 2; |
| 6084 | Data2C->field_34 = -1; |
| 6085 | Data2C->field_50 = 0; |
| 6086 | Data2C->field_59 = 0; |
| 6087 | |
| 6088 | int16 Data8 = 7; |
| 6089 | Data0 = tool_RandomGet(); |
| 6090 | int16 Data4 = Data0; |
| 6091 | |
| 6092 | Data0 &= Data8; |
| 6093 | if (Data4 < 0) |
nothing calls this directly
no outgoing calls
no test coverage detected