7820adf057
Generate entities in rooms at different locations
...
Prior to this change, entities in rooms would always be spawned on the
same tile.
2022-05-11 07:57:28 -07:00
c9b86271d3
Remove these two logging messages
...
They aren't serving a good purpose.
2022-05-11 07:55:47 -07:00
2762933c83
Configure logging with logging_config.json
...
See https://docs.python.org/3/library/logging.config.html for details on
the schema for this file.
2022-05-11 07:52:35 -07:00
8849a9de73
Allow 'hp' as a valid variable name
2022-05-11 07:50:35 -07:00
bc46856117
Every action needs an actor, even ExitAction
2022-05-08 23:45:20 -07:00
17bad9fd4d
Don't try to Melee entities that don't block movement
2022-05-08 23:43:33 -07:00
7d871e52a9
Copy the entities set into a list before iterating it so there's no risk of modifying the array while iterating
2022-05-08 23:43:08 -07:00
cef1ad25cb
Small cleanup of log statement
2022-05-08 23:42:36 -07:00
c0c8584f45
Implement is_adjacent_to and direction_to_adjacent_point on Point
2022-05-08 23:42:24 -07:00
2266511ec5
Implement attacking and reducing hit points
...
Attacks are computed with attack_power and defense. When an Actor dies,
a DieAction is produced and possibly also a DropItemAction.
2022-05-08 23:41:54 -07:00
aae1251660
Rename Action.entity -> Action.actor
2022-05-08 23:40:33 -07:00
b604ff30ec
Implement a basic AI for HostileMonster
...
This AI will walk randomly around the dungeon (pausing periodically) and
if the Hero comes into view, will b-line and attack
2022-05-08 23:38:48 -07:00
1f750a0c7c
Add an Item subclass of Entity for instances of items on the map
2022-05-08 23:37:31 -07:00
e8b2729353
Add blocks_movement to the Entity class
2022-05-08 23:36:56 -07:00
a13ef89832
Add an Item type class and a Corpse item type
2022-05-08 23:36:13 -07:00
021b82c93a
Add an Actor subclass of Entity
...
Make Hero and Monster subclasses of Actor
2022-05-08 23:35:47 -07:00
7653df1e3f
Add Action.success() and Action.failure() helper methods to produce results for straight success and failure
2022-05-08 23:34:09 -07:00
46e1a42060
Let Entity.ai produce its own Actions!
2022-05-08 10:03:28 -07:00
6bb5d819bf
Lots of comment and type documentation in object.py
2022-05-08 09:56:21 -07:00
e1562b2b2b
Add a Fighter component to the Hero
2022-05-08 09:55:56 -07:00
ee0e4b1dba
Instantiate Monsters with a HostileEnemy AI
2022-05-08 09:55:10 -07:00
550cde6a8f
Allow "ai" as a variable name
2022-05-08 09:54:24 -07:00
687511d69e
Add an ai attribute to Entity
2022-05-08 09:54:08 -07:00
49b48ec7a8
Add a HostileEnemy AI component
2022-05-08 09:48:22 -07:00
cf9ec2d17e
Move Monster to the object module
2022-05-08 09:48:05 -07:00
cf0b120fad
Add a Fighter component that tracks hit points, attack power, defense, etc
2022-05-08 09:46:32 -07:00
f5a8a55182
Add WaitAction to the class hierarchy
2022-05-08 08:55:08 -07:00
a9ebc38078
Update the Makefile to use .venv as the virtual env directory
2022-05-08 08:54:54 -07:00
4f7e477b24
Add a WaitAction and trigger it with .
2022-05-07 22:34:43 -07:00
85423e739c
Remove the shbang from map.py
2022-05-07 17:44:30 -07:00
eea49ed3c1
Resolve all the pylint warnings in geometry
2022-05-07 12:37:35 -07:00
427e7c8e84
Remove some unused imports
2022-05-07 12:28:02 -07:00
8b3c0137a5
Refactor event handling into EventHandler
...
Move all the event handling code from Engine to EventHandler. EventHandler has a
reference to Engine and can deal with entities from its methods.
Refactor Action to take an optional Entity in its initializer. Some actions
don't require an Entity, but many do/will.
2022-05-07 12:25:46 -07:00
d75c9faea3
Little bits of cleanup
2022-05-07 12:25:44 -07:00
15e188b9f2
Convert the keysym matching to match/case from if/elif
2022-05-07 11:57:08 -07:00
7b747fb4d3
Doc comments and stuff
2022-05-07 11:56:55 -07:00
54568d70c2
Add a sight_radius parameter to the Species dataclass
2022-05-07 11:43:02 -07:00
04aa61fe4b
Doc strings and import reordering per pylint
2022-05-07 11:42:48 -07:00
d0a2e2c2ef
Clean up imports and terminal newlines in files according to pylint
2022-05-07 11:22:54 -07:00
372cd5f295
Generate a .pylintrc and tweak it slightly for this project
2022-05-07 11:20:57 -07:00
3510bab79a
Document return value of MapGenerator.generate
2022-05-07 11:20:41 -07:00
4002b64640
Attack!!!
...
Refactor MovePlayerAction into a few different Action subclasses. Move direction
to a parent MoveAction, and create three new subclasses of MoveAction:
- BumpAction: perform the test that an action can be performed in the given direction
- WalkAction, take a step in the given direction
- MeleeAction, attack another Entity in the given direction
Add an ActionResult class that communicates the result of performing an Action.
- ActionResult.succeeded indicates whether the action succeeded.
- ActionResult.done indicates if the action is fully complete or requires followup.
- ActionResult.alternate specifies the follow-up action to perform.
Convert all the key handling actions to BumpActions.
In the Engine's event handler method, loop until an action is completed,
performing specified alternate actions until the result object indicates the
action is done.
2022-05-07 11:16:17 -07:00
57bbb2c3fc
Some more fixes from the linter
2022-05-07 09:57:39 -07:00
7720bc525a
Address some linter issues; add doc strings
...
- Clean up some import ordering
- Write some Numpy style doc strings for classes and functions
2022-05-07 08:55:10 -07:00
f3d5e273db
Remove this unimplemented method
2022-05-07 08:54:46 -07:00
16b4b64099
Clean up the logging; use % formats instead of f-strings
2022-05-07 08:53:58 -07:00
a1c1609908
Enable linting
2022-05-07 08:51:55 -07:00
ded318e659
Reorganize the package
...
- Create an __init__.py, which makes this directory a Python package.
- Replace the contents of __main__.py with the contents of main.py
2022-05-07 08:51:44 -07:00
d99c97408c
Generate orcs and trolls randomly throughout the dungeon
2022-05-06 21:16:39 -07:00
08b1841bdf
Add monsters module and define Species, Monster, Orc, and Troll
2022-05-06 21:16:19 -07:00