14-11-2003, Kell
- Fixed parsing of <> or any other nested  btw. Also fixed parsing of numerical commands
  (skills) so that <7> actually works for accessing skill #7 (this didn't make it to .55R1).
- Fixed dumb log file being created out of place. Will still happen when Sphere is run as
  an NT service though.

15-11-2003, Zorm
- Added LOS check for taming
- Changed m_defense from BYTE to WORD, thus fixing the bug with AR > 255
- CanSeeLOS fixed, now checks if target object z is greater then myz + 14 if so blocks
- Kill count decay should be fixed
- Can no longer steal from trade windows or game boards
- ATTR_OWNED items may no longer be magic locked
- Added @DeathCorpse, argn1 = corpse?
- Trade window items are now dumped to back before corpse is made
- Now checks accounts when first sent
- Added @start in skilldefs
- Provoking players disabled

16-11-2003, Kell
- Identified problem regarding vanishing horses. Apparently, they stop acting as ridden, so instead
  of deleting them I will just try and restart their behaviour again. If this fails, they still
  shouldn't be deleted, and a new message should be printed out. To test, try creating a horse, mount
  and then worldsave.
- Made sure that ABORTED skills don't hand out experience for failure. Only those that actually fail do.
  ( this fixes lumberjacking / mining exploits ).
- Added support for TAG.NAME.HUE (name colour)
- Added @SkillSelect to character events, and @Select  to SKILLDEFs ("return 1" aborts).
- Added support for FORCHARS/FORITEMS/FOROBJS the correct way: SRC is retained and the default object
  within the FOR block is the object being looped through.
- Added @SkillSuccess to character events, and @Success to SKILLDEFs ("return 1" aborts).
- Changed @SkillStart so that "return 1" actually aborts the skill (same for @Start in SKILLDEFs).
- Changed @Login so that "return 1" disallows logging in.
- Added @UserSkills ("return 1" cancels the skill window being displayed).
- Added @UserStats  ( user requested stats update, return value is ignored )
- DBG: Added @SkillMakeItem to character events, triggered after the item has been created:
  "return 1" deletes the item
  "return 0" bounces the item as usual, but with no extra messages (potion, quality message)
  "return"   bounces the item as usual.

17-11-2003, Kell
- Hopefully fixed the bug with resyncing SPELL sections.
- Added triggers to SPELL sections, so you can now independently code spells:
  @Select ( "return 1" cancels, "return 0" skip checks, "return" default behaviour)
  @Start  ( "return 1" cancels )
  @Fail   ( "return 1" cancels the fizzle effect).
  @Success
- Changed SERV.LOG to allow writing of messages to the log. New syntax is:
  serv.log @enable   -- enables logging
  serv.log @disable  -- disable logging
  serv.log @toggle   -- toggles logging
  serv.log text      -- log text to console and file

18-11-2003, Zorm
- Fixed commands going to npcs, as well as more problems with unicode speech
  support - BROKEN
- CGTypedArray, SetCount, DestroyElements, crashes on shutdown. Needs more
  work to fix
- Fame gain fixed

18-11-2003, Kell
- Moved tags to CObjBase so all types of objects can have tags. Removed special
  handling of TAGs from characters, script items and multi items.
- Fixed problem when resycing SKILL sections (spheretables.scp) would mess up
  Skill_ defnames ( and the ACTION field on characters ). One no longer needs
  to use workarounds like my FIXACTION function. Memory corruption problems
  when resyncing SPELL tables should also be fixed.

18-11-2003, DarkStorm
- Started fixing some issues preventing sphere to compile on linux (CSocket.h)
- Managed to make it compile on Linux, comitted all the changes neccesary and
  made sure it still compiles on windows.
- Implemented some code changes to remove the ncurses dependency on linux and
  activated the console again. 
- Implemented Colors on the Linux Console

19-11-2003, DarkStorm
- Added MD5 Password support via MD5PASSWORDS=1 in sphere.ini. If you activate
  this, accounts will be saved with the password encoded (existing non-encoded
  password will be converted). WARNING: disabling it afterwards won't restore
  the passwords to plain text, and thus you won't be able to login with those
  accounts. Once enabled, and the accounts file saved this setting should not be
  changed (unless you set the passwords by hand).
- Removed the ScriptEngine Folder from the VC++6 project and wrapped an #if
  defined() around the three functions that used it. It seems unused in the
  productive gameserver, so i think we can remove the additional 400kb of
  possibly error prone code.
- Removed the ScriptEngine Folder from the VC++ 7 project too
- Changed the VC++ 6 projects to use the shared CRT. (It's shipped with windows
  since 95)
- Rewrote the new[], new, delete and delete[] operators and removed the memory
  footprinting. 
- Tuned the optimizations for VS.NET 2003 Release mode a bit.
- Removed the StatusReports from ntservice.cpp before it loads the ini for now
  Reporting as a service if you aren't a service isn't supposed to be happening,
  there needs to be a better fix than mine (maybe a -service argument?)
- added a check to CAccount to filter out accounts named "eof"
- fixed the help provided by .serv.accounts

19-11-2003, Kell
- Added a .DBG command, to put test code in. At the moment it'll be used to try
  and crash the server in various ways, to see how it behaves on Linux.

20-11-2003, Kell
- Added INTERRUPT=X,Y to SPELL sections in spheretable_x.scp. This controls
  the chance to fizzle a spell when hit in combat, at different Magery levels.
  Default is 100.0, 100.0 (always fizzle). With a setting of "100.0 50.0" a GM
  mage would only fizzle half the times.
- NPCs equipping stuff that is too heavy for them on @NPCRestock won't
  spit hundreds of errors to the console.
- Added LOSTNPCTELEPORT=X to sphere.ini. If X is greater than 0, NPCs that have
  a HOME point set will now teleport home if the distance to their HOME is above
  X. This fixes it when they go through portals, then get lost in the map.
- Fixed problem with mounted NPCs dying and leaving a lingering object which
  could leak later.
- FINALLY made it crash resistant under Linux - it is now trapping most
  signals AND launching exceptions correcly. Tested with a single thread
  (FREEZERESTARTTIME=0 in sphere.ini) and no background saving. More tests
  to come.
- Changed the loading procedure so sphere.ini is loaded prior to any message
  being printed to the log file. This allows the LOG= line to be parsed and
  log files to be created in the appropriate folder, so to make sure, LOG=
  line should be among the first in sphere.ini
- Changed the Linux makefile to include the necessary exception flags.
- "return 1" from a skill's @Start or @Success trigger doesn't trigger @Fail. If you
  do want @Fail triggered, set ACTION=-1. This is compatible with .55i scripts, because
  seeing as "return 1" didn't work there, scripts which did mean for @Fail to be triggered
  should already be using ACTION=-1

21-11-2003, Kell
- Linux version now works with secondary threads (FREEZERESTARTTIME not 0),
  and is able to restart the main loop if it freezes.
- Added a toggle to sphere.ini, "EXPERIMENTAL", to allow setting flags
  which enable several experimental features. You will see these referenced
  in the changelog as EF 0x????.
- EF 0x0001 enables a packet fix for Linux servers, for XCMD_Spy. Enable this
  if your clients get a login error.
- EF 0x0002 enables new UNICODE fixes.
- EF 0x0004 enables zorm CanSeeLOS fix. This is required, seeing as that fix
  won't allow you to cast uphill - a minor problem, but worth having a flag to
  toggle that behaviour.
- EF 0x0008 disables interruption of fight skills if the ACT changes. This
  fixes scripts that re-implement combat, and cases where combat with multiple
  enemies would break swings.
- EF 0x0010 enables the INTERRUPT field in SPELL sections. INTERRUPT=100.0 100.0
  SHOULD yield the standard always fail behaviour, as should not having an 
  INTERRUPT line at all. But seeing as this wasn't fully tested, you MUST enable
  this flag to make any use of the interrupt values.
- Suggested value for EXPERIMENTAL field in sphere.ini is:
  EXPERIMENTAL=013

22-11-2003, Kell
- LOSTNPCTELEPORT now checks for homedist, and won't teleport if the NPCs are still
  within home-distance. This allows you to have low values.
- Further stability fixes for Linux version, it should now work fine with background
  world saves.

22-11-2003, Zorm
- Added login crypt keys for clients up to 3.0.3, must add support for packets up to
  0xCC or atleast lengths.
- I think I fixed unicode speech now

22-11-2003, Kell
- Attempted to fix the bug where setting ACT in a @Hit trigger stops
  the swing, by restoring it after the trigger.
- Added SKIPDIFFICULTY (0 by default, or 1) to SKILL sections. Setting it to 1
  skips the hardcoded difficulty check and allows one to do their own skill difficulty
  checks in @Success, and "return 1" in there for a failure.
- Fixed @Select triggers which return 1 leaving the character waiting for an action.

23-11-2003, Zorm
- Experimental Precasting support, enable with experimental flag EF_Precast (flag 020),
  this is not well tested - it's a work in progress. Included here just for the sake of
  getting feedback.

24-11-2003, Kell
- SERV.SPELL(x).yyy, where x is the number of the spell and yyy is a key from the
  SPELLs section, such as MANAUSE or RESOURCES. You can also use RESCAST for a
  descriptive name of resources (much like RESMAKE works for items).
- SERV.SKILL(x).yyy, where x is the skill number and yyy is a key from the SKILLs
  section, such as KEY or TITLE.
- Experimented with breaking SKILL and SPELL sections to seperate files, loading them
  off-order and reloading, no problems found. Notice however that files containing
  SPELL sections must load after the base items (like spheretable_x does).

25-11-2003, Kell
- Changed it so NPCs with SPIRITSPEAK equal or above 100.0 are able to see dead players,
  like healers can. That allows one to use ON = @NPCSeeNewPlayer and an human brain to
  implement NPCs that interact with the dead, without having to put up with healer's
  default behaviour.
- Added flag NORESROBE to sphere.ini. If set to 1, players will not be given a robe
  when resurrected.

26-11-2003, Kell
- Changed SERV.SPELL and SERV.SKILL so that they accept either number or defname
  (SKILL also accepts plain names, like )
- SERV.ITEMDEF(x).yyy to access data from ITEMDEF sections (similar to the above)
- SERV.CHARDEF(x).yyy to access data from CHARDEF sections (similar to the above)

27-11-2003, Kell
- On the brink of release, fixed a serious problem inherited from .55j where unknown
  keywords being evaluated would *silently* come out untouched. As an example,
  '' would silently come out as '' instead of ''
  as in .55i. If used with tags, it could end up getting weird values and make it hard
  to catch the error, as no error was being shown. It now returns '' for stuff it can't
  evaluate, BUT also prints an error in the console. I believe this is the best possible
  behaviour.
- Linux version is now declared stable. A minor problem still exists, in that pressing
  CTRL-C in the console is not a good way to terminate the server, and will very likely
  get it into a loop. This is a minor problem though, still trying to solve it. Test
  servers report uptimes of 2-3 days with 10-20 players online (that's all the testing
  I could do).
- Added CANMAKESKILL to test ONLY for the ability to make an item skillwise (it ONLY
  tests the SKILLMAKE line), not resources.
- Added "fval", which works exactly like "eval", but formats the output in x.x format.
- There seems to be an issue with skills that use @Success to cancel a skill, in that
  sometimes the skill won't be registered as finished, and using the skill again will
  show the "you must wait" message. Players can just double-tap TAB to overcome this,
  or you can use ACTION=-1 to force skill termination. Need some feedback on this, as
  this behaviour might actually be due to bad scripts, so feel free to post comments.
- Many issues with the default

Valid XHTML 1.0 Transitional Valid CSS!