07-02-2004, Kell
- Added FeaturesLogin= to sphere.ini, allows setting of the flags sent in the 0xA9 packet, on login.

08-02-2004, Kell
- Added EVENTS/TEVENTS to items. Order of triggering is as follows:
   1) If it's a character activating the trigger, check for triggers sensitive to items (@ItemDClick, etc).
   2) triggers in EVENTS on the item
   3) triggers in TEVENTS on the item
   4) triggers in TYPEDEF section for the corresponding TYPE of the item
   5) triggers in ITEMDEF section of the item
   6) default hardcoded behaviour (if any).
  a "return 1" in any case, stops further processing of triggers.

21-02-2004, Kell
- There is a feature/bug when checking to see wether a player has some specific items, any item of a similar
  type will do. It affects these items:
     0175d (cloth), 01067 (leather), 01078 (hides), 01bdd (log), 01bd7 (boards), 00f3f (arrow), 01bfb (bolt).
  e.g., when the server tries to find an arrow, any t_weapon_arrow will do, and so on.
  Added flag EF_Item_Strict_Comparison (0200) to disable this behaviour.
25-03-2004, Radiant
- Added some combat, server and command messages to sphere_msgs.scp.
- Added two file handleing commands:
  Because these commands can be quite destructive, option flag OF_FileCommands (080) must be enabled 
  for these commands to work. Be careful, because any GM with access to SERV.* commands could use this!
  More will follow soon.
- Added @UserChatButton trigger (return 1 disables default (chat window) behaviour)
- Added @UserMailBag trigger (return 1 disables default (message) behaviour)
  NOTE: It seems this is also triggered on login, try using something like
    if ( == )
      return 1
  to prevent this.

26-03-2004, Radiant
- Added  statement
  If line == 0 this will return the last line of the file, if line == -1 this will return the first line of
  the file. This needs OF_FileCommands (080) to be enabled because of obvious security reasons.
  This will return "" (nothing) on failure.
- Added  statement, returns the amount of lines in a file.
  If this is 0 it means the file doesnt exist or cannot be read. This too needs OF_FileCommands (080).
- Added some error and misc. messages to sphere_msgs.scp.
- Added SYSMESSAGEUA (syntax equal to SAYUA).
  *** NOTE *** People using Taran's colored sysmessage script will experience problems! Remove Taran's script
  and change your scripts to use the hardcoded function instead (which is much faster and efficient anyway).
- Fixed missing return char in TRY console errors and added the UID of the object causing the error.
- Added @Attack trigger (after someone doubleclicked a character to attack).
  SRC is the target. "return 1" will cancel the attack.
- Added @UserWarmode trigger, fired when a user hits the warmode button before sphere changes the warmode flag.
  ARGN is the current warmode state (1 = in warmode, 0 = peace). "return 1" cancels the warmode change.

27-03-2004, Radiant
- Got sphere to compile on FreeBSD, it's not very stable yet, working on that (problem with signal handlers).
- Added TRYSRC  , executes  with  as the SRC. Death to equip fudging!
  Note that the default object is the object this is called on, so link.trysrc  will make  the
  default object and  the . Very useful in timers!

28-03-2004, Radiant
- Disabled SENDPACKET S"" and put in a little notice that you should use  instead.
- Casting recall/gate travel on an item now fires @SpellEffect on that item.

31-03-2004, Radiant
- Added OF_NoItemNaming (0100), prevents sphere from naming items "sword crafted by Player"
- Added EF_No_Pause_Packet (0400), this prevents sphere from sending a Disable Redraw (or pause) packet everytime
  a new item/character is sent to the client. This is a bandwidth saver and lag preventer.
  This saves about 45 bytes for each action, this doesn't seem much but you can notice the difference.

02-04-2004, Radiant
- Changed skillsum to DWORD, which fixes the problem with high skillsums not working.

04-04-2004, Radiant
- Gate travel spell now LINKs the gate to the person that opened it.

06-04-2004, Radiant
- Healing is now interrupted properly when hit, fixes exception problem.

08-04-2004, Radiant
- Fixed signal locking problem on Linux/FreeBSD, running sphere in multi-threading mode still has problems, I'll look
  at that tomorrow. Sphere now survives pretty much every error on Linux/FreeBSD (only tested on FreeBSD), as long as
  it's running in single thread mode.

09-04-2004, Radiant
- Threading problem seems to be a little more complicated, but at least sphere runs very stable for me without threading
  on FreeBSD. I've tried it on Slackware, which still had alot of problems. I'll leave that for Kell ;)

11-04-2004, Balkon
- Fixed bug when pick up few items from a pile on the ground it's timers become -1
- Added @Pickup_Self - fired on container when item picked up from it, ARGO points to item we picking up
  @ItemPickup_Self for chars, ACT - container , ARGO - item we picking up
  Removed Reveal() from corpse looting - one can do it using @Pickup_Self if needed
- @Dropon_Char, @ItemDropon_Char now called when drop an item directly on charater either (before secure trade window 
  shown and @NPCAccept/Refuseitem triggers), ARGO points to character we drop the item on, or character's backpack

11-04-2004, Balkon
- Can't provoce char against an item
- Return 1 in @Login fixed (character will not stay in the world, no "client version check" loop)
- Fixed CONT and TOPOBJ in @EquipTest, item not moved if can't be equipped when doubleclick on it

12-04-2004, Radiant
- Added LOCALLIGHT property on characters, if this is 0 the normal lightlevel (sector) will be used, if this is higher the
  LOCALLIGHT value will be sent as lightlevel instead. You will need to use UPDATE after you have changed this, because the
  light level is not automatically updated. This overrides nightsight.
  (note: if you want to give a character a LOCALLIGHT level of 0, just set the nightsight flag)

13-04-2004, Balkon
- OF_NoHouseMuteSpeech (0200) - if enabled players are able to hear each other inside and outside the house
- Started remaking a CanSeeLos and CanWalk, temporary added EF_CanSeeLos_New (0800) to enable both changes
  as for now it fixes shoot through walls an fall through the floor in house regions interception area bugs, 
  more changes here later...

14-04-2004, Radiant
- @DClick is now triggered before the item is attempted to be equipped

15-04-2004, Balkon
- EF_WalkCheck (01000) - new walk check code, should fix lot of house looting bugs (patched verdata, walk under stairs etc.)
  NOTE: in default script pack some stairs are in DUPELIST of items, which are not really a stairs, so they have
  wrong CAN flags (CAN_I_CLIMB is not set). Make sure you've fixed your scripts before enabling this EF or you'll 
  not be able to walk on some of dynamic stairs

16-04-2004, Balkon
- some optimization to EF_WalkCheck, fixing climb height after teleporting and Z changing
- fixed bug when summoned NPC's have loot
- fixed RESOURCES.1 returned string in RESMAKE format
- fixed shafts etc. dupe bug

17-04-2004, Radiant
- Started working on some basic AOS functionality, EF_AgeOfShadows (02000) will enable this.
  Currently only enables tooltips (which aren't even working for now). Don't forget to enable flag 020 in FeaturesLogin!
- Fixed a nasty exploit that would allow anyone to crash sphere and/or execute code on your machine without even logging in
  (thanks Furio for reporting this)
- Fixed AOS Tooltips, now only shows the name for items and characters. I'll add other things later.
- Added AOS/LBR fading damage counter thing (requires EF_AgeOfShadows). This only shows for you and the person that hit you,
  I believe thats how it works on OSI (or doesn't it?). Showing it for everyone would make it laggy in my opinion.

17-04-2004, Balkon
- torch/candle dupe bug seems to be fixed at last :)

18-04-2004, Balkon
- fixed ACCOUNT properties was not accessable for logged out chars
- added ISPLAYER function - just a little feature :)
- added ISONLINE function - for players returns 1 if client is online (connected) and 0 overwise, for NPCs returns 1 when 
  NPC is in the world or 0 if it is offline (shrinked, mounted pets)
- added NOTOGETFLAG function, returns notoriety flags for specified char, syntax: NOTOGETFLAG Viewer_Serial,Allow_Incognito
  returned values:
	NOTO_GOOD		1 // good(blue)
	NOTO_GUILD_SAME   2 // same guild
	NOTO_NEUTRAL	3 // Neutral
	NOTO_CRIMINAL	4 // criminal
	NOTO_GUILD_WAR	5 // Waring guilds
	NOTO_EVIL		6 // evil(red)
  if no args specified returns flags for SRC as a viewer, NOTOGETFLAG 0,1 will return flags for SRC as a viewer with 
  Allow_Incognito = true
  NOTE: for red guildmates it will return NOTO_EVIL, not NOTO_GUILD_SAME

18-04-2004, Radiant
- Some additions to AOS tooltips

19-04-2004, Kell
- A few changes to AOS tooltips for cross-platform compatibility (itoa).

19-04-2004, Radiant
- Fixed status updates not sending with EF_No_Pause_Packet flag set
- Made @userStats fire on every status update that is being sent, if ARGN3 == 1 then the user has just opened the status window
- More tooltips stuff, type specific
- Added AOS/LBR Popup Menu's, these can be activated by setting flag 08 in FeaturesLogin (currently only for characters).

19-04-2004, Balkon
- RANGE bug fixed
- updating last regen time for dead chars so that they will not get ticks every tenth of second any more

20-04-2004, Balkon
- some traffic optimization:
  short stats change packets now used instead of full status packet when changing only hits/mana/stamina or it's max. values
  HITSUPDATERATE in sphere.ini controls how often (in seconds) my changed hits will be sent to others who can see me,
  default value is 1, incraise to reduce the traffic usage, 0 value disables sending such updates (like it was on 55i)
- MAXHITS etc. fixed. .MAXHITS 100 will now set MAXHITS to 100, this will include MODSTR so that if you had MODSTR 10 before 
  setting MAXHITS than when you change MODSTR back to 0 MAXHITS will be 90.
- maxhits displayed for others changed from 25 to 50 for smoother hits line changing on the statusbar

21-04-2004, Radiant
- Added MESSAGEUA, syntax equal to SAYUA and SYSMESSAGEUA
- Fixed lack of argument checking in SAYUA that sometimes causes an exception
- Added support for the "Virtue button" (at the top of the paperdoll on newer clients), fires the @UserVirtue trigger.
- Added support for the new spellbook packets (old ones don't work with AOS), if EF_AgeOfShadows is not set the old packets will
  be used (this is for Magery, there is no Necromancy or Paladin stuff (yet)).

22-04-2004, Radiant
- Re-added the "The spell fizzles" message on spell failure

22-04-2004, Balkon
- setting values in quotas for TAGs, VARs and LOCALs now will create text tags, i.e. 
  TAG.TEST_1 2+2
  will create numrecal tag TEST_1 with value 04, but
  TAG.TEST_2 "2+2"
  will create text tag with text '2+2'.
  Text tags and vars are saved quoted also.
- fixed REGION.TAG0.SOMETHING caused 'Undefined symbol "" error' when tag SOMETHING is not set

23-04-2004, Radiant
- Found out that new spellbook packets are broken, still not fixed
- Added support for necro book spells, now reads the spelldefs for these (101 - 116), will add hardcoded behaviour later
- Added @UserExWalkLimit trigger, fired if a user exceeds the Walk limit (is either lagging alot or speedhacking)
  RETURN 1 allows the user to walk, no action or RETURN 0 disallows the user to walk
  (note: this is pretty expensive because it's fired each time a step is taken while the user's walkbuffer is at 0, so be careful)

24-04-2004, Radiant
- Removed message from WEBLINK command
- Fixed .admin showing japanese text/crashing client with long character names (names are truncated to 30 chars)
- SERV.NEWDUPE and DUPE now sets NEW (and ACT? coded but not tested) for items only, duping chars doesn't work like it should yet
- DCLICK/USE on characters now takes an argument (uid), makes the character DCLICK a certain item/char
- CALL function is no longer case-sensitive
- Added arguments to dialogs, in this form: "DIALOG d_dlg 0 blabla", both  and  can be used.  is the page number
  (second argument)

25-04-2004, Radiant
- Added COMMANDLOG option in sphere.ini, only logs commands issued by this plevel and higher. (default = 0, log all)

29-04-2004, Balkon
- after some beta testing few fixes in equip and EF_WalkCheck
- added EVENTSPET to sphere.ini - events far all NPCs
- added EF_DiagonalLOSCheck (04000) - to see the object in diagonal direction we must be able to see the point at least 
  in one of ortogonal directions, this mean you can't see objects only through the "corner", this fixes teleport through
  fence NW corner and some other bugs but still allows, for example, closing doors which are in diagonal direction 
  to you when opened :) Setting this flag may incraise CPU usage.
- alternative name in TAG.NAME.ALT is now used everywhere if tag is set - in character status, corpse names, linked 
  memories etc. It overrides incognito name also. The real name is only accessable via NAME property.
  TAG.NAME.PREFIX now overrides fame prefixes (shown on click). TAG.NAME.PREFIX and TAG.NAME.SUFFIX are now can be combined

01-05-2004, Balkon
- fixed bug when closing dialog with targeting cursor up canceled targeting
- removed \r check from character profile packet - this allows to have a multiline profile and fixing wrong "Cheater" warnings
- fixed bug when players was able to buy any items from vendor even outside the stock (equipped on him. in his backpack etc.)
- vendor now will simply transfer items to character's backpack if they are stored in his "extras" box or if he is a player's 
  vendor (they was duped, you bought the copy and the old one deleted before). Shrinked pets will not be unshrinked when sold
  from player's vendor (or from extras box).

02-05-2004, Balkon
- EF_CanSeeLos_New is not longer used, all fixes affected by this EF are now included to the code by default.

03-05-2004, Socket (UNSP team)
- Started work on fullfeatured guild/town system. Added MEMBER property to guildstones. You shall use it this way:
  .member.X. These properties are available for read/write: ACCOUNTGOLD, LOYALTO, PRIV,
  SHOWABBREV, GUILDTITLE. Functions available: IsCandidate (returns 1 if member is a recruit), IsMember (1 if member),
  IsMaster (returns 1 if guildmaster). Also, MEMBER.X. construction points directly to character, so you
  could use something like MEMBER.X.NAME in your scripts. MEMBER.COUNT returns total number of guildmembers.
- ACCOUNTGOLD guild member's property is now saving to worldsave too.
- Added new GOLDRESERVE property to guildstone.
- Added new .COUNT function which returns a total amount of items in the container.
- Added new SERV.CLIENT.x reference. SERV.CLIENT.0. is a newest client and so on, for example 
  will return the name of last logged in client. Reference is READ-ONLY for safety. In this case you could save
  client uid somewhere and work with his using UID.. reference.

07-05-2004, Socket
- .COUNT now returns an amount of items only in selected container, without counting items in containers inside it.
- Added .FCOUNT function, which returns a TOTAL amount of items inside container.

11-05-2004, Balkon
- some fixes, @EquipTest now fired before all internal checks, before item unstacked from the pile, before item in same layer
  unequipped (this mean if you have return 1 there char will not unequip previews item)

16-05-2004, Balkon
- fixed @Dropon_char called when dropping item to any container on the char. Now it called only when you really drop the item
  on the character - directly on his head or on his backpack if you don't own him. ARGO now always points to character.

19-05-2004, Balkon
- fixed @color,font in MESSAGE and SYSMESSAGE, now it accept hexadecimal values, added 3-rd argument there - unicode flag, 
  new format is SYSMESSAGE @color,font,unicode text, added @color,font,unicode to SAY and broadcast either. Of course SAYUA,
  MESSAGEUA and SYSMESSAGEUA still can be used for this, but @color,font,unicode is accepted in default messages definition
  (sphere_msgs.scp), so now we can have default messages in unicode :)
- added OF_SkipUndefMsgs (0400) - if flag is set sphere don't send error strings for undefined default messages, 
  dont print errors on resync - just ignores it, so now we can disable some default messages if needed.
- SPEED wepaons property now used in fight delay calcilation if set (and not 0), the formula is 
  DELAY = 15000 / ( ( DEX +100 ) * SPEED )

20-05-2004, Balkon
- some optimization in hit messages (get only messages which really will be sent to client)
- added SPEEDSCALEFACTOR to INI (defaul value is 15000), used in weapon delay calcultions, now formula looks like
- ARGN1 in @HitTry now is the delay (in tenths of second) left before the hit, can be changed

21-05-2004. Balkon
- added FORCLIENTS and FORPLAYERS loops, difference is that FORPLAYERS will loop through disconnected players which are 
  still stay in the world (client linger) either.
- if no args specifiead for FORITEMS, FORCHARS, FOROBJS, FORCLIENTS, and FORPLAYERS loops value 18 is used by default 
  (maximum view distance)
- added FORCONTID and FORCONTTYPE loops, format is FORCONTID i_dagger max_sub_containers. If max_sub_containers is not 
  present it will search in all subcontainers. If max_sub_containers = 0 - it will search only in this container.
- added FORCHARLAYER layer - loop through all objects in specified layer
- added FORCHARMEMORYTYPE flags - loop through all memory objects with this flags

25-05-2004. Balkon
- fixed bug when after parsing quoted lines when setting VARs, TAGs and LOCALs didn't create text variables

27-05-2004, Socket
- Fixed guild MEMBER.X.KEY for read/write. Now it should be working well. Will return error if you try
  to access non-existant member (so it should be better to use MEMBER.COUNT to check bounds).

Valid XHTML 1.0 Transitional Valid CSS!