* server/Account.cpp: Don't give names to items in the default
inventory.
* rulesets/mason/world/objects/buildings/House3.py: Don't give
names to the invisible wall objects.
* 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/Python_API.cpp: Remove the server_python flag used to
allow scripts to run unmodified on the obsolete python prototype.
* rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/animal/herd.py,
rulesets/basic/mind/goals/common/common.py,
rulesets/basic/mind/goals/common/move.py,
rulesets/mason/world/objects/buildings/House.py: Remove support
for running these scripts on the obsolete python prototype.
* server/CorePropertyManager.cpp: Add a new active property handler,
that schedules the destruction of an entity after a timeout.
* data/mason.xml: Add biomass and transient properties to Acorn,
making most of the script obsolete.
* rulesets/mason/world/objects/plants/seeds/Acorn.py: Remove handlers
for eating and handling decay from the script, now that this
functionality is taken by properties.
* rulesets/mason/world/objects/outdoor/Gravestone.py, data/mason.xml:
Remove the multiple gravestone classes, in favor of using style
to differentiate between them.
* rulesets/mason/define_world.py: Use the new styled gravestone
class, and also use style to add variety to the fir trees.
* rulesets/mason/world/tasks/Logging.py: Implement logging entirely
in the task, instead of relying on functionality in the plant
class.
* rulesets/Py_Quaternion.cpp: Implement rotation method as in the
the wfmath class, as required for Logging.
* rulesets/Plant.cpp: Add an error message if the old plant
functionality gets called.
* rulesets/basic/world/objects/tools/Axe.py: Add an error message
noting that this method should not be called.
* FIXME: Clearly mark the fixed ones.
* data/mason.xml: Put a nice enormous huge bbox so its always
visible. Make the box non-solid for collision purposes.
* rulesets/mason/world/objects/Weather.py: Make rain shorter on
average, and make the ammount of rain more variable.
* 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.
* rulesets/mason/mind/SkelMind.py: Remove constructor, and
add Setup operation handler so that skeleton can see again.
* rulesets/mason/world/objects/Weather.py: Remove unnecessary
constructor.
* rulesets/basic/world/objects/Thing.py: Remove self.attributes
from the base class for all python scripts.
* rulesets/mason/world/objects/Weather.py,
rulesets/basic/world/objects/plants/Tree.py,
rulesets/basic/world/objects/animals/Animal.py,
data/basic.xml, data/mason.xml: Don't use set_kw to handle default
attributes, and add the to the .xml rules files.
* rulesets/basic/world/objects/buildings/House.py,
rulesets/basic/world/objects/buildings/StoneHouse.py,
rulesets/basic/world/objects/tools/Bow.py,
rulesets/basic/world/objects/tools/Sword.py,
rulesets/mason/world/objects/animals/Deer.py,
rulesets/mason/world/objects/animals/Pig.py,
rulesets/mason/world/objects/outdoor/Campfire.py,
rulesets/mason/world/objects/outdoor/Gravestone.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,
rulesets/mason/world/objects/tools/Cleaver.py,
rulesets/mason/world/objects/undead/Skeleton.py,
rulesets/werewolf/world/objects/characters/Villager.py,
rulesets/werewolf/world/objects/tools/Gallows.py:
Don't import set_kw from misc, as its now obsolete and unused.
* rulesets/Character.cpp: Report a warning when action ops are sent
from client or mind code.
* rulesets/Py_Location.cpp: Allow invalid vectors to be used
to set attributes on Location.
* rulesets/acorn/world/objects/undead/Skeleton.py,
rulesets/mason/world/objects/undead/Skeleton.py: Remove action
ops replacing them with setting MODE of skeleton to
collapsed.
* rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/common/misc_goal.py: Use Imaginary ops
rather than Action for emotes.
* rulesets/Py_Operation.h, rulesets/Py_Operation.cpp: Remove reference
ownership flag, and from and to pointers from the python operation
structure.
* rulesets/Py_Map.cpp, rulesets/Py_Oplist.cpp,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Python_API.cpp: Remove all usage of own, from and to.
* rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/humanoid/mason.py,
rulesets/basic/mind/goals/humanoid/transaction.py,
rulesets/mason/world/objects/clothing/Garment.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/tools/Bucksaw.py,
rulesets/mason/world/objects/tools/Cleaver.py,
rulesets/mason/world/objects/tools/Trowel.py: Modify all scripts
so they expect from and to of ops to be an ID string rather than
an entity.
* rulesets/basic/mind/goals/common/common.py,
rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/common/move.py,
rulesets/basic/mind/goals/humanoid/build_home.py,
rulesets/basic/world/probability.py,
rulesets/basic/world/objects/plants/Tree.py,
rulesets/mason/define_world.py, rulesets/mason/mind/SkelMind.py,
rulesets/mason/world/objects/Weather.py,
rulesets/mason/world/objects/animals/Deer.py,
rulesets/mason/world/objects/animals/Pig.py,
rulesets/mason/world/objects/outdoor/Gravestone.py,
rulesets/mason/world/objects/plants/seeds/Seed.py,
rulesets/mason/world/objects/undead/Skeleton.py,
rulesets/werewolf/define_world.py:
Switch to importing random and fall back to deprecated whrandom
on older python versions.
* rulesets/mason/world/objects/plants/seeds/Acorn.py:
When an oak is created from seed, make its mass the same as the
acorn's mass, and hack its bbox to the apropriate size.
* 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.
* data/mason.xml: Connected gravestones to Gravestone.py script.
* rulesets/mason/world/objects/outdoor/Gravestone.py: added response to a dig operation, which will create a random skeleton piece. This will allow the wholesome pastime of grave robbing.
* data/mason.xml, rulesets/mason/world/objects/tools/Bucksaw.py:
New bucksaw for cutting up logs.
* rulesets/mason/world/objects/tools/Trowel.py: Correct the comments.
* data/basic.xml, data/mason.xml: Add objtype to all rules.
Add a rule for ignite operation definition.
* common/custom.cpp: Remove hardcoded ignite operation definition.
* server/EntityFactory.cpp, server/EntityFactory.h: Remove some debug
output. Add new code to allow op_definitions to be installed as
rules.
* common/inheritance.cpp, common/inheritance.h: Return an error code
when a type without parents gets installed, rather than throwing an
exception.
* tests/inheritancetest.cpp: Fix test so it no longer expects an
exception.
* rulesets/mason/world/objects/clothing/Garment.py: Remove some
debug output.
* tools/AdminClient.cpp: Remove hardcoded objtype, depending instead
on objtype from the data file. Fix a bug where the full rule
was not getting uploaded when updating an existing rule.
Improve error reporting when update fails.
* data/mason.xml, rulesets/mason/world/objects/clothing/Garment.py:
Add experimental garment entity for changing the characters
appearance.
* common/custom.cpp: Add wear operation for use with garments.
* rulesets/mason/world/objects/tools/Rope.py: Correct the syntax
of stub functions.
* rulesets/basic/world/objects/buildings/StoneHouse.py: Fix the import
statements.
* rulesets/basic/world/objects/buildings/House.py: Fix import for
physics module.
* rulesets/basic/mind/goals/common/misc_goal.py: Fix typo in
cut_something.
* server/ScriptFactory.cpp, server/ScriptFactory.h: New factory
class for handling python scripts for entities much more
efficiently, and provide a means where they can be re-imorted
at an apropriate time.
* server/PersistantThingFactory.h,
server/PersistantThingFactory.cpp: Make PersistantThingFactory
copy constructor protected, to ensure its not used accidentally.
Replace strings for storing python script data with a pointer
to a factory for creating scripts.
* server/EntityFactory.cpp: Use the new ScriptFactory mechnism
for creating scripts attached to entities. Improve variable
names a little.
* tools/AdminClient.cpp, tools/AdminClient.h, tools/cyaddrules.cpp:
New tool to load new rules into a running server.
* data/mason.xml, rulesets/mason/world/objects/tools/Rope.py:
Experimental type for a rope.
* man/cyclient.sgml, man/cycmd.sgml, man/cyphesis-tools.sgml,
man/cyphesis.sgml: Add SEE ALSO sections to the man pages.
* rulesets/Python_API.cpp: Clean up variable names.
* server/Admin.cpp: Send an info response when types are
installed from the client.
* tools/cyloadrules.cpp: Correct copyright dates.
* rulesets/mason/world/objects/tools/Trowel.py, data/mason.xml:
Add a rule for a trowel for planting seeds. Add a rule for spider
model.
* common/custom.cpp: Add custom ops for "sow" and "germinate" for
handling seeds.
* data/mason.xml: Type for bundles of grass.
* rulesets/World.cpp: Implement resource gathering for all the
currently supported resource types.
* rulesets/basic/world/objects/Pile.py: Fix so Pile inherits from
Thing correctly.
* common/Dig.h, common/Mow.h, common/custom.cpp, common/operations.cpp:
Add new Dig and Mow operations, for handling resource gathering.
* rulesets/basic/world/objects/tools/Shovel.py,
rulesets/basic/world/objects/tools/Scythe.py,
data/basic.xml: Add new scythe and shovel for gathering resources
from the terrain.
* rulesets/basic/world/objects/tools/Pickaxe.py,
common/Delve.h: Fix the comments.
* rulesets/World.cpp, rulesets/World.h: Move code for determining
terrain surface type into a method of its own. Implement handlers
for Dig and Mow ops.