| 7515 | } |
| 7516 | |
| 7517 | int16 cFodder::Sprite_Create_Native(sSprite* pSprite, sSprite*& pData2C, sSprite*& pData30) { |
| 7518 | int16 Data4; |
| 7519 | |
| 7520 | if (!pSprite->field_5C) |
| 7521 | return -1; |
| 7522 | |
| 7523 | if (mPhase_Complete) |
| 7524 | return -1; |
| 7525 | |
| 7526 | if (mTroops_Enemy_Count >= mParams->mSpawnEnemyMax) |
| 7527 | return -1; |
| 7528 | |
| 7529 | int16 Data0 = 1; |
| 7530 | |
| 7531 | Sprite_Get_Free_Max29(Data0, pData2C, pData30); |
| 7532 | if (Data0) |
| 7533 | return -1; |
| 7534 | |
| 7535 | pData2C->Clear(); |
| 7536 | pData2C->field_18 = mSpawnSpriteType; |
| 7537 | pData2C->field_0 = pSprite->field_0; |
| 7538 | pData2C->field_0 -= 6; |
| 7539 | pData2C->field_4 = pSprite->field_4; |
| 7540 | pData2C->field_4 += 4; |
| 7541 | pData2C->field_8 = 0x7C; |
| 7542 | pData2C->field_4A = 0; |
| 7543 | pData2C->field_22 = eSprite_PersonType_Native; |
| 7544 | |
| 7545 | Data0 = tool_RandomGet(); |
| 7546 | Data4 = Data0; |
| 7547 | Data0 &= 0x1E; |
| 7548 | if (Data4 < 0) |
| 7549 | Data0 = -Data0; |
| 7550 | |
| 7551 | Data0 += 0x1C0; |
| 7552 | pData2C->field_10 = Data0; |
| 7553 | Data4 &= 0x0F; |
| 7554 | Data4 += 8; |
| 7555 | pData2C->field_44 = static_cast<int8>(Data4); |
| 7556 | return 0; |
| 7557 | } |
| 7558 | |
| 7559 | int16 cFodder::Direction_Between_Points(int16& pData0, int16& pData4, int16& pData8, int16& pDataC) { |
| 7560 | int16 Data10 = 0, Data14 = 0; |