Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case 1: // calculate experience points to redistribute
- {
- u16 calculatedExp;
- s32 viaSentIn;
- for (viaSentIn = 0, i = 0; i < 6; i++)
- {
- if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
- continue;
- if (gBitTable[i] & sentIn)
- viaSentIn++;
- item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (item == ITEM_ENIGMA_BERRY)
- holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
- else
- holdEffect = ItemId_GetHoldEffect(item);
- // if (holdEffect == HOLD_EFFECT_EXP_SHARE)
- // viaExpShare++;
- }
- calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
- if (gSaveBlock2.expShare) // exp share is turned on
- {
- *exp = calculatedExp / 2 / viaSentIn;
- if (*exp == 0)
- *exp = 1;
- viaExpShare = gSaveBlock1.playerPartyCount;
- gExpShareExp = calculatedExp / 2;
- if (gExpShareExp == 0)
- gExpShareExp = 1;
- }
- else
- {
- *exp = calculatedExp / viaSentIn;
- if (*exp == 0)
- *exp = 1;
- gExpShareExp = 0;
- }
- gBattleStruct->getexpStateTracker++;
- gBattleStruct->expGetterID = 0;
- gBattleStruct->sentInPokes = sentIn;
- }
- //fall through
- case 2: // set exp value to the poke in expgetter_id and print message
- if (gBattleExecBuffer == 0)
- {
- item = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HELD_ITEM);
- if (item == ITEM_ENIGMA_BERRY)
- holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
- else
- holdEffect = ItemId_GetHoldEffect(item);
- if (!gSaveBlock2.expShare && !(gBattleStruct->sentInPokes & 1))
- {
- gBattleStruct->sentInPokes >>= 1;
- gBattleStruct->getexpStateTracker = 5;
- gBattleMoveDamage = 0; // used for exp
- }
- else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) == 100)
- {
- gBattleStruct->sentInPokes >>= 1;
- gBattleStruct->getexpStateTracker = 5;
- gBattleMoveDamage = 0; // used for exp
- }
- else
- {
- // music change in wild battle after fainting a poke
- if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong)
- {
- BattleStopLowHpSound();
- PlayBGM(0x161);
- gBattleStruct->wildVictorySong++;
- }
- if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP))
- {
- if (gBattleStruct->sentInPokes & 1)
- gBattleMoveDamage = *exp;
- else
- gBattleMoveDamage = 0;
- if (gSaveBlock2.expShare)
- gBattleMoveDamage += gExpShareExp;
- if (holdEffect == HOLD_EFFECT_LUCKY_EGG)
- gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
- if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
- if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterID]))
- {
- gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
- i = 0x14A;
- }
- else
- {
- i = 0x149;
- }
- // get exp getter bank
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- {
- if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) && !(gAbsentBattlerFlags & gBitTable[2]))
- gBattleStruct->expGetterBank = 2;
- else
- {
- if (!(gAbsentBattlerFlags & gBitTable[0]))
- gBattleStruct->expGetterBank = 0;
- else
- gBattleStruct->expGetterBank = 2;
- }
- }
- else
- gBattleStruct->expGetterBank = 0;
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterID)
- // buffer 'gained' or 'gained a boosted'
- PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
- PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank);
- MonGainEVs(&gPlayerParty[gBattleStruct->expGetterID], gBattleMons[gBank1].species);
- }
- gBattleStruct->sentInPokes >>= 1;
- gBattleStruct->getexpStateTracker++;
- }
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment