* data/mason.xml: Add a new rule for fish.
* rulesets/mason/define_world.py: Add a shoal of fish to the lake.
* common/custom.cpp, rulesets/Character.cpp,
rulesets/basic/mind/NPCMind.py: Use Unseen operation to notify
minds when they attempt to interactive with something that
they can't iteract with, either because its outside their
area of perception, or because its been deleted.
* rulesets/Python_API.cpp: Re-write the code for extracting operation
subscriptions from python classes so its now more efficient and
picks up methods from base classes.
* rulesets/basic/mind/BaseMind.py, rulesets/basic/mind/NPCMind.py,
rulesets/basic/world/objects/Thing.py: Rename some methods
which have match the signature of operation handlers.
* 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.
* rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/humanoid/construction.py:
Make sure Use arguments explicitly have an objtype in the
argument.
* 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.
* 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.
* data/werewolf.xml,
rulesets/mason/world/objects/plants/seeds/Apple.py,
rulesets/werewolf/world/objects/characters/Villager.py,
rulesets/werewolf/world/objects/tools/Gallows.py:
Remove some more obsolete constructors.
* 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/mason/world/objects/tools/Cleaver.py,
rulesets/mason/world/objects/animals/Deer.py,
rulesets/basic/world/objects/tools/Axe.py:
Remove obsolete commented out code, and useless constructors
from some scripts.
* data/mason.xml: Remove obsolete scripts for some entities
which don't do anything.
* rulesets/mason/define_world.py: Use know() for prices rather
than the special case code.
* rulesets/basic/editor.py, rulesets/basic/mind/NPCMind.py:
Remove obsolete special case code for handling knowledge of
prices. Improve code to express distance to a location so
it neglects the vertical distance, and better handles the
very close case.
* rulesets/basic/mind/goals/humanoid/mason.py: Track the character
being helped in the help goal, and turn to face them when speaking.
* rulesets/basic/mind/panlingua/interlinguish.py: Add more support
for pronouns, conjugations and whitespace in regex used to match
certain sentence structures.
* rulesets/Py_Vector3D.cpp: Add print handler for Vector3D, which
doesn't seem to work yet.
* rulesets/basic/mind/panlingua/interlinguish.py: Add tell verb.
Modify regexs for simple sentences so they tolerate more
variation in the structure.
* rulesets/basic/mind/compass.py: New function to convert direction
vector into a compass direction string.
* rulesets/basic/mind/NPCMind.py: Add handler for tell verb, to
query knowledge from NPCs.
* rulesets/basic/mind/goals/common/move.py: Don't try and move to
destination when displacement is pure vertical.
This stops the pig merchant from walking on the spot.
* rulesets/Py_Vector3D.cpp: Allow setting of Vector3D attributes
x y and z.
* rulesets/Python_API.cpp: Fix bug in calculating orientation
Quaternion for rotation between two unit vectors.
* rulesets/basic/mind/NPCMind.py: Implement a method which calculates
the orientation required to face another entity. Use it to face
a character which wants to buy something.
* rulesets/mason/define_world.py: Tweak orientation of pig merchant
so he doesn't end up upside down.
* server/Makefile.am: Remove cyslave from the build for now, as its
not functional.
* rulesets/basic/mind/panlingua/interlinguish.py: Added new noun for
deed.
* data/mason.xml, rulesets/mason/define_world.py: Added new marshall
character who handles asigning land to settlers for housing.
* rulesets/mason/define_world.py,
rulesets/basic/mind/goals/humanoid/mason.py: Add suggested responses
to talk messages from NPCs. Helps the client make it easy
for the user to respond.
* rulesets/Python_API.cpp: Clear up the logging wrappers.
Add python wrapper for squareDistance which is more efficient
in the goal code that distanceTo. Remove some old python functions
which serve no purpose. Move distanceTo and squareDistance into
their own module.
* rulesets/basic/mind/NPCMind.py: Remove obsolete import.
* rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/common/move.py,
rulesets/basic/mind/goals/humanoid/construction.py: Use the new
physics.square_distance where linear distance is required
in goals.
* rulesets/basic/mind/Knowledge.py: Fix nasty problem caused because
the default arguments to constructor meant that all knowledge
was shared between all entities, causing invalid pointers in
the wrong places.
* rulesets/MemMap.h: Add const to find method, as it should be.
* rulesets/Character.cpp, rulesets/Plant.cpp: Encapsulate the
debugging output relating to tool use into the debug macro, so it
is no longer printed.
* rulesets/basic/mind/goals/common/move.py: Re-write a couple
of movement goals so they work more reliably.
* rulesets/basic/mind/goals/humanoid/construction.py: Comment out
debugging output.
* rulesets/mason/define_world.py: More additions to NPC settler test.
* rulesets/basic/mind/goals/common/move.py:
Try and make some of the move goals a bit more legible.
* rulesets/basic/mind/goals/humanoid/construction.py:
Fix a bunch of bugs in the resource gathering goals.
These now basically work.
* rulesets/mason/define_world.py: Add knowledge of a test location
to the settler NPC testing code.
* rulesets/basic/mind/goals/humanoid/construction.py: New currently
non-functional goals for construction related tasks.
* rulesets/mason/define_world.py: Add new test for construction
goals.
* rulesets/acorn/mind/PigMind.py,
rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/common/move.py,
rulesets/mason/define_world.py,
rulesets/mason/mind/PigMind.py: Re-write all code that uses
get_xyz() to use the code for calculating relative distance
vector.
* cyphesis.spec.in: Ensure rpm spec correctly obsoletes the old
mason and service rpms.
* modules/Location.cpp: Get rid of accidentally commited change
that screws up orientation.
* rulesets/Character.cpp: Provide more info about ops which
have TO set incorrectly.
* rulesets/MemMap.cpp: Don't set TO on look ops from memory.
* rulesets/basic/mind/NPCMind.py: Don't set TO on tick ops
from the mind.
* rulesets/Character.cpp: Add notes, and a check to ensure that
ops from the mind don't have TO set.
* rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/common/misc_goal.py,
rulesets/basic/mind/goals/humanoid/mason.py: Don't set TO or FROM
on goals from the mind.
* 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.
* rulesets/basic/mind/goals/common/misc_goal.py: Clarify logic
in get_knowledge().
* rulesets/mason/define_world.py: Make the butcher work all day for
now. Give all the warriors arrows. Add a test function for the
deer.
* rulesets/werewolf/world/objects/tools/Gallows.py: Make sure
Point3D module is imported.
* rulesets/basic/mind/goals/humanoid/transaction.py: Fix a couple
of bugs with pig seller code.
* rulesets/werewolf/world/objects/tools/Gallows.py,
rulesets/basic/world/objects/tools/Bow.py,
rulesets/basic/world/objects/plants/Tree.py,
rulesets/basic/world/objects/buildings/House.py,
rulesets/basic/mind/goals/humanoid/transaction.py,
rulesets/basic/mind/goals/common/misc_goal.py:
Fix bugs initialising Location ensuring the second
arg is a Point3D, not a Vector3D for position.
Fixes pig purchasing.
* rulesets/basic/mind/goals/humanoid/mason.py:
Fix the velocity check for escaping pigs.
* rulesets/Py_Point3D.cpp: Fix Point3D subtraction operator to
allow subtraction of both Point and Vector. Fixes pig merchant
goal for keeping pigs.
* server/WorldRouter.cpp: Add a note to check the code.
* rulesets/basic/mind/goals/humanoid/transaction.py: Remove debug
output.
* rulesets/basic/mind/goals/common/move.py: New goal to accompany
another person.
* rulesets/basic/mind/goals/common/misc_goal.py: Use new accompany
goal for hirelings.
* rulesets/Python_API.cpp: Fix distance_to arg checking error
message.
* rulesets/Py_Vector3D.cpp: Add square magnitude and distance checking
methods.
* modules/Location.cpp, modules/Location.h: Add new function for
usefully calculating the distance vector of another entity.
* tests/distancetest.cpp: Update test to check new distance
function.
* rulesets/Python_API.cpp: Make the new distance vector function
available to python rather than the relative postion function.
* rulesets/basic/mind/Knowledge.py, rulesets/basic/mind/NPCMind.py:
Ensure that Knowledge really does handle arbitrary triples.
* rulesets/basic/mind/goals/common/misc_goal.py: Add new version
of transaction goal for transactions for hirelings.
* rulesets/basic/mind/goals/humanoid/transaction.py: Complete
the implementation of the trigger goal for hirelings.
* rulesets/mason/define_world.py: Move the mercenaries closer to
origin for debugging.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp, rulesets/MemMap.h,
rulesets/Py_Map.cpp: Modify python API so it passes in time
to map.update and map.get. Use time elapsed to decide if something
is ready for removal. Newly created entities are now less likely
to get removed before they are verified.
* rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/goals/humanoid/mason.py,
rulesets/acorn/mind/SkelMind.py, rulesets/mason/mind/SkelMind.py:
Update python code to new API.
* 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.
* rulesets/basic/mind/NPCMind.py, rulesets/BaseMind.cpp,
modules/WorldTime.h: WorldTime now handles time in
integer seconds.
* rulesets/Python_API.cpp: Handle all variations of args with one
call to PyArg_ParseTuple as multiple calls are not
allowed.
* rulesets/World.cpp, rulesets/World.h: Add accessor to get height
at a particular point.
* server/Account.cpp: Remove redundant check on new character
location.
* common/BaseWorld.h, server/WorldRouter.cpp, server/WorldRouter.h,
rulesets/Thing.cpp: Add new function for correcting height
of entities to ground level, and use it whenever new entities
are created, or whenever an entity moves.
* rulesets/Python_API.cpp: Clean up use of standard error to go
via the log subsystem.
* rulesets/basic/editor.py, rulesets/basic/mind/NPCMind.py,
rulesets/basic/mind/panlingua/interlinguish.py,
rulesets/mason/define_world.py:
Expand handling of the verb "know" so that knowledge
is a triple, including predicate, so that know can be used
to inform a character of any knowledge. Generalise the client
code, and tweak the client data to include the right information.
* mason.xml: Add new rule for mercenaries.
* rulesets/basic/mind/goals/humanoid/transaction.py: Add new
dynamic goal for NPCs offering their services for hire.
* rulesets/basic/mind/panlingua/interlinguish.py:
Add new words related to hirable NPCs
* rulesets/mason/define_world.py: Start programming up warriors
to be hirable.
* rulesets/BaseMind.cpp: Re-order the way ops are handled to avoid
re-adding deleted entities to memory.
* Fix greet goals so it works more immediatly.
* Add a quick client function for populating the world with a minimal
test case for AI memory.