| 17929 | } |
| 17930 | |
| 17931 | int16 cFodder::Sprite_Create_Enemy(sSprite* pSprite, sSprite*& pData2C) { |
| 17932 | |
| 17933 | if (mPhase_Complete || mTroops_Enemy_Count >= mParams->mSpawnEnemyMax) |
| 17934 | return -1; |
| 17935 | int16 Data0 = 1; |
| 17936 | sSprite* Data30 = 0; |
| 17937 | |
| 17938 | if (Sprite_Get_Free_Max29(Data0, pData2C, Data30)) |
| 17939 | return -1; |
| 17940 | |
| 17941 | //loc_21A1C:; |
| 17942 | pData2C->Clear(); |
| 17943 | pData2C->field_18 = eSprite_Enemy; |
| 17944 | pData2C->field_0 = pSprite->field_0; |
| 17945 | pData2C->field_0 -= 6; |
| 17946 | pData2C->field_4 = pSprite->field_4; |
| 17947 | pData2C->field_4 += 4; |
| 17948 | pData2C->field_8 = 0x7C; |
| 17949 | pData2C->field_4A = 0; |
| 17950 | pData2C->field_22 = eSprite_PersonType_AI; |
| 17951 | |
| 17952 | Data0 = tool_RandomGet() & 0xFF; |
| 17953 | Data0 += 0x78; |
| 17954 | Data0 = -Data0; |
| 17955 | pData2C->field_5E = Data0; |
| 17956 | Data0 = tool_RandomGet(); |
| 17957 | int16 Data4 = Data0; |
| 17958 | Data0 &= 0x1E; |
| 17959 | if (Data4 < 0) |
| 17960 | Data0 = -Data0; |
| 17961 | |
| 17962 | Data0 += 0x1C0; |
| 17963 | pData2C->field_10 = Data0; |
| 17964 | Data4 &= 0x0F; |
| 17965 | Data4 += 8; |
| 17966 | pData2C->field_44 = (int8)Data4; |
| 17967 | Sprite_Enemy_Aggression_Update(pData2C); |
| 17968 | |
| 17969 | mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionCreated_Count += 1; |
| 17970 | mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionCreated_Count &= 0x0F; |
| 17971 | if (!mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionCreated_Count && mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionMax < 0x1E) |
| 17972 | ++mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionMax; |
| 17973 | |
| 17974 | ++mTroops_Enemy_Count; |
| 17975 | return 0; |
| 17976 | } |
| 17977 | |
| 17978 | void cFodder::Sprite_Enemy_Aggression_Update(sSprite* pData2C) { |
| 17979 | int16 Data8 = mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionNext; |