Sfoglia il codice sorgente

* start map in campaign button is properly disabled/enabled (I hope)
* exported json for artifact bonuses; no limiters/propagators yet, so it's not used
* minor changes

mateuszb 13 anni fa
parent
commit
8dca88c3c8
6 ha cambiato i file con 3652 aggiunte e 62 eliminazioni
  1. 13 3
      client/CPreGame.cpp
  2. 3 0
      client/CPreGame.h
  3. 3554 0
      config/artifacts.json
  4. 27 0
      lib/CArtHandler.cpp
  5. 53 58
      lib/JsonNode.cpp
  6. 2 1
      lib/JsonNode.h

+ 13 - 3
client/CPreGame.cpp

@@ -2810,7 +2810,7 @@ void CBonusSelection::init()
 	}
 
 	//unlock if no bonuses -- it's acceptable
-	startB->setState( ourCampaign->getCurrentScenario().travelOptions.bonusesToChoose.size() ? CButtonBase::BLOCKED : CButtonBase::NORMAL);
+	
 
 // 	//init campaign state if necessary
 // 	if (ourCampaign->campaignName.size() == 0)
@@ -3022,6 +3022,8 @@ void CBonusSelection::updateBonusSelection()
 	const CCampaignScenario &scenario = ourCampaign->camp->scenarios[sInfo.campState->currentMap];
 	const std::vector<CScenarioTravel::STravelBonus> & bonDescs = scenario.travelOptions.bonusesToChoose;
 
+	updateStartButtonState(-1);
+
 	for (size_t i=0; i<bonuses->buttons.size(); i++)
 	{
 		if (bonuses->buttons[i]->active)
@@ -3215,8 +3217,7 @@ void CBonusSelection::selectBonus( int id )
 		sInfo.campState->chosenCampaignBonuses[sInfo.campState->currentMap] = id;
 		GH.totalRedraw();
 
-		if (startB->getState() == CButtonBase::BLOCKED)
-			startB->setState(CButtonBase::NORMAL);
+		updateStartButtonState(id);
 	}
 
 
@@ -3248,6 +3249,14 @@ void CBonusSelection::changeDiff( bool increase )
 	}
 }
 
+void CBonusSelection::updateStartButtonState( int selected /*= -1*/ )
+{
+	if(selected == -1)
+		startB->setState( ourCampaign->getCurrentScenario().travelOptions.bonusesToChoose.size() ? CButtonBase::BLOCKED : CButtonBase::NORMAL);
+	else if(startB->getState() == CButtonBase::BLOCKED)
+		startB->setState(CButtonBase::NORMAL);
+}
+
 CBonusSelection::CRegion::CRegion( CBonusSelection * _owner, bool _accessible, bool _selectable, int _myNumber )
 : owner(_owner), accessible(_accessible), selectable(_selectable), myNumber(_myNumber)
 {
@@ -3654,3 +3663,4 @@ void CCampaignScreen::showAll(SDL_Surface *to)
 	if (pos.h != to->h || pos.w != to->w)
 		CMessage::drawBorder(1, to, pos.w+28, pos.h+30, pos.x-14, pos.y-15);
 }
+

+ 3 - 0
client/CPreGame.h

@@ -422,6 +422,8 @@ class CBonusSelection : public CIntObject
 	CAdventureMapButton * diffLb, * diffRb; //buttons for changing difficulty
 	void changeDiff(bool increase); //if false, then decrease
 
+
+	void updateStartButtonState(int selected = -1); //-1 -- no bonus is selected
 	//bonus selection
 	void updateBonusSelection();
 	CHighlightableButtonsGroup * bonuses;
@@ -479,6 +481,7 @@ private:
 	std::vector<CPicture*> images;
 
 	CAdventureMapButton* createExitButton(const JsonNode& button);
+
 public:
 	enum CampaignSet {ROE, AB, SOD, WOG};
 

+ 3554 - 0
config/artifacts.json

@@ -0,0 +1,3554 @@
+[
+	{
+		"id" : 0
+	},
+	{
+		"id" : 1
+	},
+	{
+		"id" : 2
+	},
+	{
+		"id" : 3
+	},
+	{
+		"id" : 4
+	},
+	{
+		"id" : 5
+	},
+	{
+		"id" : 6
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Centaurs Axe",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 7
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Blackshard of the Dead Knight",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 8
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Greater Gnoll's Flail",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 9
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ogre's Club of Havoc",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 10
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Hellfire",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 11
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Titan's Gladius",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 12,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Titan's Gladius",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : -3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 12
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Shield of the Dwarven Lords",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 13
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Shield of the Yawning Dead",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 14
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Buckler of the Gnoll King",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 15
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Targ of the Rampaging Ogre",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 16
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Shield of the Damned",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 17
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sentinel's Shield",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 12,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sentinel's Shield",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : -3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 18
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of the Alabaster Unicorn",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 19
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Skull Helmet",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 20
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of Chaos",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 21
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Crown of the Supreme Magi",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 22
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Hellstorm Helmet",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 23
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Thunder Helmet",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Thunder Helmet",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : -2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 24
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Breastplate of Petrified Wood",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 25
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Rib Cage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 26
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Scales of the Greater Basilisk",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 27
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Tunic of the Cyclops King",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 28
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Breastplate of Brimstone",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 29
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Titan's Cuirass",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Titan's Cuirass",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : -2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 30
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of Wonder",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of Wonder",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of Wonder",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of Wonder",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 31
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sandals of the Saint",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sandals of the Saint",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sandals of the Saint",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sandals of the Saint",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 32
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Celestial Necklace of Bliss",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Celestial Necklace of Bliss",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Celestial Necklace of Bliss",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Celestial Necklace of Bliss",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 33
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Lion's Shield of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Lion's Shield of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Lion's Shield of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Lion's Shield of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 34
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Judgement",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Judgement",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Judgement",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Judgement",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 35
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of Heavenly Enlightenment",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of Heavenly Enlightenment",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of Heavenly Enlightenment",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Helm of Heavenly Enlightenment",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 36
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Quiet Eye of the Dragon",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Quiet Eye of the Dragon",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 37
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Red Dragon Flame Tongue",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Red Dragon Flame Tongue",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 38
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Scale Shield",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Scale Shield",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 39
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Scale Armor",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Scale Armor",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 40
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragonbone Greaves",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragonbone Greaves",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 41
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Wing Tabard",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Dragon Wing Tabard",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 42
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Necklace of Dragonteeth",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Necklace of Dragonteeth",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 43
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Crown of Dragontooth",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Crown of Dragontooth",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 44
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Still Eye of the Dragon",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MORALE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Still Eye of the Dragon +1",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LUCK",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 45
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Clover of Fortune +1",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LUCK",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 46
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Cards of Prophecy +1",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LUCK",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 47
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ladybird of Luck +1",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LUCK",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 48
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Badge of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MORALE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Badge of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MIND_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 49
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Crest of Valor",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MORALE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 50
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Glyph of Gallantry",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MORALE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 51
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Speculum",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SIGHT_RADIOUS",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 52
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Spyglass",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SIGHT_RADIOUS",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 53
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Amulet of the Undertaker",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 12,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 5,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 54
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Vampire's Cowl",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 12,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 10,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 55
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Dead Man's Boots",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 12,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 15,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 56
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Garniture of Interference",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "MAGIC_RESISTANCE",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 57
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Surcoat of Counterpoise",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "MAGIC_RESISTANCE",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 58
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Boots of Polarity",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "MAGIC_RESISTANCE",
+				"val" : 15,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 59
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Bow of Elven Cherrywood",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 5,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 60
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Bowstring of the Unicorn's Mane",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 10,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 61
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Angel Feather Arrows",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 15,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 62
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Bird of Perception",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 11,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 5,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 63
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Stoic Watchman",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 11,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 10,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 64
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Emblem of Cognizance",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 11,
+				"turns" : 0,
+				"type" : "SECONDARY_SKILL_PREMY",
+				"val" : 15,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 65
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Statesman's Medal",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SURRENDER_DISCOUNT",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 66
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Diplomat's Ring",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SURRENDER_DISCOUNT",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 67
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ambassador's Sash",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SURRENDER_DISCOUNT",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 68
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of the Wayfarer",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACKS_SPEED",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 69
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Equestrian's Gloves",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LAND_MOVEMENT",
+				"val" : 300,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 70
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Necklace of Ocean Guidance",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SEA_MOVEMENT",
+				"val" : 1000,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 71
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Angel Wings",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "FLYING_MOVEMENT",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 72
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Charm of Mana",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MANA_REGENERATION",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 73
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Talisman of Mana",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MANA_REGENERATION",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 74
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Mystic Orb of Mana",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MANA_REGENERATION",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 75
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Collar of Conjuring",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SPELL_DURATION",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 76
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of Conjuring",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SPELL_DURATION",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 77
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Cape of Conjuring",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SPELL_DURATION",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 78
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Orb of the Firmament",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "AIR_SPELL_DMG_PREMY",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 79
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Orb of Silt",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "EARTH_SPELL_DMG_PREMY",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 80
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Orb of Tempestuous Fire",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "FIRE_SPELL_DMG_PREMY",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 81
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Orb of Driving Rain",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "WATER_SPELL_DMG_PREMY",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 82
+	},
+	{
+		"id" : 83
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Spirit of Oppression",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "BLOCK_MORALE",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 84
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Hourglass of the Evil Hour",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "BLOCK_LUCK",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 85
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Tome of Fire Magic",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "FIRE_SPELLS",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 86
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Tome of Air Magic",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "AIR_SPELLS",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 87
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Tome of Water Magic",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "WATER_SPELLS",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 88
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Tome of Earth Magic",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "EARTH_SPELLS",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 89
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Boots of Levitation",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "WATER_WALKING",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 90
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Golden Bow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "NO_DISTANCE_PENALTY",
+				"val" : 0,
+				"valueType" : "ADDITIVE_VALUE"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Golden Bow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "NO_WALL_PENALTY",
+				"val" : 0,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 91
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sphere of Permanence",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 35,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 92
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Orb of Vulnerability",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "NEGATE_ALL_NATURAL_IMMUNITIES",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 93
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of Vitality",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 94
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of Life",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 95
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Vial of Lifeblood",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 96
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Necklace of Swiftness",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACKS_SPEED",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 97
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Boots of Speed",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LAND_MOVEMENT",
+				"val" : 600,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 98
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Cape of Velocity",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACKS_SPEED",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 99
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Dispassion",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 59,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 100
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Second Sight",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 62,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 101
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Holiness",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 42,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 102
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Life",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 24,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 103
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Death",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 25,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 104
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Free Will",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 60,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 105
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Negativity",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 17,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Negativity",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 19,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 106
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Total Recall",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 61,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 107
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Courage",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MORALE",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Courage +3",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LUCK",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 108
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Everflowing Crystal Cloak",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 4,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 109
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of Infinite Gems +1",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 5,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 110
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Everpouring Vial of Mercury",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 111
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Inexhaustible Cart of Ore",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 112
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Eversmoking Ring of Sulfur",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 113
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Inexhaustible Cart of Lumber",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 114
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Endless Sack of Gold",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 6,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 1000,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 115
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Endless Bag of Gold",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 6,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 750,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 116
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Endless Purse of Gold",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 6,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 500,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 117
+	},
+	{
+		"id" : 118
+	},
+	{
+		"id" : 119
+	},
+	{
+		"id" : 120
+	},
+	{
+		"id" : 121
+	},
+	{
+		"id" : 122
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sea Captain's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "WHIRLPOOL_PROTECTION",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sea Captain's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SEA_MOVEMENT",
+				"val" : 500,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sea Captain's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "SPELL",
+				"val" : 3,
+				"valueType" : "INDEPENDENT_MAX"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Sea Captain's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "SPELL",
+				"val" : 3,
+				"valueType" : "INDEPENDENT_MAX"
+			}
+		],
+		"id" : 123
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Spellbinder's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "SPELLS_OF_LEVEL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 124
+	},
+	{
+		"id" : 125
+	},
+	{
+		"id" : 126
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Vial of Dragon Blood",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Vial of Dragon Blood",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 5,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 127
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 26,
+				"turns" : 0,
+				"type" : "SPELL",
+				"val" : 3,
+				"valueType" : "INDEPENDENT_MAX"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 26,
+				"turns" : 0,
+				"type" : "SPELL_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armageddon's Blade",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 128
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Angelic Alliance",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "NONEVIL_ALIGNMENT_MIX",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Angelic Alliance",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 48,
+				"turns" : 0,
+				"type" : "OPENING_BATTLE_SPELL",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 129
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Cloak of the Undead King",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "IMPROVED_NECROMANCY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 130
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Elixir of Life",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 25,
+				"valueType" : "PERCENT_TO_BASE"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Elixir of Life",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "HP_REGENERATION",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 131
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of the Damned",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 54,
+				"turns" : 0,
+				"type" : "OPENING_BATTLE_SPELL",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of the Damned",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 47,
+				"turns" : 0,
+				"type" : "OPENING_BATTLE_SPELL",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of the Damned",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 45,
+				"turns" : 0,
+				"type" : "OPENING_BATTLE_SPELL",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Armor of the Damned",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 52,
+				"turns" : 0,
+				"type" : "OPENING_BATTLE_SPELL",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 132
+	},
+	{
+		"id" : 133
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Power of the Dragon Father",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "LEVEL_SPELL_IMMUNITY",
+				"val" : 4,
+				"valueType" : "INDEPENDENT_MAX"
+			}
+		],
+		"id" : 134
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Titan's Thunder",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 57,
+				"turns" : 0,
+				"type" : "SPELL",
+				"val" : 3,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 135
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Admiral's Hat",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "FREE_SHIP_BOARDING",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 136
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Bow of the Sharpshooter",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "NO_DISTANCE_PENALTY",
+				"val" : 0,
+				"valueType" : "ADDITIVE_VALUE"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Bow of the Sharpshooter",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "NO_WALL_PENALTY",
+				"val" : 0,
+				"valueType" : "ADDITIVE_VALUE"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Bow of the Sharpshooter",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "FREE_SHOOTING",
+				"val" : 0,
+				"valueType" : "ADDITIVE_VALUE"
+			}
+		],
+		"id" : 137
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Wizard's Well",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "FULL_MANA_REGENERATION",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 138
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Ring of the Magi",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SPELL_DURATION",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 139
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Cornucopia",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Cornucopia",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 3,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Cornucopia",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 4,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Cornucopia +4",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 5,
+				"turns" : 0,
+				"type" : "GENERATE_RESOURCE",
+				"val" : 4,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 140
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "CASTS",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 18,
+				"turns" : 0,
+				"type" : "SPELLCASTER",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 21,
+				"turns" : 0,
+				"type" : "SPELLCASTER",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "RANDOM_SPELLCASTER",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 63,
+				"turns" : 0,
+				"type" : "DAEMON_SUMMONING",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 2,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 17,
+				"turns" : 0,
+				"type" : "ENCHANTER",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 1,
+				"turns" : 0,
+				"type" : "REBIRTH",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "MANA_DRAIN",
+				"val" : 10,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Magic Wand",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "HEALER",
+				"val" : 25,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 141
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "NO_DISTANCE_PENALTY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "ADDITIONAL_ATTACK",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 22,
+				"turns" : 0,
+				"type" : "SPELL_LIKE_ATTACK",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "CATAPULT",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "ACID_BREATH",
+				"val" : 20,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "SHOTS",
+				"val" : 200,
+				"valueType" : "PERCENT_TO_BASE"
+			},
+			{
+				"additionalInfo" : 1,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 75,
+				"turns" : 0,
+				"type" : "SPELL_BEFORE_ATTACK",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 1,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 59,
+				"turns" : 0,
+				"type" : "SPELL_AFTER_ATTACK",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 1,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 71,
+				"turns" : 0,
+				"type" : "SPELL_AFTER_ATTACK",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 1,
+				"description" : "Gold Tower Arrow",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 47,
+				"turns" : 0,
+				"type" : "SPELL_AFTER_ATTACK",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 142
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 100,
+				"valueType" : "PERCENT_TO_BASE"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 2,
+				"turns" : 0,
+				"type" : "CREATURE_DAMAGE",
+				"val" : 100,
+				"valueType" : "PERCENT_TO_ALL"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "HP_REGENERATION",
+				"val" : 50,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "NO_RETALIATION",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "RETURN_AFTER_STRIKE",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "ATTACKS_ALL_ADJACENT",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "SPELL_RESISTANCE_AURA",
+				"val" : 100,
+				"valueType" : "BASE_NUMBER"
+			},
+			{
+				"additionalInfo" : 0,
+				"description" : "Monster's Power",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "DIRECT_DAMAGE_IMMUNITY",
+				"val" : 0,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 143
+	},
+	{
+		"id" : 144
+	},
+	{
+		"id" : 145
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Axe of Smashing",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 146
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Mithril Mail",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 12,
+				"valueType" : "PERCENT_TO_ALL"
+			}
+		],
+		"id" : 147
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Sword of Sharpness",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "CREATURE_DAMAGE",
+				"val" : 12,
+				"valueType" : "PERCENT_TO_ALL"
+			}
+		],
+		"id" : 148
+	},
+	{
+		"id" : 149
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Pendant of Sorcery",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "CASTS",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 150
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Boots of Haste",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACKS_SPEED",
+				"val" : 1,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 151
+	},
+	{
+		"id" : 152
+	},
+	{
+		"id" : 153
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Hardened Shield",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : 0,
+				"turns" : 0,
+				"type" : "PRIMARY_SKILL",
+				"val" : 6,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 154
+	},
+	{
+		"id" : 155
+	},
+	{
+		"bonuses" : [
+			{
+				"additionalInfo" : 0,
+				"description" : "Warlord's Banner",
+				"duration" : "PERMANENT",
+				"effectRange" : "NO_LIMIT",
+				"source" : "ARTIFACT",
+				"sourceID" : 0,
+				"subtype" : -1,
+				"turns" : 0,
+				"type" : "STACK_HEALTH",
+				"val" : 2,
+				"valueType" : "BASE_NUMBER"
+			}
+		],
+		"id" : 156
+	},
+	{
+		"id" : 157
+	},
+	{
+		"id" : 158
+	},
+	{
+		"id" : 159
+	},
+	{
+		"id" : 160
+	},
+	{
+		"id" : 161
+	},
+	{
+		"id" : 162
+	},
+	{
+		"id" : 163
+	},
+	{
+		"id" : 164
+	},
+	{
+		"id" : 165
+	},
+	{
+		"id" : 166
+	},
+	{
+		"id" : 167
+	},
+	{
+		"id" : 168
+	},
+	{
+		"id" : 169
+	},
+	{
+		"id" : 170
+	}
+]

+ 27 - 0
lib/CArtHandler.cpp

@@ -606,6 +606,17 @@ void CArtHandler::addBonuses()
 	auto shooterOnlyLimiter = make_shared<HasAnotherBonusLimiter>(Bonus::SHOOTER);
 	auto dragonNatureLimiter = make_shared<HasAnotherBonusLimiter>(Bonus::DRAGON_NATURE);
 
+// 	const JsonNode config(ResourceID("config/artifacts.json"));
+// 	BOOST_FOREACH(const JsonNode &artifact, config.Vector())
+// 	{
+// 		auto ga = artifacts[artifact["id"].Float()].get();
+// 		
+// 		BOOST_FOREACH (auto b, artifact["bonuses"].Vector())
+// 		{
+// 			ga->addNewBonus(ParseBonus (b["bonus"].Vector()));
+// 		}
+// 	}
+
 	//Attack bonus artifacts (Weapons)
 	ART_PRIM_SKILL(7,0,+2); //Centaur Axe
 	ART_PRIM_SKILL(8,0,+3); //Blackshard of the Dead Knight
@@ -898,6 +909,22 @@ void CArtHandler::addBonuses()
 		giveArtBonus(151, Bonus::STACKS_SPEED, 1); //Boots of haste
 		ART_PRIM_SKILL (154, 0, +6); //Hardened Shield
 	}
+
+// 	JsonNode cfg;
+// 	BOOST_FOREACH(auto art, artifacts)
+// 	{
+// 		art->id;
+// 		JsonNode jn;
+// 		jn["id"].Float() = art->id;
+// 		BOOST_FOREACH (auto b, art->getBonusList())
+// 		{
+// 			JsonNode bn;
+// 			UnparseBonus(bn, b);
+// 			jn["bonuses"].Vector().push_back(bn);
+// 		}
+// 		cfg.Vector().push_back(jn);
+// 	}
+// 	JsonWriter(std::ofstream("config/artifacts.json"), cfg);
 }
 
 void CArtHandler::clear()

+ 53 - 58
lib/JsonNode.cpp

@@ -926,11 +926,32 @@ Bonus * ParseBonus (const JsonVector &ability_vec) //TODO: merge with AddAbility
 	return b;
 }
 
+
+
 Bonus * ParseBonus (const JsonNode &ability)
 {
+
 	Bonus * b = new Bonus();
 	const JsonNode *value;
 
+	auto parseByMap = [&](const std::map<std::string, int> & map, const JsonNode * val, std::string err) -> int
+	{
+		if (!val->isNull())
+		{
+			std::string type = val->String();
+			auto it = map.find(type);
+			if (it == map.end())
+			{
+				tlog1 << "Error: invalid " << err << type << std::endl;
+				return -1;
+			}
+			else
+			{
+				return it->second;
+			}
+		}
+	};
+
 	std::string type = ability["type"].String();
 	auto it = bonusNameMap.find(type);
 	if (it == bonusNameMap.end())
@@ -949,19 +970,8 @@ Bonus * ParseBonus (const JsonNode &ability)
 		b->val = value->Float();
 
 	value = &ability["valueType"];
-	if (!value->isNull())
-	{
-		std::string type = value->String();
-		auto it = bonusValueMap.find(type);
-		if (it == bonusValueMap.end())
-		{
-			tlog1 << "Error: invalid value type " << type << std::endl;
-		}
-		else
-		{
-			b->valType = it->second;
-		}
-	}
+
+	b->valType = parseByMap(bonusValueMap, &ability["valueType"], "value type ");
 
 	value = &ability["additionalInfo"];
 	if (!value->isNull())
@@ -979,52 +989,11 @@ Bonus * ParseBonus (const JsonNode &ability)
 	if (!value->isNull())
 		b->description = value->String();
 
+	b->effectRange = parseByMap(bonusLimitEffect, &ability["effectRange"], "effect range ");
 	
-	value = &ability["effectRange"];
-	if (!value->isNull())
-	{
-		std::string type = value->String();
-		auto it = bonusLimitEffect.find(type);
-		if (it == bonusLimitEffect.end())
-		{
-			tlog1 << "Error: invalid effect range " << type << std::endl;
-		}
-		else
-		{
-			b->effectRange = it->second;
-		}
-	}
+	b->duration = parseByMap(bonusDurationMap, &ability["duration"], "duration type ");
 
-	
-	value = &ability["duration"];
-	if (!value->isNull())
-	{
-		std::string type = value->String();
-		auto it = bonusDurationMap.find(type);
-		if (it == bonusDurationMap.end())
-		{
-			tlog1 << "Error: invalid duration type " << type << std::endl;
-		}
-		else
-		{
-			b->duration = it->second;
-		}
-	}
-
-	value = &ability["source"];
-	if (!value->isNull())
-	{
-		std::string type = value->String();
-		auto it = bonusSourceMap.find(type);
-		if (it == bonusSourceMap.end())
-		{
-			tlog1 << "Error: invalid source type " << type << std::endl;
-		}
-		else
-		{
-			b->source = it->second;
-		}
-	}
+	b->source = parseByMap(bonusSourceMap, &ability["source"], "source type ");
 
 	//TODO:
 
@@ -1036,4 +1005,30 @@ Bonus * ParseBonus (const JsonNode &ability)
 	//if (!value->isNull())
 	//	b->propagator = value->Float();
 	return b;
-}
+}
+
+DLL_LINKAGE void UnparseBonus( JsonNode &node, const Bonus * bonus )
+{
+	auto reverseMap = [](const int & val, const std::map<std::string, int> map) -> std::string
+	{
+		BOOST_FOREACH(auto it, map)
+		{
+			if(it.second == val)
+			{
+				return it.first;
+			}
+		}
+	};
+	
+	node["type"].String() = reverseMap(bonus->type, bonusNameMap);
+	node["subtype"].Float() = bonus->subtype;
+	node["val"].Float() = bonus->val;
+	node["valueType"].String() = reverseMap(bonus->valType, bonusValueMap);
+	node["additionalInfo"].Float() = bonus->additionalInfo;
+	node["turns"].Float() = bonus->turnsRemain;
+	node["sourceID"].Float() = bonus->source;
+	node["description"].String() = bonus->description;
+	node["effectRange"].String() = reverseMap(bonus->effectRange, bonusLimitEffect);
+	node["duration"].String() = reverseMap(bonus->duration, bonusDurationMap);
+	node["source"].String() = reverseMap(bonus->source, bonusSourceMap);
+}

+ 2 - 1
lib/JsonNode.h

@@ -210,4 +210,5 @@ public:
 };
 
 DLL_LINKAGE Bonus * ParseBonus (const JsonVector &ability_vec);
-DLL_LINKAGE Bonus * ParseBonus (const JsonNode &bonus);
+DLL_LINKAGE Bonus * ParseBonus (const JsonNode &bonus);
+DLL_LINKAGE void UnparseBonus (JsonNode &node, const Bonus * bonus);