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