mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-01 21:38:41 -05:00
Fix WriteMonster weirdmatch
This commit is contained in:
@@ -249,227 +249,153 @@ static void WriteDungeonMonsters(DataSerializer *seri)
|
||||
WriteMonster(seri, gDungeon->wildPokemon[i]);
|
||||
}
|
||||
|
||||
// TODO: Rewrite like ReadMonster
|
||||
static void WriteMonster(DataSerializer *seri, Entity *src)
|
||||
{
|
||||
Position *pos;
|
||||
EntityInfo *info;
|
||||
s32 counter;
|
||||
EntityInfo info2;
|
||||
u32 uStack_ac;
|
||||
u32 uStack_a8;
|
||||
HiddenPower *psStack_a4;
|
||||
u8 *temp1;
|
||||
u8 *temp2;
|
||||
AITarget *temp3;
|
||||
u8 *puStack_a0;
|
||||
u32 *puStack_9c;
|
||||
u32 *puStack_98;
|
||||
u32 *puStack_94;
|
||||
u8 *puStack_90;
|
||||
Sleep *puStack_8c;
|
||||
NonVolatile *puStack_88;
|
||||
Immobilize *puStack_84;
|
||||
Volatile *puStack_80;
|
||||
Charging *puStack_7c;
|
||||
Protection *puStack_78;
|
||||
Waiting *puStack_74;
|
||||
Linked *puStack_70;
|
||||
MoveStatus *puStack_6c;
|
||||
ItemStatus *puStack_68;
|
||||
TransformStatus *puStack_64;
|
||||
EyesightStatus *puStack_60;
|
||||
Muzzled *pbStack_5c;
|
||||
bool8 *pbStack_58;
|
||||
bool8 *pbStack_54;
|
||||
bool8 *pbStack_50;
|
||||
bool8 *puStack_4c;
|
||||
bool8 *pbStack_48;
|
||||
bool8 *pbStack_44;
|
||||
bool8 *pbStack_40;
|
||||
bool8 *pbStack_3c;
|
||||
u8 *puStack_38;
|
||||
u8 *puStack_34;
|
||||
bool8 *pbStack_30;
|
||||
u8 *puStack_2c;
|
||||
u8 *puStack_28;
|
||||
u8 *puStack_24;
|
||||
s32 i;
|
||||
EntityInfo blankInfo;
|
||||
u32 one;
|
||||
u32 zero;
|
||||
|
||||
zero = 0;
|
||||
one = 1;
|
||||
|
||||
WriteU8(seri, 0xAA);
|
||||
WriteU8(seri, 0x55);
|
||||
|
||||
uStack_a8 = 0;
|
||||
uStack_ac = 1;
|
||||
WriteU8(seri,0xaa);
|
||||
WriteU8(seri,0x55);
|
||||
if (EntityExists(src)) {
|
||||
info = GetEntInfo(src);
|
||||
WriteBytes(seri,&uStack_ac,1);
|
||||
WriteBytes(seri,&src->pos.x,1);
|
||||
WriteBytes(seri,&src->pos.y,1);
|
||||
WriteBytes(seri,&src->isVisible,1);
|
||||
WriteBytes(seri,&src->spawnGenID,2);
|
||||
WriteBytes(seri, &one, 1);
|
||||
WriteBytes(seri, &src->pos.x, 1);
|
||||
WriteBytes(seri, &src->pos.y, 1);
|
||||
WriteBytes(seri, &src->isVisible, 1);
|
||||
WriteBytes(seri, &src->spawnGenID, 2);
|
||||
}
|
||||
else {
|
||||
memset(&info2,0,sizeof(EntityInfo));
|
||||
info = &info2;
|
||||
WriteBytes(seri,&uStack_a8,1);
|
||||
WriteBytes(seri,&uStack_a8,1);
|
||||
WriteBytes(seri,&uStack_a8,1);
|
||||
WriteBytes(seri,&uStack_a8,1);
|
||||
WriteBytes(seri,&uStack_a8,2);
|
||||
memset(&blankInfo, 0, sizeof(EntityInfo));
|
||||
|
||||
info = &blankInfo;
|
||||
WriteBytes(seri, &zero, 1);
|
||||
WriteBytes(seri, &zero, 1);
|
||||
WriteBytes(seri, &zero, 1);
|
||||
WriteBytes(seri, &zero, 1);
|
||||
WriteBytes(seri, &zero, 2);
|
||||
}
|
||||
WriteU16(seri,info->flags);
|
||||
WriteMonsterID(seri,info->apparentID);
|
||||
WriteMonsterID(seri,info->id);
|
||||
WriteBool8(seri,info->isNotTeamMember);
|
||||
WriteBool8(seri,info->isTeamLeader);
|
||||
WriteU8(seri,info->shopkeeper);
|
||||
WriteU8(seri,info->level);
|
||||
WriteU8(seri,info->teamIndex);
|
||||
WriteJoinedAt(seri,&info->joinedAt);
|
||||
WriteS16(seri,info->IQ);
|
||||
WriteS16(seri,info->HP);
|
||||
WriteS16(seri,info->maxHPStat);
|
||||
WriteS16(seri,info->originalHP);
|
||||
WriteU8(seri,info->atk[0]);
|
||||
WriteU8(seri,info->atk[1]);
|
||||
WriteU8(seri,info->def[0]);
|
||||
WriteU8(seri,info->def[1]);
|
||||
WriteU32(seri,info->exp);
|
||||
WriteS16(seri,info->offensiveStages[0]);
|
||||
WriteS16(seri,info->offensiveStages[1]);
|
||||
WriteS16(seri,info->defensiveStages[0]);
|
||||
WriteS16(seri,info->defensiveStages[1]);
|
||||
WriteS16(seri,info->hitChanceStages[0]);
|
||||
WriteS16(seri,info->hitChanceStages[1]);
|
||||
WriteS16(seri,info->flashFireBoost);
|
||||
WriteS32(seri,info->offensiveMultipliers[0]);
|
||||
WriteS32(seri,info->offensiveMultipliers[1]);
|
||||
WriteS32(seri,info->defensiveMultipliers[0]);
|
||||
WriteS32(seri,info->defensiveMultipliers[1]);
|
||||
WriteActionContainer(seri,&info->action);
|
||||
WriteType(seri,info->types[0]);
|
||||
WriteType(seri,info->types[1]);
|
||||
WriteAbility(seri,info->abilities[0]);
|
||||
WriteAbility(seri,info->abilities[1]);
|
||||
WriteItem(seri,&info->heldItem);
|
||||
|
||||
WriteU16(seri, info->flags);
|
||||
WriteMonsterID(seri, info->apparentID);
|
||||
WriteMonsterID(seri, info->id);
|
||||
WriteBool8(seri, info->isNotTeamMember);
|
||||
WriteBool8(seri, info->isTeamLeader);
|
||||
WriteU8(seri, info->shopkeeper);
|
||||
WriteU8(seri, info->level);
|
||||
WriteU8(seri, info->teamIndex);
|
||||
WriteJoinedAt(seri, &info->joinedAt);
|
||||
WriteS16(seri, info->IQ);
|
||||
WriteS16(seri, info->HP);
|
||||
WriteS16(seri, info->maxHPStat);
|
||||
WriteS16(seri, info->originalHP);
|
||||
WriteU8(seri, info->atk[0]);
|
||||
WriteU8(seri, info->atk[1]);
|
||||
WriteU8(seri, info->def[0]);
|
||||
WriteU8(seri, info->def[1]);
|
||||
WriteU32(seri, info->exp);
|
||||
WriteS16(seri, info->offensiveStages[0]);
|
||||
WriteS16(seri, info->offensiveStages[1]);
|
||||
WriteS16(seri, info->defensiveStages[0]);
|
||||
WriteS16(seri, info->defensiveStages[1]);
|
||||
WriteS16(seri, info->hitChanceStages[0]);
|
||||
WriteS16(seri, info->hitChanceStages[1]);
|
||||
WriteS16(seri, info->flashFireBoost);
|
||||
WriteS32(seri, info->offensiveMultipliers[0]);
|
||||
WriteS32(seri, info->offensiveMultipliers[1]);
|
||||
WriteS32(seri, info->defensiveMultipliers[0]);
|
||||
WriteS32(seri, info->defensiveMultipliers[1]);
|
||||
WriteActionContainer(seri, &info->action);
|
||||
WriteType(seri, info->types[0]);
|
||||
WriteType(seri, info->types[1]);
|
||||
WriteAbility(seri, info->abilities[0]);
|
||||
WriteAbility(seri, info->abilities[1]);
|
||||
WriteItem(seri, &info->heldItem);
|
||||
WriteMonsterUnk64(seri, info->unk64);
|
||||
temp3 = &info->aiTarget;
|
||||
temp2 = info->IQSkillMenuFlags;
|
||||
temp1 = info->IQSkillFlags;
|
||||
puStack_a0 = &info->tactic;
|
||||
psStack_a4 = &info->hiddenPower;
|
||||
puStack_9c = &info->unk98;
|
||||
puStack_98 = &info->unk9C;
|
||||
puStack_94 = &info->unkA0;
|
||||
puStack_8c = &info->sleep;
|
||||
puStack_88 = &info->nonVolatile;
|
||||
puStack_84 = &info->immobilize;
|
||||
puStack_80 = &info->volatileStatus;
|
||||
puStack_7c = &info->charging;
|
||||
puStack_78 = &info->protection;
|
||||
puStack_74 = &info->waitingStruct;
|
||||
puStack_70 = &info->linked;
|
||||
puStack_6c = &info->moveStatus;
|
||||
puStack_68 = &info->itemStatus;
|
||||
puStack_64 = &info->transformStatus;
|
||||
puStack_60 = &info->eyesightStatus;
|
||||
pbStack_5c = &info->muzzled;
|
||||
pbStack_58 = &info->powerEars;
|
||||
pbStack_54 = &info->scanning;
|
||||
pbStack_50 = &info->stairSpotter;
|
||||
puStack_4c = &info->unkF3;
|
||||
pbStack_48 = &info->grudge;
|
||||
puStack_34 = &info->expMultiplier;
|
||||
pbStack_44 = &info->exposed;
|
||||
pbStack_40 = &info->isColorChanged;
|
||||
pbStack_3c = &info->bossFlag;
|
||||
puStack_38 = &info->terrifiedTurns;
|
||||
pbStack_30 = &info->useHeldItem;
|
||||
puStack_2c = &info->perishSongTurns;
|
||||
puStack_28 = &info->unkFE;
|
||||
puStack_24 = &info->unkFF;
|
||||
puStack_90 = &info->clientType;
|
||||
|
||||
pos = info->prevPos;
|
||||
for (counter = 0; counter < NUM_PREV_POS; counter++) {
|
||||
WriteTilePos(seri, pos);
|
||||
pos++;
|
||||
}
|
||||
for (i = 0; i < NUM_PREV_POS; i++)
|
||||
WriteTilePos(seri, &info->prevPos[i]);
|
||||
|
||||
WriteAITarget(seri,temp3);
|
||||
WriteIQSkills(seri,temp2);
|
||||
WriteIQSkills(seri,temp1);
|
||||
WriteTactic(seri,*puStack_a0);
|
||||
WriteHiddenPower(seri,psStack_a4);
|
||||
WriteU32(seri,*puStack_9c);
|
||||
WriteU32(seri,*puStack_98);
|
||||
WriteU32(seri,*puStack_94);
|
||||
WriteSleep(seri,puStack_8c);
|
||||
WriteNonVolatile(seri,puStack_88);
|
||||
WriteImmobilize(seri,puStack_84);
|
||||
WriteVolatile(seri,puStack_80);
|
||||
WriteCharging(seri,puStack_7c);
|
||||
WriteProtection(seri,puStack_78);
|
||||
WriteWaiting(seri,puStack_74);
|
||||
WriteLinked(seri,puStack_70);
|
||||
WriteMoveStatus(seri,puStack_6c);
|
||||
WriteItemStatus(seri,puStack_68);
|
||||
WriteTransformStatus(seri,puStack_64);
|
||||
WriteEyesightStatus(seri,puStack_60);
|
||||
WriteMuzzled(seri,pbStack_5c);
|
||||
WriteBool8(seri,*pbStack_58);
|
||||
WriteBool8(seri,*pbStack_54);
|
||||
WriteBool8(seri,*pbStack_50);
|
||||
WriteBool8(seri,*puStack_4c);
|
||||
WriteBool8(seri,*pbStack_48);
|
||||
WriteU8(seri,*puStack_34);
|
||||
WriteBool8(seri,*pbStack_44);
|
||||
WriteBool8(seri,*pbStack_40);
|
||||
WriteBool8(seri,*pbStack_3c);
|
||||
WriteU8(seri,*puStack_38);
|
||||
WriteBool8(seri,*pbStack_30);
|
||||
WriteU8(seri,*puStack_2c);
|
||||
WriteU8(seri,*puStack_28);
|
||||
WriteMonsterUnkFF(seri,*puStack_24);
|
||||
WriteTargetingDecoy(seri,info->targetingDecoy);
|
||||
WriteSpeedStage(seri,info->speedStage);
|
||||
WriteSpeedCounters(seri,info->speedUpCounters,NUM_SPEED_COUNTERS);
|
||||
WriteSpeedCounters(seri,info->speedDownCounters,NUM_SPEED_COUNTERS);
|
||||
WriteAITarget(seri, &info->aiTarget);
|
||||
WriteIQSkills(seri, info->IQSkillMenuFlags);
|
||||
WriteIQSkills(seri, info->IQSkillFlags);
|
||||
WriteTactic(seri, info->tactic);
|
||||
WriteHiddenPower(seri, &info->hiddenPower);
|
||||
WriteU32(seri, info->unk98);
|
||||
WriteU32(seri, info->unk9C);
|
||||
WriteU32(seri, info->unkA0);
|
||||
WriteSleep(seri, &info->sleep);
|
||||
WriteNonVolatile(seri, &info->nonVolatile);
|
||||
WriteImmobilize(seri, &info->immobilize);
|
||||
WriteVolatile(seri, &info->volatileStatus);
|
||||
WriteCharging(seri, &info->charging);
|
||||
WriteProtection(seri, &info->protection);
|
||||
WriteWaiting(seri, &info->waitingStruct);
|
||||
WriteLinked(seri, &info->linked);
|
||||
WriteMoveStatus(seri, &info->moveStatus);
|
||||
WriteItemStatus(seri, &info->itemStatus);
|
||||
WriteTransformStatus(seri, &info->transformStatus);
|
||||
WriteEyesightStatus(seri, &info->eyesightStatus);
|
||||
WriteMuzzled(seri, &info->muzzled);
|
||||
WriteBool8(seri, info->powerEars);
|
||||
WriteBool8(seri, info->scanning);
|
||||
WriteBool8(seri, info->stairSpotter);
|
||||
WriteBool8(seri, info->unkF3);
|
||||
WriteBool8(seri, info->grudge);
|
||||
WriteU8(seri, info->expMultiplier);
|
||||
WriteBool8(seri, info->exposed);
|
||||
WriteBool8(seri, info->isColorChanged);
|
||||
WriteBool8(seri, info->bossFlag);
|
||||
WriteU8(seri, info->terrifiedTurns);
|
||||
WriteBool8(seri, info->useHeldItem);
|
||||
WriteU8(seri, info->perishSongTurns);
|
||||
WriteU8(seri, info->unkFE);
|
||||
WriteMonsterUnkFF(seri, info->unkFF);
|
||||
WriteTargetingDecoy(seri, info->targetingDecoy);
|
||||
WriteSpeedStage(seri, info->speedStage);
|
||||
WriteSpeedCounters(seri, info->speedUpCounters, NUM_SPEED_COUNTERS);
|
||||
WriteSpeedCounters(seri, info->speedDownCounters, NUM_SPEED_COUNTERS);
|
||||
WriteU8(seri, info->stockpileStage);
|
||||
WriteU8(seri, info->unk113);
|
||||
WriteU8(seri, info->moveRandomly);
|
||||
WriteMoves(seri, &info->moves);
|
||||
WriteBelly(seri, &info->belly);
|
||||
WriteBelly(seri, &info->maxBelly);
|
||||
WriteBool8(seri,info->aiNextToTarget);
|
||||
WriteBool8(seri,info->recalculateFollow);
|
||||
WriteBool8(seri,info->waiting);
|
||||
WriteBool8(seri,info->unk146);
|
||||
WriteBool8(seri,info->attacking);
|
||||
WriteBool8(seri,info->unk149);
|
||||
WriteBool8(seri,info->unk14A);
|
||||
WriteBool8(seri,info->unk14B);
|
||||
WriteBool8(seri,info->unk14C);
|
||||
WriteU16(seri,info->visualFlags);
|
||||
WriteU16(seri,info->previousVisualFlags);
|
||||
WriteBool8(seri,info->unk152);
|
||||
WriteU8(seri,info->unk153);
|
||||
WriteBool8(seri,info->unk154);
|
||||
WriteBool8(seri,info->unk155);
|
||||
WriteBool8(seri,info->unk156);
|
||||
WriteU8(seri,info->unk164);
|
||||
WriteU8(seri,info->unk165);
|
||||
WriteU8(seri,info->unk166);
|
||||
WriteU8(seri,info->unk167);
|
||||
WriteU8(seri,info->unk168);
|
||||
WriteU8(seri,info->turnsSinceWarpScarfActivation);
|
||||
WriteTilePos(seri,&(info->targetPos));
|
||||
WriteBool8(seri, info->aiNextToTarget);
|
||||
WriteBool8(seri, info->recalculateFollow);
|
||||
WriteBool8(seri, info->waiting);
|
||||
WriteBool8(seri, info->unk146);
|
||||
WriteBool8(seri, info->attacking);
|
||||
WriteBool8(seri, info->unk149);
|
||||
WriteBool8(seri, info->unk14A);
|
||||
WriteBool8(seri, info->unk14B);
|
||||
WriteBool8(seri, info->unk14C);
|
||||
WriteU16(seri, info->visualFlags);
|
||||
WriteU16(seri, info->previousVisualFlags);
|
||||
WriteBool8(seri, info->unk152);
|
||||
WriteU8(seri, info->unk153);
|
||||
WriteBool8(seri, info->unk154);
|
||||
WriteBool8(seri, info->unk155);
|
||||
WriteBool8(seri, info->unk156);
|
||||
WriteU8(seri, info->unk164);
|
||||
WriteU8(seri, info->unk165);
|
||||
WriteU8(seri, info->unk166);
|
||||
WriteU8(seri, info->unk167);
|
||||
WriteU8(seri, info->unk168);
|
||||
WriteU8(seri, info->turnsSinceWarpScarfActivation);
|
||||
WriteTilePos(seri, &info->targetPos);
|
||||
WriteS32(seri, info->unk174);
|
||||
WriteU16(seri, info->abilityEffectFlags);
|
||||
WriteS16(seri, info->unk1F8);
|
||||
WriteS16(seri, info->mobileTurnTimer);
|
||||
WriteU32(seri, info->expGainedInTurn);
|
||||
WriteClientType(seri, *puStack_90);
|
||||
WriteClientType(seri, info->clientType);
|
||||
}
|
||||
|
||||
static void WriteDungeonFloor(DataSerializer *seri)
|
||||
|
||||
Reference in New Issue
Block a user