|
|
@@ -295,7 +295,7 @@ void CArtPlace::select ()
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Deselects the artifact slot. FIXME: Not used. Maybe it should?
|
|
|
+ * Deselects the artifact slot.
|
|
|
*/
|
|
|
void CArtPlace::deselect ()
|
|
|
{
|
|
|
@@ -303,7 +303,12 @@ void CArtPlace::deselect ()
|
|
|
if(ourArt && ourArt->canBeDisassembled()) //combined art returned to its slot -> restore locks
|
|
|
{
|
|
|
for(int i = 0; i < GameConstants::BACKPACK_START; i++)
|
|
|
- ourOwner->getArtPlace(i)->pickSlot(false);
|
|
|
+ {
|
|
|
+ auto place = ourOwner->getArtPlace(i);
|
|
|
+
|
|
|
+ if(nullptr != place)
|
|
|
+ place->pickSlot(false);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
CCS->curh->dragAndDropCursor(nullptr);
|
|
|
@@ -647,13 +652,13 @@ CArtifactsOfHero::CArtifactsOfHero(const Point& position, bool createCommonPart
|
|
|
|
|
|
std::vector<Point> slotPos =
|
|
|
{
|
|
|
- Point(509,30), Point(567,240), Point(509,80),
|
|
|
- Point(383,68), Point(564,183), Point(509,130),
|
|
|
- Point(431,68), Point(610,183), Point(515,295),
|
|
|
- Point(383,143), Point(399,194), Point(415,245),
|
|
|
- Point(431,296), Point(564,30), Point(610,30),
|
|
|
- Point(610,76), Point(610,122), Point(610,310),
|
|
|
- Point(381,296)
|
|
|
+ Point(509,30), Point(567,240), Point(509,80), //0-2
|
|
|
+ Point(383,68), Point(564,183), Point(509,130), //3-5
|
|
|
+ Point(431,68), Point(610,183), Point(515,295), //6-8
|
|
|
+ Point(383,143), Point(399,194), Point(415,245), //9-11
|
|
|
+ Point(431,296), Point(564,30), Point(610,30), //12-14
|
|
|
+ Point(610,76), Point(610,122), Point(610,310), //15-17
|
|
|
+ Point(381,296) //18
|
|
|
};
|
|
|
|
|
|
// Create slots for worn artifacts.
|
|
|
@@ -836,6 +841,12 @@ CArtPlace * CArtifactsOfHero::getArtPlace(int slot)
|
|
|
{
|
|
|
if(slot < GameConstants::BACKPACK_START)
|
|
|
{
|
|
|
+ if(slot >= artWorn.size() || slot < 0)
|
|
|
+ {
|
|
|
+ logGlobal->errorStream() << "CArtifactsOfHero::getArtPlace: invalid slot " << slot << "; maximum is " << artWorn.size()-1;
|
|
|
+ return nullptr;
|
|
|
+ }
|
|
|
+
|
|
|
return artWorn[slot];
|
|
|
}
|
|
|
else
|