Mercurial > mm7
diff mm7_6.cpp @ 726:9d13d2ec35a6
Слияние
author | Ritor1 |
---|---|
date | Fri, 22 Mar 2013 01:29:46 +0600 |
parents | f39d5902c85a 735dab8d3c9a |
children | 6daaa2f18d0d |
line wrap: on
line diff
--- a/mm7_6.cpp Fri Mar 22 01:29:25 2013 +0600 +++ b/mm7_6.cpp Fri Mar 22 01:29:46 2013 +0600 @@ -2166,6 +2166,7 @@ { bool result; // eax@2 + __debugbreak(); // refactor if ( *(&pSpellDatas[0].field_12 + 20 * uSpellID) & 0xC ) result = 1; else @@ -2616,8 +2617,8 @@ int v63; // ecx@187 int v64; // ecx@188 int v65; // ecx@189 - const char *v66; // ecx@200 - unsigned int v67; // edx@201 + //const char *v66; // ecx@200 + //unsigned int v67; // edx@201 char v68; // al@207 ItemGen *v69; // esi@211 int v70; // ecx@214 @@ -2740,7 +2741,7 @@ int v187; // eax@367 int v188; // esi@369 int v189; // edi@369 - const char *v190; // ecx@377 + //const char *v190; // ecx@377 signed int v191; // edi@379 int v192; // ecx@382 int v193; // ecx@383 @@ -3613,7 +3614,11 @@ while ( v730 );*/ } if ( SHIDWORD(v733) > amount ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -3644,11 +3649,16 @@ v659 = pObjectList->pObjects[(signed __int16)a1.uObjectDescID].uSpeed; v35 = pParty->sRotationX + 10; goto LABEL_124; + case 20: if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; if (!a2) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( (a2 & 7) != OBJECT_Actor) goto LABEL_1056; v699 = 0; @@ -3753,7 +3763,11 @@ a1.uSoundID = v49; v726 = (Player *)a1.Create(0, 0, 0, 0); if ( !MonsterStats::BelongsToSupertype(*(short *)(HIDWORD(v733) + 96), MONSTER_SUPERTYPE_UNDEAD) ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } v47 = v730; v670 = (Vec3_int_ *)&v691; v42 = (signed int)v726; @@ -3820,7 +3834,11 @@ case 87: if ( uCurrentlyLoadedLevelType == LEVEL_Indoor || uCurrentlyLoadedLevelType == LEVEL_Outdoor && (pParty->uCurrentHour < 5 || pParty->uCurrentHour >= 0x15) ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( pPlayer->CanCastSpell(uRequiredMana) ) goto LABEL_152; goto play_sound_and_continue; @@ -4056,16 +4074,12 @@ } } } -LABEL_199: + dword_50C9D0 = 113; dword_50C9D4 = 0; dword_50C9D8 = 1; -LABEL_200: - v66 = pGlobalTXT_LocalizationStrings[428]; -LABEL_201: - v67 = 2; -LABEL_202: - ShowStatusBarString(v66, v67); + + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); goto LABEL_203; @@ -4443,8 +4457,9 @@ } if ( uCurrentlyLoadedLevelType == LEVEL_Indoor) { - v66 = pGlobalTXT_LocalizationStrings[491]; - goto LABEL_201; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[491], 2); // Can't cast Meteor Shower indoors! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -4533,11 +4548,12 @@ } goto LABEL_1056; case 10: - v67 = 2; + //v67 = 2; if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor) { - v66 = pGlobalTXT_LocalizationStrings[492]; - goto LABEL_202; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[492], 2); // Can't cast Inferno outdoors! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -4708,8 +4724,9 @@ case 16: if ( pParty->uFlags & PARTY_FLAGS_1_FALLING) { - v190 = pGlobalTXT_LocalizationStrings[493]; // Can't cast Jump while airborne! - goto LABEL_462; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[493], 2); // Can't cast Jump while airborne! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto play_sound_and_continue; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -4751,10 +4768,11 @@ LABEL_392: LODWORD(v733) = v195; LABEL_393: - if ( pParty->uFlags & 0x30 ) - { - v66 = pGlobalTXT_LocalizationStrings[638]; - goto LABEL_201; + if (pParty->uFlags & (PARTY_FLAGS_1_ALERT_RED | PARTY_FLAGS_1_ALERT_YELLOW)) + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[638], 2); // There are hostile creatures nearby! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( pPlayer->CanCastSpell(uRequiredMana) ) { @@ -4769,20 +4787,19 @@ LODWORD(v727) = v83; } goto play_sound_and_continue; + case 21: if ( uCurrentlyLoadedLevelType == LEVEL_Indoor) { - v190 = pGlobalTXT_LocalizationStrings[494]; // Can not cast Fly indoors! -LABEL_462: - ShowStatusBarString(v190, 2u); + ShowStatusBarString(pGlobalTXT_LocalizationStrings[494], 2); // Can not cast Fly indoors! pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); goto play_sound_and_continue; } if ( !pPlayers[v3->uPlayerID + 1]->GetMaxMana() ) { -LABEL_461: - v190 = pGlobalTXT_LocalizationStrings[428]; - goto LABEL_462; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto play_sound_and_continue; } LODWORD(v733) = 3600 * v2; if ( v731 == 2 || v731 == 3 || (amount = 0, v731 != 4) ) @@ -4803,11 +4820,12 @@ goto LABEL_1056; case 22: - v67 = 2; + //v67 = 2; if ( uCurrentlyLoadedLevelType == LEVEL_Indoor) { - v66 = pGlobalTXT_LocalizationStrings[495]; - goto LABEL_202; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[495], 2); // Can't cast Starburst indoors! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -5034,7 +5052,11 @@ goto LABEL_1056; case 27: if ( !pPlayers[v3->uPlayerID + 1]->GetMaxMana() ) - goto LABEL_461; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto play_sound_and_continue; + } if ( v731 == 2 || v731 != 3 && v731 != 4 ) v229 = 600 * v2; else @@ -5059,13 +5081,22 @@ pParty->pPartyBuffs[18].uFlags = 1; LODWORD(v727) = 1; goto play_sound_and_continue; + case 28: if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; v240 = (char *)&pParty->pPlayers[v3->uPlayerID_2].pInventoryItems[a2]; y = v240; if ( pItemsTable->pItems[*(int *)v240].uEquipType != 12 || v240[20] & 2 ) - goto LABEL_199; + { + dword_50C9D0 = 113; + dword_50C9D4 = 0; + dword_50C9D8 = 1; + + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( v731 == 1 || v731 == 2 ) { v241 = (double)v723 * 0.0099999998 + 0.5; @@ -5428,13 +5459,28 @@ if ( rand() % 100 >= SHIDWORD(v733) ) uRequiredMana = 1; if ( uRequiredMana != 0 ) - goto LABEL_199; + { + dword_50C9D0 = 113; + dword_50C9D4 = 0; + dword_50C9D8 = 1; + + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } v292 = *(char *)(LODWORD(v725) + 28); if ( !(v292 == 3 | v292 == 4 | v292 == 5 | v292 == 6 | v292 == 7 | v292 == 8 | v292 == 9 | v292 == 10 | v292 == 11) ) { v2 = v723; //v1 = 0; - goto LABEL_199; + + dword_50C9D0 = 113; + dword_50C9D4 = 0; + dword_50C9D8 = 1; + + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( rand() % 100 >= 80 ) { @@ -5506,19 +5552,27 @@ } v294->uAttributes |= 0x20u; goto LABEL_1055; - case 31: + case SPELL_WATER_TOWN_PORTAL: amount = 10 * v2; if ( pPlayer->sMana < (signed int)uRequiredMana ) goto play_sound_and_continue; - if ( pParty->uFlags & 0x30 && v12 != 4 || rand() % 100 >= amount && v731 != 4 ) - goto LABEL_200; - byte_50C0C0 = LOBYTE(v3->uPlayerID); - pMessageQueue_50CBD0->AddMessage(UIMSG_C3, 0, 0); + if ( pParty->uFlags & (PARTY_FLAGS_1_ALERT_RED | PARTY_FLAGS_1_ALERT_YELLOW) && v12 != 4 || rand() % 100 >= amount && v731 != 4 ) + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } + town_portal_caster_id = LOBYTE(v3->uPlayerID); + pMessageQueue_50CBD0->AddMessage(UIMSG_OnCastTownPortal, 0, 0); goto LABEL_1056; case 33: LODWORD(v733) = 604800 * v2; if ( !_strcmpi(pCurrentMapName, "d05.blv") ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } v319 = uRequiredMana; if ( pPlayer->sMana >= (signed int)uRequiredMana ) { @@ -5595,7 +5649,11 @@ goto LABEL_125; case 43: if ( uCurrentlyLoadedLevelType == LEVEL_Indoor) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; a1.uType = 4090; @@ -6741,8 +6799,9 @@ } if ( SHIDWORD(v733) >= amount ) { - v66 = pGlobalTXT_LocalizationStrings[648]; - goto LABEL_201; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[648], 2); // This character can't summon any more monsters! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -6790,11 +6849,12 @@ goto play_sound_and_continue; case 84: - v67 = 2; + //v67 = 2; if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor) { - v66 = pGlobalTXT_LocalizationStrings[497]; - goto LABEL_202; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[497], 2); // Can't cast Prismatic Light outdoors! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; @@ -6940,7 +7000,11 @@ case 88: amount = 3; if ( pPlayer->uNumDivineInterventionCastsThisDay >= 3u ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; a2 = 0; @@ -7017,13 +7081,18 @@ v726 = v577; if ( v577 == (Player *)-1 ) { - v66 = pGlobalTXT_LocalizationStrings[496]; - goto LABEL_201; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[496], 2); // No valid target exists! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } v578 = (int)&pActors[(int)v577]; v721 = v578; if ( *(short *)(v578 + 40) > 0 || (v579 = *(short *)(v578 + 176), v579 != 5) && v579 != 4 ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } ++a1.uType; a1.stru_24.Reset(); a1.field_48 = v3->spellnum; @@ -7090,7 +7159,15 @@ || *(int *)(HIDWORD(v733) + 4) != 0 || (v591 = *(char *)(v732 + 28)) != 0 && v591 != 1 && v591 != 2 || pItemsTable->IsMaterialNonCommon((ItemGen *)HIDWORD(v733)) ) - goto LABEL_199; + { + dword_50C9D0 = 113; + dword_50C9D4 = 0; + dword_50C9D8 = 1; + + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } v592 = HIDWORD(v733); v14 = v731 == 4; *(int *)(HIDWORD(v733) + 12) = 16; @@ -7191,7 +7268,11 @@ if ( !MonsterStats::BelongsToSupertype(pActors[v599].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD) ) goto play_sound_and_continue; if ( !stru_50C198.GetMagicalResistance(&pActors[v599], 0xAu) ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } pActors[v599].pActorBuffs[9].Reset(); pActors[v599].pActorBuffs[1].Reset(); v732 = (int)v733 << 7; @@ -7273,7 +7354,11 @@ if ( v608 != 4 && v608 != 5 || (v609 = (signed int)*(&pFontCChar + v608 + (unsigned __int8)pParty->field_709), v609 <= 0) || v609 >= 3 ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } v610 = 76 * v609; *((int *)&pParty->pPlayers[3].pInstalledBeacons[4].uBeaconTime + 19 * v609) = 0; v611 = pIconsFrameTable->FindIcon("spell96"); @@ -7425,14 +7510,19 @@ case 98: if ( uCurrentlyLoadedLevelType == LEVEL_Indoor) { - v66 = pGlobalTXT_LocalizationStrings[499]; - goto LABEL_201; + ShowStatusBarString(pGlobalTXT_LocalizationStrings[499], 2); // Can't cast Armageddon indoors! + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; } v640 = v12 - 2; if ( !v640 || (v641 = v640 - 1) == 0 || (amount = 4, v641 != 1) ) amount = 3; if ( pPlayer->uNumArmageddonCasts >= amount || pParty->armageddon_timer > 0 ) - goto LABEL_200; + { + ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed + pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0); + goto LABEL_203; + } if ( !pPlayer->CanCastSpell(uRequiredMana) ) goto play_sound_and_continue; pParty->armageddon_timer = 256;