* data/basic.xml, data/characters.xml, data/mason.xml: Add tick
properties to a bunch of entity classes so they no longer need
a setup operation to get them going.
* rulesets/mason/world/objects/Weather.py,
rulesets/mason/world/objects/elements/Fire.py,
rulesets/mason/world/objects/plants/seeds/Apple.py: Remove setup
handlers from a bunch of scripts as it is now handled by
properties.
* data/buildings.xml: Add setup property to entity classes which
really need a setup op at startup.
* client/BaseClient.cpp: Send a look when creating the avatar, so
that notifications get back without the need for a special case.
* common/op_switch.h, rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/Entity.h, server/WorldRouter.cpp:
Remove the setup operation sent to all entities on startup by
default. Get rid of some special cases that depended on it.
* rulesets/InternalProperties.cpp, rulesets/InternalProperties.h:
Make the tick property schedule the operation on apply(), and
use the property value as the time to schedule it.
* rulesets/Thing.h, rulesets/Thing.cpp, rulesets/Plant.h,
rulesets/Plant.cpp: Remove SetupOperation from Thing
and implement in Plant, as not all entities need a starting
tick, but plants do.
* rulesets/basic/world/objects/elements/Fire.py,
rulesets/mason/world/objects/Weather.py: Add setup_operation
handlers as these scripts require ticks.
* data/basic.xml: Added operations "disperse" and "extinguish".
Set up "disperse" as the default operation for the pile.
* rulesets/basic/world/objects/Pile.py: The operation "disperse"
will call the "extinguish" operation on the target. Maybe it is
advisable to add an assertion if the target is indeed a fire.
* server/WorldRouter.cpp: Fix a problem where entities contained by
other entities had their height adjusted incorrectly.
* rulesets/basic/world/objects/elements/Fire.py: Allow fires to be
moved.
* rulesets/Python_API.cpp: Add constructor for BBox.
* data/mason.xml: Add a torch. Add burn_speed attributes to a
bunch more entity classes.
* rulesets/mason/world/objects/tools/Torch.py: Script for torch.
* rulesets/mason/world/objects/tools/Tinderbox.py: Change strength
of initial fire spark to 0.05.
* common/operations.cpp: Fix nourish op, which got broken when mow
was added.
* data/basic.xml: Add a default bbox for lumber, giving it a more
apropriate size.
* rulesets/Py_World.cpp: Add a compare implementation so that
` scripts can check entities to see if they are the world.
* rulesets/basic/world/objects/elements/Fire.py: Tune the
changes which occur in fire as it burns.
* rulesets/Py_Operation.cpp, rulesets/Py_Optime.cpp,
rulesets/Py_Optime.h rulesets/Python_API.cpp:
Remove the Optime class from the API and force scripts to use
setFutureSeconds() to modify operation dispatch time.
* rulesets/acorn/world/objects/Weather.py,
rulesets/acorn/world/objects/plants/Tree.py,
rulesets/acorn/world/objects/plants/seeds/Acorn.py,
rulesets/acorn/world/objects/plants/seeds/Apple.py,
rulesets/acorn/world/objects/plants/seeds/Seed.py,
rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/common/move.py,
rulesets/basic/world/objects/animals/Animal.py,
rulesets/basic/world/objects/buildings/House.py,
rulesets/basic/world/objects/elements/Fire.py,
rulesets/basic/world/objects/plants/Tree.py,
rulesets/basic/world/objects/tools/Bow.py,
rulesets/mason/world/objects/Weather.py,
rulesets/mason/world/objects/plants/seeds/Acorn.py,
rulesets/mason/world/objects/plants/seeds/Apple.py,
rulesets/mason/world/objects/plants/seeds/Fircone.py,
rulesets/mason/world/objects/plants/seeds/Seed.py:
Fix up all the python scripts to use setFutureSeconds on
ops instead of time.sadd.
* server/WorldRouter.cpp: Clean up a special case for TO="all" on
ops, which we now disallow. Remove a verbose tests for NULL
pointers in the world dictionary and replace with a simple assert.
* server/Account.cpp, server/Connection.cpp: Get rid of
character existance check on login, as dead ones are now handled
using SigC signals.
* rulesets/Entity.h, rulesets/Entity.cpp, rulesets/Py_World.cpp:
Remove pointless deleted flag, as the only time its true is when
the object has been deleted, and accessing would cause a segfault.
* tools/cycmd.cpp, client/CommClient.h, client/CommClient.cpp: Fixed
up client code so it does not rely on username being the same as
account id.
* tools/cycmd.cpp: Added look and logout commands to administrate
users logged in.
* server/server.cpp: Fixed metaserver code so it only sends
termination packet if metaserver functionality is enabled.
* server/Connection.h, server/Connection.cpp, server/CommServer.cpp,
server/CommClient.h, server/Account.cpp: Fix logouts so they
do cause the client connection to be closed.
* Finished switch from Fire operation to Burn.
* rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Thing.cpp, rulesets/Food.cpp:
Renamed weight member as mass, and use this name in Atlas,
as this is a better convention, and has already been adopted in
stage.
* Switched python code to using mass instead of weight, as it is
a more accurate term.
* common/globals.cpp, common/globals.h, tools/cyloadrules.cpp:
Put admin modifiable config in etc instead of share directory.
* Don't build cycmd if readline is not available. Untested, and
probably nasty.
location object to python wrappers.
* rulesets/Character.cpp: Added initialisation of bounding box
median for characters.
* modules/DateTime.*: Added configurability to date so that
each period of time has definable number of divisions. Default
is as per real world calendar restricted to 30 day months.
* Added Fire operation handling to Thing class, so that any entity
with a burn_speed attribute will burn.
* Added Food C++ base class, which implements cooking.
* Altered the semantics of the Eat/Fire/Nourish operations so
multiple arguments are no longer required. from is used to
determine the other entity involved.
* Added the beginnings of an astronomy system, but not yet used
anywhere.
* Added appearance handling to BaseMind and Memory.
* Added sequence no to all entities, which is incremented each time
a move or set operation is received. sequence no "seq" is included
in args of Appearance operations.
* Moved functionality from Animal python base class into Character
C++ base class. This much improves the performance of modelling
animals, and means that player characters, and NPCs get hungry and
need to eat. Reduced the speed at which animals consume energy
so they don't starve quite as quickly.
* Added collision prediction functions that handle both entities
having velocity.
* Added combine functionality to Stackable. Divide comes next.
Once functional, this will become the base class for any items
which will commonly be used as stacks.
Al
leak now is copied Location objects in the python interface code.
* Added hook into the time code so the server can be set to exit
after a given number of seconds. This is required for LeakTracer
to generate its report.
Al
* Implemented python function to deal with not being able to check
type of python objects implemented in C.
* Added method to thing for extracting location data from a
Message::Object
* More work on python references to improve leakage.
* Added flag so that python Operation object can own
the operation they point to, and thus delete it in dealloc().
* Implemented find_by_location() and find_by_type() as required in
MemMap, and corresponding python interface.
* Put in temporary work around to deal with the fact that a mind
does not know its name. Currently the mind is not able to
discover any of its bodies attributes, and I am not sure how
to solve this.
* Fixed Location and Vector3D so they use operator bool() to detect
whether they are set.
* Fixed bugs in getting parent from Location in python which caused
segfaults.
* Imported all the basic ruleset entity python scripts.
Goals now work to some extent, though nothing moves around still. The main
priority is to work out how minds inherit the attributes of their
bodies, and keep them up to date. aloril?
Al