World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл Items.cpp

См. исходные тексты.

Функции

std::vector< char * > Tokenize (char *input, const char separator)
 
int GetItemTextureFilename (char *pOut, signed int item_id, int index, int shoulder)
 

Переменные

std::array< std::array< char, 14 >, 7 > byte_4E8168
 
ItemGenptr_50C9A4_ItemToEnchant
 
struct ItemsTablepItemsTable
 

Функции

◆ Tokenize()

std::vector<char*> Tokenize ( char *  input,
const char  separator 
)

См. определение в файле Strings.cpp строка 30

30  {
31  std::vector<char *> retVect;
32  retVect.push_back(input);
33  while (*input) {
34  if (*input == separator) {
35  *input = '\0';
36  retVect.push_back(input + 1);
37  }
38  ++input;
39  }
40  return retVect;
41 }

Используется в ItemsTable::Initialize(), ItemsTable::LoadPotionNotes() и ItemsTable::LoadPotions().

+ Граф вызова функции:

◆ GetItemTextureFilename()

int GetItemTextureFilename ( char *  pOut,
signed int  item_id,
int  index,
int  shoulder 
)

См. определение в файле Items.cpp строка 1538

1539  {
1540  int result; // eax@2
1541  ITEM_EQUIP_TYPE pEquipType;
1542 
1543  result = 0; // BUG fn is void
1544  pEquipType = pItemsTable->pItems[item_id].uEquipType;
1545  if (item_id > 500) {
1546  switch (item_id) {
1548  if (byte_5111F6_OwnedArtifacts[2] != 0) item_id = 234;
1549  break;
1550  case ITEM_ARTIFACT_YORUBA:
1551  if (byte_5111F6_OwnedArtifacts[1] != 0) item_id = 236;
1552  break;
1554  if (byte_5111F6_OwnedArtifacts[0] != 0) item_id = 235;
1555  break;
1556  case ITEM_ELVEN_CHAINMAIL:
1557  if (byte_5111F6_OwnedArtifacts[16] != 0) item_id = 73;
1558  break;
1560  if (byte_5111F6_OwnedArtifacts[3] != 0) item_id = 312;
1561  break;
1563  if (byte_5111F6_OwnedArtifacts[4] != 0) item_id = 239;
1564  break;
1566  if (byte_5111F6_OwnedArtifacts[5] != 0) item_id = 240;
1567  break;
1569  if (byte_5111F6_OwnedArtifacts[6] != 0) item_id = 241;
1570  break;
1572  if (byte_5111F6_OwnedArtifacts[7] != 0) item_id = 93;
1573  break;
1575  if (byte_5111F6_OwnedArtifacts[8] != 0) item_id = 344;
1576  break;
1578  if (byte_5111F6_OwnedArtifacts[9] != 0) item_id = 324;
1579  break;
1581  if (byte_5111F6_OwnedArtifacts[10] != 0) item_id = 104;
1582  break;
1583  case ITEM_RELIC_TWILIGHT:
1584  if (byte_5111F6_OwnedArtifacts[11] != 0) item_id = 325;
1585  break;
1587  if (byte_5111F6_OwnedArtifacts[12] != 0) item_id = 330;
1588  break;
1589  case ITEM_RARE_SUN_CLOAK:
1590  if (byte_5111F6_OwnedArtifacts[13] != 0) item_id = 347;
1591  break;
1592  case ITEM_RARE_MOON_CLOAK:
1593  if (byte_5111F6_OwnedArtifacts[14] != 0) item_id = 348;
1594  break;
1596  if (byte_5111F6_OwnedArtifacts[15] != 0) item_id = 350;
1597  break;
1598  default:
1599  return 0;
1600  }
1601  }
1602 
1603  switch (pEquipType) {
1604  case EQUIP_ARMOUR:
1605  if (!shoulder)
1606  return sprintf(pOut, "item%3.3dv%d", item_id, index);
1607  else if (shoulder == 1)
1608  return sprintf(pOut, "item%3.3dv%da1", item_id, index);
1609  else if (shoulder == 2)
1610  return sprintf(pOut, "item%3.3dv%da2", item_id, index);
1611  break;
1612  case EQUIP_CLOAK:
1613  if (!shoulder)
1614  return sprintf(pOut, "item%3.3dv%d", item_id, index);
1615  else
1616  return sprintf(pOut, "item%3.3dv%da1", item_id, index);
1617  default:
1618  return sprintf(pOut, "item%3.3dv%d", item_id, index);
1619  }
1620 
1621  result = item_id - 504;
1622  return result;
1623 }

Перекрестные ссылки byte_5111F6_OwnedArtifacts, EQUIP_ARMOUR, EQUIP_CLOAK, ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP, ITEM_ARTIFACT_GOVERNORS_ARMOR, ITEM_ARTIFACT_HEROS_BELT, ITEM_ARTIFACT_LEAGUE_BOOTS, ITEM_ARTIFACT_MINDS_EYE, ITEM_ARTIFACT_YORUBA, ITEM_ELVEN_CHAINMAIL, ITEM_RARE_MOON_CLOAK, ITEM_RARE_SHADOWS_MASK, ITEM_RARE_SUN_CLOAK, ITEM_RARE_VAMPIRES_CAPE, ITEM_RELIC_HARECS_LEATHER, ITEM_RELIC_PHYNAXIAN_CROWN, ITEM_RELIC_SCHOLARS_CAP, ITEM_RELIC_TALEDONS_HELM, ITEM_RELIC_TWILIGHT, ITEM_RILIC_TITANS_BELT, ItemsTable::pItems и pItemsTable.

Используется в CharacterUI_LoadPaperdollTextures().

+ Граф вызова функции:

Переменные

◆ byte_4E8168

std::array<std::array<char, 14>, 7> byte_4E8168
Инициализатор
= {{
{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}},
{{1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}},
{{1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3}},
{{2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4}},
{{2, 2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5}},
{{2, 2, 2, 2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6}},
{{2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}}
}}

См. определение в файле Items.cpp строка 25

Используется в GenerateItemsInChest() и MapInfo::SpawnRandomTreasure().

◆ ptr_50C9A4_ItemToEnchant

ItemGen* ptr_50C9A4_ItemToEnchant

См. определение в файле Items.cpp строка 35

Используется в CharacterUI_DrawItem(), CharacterUI_DrawPaperdoll(), Application::Game::EventLoop(), Player::OnInventoryLeftClick() и OnPaperdollLeftClick().

◆ pItemsTable

struct ItemsTable* pItemsTable

См. определение в файле Items.cpp строка 37

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), Player::AddItem2(), Party::AddItemToParty(), OutdoorLocation::ArrangeSpriteObjects(), Player::CalculateMeleeDamageTo(), Player::CalculateMeleeDmgToEnemyWithWeapon(), Player::CalculateRangedDamageTo(), Player::CanFitItem(), Player::CanIdentify(), Chest::CanPlaceItemAt(), Player::CanRepair(), CharacterUI_DrawPaperdoll(), Party::CreateDefaultParty(), CreateScrollWindow(), Engine::Deinitialize(), Actor::Die(), Engine::DropHeldItem(), Application::Game::EventLoop(), EventProcessor(), GameUI_DrawItemInfo(), ItemGen::GenerateArtifact(), ItemsTable::GenerateItem(), GenerateItemsInChest(), GenerateSpecialShopItems(), GenerateStandartShopItems(), ItemGen::GetDamageDice(), ItemGen::GetDamageMod(), ItemGen::GetDamageRoll(), ItemGen::GetDisplayName(), ItemGen::GetIconName(), ItemGen::GetIdentifiedName(), Player::GetItemsBonus(), GetItemTextureFilename(), ItemGen::GetPlayerSkillType(), ItemGen::GetValue(), Chest::GrabItem(), Inventory_ItemPopupAndAlchemy(), ItemInteraction(), IndoorLocation::Load(), Actor::LootActor(), Player::OnInventoryLeftClick(), WinApiWindow::OnOSMenu(), PartyCreationUI_LoopInternal(), Chest::PlaceItemAt(), PrepareToLoadBLV(), Player::PutItemArInventoryIndex(), Player::ReceiveSpecialAttackEffect(), Engine::SecondaryInitialization(), Player::SelectPhrasesTransaction(), Mouse::SetCursorBitmapFromItemID(), Actor::SetRandomGoldIfTheresNoItem(), SimpleHouseDialog(), MapInfo::SpawnRandomTreasure(), SpellBookGenerator(), Player::StealFromActor(), Party::sub_421B2C_PlaceInInventory_or_DropPickedItem(), SpriteObject::sub_42F7EB_DropItemAt(), sub_450521_ProllyDropItemAt() и Player::WearItem().

ITEM_ARTIFACT_LEAGUE_BOOTS
@ ITEM_ARTIFACT_LEAGUE_BOOTS
Definition: Items.h:165
ITEM_RARE_SUN_CLOAK
@ ITEM_RARE_SUN_CLOAK
Definition: Items.h:200
ITEM_RELIC_HARECS_LEATHER
@ ITEM_RELIC_HARECS_LEATHER
Definition: Items.h:169
EQUIP_CLOAK
@ EQUIP_CLOAK
Definition: Items.h:234
ITEM_RARE_VAMPIRES_CAPE
@ ITEM_RARE_VAMPIRES_CAPE
Definition: Items.h:203
ITEM_ARTIFACT_YORUBA
@ ITEM_ARTIFACT_YORUBA
Definition: Items.h:158
ITEM_RARE_MOON_CLOAK
@ ITEM_RARE_MOON_CLOAK
Definition: Items.h:201
ITEM_RELIC_PHYNAXIAN_CROWN
@ ITEM_RELIC_PHYNAXIAN_CROWN
Definition: Items.h:176
ITEM_EQUIP_TYPE
ITEM_EQUIP_TYPE
Definition: Items.h:226
input
GLenum GLenum GLenum input
Definition: SDL_opengl_glext.h:9377
ITEM_ARTIFACT_MINDS_EYE
@ ITEM_ARTIFACT_MINDS_EYE
Definition: Items.h:185
byte_5111F6_OwnedArtifacts
std::array< char, 17 > byte_5111F6_OwnedArtifacts
Definition: mm7_data.cpp:592
index
GLuint index
Definition: SDL_opengl_glext.h:663
result
GLuint64EXT * result
Definition: SDL_opengl_glext.h:9435
pItemsTable
struct ItemsTable * pItemsTable
Definition: Items.cpp:37
EQUIP_ARMOUR
@ EQUIP_ARMOUR
Definition: Items.h:230
ITEM_RELIC_TWILIGHT
@ ITEM_RELIC_TWILIGHT
Definition: Items.h:178
ITEM_ARTIFACT_HEROS_BELT
@ ITEM_ARTIFACT_HEROS_BELT
Definition: Items.h:188
ITEM_RILIC_TITANS_BELT
@ ITEM_RILIC_TITANS_BELT
Definition: Items.h:177
ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP
@ ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP
Definition: Items.h:183
ITEM_ELVEN_CHAINMAIL
@ ITEM_ELVEN_CHAINMAIL
Definition: Items.h:186
ITEM_RELIC_SCHOLARS_CAP
@ ITEM_RELIC_SCHOLARS_CAP
Definition: Items.h:175
ITEM_RARE_SHADOWS_MASK
@ ITEM_RARE_SHADOWS_MASK
Definition: Items.h:197
ITEM_RELIC_TALEDONS_HELM
@ ITEM_RELIC_TALEDONS_HELM
Definition: Items.h:174
ITEM_ARTIFACT_GOVERNORS_ARMOR
@ ITEM_ARTIFACT_GOVERNORS_ARMOR
Definition: Items.h:157
ItemsTable::pItems
NZIArray< ItemDesc, 800 > pItems
Definition: Items.h:460