* 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.
* server/Admin.cpp: Cleaned up an unimplemented feature, and added it
to the TODO.
* server/Account.h, server/Account.cpp: Removed unused obsolete code for
checking character types.
* rulesets/Python_API.cpp: Add new globals module to python API which exposes
core settings to the python scripts.
* rulesets/basic/hooks/ruleset_import_hooks.py: Abolish autogeneration of
this file using new globals module in the python API.
* configure.in, cyphesis-config.in: Expose conf and data dirs.
* tools/cyphesis-setup: New script to set the server up.
* tools/cyconfig.cpp: New tool to make persistant changes to the server config.
* physics/BBox.h: Fixed farPoint() so it now does return the far
point, rather than the near point.
* modules/Location.h, rulesets/Python_API.cpp: Handle NULL parent
in location.
* NPC script bug fixes.
* rulesets/PythonMindScript.cpp: Increase verbosity of reported
python script errors.
* rulesets/basic/mind/goals/animal/herd.py: Fix typo which meant
mind code was not working.
* Added various nifty bits of mason behavoir.
* rulesets/Py_Operation.cpp: Always return an error, if the script
does something invalid with the python API.
* rulesets/BaseMind.cpp: Implement operation triggers in
the mind scripts.
* Document some bugs, bring TODO up to date, and bump up version
to 0.1.92.
* common/globals.cpp: Only persist this sessions command line
options if the user is overriding the installation directory.
* cyphesis.vconf, client/Py_CreatorClient.cpp,
client/Py_CreatorClient.h, client/client.cpp:
Add client functionality to allow diferent scripts to be run to
perform different functions on the server.
* client/CharacterClient.cpp: Add debug option.
* rulesets/Character.h: Make mind operation functions virtual,
so they can be overridden.
* common/BaseWorld.h, server/WorldRouter.cpp,
server/WorldRouter.h: Add server functions to search for
entities by name or type.
* rulesets/Creator.h, rulesets/Creator.cpp: Allow creator to
specify a look without an id to search for entities with
a given name or type.
* client/CreatorClient.cpp, client/CreatorClient.h,
client/ObserverClient.cpp, client/ObserverClient.h,
client/Py_CreatorClient.cpp, rulesets/basic/editor.py,
rulesets/mason/define_world.py:
Add support for looking for entities in the world by name or
type from client script, so client scripts can modify existing
world.
* rulesets/Entity.cpp, rulesets/Movement.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Oplist.cpp, rulesets/Python_API.cpp,
rulesets/Stackable.cpp, rulesets/Thing.cpp,
rulesets/World.cpp, server/Account.cpp,
server/CommServer.cpp, server/Connection.cpp,
server/Player.cpp, server/ServerRouting.cpp,
server/server.cpp, tools/cycmd.cpp,
tools/cywatchdog.cpp: Code formatting cleanups.
* rulesets/basic/world/objects/tools/Bow.py: Fix up bow so it now
fires correctly.
* 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.
* client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, rulesets/basic/editor.py: Add
features to allow query and manipulation of the world from
the client.
* rulesets/mason/define_world.py: Give the world a name.
* Write rpm spec dividing stuff up into server package, lib
packages, and game packages. Clean up configure, and use autoconf
to process ruleset_import_hooks.py.
* 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.
* TODO: Update on important issues which allow easy DOS attacks.
* client/ClientConnection.cpp, client/ClientConnection.h:
Cleaned up unused code from ClientConnection class.
* client/client.cpp: Removed monitoring section of client
so it simply exits once the world is initialised.
* rulesets/basic/mind/goals/humanoid/werewolf.py:
Started work on dynamic goals for playing werewolf.
* rulesets/werewolf/define_world.py: Added in the mayor, who runs
werewolf games.
* common/BaseEntity.h: Made id of entity private, and implemented
accessors.
Al Riddoch <alriddoch@zepler.org>
* client/CreatorClient.cpp: Fixed processing the response
to a create operation, and cleaned up debugging output.
* client/ObjserverClient.cpp, client/ObserverClient.h,
client/client.cpp: Added setup method, which which handles
connecting, negotiation, logging in and creating character.
* client/Py_CreatorClient.cpp: Added check if make() failed.
* rulesets/Python_API.cpp: Fixed setting the import hooks
list properlly to include the ruleset list in use, instead
of hardcoding it.
* rulesets/acorn/define_world.py: Copied define_world.py script
from client directory for Acorn.
* rulesets/basic/editor.py: Modified to be used from C++ core.
* rulesets/basic/mind/goals/__init__.py,
rulesets/basic/mind/goals/humanoid/werewolf.py:
Added in goals file to contain goals related to werewolf.
* rulesets/basic/mind/panlingua/interlinguish.py:
Added in vote and execute verbs for werewolf.
* rulesets/werewolf: Added in new ruleset for werewolf.
Al Riddoch <alriddoch@zepler.org>
objects.
* modules/Location.cpp: Added bounding median to attributes sent
using Atlas.
* common/BaseEntity.cpp: Always set the id on an entity.
Al Riddoch <alriddoch@zepler.org>
* client/define_world.py: Add in market traders to run all the
stalls in the market.
* common/persistance.cpp: Set default admin password to something
a bit more difficult to guess.
* rulesets/basic/mind/goals/common/misc_goal.py:
Fixed run_shop() goal, so NPCs now open and close their market
stall.
* agrilan*.xml: These really are the final versions for Acorn 0.4
Al Riddoch <alriddoch@zepler.org>
for querying lobby, then disabled it as it seems to hang uclient.
* rulesets/basic/mind/panlingua/interlinguish.py,
rulesets/basic/mind/goals/common/misc_goal.py,
client/mind/panlingua/interlinguish.py: Added goal to
maintain opening and closing market stalls, and goal for having
a meal.
* rulesets/basic/mind/goals/common/move.py: Fixed assemble goal
meaning lych now works again.
* rulesets/basic/mind/Memory.py: Adapted query for location of
entity so that it accepts lists of possible types.
* rulesets/Character.cpp: Enabled creating items by NPCs.
* client/define_world.py: Updated NPC behavoir.
Al Riddoch <alriddoch@zepler.org>