Some of the informations presented here may be deprecated.

Skill Training and EVEMon

It sounds simple doesn't it. Your skill finishes training and Evemon tells you it's finished. Just once. You go and start training a new skill and tell evemon about it.

Well, dear reader, it is actually very much complex than you imagine. Grab a beer and sit with me a while.

The Actors

Character Sheet XML

We have your Character sheet XML which comes from CCP (http://api.eve-online.com//char/CharacterSheet.xml.aspx) which is only updated hourly. This file is obviously the defacto reference, but it contains no skill training info

Training Skill XML

We have your Training Skill XML from CCP (http://api.eve-online.com//char/SkillIntraining.xml.aspx) which looks something like



<?xml version='1.0' encoding='UTF-8'?>

<eveapi version="1">

	<currentTime>2007-06-27 18:33:41</currentTime>

	<result>

		<trainingEndTime>2007-06-27 19:04:00</trainingEndTime>

		<trainingStartTime>2007-06-27 17:03:11</trainingStartTime>

		<trainingTypeID>11584</trainingTypeID>

		<trainingStartSP>750</trainingStartSP>

		<trainingDestinationSP>4243</trainingDestinationSP>

		<trainingToLevel>2</trainingToLevel>

		<skillInTraining>1</skillInTraining>

	</result>

	<cachedUntil>2007-06-27 19:48:41</cachedUntil>

</eveapi>



if a skill is in training or



<?xml version='1.0' encoding='UTF-8'?>

<eveapi version="1">

	<currentTime>2007-06-27 18:33:41</currentTime>

	<result>

		<skillInTraining>0</skillInTraining>

	</result>

	<cachedUntil>2007-06-27 19:48:41</cachedUntil>

</eveapi>



if there is no skill in training. N.B If your eve client is not running when a skill completes then this file will continue to show the last training skill with it's end date in the past.

Settings - character sheet and training skill cache

Whenever settings.xml is saved, we serialize the character sheet and training skill to the settings file, in pretty much the same format as the CCP xml

Settings - OldSkillsDict?

Because the character sheet is only generated hourly but training xml can be changed every 15 minutes, it is necessary to record all the training skills that EVEMon sees between the last character sheet update and the next generation of the character sheet - so we can keep the character sheet shown on screen up to date (e.g. start up EVEMon, get the training skill (skill A). 15 minutes later, switch skill in game to skill B. Now shutdown EVEMon and then restrat it. The character sheet that is fetched from CCP won't have any updates to Skill A so we can use the OldSkillsDict? to correct that. The OldSkills? in teh dictionary need a flag to indicate that if they have completed training, we don't get a notification every time we manually fetch the character sheet or start evemon.

EVEMon serializes the character sheet and the current training skill to Settings.xml whenever settings are saved.

The skill training Logic

To be written

Skill Training Scenarios

1 - Normal use

  • Description: Evemon starts up, user is training the same skill as before. Skill completes when evemon is running.
  • Expected Behavior: When skill completes, alerts are raised. Character Sheet reflects completed skill points (including showing all prerequisites as trained). If user manually retrieves the character sheet before the cache expires then the character sheet should still reflect the completed skill points . If EVEMon is shutdown and restarted before the skill training cache expires, there should be no further notifications and again, the character sheet should reflect the completed skill. Plans containing this skill should not have the plan entries for this skill and any prerequisites removed until we see the skill in the character sheet from CCP. When a new skill is selected by the user and evemon sees the new training skill, then we should retain the last training skill in the cache until we see a new character sheet from CCP. When we see a new character sheet from CCP, we should clear the OldSkillsDict.

2 Skill completes when EVEMon is shutdown (cached character sheet)

  • Description: Evemon is running (and so has a cached character sheet xml). Evemon is shutdown shortly before skill completes and then restarted before a new character sheet is available.
  • Expected Behavior: When EVEMon starts, it grabs the character sheet from CCP - it hasn't changed. The training skill may be different (or the same with an end date in the past) - User receives alert and remaining behavior is as scenario 1 - if Evemon is restarted before a new character sheet is available, only one alert should be shown for the first startup.

3 Skill switched with EVEMon down

  • Description: User shuts down evemon with a skill due to finish shortly. User switches skill in EVE. After the skill that was training would have finished, EVEMon is started. (This is the "Switch from short skill to long skill when going to bed or work" scenario.
  • Expected behavior: Evemon should NOT alert when starting up, and Scenario 1 is entered for teh skill that is actually in training.

MORE SCENARIOS TO FOLLOW