diff --git a/Source/stores.cpp b/Source/stores.cpp index 615b53cbd..ad1d0ac03 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -336,6 +336,72 @@ void AddSText(int x, int y, BOOL j, const char *str, char clr, BOOL sel) stext[y]._ssel = sel; } +static void PrintStoreItem(ItemStruct *x, int l, char iclr) +{ + char sstr[128]; + char str, dex; + BYTE mag; + + sstr[0] = '\0'; + if (x->_iIdentified) { + if (x->_iMagical != ITEM_QUALITY_UNIQUE) { + if (x->_iPrePower != -1) { + PrintItemPower(x->_iPrePower, x); + strcat(sstr, tempstr); + } + } + if (x->_iSufPower != -1) { + PrintItemPower(x->_iSufPower, x); + if (sstr[0]) + strcat(sstr, ", "); + strcat(sstr, tempstr); + } + } + if (x->_iMiscId == IMISC_STAFF && x->_iMaxCharges) { + sprintf(tempstr, "Charges: %i/%i", x->_iCharges, x->_iMaxCharges); + if (sstr[0]) + strcat(sstr, ", "); + strcat(sstr, tempstr); + } + if (sstr[0]) { + AddSText(40, l, FALSE, sstr, iclr, FALSE); + l++; + } + sstr[0] = '\0'; + if (x->_iClass == ICLASS_WEAPON) + sprintf(sstr, "Damage: %i-%i ", x->_iMinDam, x->_iMaxDam); + if (x->_iClass == ICLASS_ARMOR) + sprintf(sstr, "Armor: %i ", x->_iAC); + if (x->_iMaxDur != DUR_INDESTRUCTIBLE && x->_iMaxDur) { + sprintf(tempstr, "Dur: %i/%i, ", x->_iDurability, x->_iMaxDur); + strcat(sstr, tempstr); + } else { + strcat(sstr, "Indestructible, "); + } + if (x->_itype == ITYPE_MISC) + sstr[0] = '\0'; + str = x->_iMinStr; + dex = x->_iMinDex; + mag = x->_iMinMag; + if ((str + mag + dex) == 0) { + strcat(sstr, "No required attributes"); + } else { + strcpy(tempstr, "Required:"); + if (x->_iMinStr) + sprintf(tempstr, "%s %i Str", tempstr, x->_iMinStr); + if (x->_iMinMag) + sprintf(tempstr, "%s %i Mag", tempstr, x->_iMinMag); + if (x->_iMinDex) + sprintf(tempstr, "%s %i Dex", tempstr, x->_iMinDex); + strcat(sstr, tempstr); + } + AddSText(40, l++, FALSE, sstr, iclr, FALSE); + if (x->_iMagical == ITEM_QUALITY_UNIQUE) { + if (x->_iIdentified) + AddSText(40, l, FALSE, "Unique Item", iclr, FALSE); + } +} + void StoreAutoPlace() { BOOL done; @@ -462,72 +528,6 @@ void S_ScrollSBuy(int idx) stextsel = stextdown; } -void PrintStoreItem(ItemStruct *x, int l, char iclr) -{ - char sstr[128]; - char str, dex; - BYTE mag; - - sstr[0] = '\0'; - if (x->_iIdentified) { - if (x->_iMagical != ITEM_QUALITY_UNIQUE) { - if (x->_iPrePower != -1) { - PrintItemPower(x->_iPrePower, x); - strcat(sstr, tempstr); - } - } - if (x->_iSufPower != -1) { - PrintItemPower(x->_iSufPower, x); - if (sstr[0]) - strcat(sstr, ", "); - strcat(sstr, tempstr); - } - } - if (x->_iMiscId == IMISC_STAFF && x->_iMaxCharges) { - sprintf(tempstr, "Charges: %i/%i", x->_iCharges, x->_iMaxCharges); - if (sstr[0]) - strcat(sstr, ", "); - strcat(sstr, tempstr); - } - if (sstr[0]) { - AddSText(40, l, FALSE, sstr, iclr, FALSE); - l++; - } - sstr[0] = '\0'; - if (x->_iClass == ICLASS_WEAPON) - sprintf(sstr, "Damage: %i-%i ", x->_iMinDam, x->_iMaxDam); - if (x->_iClass == ICLASS_ARMOR) - sprintf(sstr, "Armor: %i ", x->_iAC); - if (x->_iMaxDur != DUR_INDESTRUCTIBLE && x->_iMaxDur) { - sprintf(tempstr, "Dur: %i/%i, ", x->_iDurability, x->_iMaxDur); - strcat(sstr, tempstr); - } else { - strcat(sstr, "Indestructible, "); - } - if (x->_itype == ITYPE_MISC) - sstr[0] = '\0'; - str = x->_iMinStr; - dex = x->_iMinDex; - mag = x->_iMinMag; - if ((str + mag + dex) == 0) { - strcat(sstr, "No required attributes"); - } else { - strcpy(tempstr, "Required:"); - if (x->_iMinStr) - sprintf(tempstr, "%s %i Str", tempstr, x->_iMinStr); - if (x->_iMinMag) - sprintf(tempstr, "%s %i Mag", tempstr, x->_iMinMag); - if (x->_iMinDex) - sprintf(tempstr, "%s %i Dex", tempstr, x->_iMinDex); - strcat(sstr, tempstr); - } - AddSText(40, l++, FALSE, sstr, iclr, FALSE); - if (x->_iMagical == ITEM_QUALITY_UNIQUE) { - if (x->_iIdentified) - AddSText(40, l, FALSE, "Unique Item", iclr, FALSE); - } -} - void S_StartSBuy() { int i; @@ -769,6 +769,29 @@ BOOL SmithRepairOk(int i) return TRUE; } +static void AddStoreHoldRepair(ItemStruct *itm, int i) +{ + ItemStruct *item; + int v; + + item = &storehold[storenumh]; + storehold[storenumh] = *itm; + if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified) + item->_ivalue = 30 * item->_iIvalue / 100; + v = item->_ivalue * (100 * (item->_iMaxDur - item->_iDurability) / item->_iMaxDur) / 100; + if (!v) { + if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified) + return; + v = 1; + } + if (v > 1) + v >>= 1; + item->_iIvalue = v; + item->_ivalue = v; + storehidx[storenumh] = i; + storenumh++; +} + void S_StartSRepair() { BOOL repairok; @@ -828,29 +851,6 @@ void S_StartSRepair() OffsetSTextY(22, 6); } -void AddStoreHoldRepair(ItemStruct *itm, int i) -{ - ItemStruct *item; - int v; - - item = &storehold[storenumh]; - storehold[storenumh] = *itm; - if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified) - item->_ivalue = 30 * item->_iIvalue / 100; - v = item->_ivalue * (100 * (item->_iMaxDur - item->_iDurability) / item->_iMaxDur) / 100; - if (!v) { - if (item->_iMagical != ITEM_QUALITY_NORMAL && item->_iIdentified) - return; - v = 1; - } - if (v > 1) - v >>= 1; - item->_iIvalue = v; - item->_ivalue = v; - storehidx[storenumh] = i; - storenumh++; -} - void S_StartWitch() { stextsize = FALSE; diff --git a/Source/stores.h b/Source/stores.h index c86539855..50029f924 100644 --- a/Source/stores.h +++ b/Source/stores.h @@ -6,95 +6,33 @@ #ifndef __STORES_H__ #define __STORES_H__ -extern int stextup; -extern int storenumh; -extern int stextlhold; extern ItemStruct boyitem; -extern int stextshold; extern ItemStruct premiumitem[SMITH_PREMIUM_ITEMS]; extern BYTE *pSTextBoxCels; extern int premiumlevel; extern int talker; -extern STextStruct stext[STORE_LINES]; -extern char stextsize; -extern int stextsmax; -extern int InStoreFlag; -extern ItemStruct storehold[48]; -extern int gossipstart; #ifdef HELLFIRE extern ItemStruct witchitem[25]; #else extern ItemStruct witchitem[20]; #endif -extern BOOL stextscrl; extern int numpremium; extern ItemStruct healitem[20]; extern ItemStruct golditem; -extern char storehidx[48]; extern BYTE *pSTextSlidCels; -extern int stextvhold; -extern int stextsel; -extern char stextscrldbtn; -extern int gossipend; extern BYTE *pSPentSpn2Cels; -extern int stextsval; extern int boylevel; extern ItemStruct smithitem[SMITH_ITEMS]; extern int stextdown; -extern char stextscrlubtn; extern char stextflag; void InitStores(); void SetupTownStores(); void FreeStoreMem(); -void DrawSTextBack(); void PrintSString(int x, int y, BOOL cjustflag, const char *str, char col, int val); void DrawSLine(int y); -void DrawSSlider(int y1, int y2); void DrawSTextHelp(); void ClearSText(int s, int e); -void AddSLine(int y); -void AddSTextVal(int y, int val); -void OffsetSTextY(int y, int yo); -void AddSText(int x, int y, BOOL j, const char *str, char clr, BOOL sel); -void StoreAutoPlace(); -void S_StartSmith(); -void S_ScrollSBuy(int idx); -void PrintStoreItem(ItemStruct *x, int l, char iclr); -void S_StartSBuy(); -void S_ScrollSPBuy(int idx); -BOOL S_StartSPBuy(); -BOOL SmithSellOk(int i); -void S_ScrollSSell(int idx); -void S_StartSSell(); -BOOL SmithRepairOk(int i); -void S_StartSRepair(); -void AddStoreHoldRepair(ItemStruct *itm, int i); -void S_StartWitch(); -void S_ScrollWBuy(int idx); -void S_StartWBuy(); -BOOL WitchSellOk(int i); -void S_StartWSell(); -BOOL WitchRechargeOk(int i); -void AddStoreHoldRecharge(ItemStruct itm, int i); -void S_StartWRecharge(); -void S_StartNoMoney(); -void S_StartNoRoom(); -void S_StartConfirm(); -void S_StartBoy(); -void S_StartBBoy(); -void S_StartHealer(); -void S_ScrollHBuy(int idx); -void S_StartHBuy(); -void S_StartStory(); -BOOL IdItemOk(ItemStruct *i); -void AddStoreHoldId(ItemStruct itm, int i); -void S_StartSIdentify(); -void S_StartIdShow(); -void S_StartTalk(); -void S_StartTavern(); -void S_StartBarMaid(); -void S_StartDrunk(); void StartStore(char s); void DrawSText(); void STextESC(); @@ -102,40 +40,9 @@ void STextUp(); void STextDown(); void STextPrior(); void STextNext(); -void S_SmithEnter(); void SetGoldCurs(int pnum, int i); void SetSpdbarGoldCurs(int pnum, int i); void TakePlrsMoney(int cost); -void SmithBuyItem(); -void S_SBuyEnter(); -void SmithBuyPItem(); -void S_SPBuyEnter(); -BOOL StoreGoldFit(int idx); -void PlaceStoreGold(int v); -void StoreSellItem(); -void S_SSellEnter(); -void SmithRepairItem(); -void S_SRepairEnter(); -void S_WitchEnter(); -void WitchBuyItem(); -void S_WBuyEnter(); -void S_WSellEnter(); -void WitchRechargeItem(); -void S_WRechargeEnter(); -void S_BoyEnter(); -void BoyBuyItem(); -void HealerBuyItem(); -void S_BBuyEnter(); -void StoryIdItem(); -void S_ConfirmEnter(); -void S_HealerEnter(); -void S_HBuyEnter(); -void S_StoryEnter(); -void S_SIDEnter(); -void S_TalkEnter(); -void S_TavernEnter(); -void S_BarmaidEnter(); -void S_DrunkEnter(); void STextEnter(); void CheckStoreBtn(); void ReleaseStoreBtn(); @@ -143,6 +50,5 @@ void ReleaseStoreBtn(); /* rdata */ extern int SStringY[24]; -extern const char *const talkname[9]; #endif /* __STORES_H__ */