* 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.
* server/ScriptFactory.cpp: Simplify way the name of a class
is determined by removing the hack to upercase the type name.
* server/EntityFactory.cpp: Break python type name on the last
. making the name of the class independant of the Atlas type.
* data/basic.xml, data/buildings.xml, data/characters.xml,
data/clothing.xml, data/mason.xml, data/plants.xml,
data/tools.xml, data/weapons.xml, data/werewolf.xml: Modify all
python type names in the classes to include the name of the class
explicitly.
* data/food.xml, data/basic.xml, data/mason.xml: Move some food types
from basic and mason into their own file.
* data/construction.xml, data/basic.xml: Move a construction type from
basic into the right file.
* server/EntityFactory.cpp: Complete the code that populates
operations on a tool based on the task activations in the
ruleset, removing the need for world builders to synchronise
this data manually.
* data/basic.xml, data/mason.xml: Remove operations from all tools
that only use them for activating tasks, now that this is handled
automatically.
* data/basic.xml: Provide entirely data driven definitions for Cut
and Chop ops.
* common/Chop.h, common/Cut.h, common/Makefile.am, common/custom.cpp,
common/operations.cpp, common/types.h, tests/Makefile.am,
tests/Tasktest.cpp, tests/allOperations.h,
tests/inheritancetest.cpp: Remove the hard coded Cut and Chop op
definitions completely from the build.
* data/basic.xml: Strip entity scripts off pickaxe and shovel.
* rulesets/World.h, rulesets/World.cpp: Remove handlers used to
to implement pickaxe and shovel, which are now handled as tasks.
* common/Delve.h, common/Dig.h, common/Mow.h, common/custom.cpp,
common/operations.cpp: Remove a bunch of operations from the build
which were only used to do things in an over simple hard coded way.
* data/basic.xml: Remove the script for scythe as it is no longer
used.
* rulesets/World.cpp: Remove mow operation from World, as this is now
handled by a task.
* data/basic.xml: Remove the explicit class for butcher, and just use
the settler class. Character appearance should not be determined by
class.
* data/mason.xml: Add a new slaughter task class, work in progress.
* rulesets/mason/world/tasks/Slaughter.py: Incomplete script for
slaughter task.
* rulesets/mason/define_world.py: The butcher is now an instance of
settler.
* rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h: Add a new type of property
builder than can install multiple operation handlers.
* server/CorePropertyManager.cpp: Add a new active dynamic property
"biomass" for things which can be eaten, which handles the Eat
operation.
* rulesets/Food.cpp, rulesets/Food.h: Remove the old Eat operation
handler.
* data/basic.xml, data/mason.xml: Give all the food entity rules
some biomass.
* configure.ac: Check for dirent.h.
* common/AtlasFileLoader.cpp: Report duplicate IDs when loading rule
data.
* data/basic.xml: Remove obsolete old overriden rules, as we will
no longer be doing rules that way.
* server/EntityFactory.cpp: When loading rulesets directly from
files, also load all files in ruleset.d.
* rulesets/ActivePropertyFactory_impl.h: Correct the header guard
comments.
* rulesets/SolidProperty.cpp, rulesets/SolidProperty.h: New property
to handler whether an entities bbox is solid or not.
* rulesets/EntityPropertyFactory.cpp, rulesets/EntityPropertyFactory.h,
rulesets/EntityPropertyFactory_impl.h: New property factory
for properties the contructor of which takes an entity pointer of
the owning entity.
* server/CorePropertyManager.cpp: Install the SOLID property on demand.
* data/basic.xml: Make area entities non-solid by default, so you don't
collide with them.
* server/Account.cpp: Remove the hack that ensures players always
create a settler if they try and create a character that does not
exist. Handle setting initial attributes unique to player characters
here, rather than setting the defaults on the classes.
* data/mason.xml: Remove initialising status to a ery low value to
make settlers and goblins starve easily.
* data/basic.xml: Set the mass of a arrow to something sane.
* server/CorePropertyManager.cpp: Modify DECAYS Delete handler so
that the parent entity handles the creation of entities that
have resulted from the decay.
* rulesets/Character.cpp: Call Entity::operation() from operation()
to ensure operation handlers are called, and all future
modifications get picked up too.
* data/basic.xml, data/mason.xml: Add a DECAYS property leaving a
skull to all humanoid classes.
* FIXME, Makefile.am: Add new FIXME file which documents FIXMEs in
the code.
* server/EntityFactory.cpp: Remove the terrain feature classes
implemented as hard coded classes.
* data/basic.xml: Add the terrain feature classes as soft data
defined classes.
* data/basic.xml: Add "collapse" action op to trigger a defeated
animation.
* rulesets/mason/world/tasks/Combat.py: Prevent characters from
attacking characters that are exhausted. Send a sight of
collapse operation when combat finishes.
* 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.
* common/custom.cpp: Remove some operation types only used in
scrypts.
* data/basic.xml, data/mason.xml: Add the operation definitions
into the rule files.
* 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.
* 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/basic.xml, data/mason.xml, rulesets/mason/define_world.py:
Make sure entities with layers all use a different layer ID.
Make sure sty has area and bbox in the default attributes.
* 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.
* tools/Formatter.cpp: Change the way lists are formatted to
to be cleaner, and match the way existing rules are stored.
* data/mason.xml, data/basic.xml: Make sure maps are all in
alphabetical order, so these files are the same as their machine
generated versions.
* 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.
* common/custom.cpp, common/Delve.h,
common/operations.cpp, common/operations.h:
Add new delve operation for digging with a pickaxe.
* data/basic.xml, rulesets/basic/world/objects/tools/Pickaxe.py:
Add new pickaxe entity which emits a Delve operation when
used.
* rulesets/Character.cpp: Fix a bug where a segfault occured
if an operation was requested by a tool that was unknown to
to the core server code. Instead an error message is emitted.
* rulesets/World.cpp: Subscribe world terrain to delve ops.
* data/basic.xml: Clean out a load of obsolete classes and scripts.
* 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/plants/seeds/Seed.py,
rulesets/mason/world/objects/undead/Skeleton.py:
Remove obsolete constructors, and don't inherit from
obsolete scripts.
* rulesets/Plant.h, rulesets/Plant.cpp: Add handler for chop so
we can chop down vegetation.
* rulesets/basic/world/objects/tools/Axe.py: Modify Axe to comply
with new tool use mechanism.
* rulesets/basic/mind/goals/humanoid/transaction.py,
rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/mason/define_world.py: Update butcher goals to use tool
use mechanism.
* rulesets/Python_API.cpp: Ensure entities created from Python
have an objtype.
* common/Database.cpp, common/Database.h: Add capability to specify
extra columns in generic Atlas database tables. Query the results
columns more robustly. Add a ruleset name column to the rules
table.
* server/EntityFactory.cpp: Re-write rule loader to handle new
format rules. Tighten up strictness of rule data. It is no
longer possible to specify defaults for location in the rule.
* tools/cyconvertrules.cpp: Ensure that the playable flag is
copied across when converting rules.
* tools/cyloadrules.cpp: Adapt to load the new format rules,
including handling the ruleset name column.