Mercurial > mm7
diff mm7_4.cpp @ 1457:9dc33590f93e
Merge
author | Gloval |
---|---|
date | Wed, 14 Aug 2013 00:40:51 +0400 |
parents | dfc9484ed94c |
children | 934074e7fcc1 ff2118028c71 |
line wrap: on
line diff
--- a/mm7_4.cpp Wed Aug 14 00:40:23 2013 +0400 +++ b/mm7_4.cpp Wed Aug 14 00:40:51 2013 +0400 @@ -1906,459 +1906,378 @@ //----- (00495461) -------------------------------------------------------- char *BuildDialogueString(char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, __int64 *a6) { - unsigned __int8 v6; // bl@1 Player *pPlayer; // ebx@3 - //NPCData *v9; // eax@4 - //size_t v10; // eax@6 - char *v11; // esi@7 - //int v12; // edx@7 - //ItemGen *v13; // edi@7 - //char v14; // cl@8 - //char *v15; // ecx@10 - //int v16; // edx@10 + char *pText; // esi@7 int v17; // eax@10 signed __int64 v18; // qax@18 - unsigned int v19; // edi@32 unsigned __int8 *v20; // ebx@32 int v21; // ecx@34 - __int16 v22; // ax@34 - int v23; // edx@39 - int v24; // eax@39 - int v25; // eax@45 - float *v26; // esi@68 - float v27; // ST18_4@68 - signed int v28; // eax@68 + int pReputation; // eax@45 int v29; // eax@68 - float v30; // ST18_4@72 - signed int v31; // eax@72 - float v32; // ST18_4@74 - signed int v33; // eax@74 - double v34; // st7@75 - float v35; // ST18_4@76 - signed int v36; // eax@76 - float *v37; // esi@78 - float v38; // ST18_4@78 - int v39; // eax@78 - float v40; // ST18_4@82 - int v41; // eax@82 - float v42; // ST18_4@83 - int v43; // eax@83 - float v44; // ST18_4@85 - int v45; // eax@85 - const char *v46; // eax@86 - unsigned int v47; // eax@87 - float v48; // ST18_4@97 - __int64 v49; // ST14_8@107 - int v50; // eax@107 - int v51; // eax@108 - Player *v52; // eax@109 - int v53; // [sp-4h] [bp-13Ch]@107 - int v54; // [sp+0h] [bp-138h]@107 __int16 v55[56]; // [sp+10h] [bp-128h]@34 stru351_summoned_item v56; // [sp+80h] [bp-B8h]@107 - stru351_summoned_item v57; // [sp+9Ch] [bp-9Ch]@115 char a1[100]; // [sp+B8h] [bp-80h]@3 - unsigned int v59; // [sp+11Ch] [bp-1Ch]@3 - //size_t v60; // [sp+120h] [bp-18h]@3 - //Player *v61; // [sp+124h] [bp-14h]@3 - //char *Str; // [sp+128h] [bp-10h]@1 int v63; // [sp+12Ch] [bp-Ch]@32 - //int v64; // [sp+130h] [bp-8h]@6 - //NPCData *v65; // [sp+134h] [bp-4h]@6 - //int packed; - - - v6 = uPlayerID; - //Str = lpsz; - if ( IsBadStringPtrA(lpsz, 1u) ) + if ( IsBadStringPtrA(lpsz, 1) ) return "Invalid String Passed"; a1[0] = 0; - pPlayer = &pParty->pPlayers[v6]; - v59 = TargetColor(255, 255, 155); - //v61 = pPlayer; + pPlayer = &pParty->pPlayers[uPlayerID]; memset(pTmpBuf2.data(), 0, sizeof(pTmpBuf2)); NPCData *npc = nullptr; if ( dword_5C35D4 ) - { - //__debugbreak(); // fix npc = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount + -(dword_591080 != 0))]; //- 1 - } else npc = GetNPCData(sDialogue_SpeakingActorNPC_ID); - //v65 = v9; - //v10 = 0; - //v64 = 0; - //int i = 0; - //if ( (signed int)v60 > 0 ) - v11 = a4; - + //pText = a4; auto len = strlen(lpsz); for (int i = 0, dst = 0; i < len; ++i) { - //v12 = v64; - //v13 = a3; - //while ( 1 ) - //{ char c = lpsz[i]; if (c != '%') pTmpBuf2[dst++] = c; else { - //v15 = &lpsz[v12 + 1]; - //v16 = (unsigned __int8)lpsz[v12 + 2]; - //packed = 10 * (int)lpsz[v12 + 1] + lpsz[v12 + 2]; - //v17 = packed - 528;// 10 * '0' + '0' v17 = 10 * (int)(lpsz[i + 1] - '0') + lpsz[i + 2] - '0'; switch ( v17 ) { - case 1: - v11 = npc->pName; - goto _continue_strcat; - case 2: - v11 = pPlayer->pName; - goto _continue_strcat; - case 3: - case 4: - v11 = a1; - goto _continue_strcat; - case 5: - v18 = (signed __int64)((double)(signed __int64)pParty->uTimePlayed * 0.234375) / 60 / 60 % 24; - v11 = pGlobalTXT_LocalizationStrings[397];// "evening" - if ( SHIDWORD(v18) <= 0 && SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 5 && SHIDWORD(v18) <= 0 ) - { - if ( SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 0xB ) - { - if ( v18 < 20 ) - v11 = pGlobalTXT_LocalizationStrings[396];// "day" - } - else - { - v11 = pGlobalTXT_LocalizationStrings[395];// "morning" - } - } - goto _continue_strcat; - case 6: - if ( pPlayer->uSex ) - v11 = pGlobalTXT_LocalizationStrings[387];// "lady" - else - v11 = pGlobalTXT_LocalizationStrings[385];// "sir" - goto _continue_strcat; - case 7: - if ( pPlayer->uSex ) - v11 = pGlobalTXT_LocalizationStrings[389];// "Lady" - else - v11 = pGlobalTXT_LocalizationStrings[386];// "Sir" - goto _continue_strcat; - case 8: - v19 = 0; - v63 = 0; - v20 = (unsigned __int8 *)pPlayer->_guilds_member_bits; - do - { - if ( (unsigned __int16)_449B57_test_bit(v20, word_4EE150[v19]) ) - { - v21 = v63; - v22 = word_4EE150[v19]; - ++v63; - v55[v21] = v22; - } - ++v19; - } - while ( v19 < 28 ); - if ( v63 ) + case 1://Подробнее + strcat(pTmpBuf2.data(), npc->pName); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 2: + strcat(pTmpBuf2.data(), pPlayer->pName); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 3: + case 4: + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 5: + v18 = (signed __int64)((double)(signed __int64)pParty->uTimePlayed * 0.234375) / 60 / 60 % 24; + pText = pGlobalTXT_LocalizationStrings[397];// "evening" + if ( SHIDWORD(v18) <= 0 && SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 5 && SHIDWORD(v18) <= 0 ) + { + if ( SHIDWORD(v18) >= 0 && (unsigned int)v18 >= 11 ) { - v23 = rand() % v63; - v24 = dword_A74CDC; - if ( dword_A74CDC == -1 ) - { - v24 = v23; - dword_A74CDC = v23; - } - v11 = (char *)pAwards[v55[v24]].pText;//(char *)dword_723E80_award_related[2 * v55[v24]]; - } - else - { - v11 = (char *)pNPCTopics[55].pText; - } - //pPlayer = v61; - //v13 = a3; - goto _continue_strcat; - case 9: - if ( npc->uSex ) - v11 = pGlobalTXT_LocalizationStrings[384];// "her" - else - v11 = pGlobalTXT_LocalizationStrings[383];// "his" - goto _continue_strcat; - case 10: - if ( pPlayer->uSex ) - v11 = pGlobalTXT_LocalizationStrings[389];// "Lady" - else - v11 = pGlobalTXT_LocalizationStrings[388];// "Lord" - goto _continue_strcat; - case 11: - v25 = GetPartyReputation(); - if ( v25 >= 25 ) - { - v11 = pGlobalTXT_LocalizationStrings[379]; - } - else - { - if ( v25 < 6 ) - { - if ( v25 >= -5 ) - { - v11 = pGlobalTXT_LocalizationStrings[399]; - } - else - { - if ( v25 < -24 ) - v11 = pGlobalTXT_LocalizationStrings[434]; - else - v11 = pGlobalTXT_LocalizationStrings[402]; - } - } - else - { - v11 = pGlobalTXT_LocalizationStrings[392]; - } - } - goto _continue_strcat; - case 12: - v25 = npc->rep; - if ( v25 >= 25 ) - { - v11 = pGlobalTXT_LocalizationStrings[379]; + if ( v18 < 20 ) + pText = pGlobalTXT_LocalizationStrings[396];// "day" } else { - if ( v25 < 6 ) + pText = pGlobalTXT_LocalizationStrings[395];// "morning" + } + } + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 6: + if ( pPlayer->uSex ) + pText = pGlobalTXT_LocalizationStrings[387];// "lady" + else + pText = pGlobalTXT_LocalizationStrings[385];// "sir" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 7: + if ( pPlayer->uSex ) + pText = pGlobalTXT_LocalizationStrings[389];// "Lady" + else + pText = pGlobalTXT_LocalizationStrings[386];// "Sir" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 8: + v63 = 0; + v20 = (unsigned __int8 *)pPlayer->_guilds_member_bits; + for ( uint i = 0; i < 28; ++i ) + { + if ( (unsigned __int16)_449B57_test_bit(v20, word_4EE150[i]) ) + { + v21 = v63; + ++v63; + v55[v63] = word_4EE150[i]; + } + } + if ( v63 ) + { + if ( dword_A74CDC == -1 ) + dword_A74CDC = rand() % v63; + pText = (char *)pAwards[v55[dword_A74CDC]].pText;//(char *)dword_723E80_award_related[2 * v55[v24]]; + } + else + pText = (char *)pNPCTopics[55].pText; + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 9: + if ( npc->uSex ) + pText = pGlobalTXT_LocalizationStrings[384];// "her" + else + pText = pGlobalTXT_LocalizationStrings[383];// "his" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 10: + if ( pPlayer->uSex ) + pText = pGlobalTXT_LocalizationStrings[389];// "Lady" + else + pText = pGlobalTXT_LocalizationStrings[388];// "Lord" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 11: + pReputation = GetPartyReputation(); + if ( pReputation >= 25 ) + pText = pGlobalTXT_LocalizationStrings[379]; + else//v25 < 25 + { + if ( pReputation < 6 ) + { + if ( pReputation >= -5 )//6 >= v25 >= -5 + pText = pGlobalTXT_LocalizationStrings[399]; + else// v25 < -5 { - if ( v25 >= -5 ) - { - v11 = pGlobalTXT_LocalizationStrings[399]; - } - else - { - if ( v25 < -24 ) - v11 = pGlobalTXT_LocalizationStrings[434]; - else - v11 = pGlobalTXT_LocalizationStrings[402]; - } + if ( pReputation < -24 )//-24 > v25 + pText = pGlobalTXT_LocalizationStrings[434]; + else// -5 > v25 > -24 + pText = pGlobalTXT_LocalizationStrings[402]; } + } + else//25 > v25 > 6 + pText = pGlobalTXT_LocalizationStrings[392]; + } + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 12: + pReputation = npc->rep; + if ( pReputation >= 25 ) + pText = pGlobalTXT_LocalizationStrings[379]; + else + { + if ( pReputation < 6 ) + { + if ( pReputation >= -5 ) + pText = pGlobalTXT_LocalizationStrings[399]; else { - v11 = pGlobalTXT_LocalizationStrings[392]; + if ( pReputation < -24 ) + pText = pGlobalTXT_LocalizationStrings[434]; + else + pText = pGlobalTXT_LocalizationStrings[402]; } } - goto _continue_strcat; - case 13: - v11 = sub_495366(pPlayer->pName[0], pPlayer->uSex); - goto _continue_strcat; - case 14: - { - if ( npc->uSex ) - v11 = pGlobalTXT_LocalizationStrings[391];// "sister" - else - v11 = pGlobalTXT_LocalizationStrings[390];// "brother" - goto _continue_strcat; - } - - case 15: - { - v11 = pGlobalTXT_LocalizationStrings[393];// "daughter" -_continue_strcat: - strcat(pTmpBuf2.data(), v11); - dst = strlen(pTmpBuf2.data()); - //v64 += 2; - i += 2; - } - break; - - case 16: - { - if ( npc->uSex ) - v11 = pGlobalTXT_LocalizationStrings[391];// "sister" else - v11 = pGlobalTXT_LocalizationStrings[390];// "brother" - goto _continue_strcat; - } - case 17: - { - auto pay_percentage = pNPCStats->pProfessions[npc->uProfession - 1].uHirePrice / 100; - if (!pay_percentage) - pay_percentage = 1; - - sprintf(a1, "%lu", pay_percentage); - v11 = a1; - goto _continue_strcat; + pText = pGlobalTXT_LocalizationStrings[392]; } - - case 18: - case 19: - case 20: - case 21: - case 22: - case 26: -_continue_strncpy: - strncpy(a1, lpsz + i + 1, 2); - v51 = atoi(a1); - sprintf(a1, "%lu", v51); - v11 = a1; - goto _continue_strcat; - - case 23: - { - v47 = pMapStats->GetMapInfo(pCurrentMapName.data()); - if ( v47 ) - v11 = pMapStats->pInfos[v47].pName; - else - v11 = pGlobalTXT_LocalizationStrings[394];// "Unknown" - goto _continue_strcat; - } - case 24: - { - v46 = a3->GetDisplayName(); - sprintfex(a1, format_4E2D80, v59, v46); - v11 = a1; - goto _continue_strcat; - } - - - case 25: - { - v37 = &p2DEvents[(signed int)a4 - 1].fPriceMultiplier; - v38 = *v37; - v39 = a3->GetValue(); - v29 = pPlayer->GetBaseBuyingPrice(v39, v38); + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 13: + strcat(pTmpBuf2.data(), sub_495366(pPlayer->pName[0], pPlayer->uSex)); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 14: + if ( npc->uSex ) + pText = pGlobalTXT_LocalizationStrings[391];// "sister" + else + pText = pGlobalTXT_LocalizationStrings[390];// "brother" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 15: + strcat(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[393]);// "daughter" + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 16: + if ( npc->uSex ) + pText = pGlobalTXT_LocalizationStrings[391];// "sister" + else + pText = pGlobalTXT_LocalizationStrings[390];// "brother" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 17://текст наёмного НПС + { + auto pay_percentage = pNPCStats->pProfessions[npc->uProfession - 1].uHirePrice / 100; + if ( !pay_percentage ) + pay_percentage = 1; + sprintf(a1, "%lu", pay_percentage); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + } + case 18: + case 19: + case 20: + case 21: + case 22: + case 26: + strncpy(a1, lpsz + i + 1, 2); + sprintf(a1, "%lu", atoi(a1)); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 23: + if ( pMapStats->GetMapInfo(pCurrentMapName.data()) ) + pText = pMapStats->pInfos[pMapStats->GetMapInfo(pCurrentMapName.data())].pName; + else + pText = pGlobalTXT_LocalizationStrings[394];// "Unknown" + strcat(pTmpBuf2.data(), pText); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 24://название товара в продаже + sprintfex(a1, format_4E2D80, TargetColor(255, 255, 155), a3->GetDisplayName()); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 25: + v29 = pPlayer->GetBaseBuyingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); switch ( a5 ) - { - case 3: - v44 = *v37; - v45 = a3->GetValue(); - v29 = pPlayer->GetBaseSellingPrice(v45, v44); - break; - case 4: - v29 = pPlayer->GetBaseIdentifyPrice(*v37); - break; - case 5: - v42 = *v37; - v43 = a3->GetValue(); - v29 = pPlayer->GetBaseRepairPrice(v43, v42); - break; - case 6: - v40 = *v37; - v41 = a3->GetValue(); - v29 = pPlayer->GetBaseSellingPrice(v41, v40) / 2; + { + case 3: + v29 = pPlayer->GetBaseSellingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + break; + case 4: + v29 = pPlayer->GetBaseIdentifyPrice(p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + break; + case 5: + v29 = pPlayer->GetBaseRepairPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + break; + case 6: + v29 = pPlayer->GetBaseSellingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier) / 2; + break; + } + sprintfex(a1, "%lu", v29); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 27://текст продажи + v29 = pPlayer->GetBuyingPrice(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + if ( a5 == 3 ) + { + v29 = pPlayer->GetPriceSell(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + if (a3->Broken()) + v29 = 1; + sprintfex(a1, "%lu", v29); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; break; } - goto _continue_sprintf; - } - - case 27: - { - v26 = &p2DEvents[(signed int)a4 - 1].fPriceMultiplier; - v27 = *v26; - v28 = a3->GetValue(); - v29 = pPlayer->GetBuyingPrice(v28, v27); - if ( a5 == 3 ) - { - v35 = *v26; - v36 = a3->GetValue(); - v29 = pPlayer->GetPriceSell(v36, v35); - if (a3->Broken()) - v29 = 1; - goto _continue_sprintf; - } - if ( a5 != 4 ) - { - if ( a5 == 5 ) - { - v32 = *v26; - v33 = a3->GetValue(); - v29 = pPlayer->GetPriceRepair(v33, v32); - } - else - { - if ( a5 == 6 ) + if ( a5 != 4 ) { - v30 = *v26; - v31 = a3->GetValue(); - v29 = pPlayer->GetPriceSell(v31, v30) / 2; - if (a3->Broken()) - v29 = 1; - if (!v29) - v29 = 1; - goto _continue_sprintf; + if ( a5 == 5 ) + v29 = pPlayer->GetPriceRepair(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier); + else + { + if ( a5 == 6 ) + { + v29 = pPlayer->GetPriceSell(a3->GetValue(), p2DEvents[(signed int)a4 - 1].fPriceMultiplier) / 2; + if (a3->Broken()) + v29 = 1; + if (!v29) + v29 = 1; + sprintfex(a1, "%lu", v29); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + } + } + sprintfex(a1, "%lu", v29); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; } - } -_continue_sprintf: - sprintfex(a1, "%lu", v29); - v11 = a1; - goto _continue_strcat; - } - v34 = *v26; - - v48 = v34; - v29 = pPlayer->GetPriceIdentification(v48); - goto _continue_sprintf; - } - - case 28: - { - //v11 = (char *)p2DEvents_minus1__10[13 * (signed int)a4]; - v11 = (char *)p2DEvents[(signed int)a4 - 1].pProprieterTitle; - goto _continue_strcat; - } - + sprintfex(a1, "%lu", pPlayer->GetPriceIdentification(p2DEvents[(signed int)a4 - 1].fPriceMultiplier)); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + case 28://профессия + strcat(pTmpBuf2.data(), (char *)p2DEvents[(signed int)a4 - 1].pProprieterTitle); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; case 29: - { - //v34 = p2DEvents_minus1__20[13 * (signed int)a4]; - v34 = p2DEvents[(signed int)a4 - 1].fPriceMultiplier; - v48 = v34; - v29 = pPlayer->GetPriceIdentification(v48); - goto _continue_sprintf; - } - + sprintfex(a1, "%lu", pPlayer->GetPriceIdentification(p2DEvents[(signed int)a4 - 1].fPriceMultiplier)); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; case 30: - { - if ( !a6 ) - goto _continue_strcat; - sub_493F79(&v57, *a6); - v54 = v57.field_18_expire_year; - v53 = v57.field_C_expire_day + 1; - v50 = v57.field_14_exprie_month; - sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v50], v53, v54); - v11 = a1; - goto _continue_strcat; - } - + if ( !a6 ) + { + strcat(pTmpBuf2.data(), a4); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + } + sub_493F79(&v56, *a6); + sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v56.field_14_exprie_month], v56.field_C_expire_day + 1, v56.field_18_expire_year); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; case 31: case 32: case 33: case 34: - v52 = &pParty->pPlayers[v17 - 31]; - v11 = v52->pName; - goto _continue_strcat; - + strcat(pTmpBuf2.data(), pParty->pPlayers[v17 - 31].pName); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; default: if ( v17 <= 50 || v17 > 70 ) - goto _continue_strncpy; + { + strncpy(a1, lpsz + i + 1, 2); + sprintf(a1, "%lu", atoi(a1)); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + } if ( v17 - 51 >= 20 ) - goto _continue_strcat; - v49 = pParty->field_3C._s_times[v17-51]; - - sub_493F79(&v56, v49); - v54 = v56.field_18_expire_year; - v53 = v56.field_C_expire_day + 1; - v50 = v56.field_14_exprie_month; - sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v50], v53, v54); - v11 = a1; - goto _continue_strcat; + { + strcat(pTmpBuf2.data(), a4); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; + } + sub_493F79(&v56, pParty->field_3C._s_times[v17-51]); + sprintfex(a1, pGlobalTXT_LocalizationStrings[378], aMonthNames[v56.field_14_exprie_month], v56.field_C_expire_day + 1, v56.field_18_expire_year); + strcat(pTmpBuf2.data(), a1); + dst = strlen(pTmpBuf2.data()); + i += 2; + break; } } }