- React to things like vomit, etc
- Tint ground where liquid is spilled
- Draw item backgrounds
- If no line of sight, can the player hear an action?
- Multiple ways for dogs to attack
- ALife should figure out when they can't outrun someone
- Extended cave generation (old bridges, rooms, etc).
- Random quests
- Tricky ALife
- Audio
- Accept unfinished A* paths
- ALife should flee at some point during combat
- Need animal class
- Need "tilling" task for farming
- Relationships (would probably get rid of life.owner)
- Relationship flags: Likes pets
- Save var.id
- ALife still occasionally teleports due to pathing errors.
- ALife continues to calculate paths that broke in the past.
- ALife adds broken paths to cache to prevent freezes.
- ALife sometimes spawns in walls
- Crash on line 179 of pathfinding.py.
- Roomgen can lead to impossible levels.
- Walls should be destroyable, either with a pickaxe or something else.
- Didn't document a lot of the work done in the past few days
- Lakes/ponds
- Naming lakes/ponds
- Bridges to buildings built on water
- levelgen.add_landmark()
- levelgen.is_landmark()
- levelgen.find_landmarks()
- levelgen.flood_fill()
- Fixed ALife locking up after combat
- Still working on combat...
- Pain
- Passing out
- Limbs track who damaged them last
- More combat changes
- Bleeding out
- Blood splatter
- Severed limbs, movement penalties
- life.get_max_speed()
- Removing combat from life.py and placing it in combat.py
- Working on combat
- Less messages during combat
- Dogs now attack
- levelgen.house - House generation
- chests no longer solid
- Fixed iteration over non-sequence bug in life.build_relationship_with()
- pathfinding.py is now using numpy
- Fixed memory leak in pathfinding.py
- Optimized most functions in levelgen.py
- Fixed farming
- Scrolling
- -font flag
- -small flag
- Sped up levelgen.get_real_estate()
- Scrolling
- Trees
- Fixed logo
- Combat overhauled
- Added limbs
- ALife will fight each other
- life.throw_item()
- life.get_items()
- life.get_items_ext()
- Getting rid of a bunch of helper functions
- levegen.get_all_items_in_building_tagged()
- Blacksmiths now sell what they forge
- Upgraded libtcod
- Caves work with libtcod
- Added forging task
- life.get_done_forges()
- life.get_open_forges()
- Tilled tiles now refresh
- life.build_history()
- Added more detail to histories
- Announces
- life.destroy_item()
- life.get_past_event()
- life.announce()
- life.receive_announce()
- life.get_farm_speed()
- Fixed error in farming task that caused ALife to freeze in stores out of the item they need
- Fixed logic in pathfinding.getadj() that caused negative x,y positions to pass the check
- Added Pygame output flag (-pygame)
- Added libtcod output (default)
- Increased level size a bit
- levelgen.town()
- Buildings are now placed in an orderly fashion
- Bought carrots not longer grow in storage
- functions.get_item_name()
- ALife is more vocal when interacting with items
- Added more phrases
- Added dislikes
- ALife now drinks
- Bartender now serves drinks
- life.does_like_item()
- life.drink()
- life.fill_container()
- life.buy_item_type_from_alife()
- life.get_nearest_building_of_type()
- Drawing in caves works again
- Fixed saving
- Added logo
- Fixed ALife shopping when shops are closed
- Task weighting
- FPS increase
- ALife has more elaborate likes/dislikes/traits
- ALife can learn the likes and dislikes of others
- life.can_farm()
- life.get_all_relationships()
- life.get_relationship_with()
- life.buy_items()
- life.dislikes
- life.likes
- ALife finally buys more seeds
- Additional phrases
- Fixed a few errors in level.py that caused no rooms to be returned
- Fixed saving/loading
- Added phrases.txt
- Added names_male_dogs.txt
- Added names_female_dogs.txt
- functions.get_dog_name_by_gender()
- functions.generate_human()
- functions.get_phrase()
- functions.get_number_of_alife_with_gender()
- life.say_phrase()
- human.get_top_love_interests() is now life.get_top_love_interests()
- All event functions were moved to life
- human.think()
- human.think_finalize()
- ALife no longer wakes up and goes back to bed immediately
- ALife no longer stands around after giving an item to someone
- ALife now name their homes
- Shop owners now get tired and go home
- life.on_wake()
- life.on_sleep()
- life.is_in_bed()
- life.get_open_beds()
- life.get_top_love_interests()
- life.give_item_to()
- life.build_relationship_with()
- life.go_to_and_claim_building()
- Traders looking for a shop to claim no longer add and remove the task until they succeed
- life.on_enemy/friendly_spotted() now accept an argument (who)
- Moved life.on_enemy/friendly_spotted() call into initial ALife scoring
- Fixed multiple shop owners trying to inhabit the same shop
- life.sell_items()
- Added dog
- ALife now find and claim buildings on their own
- Restructured the way buildings are handled
- levelgen.get_open_space_around()
- levelgen.get_open_buildings_with_items()
- levelgen.get_open_buildings_of_type()
- levelgen.get_all_buildings_of_type()
- life.get_open_stoves()
- life.get_done_stoves()
- life.get_nearest_store()
- life.follow_person()
- ALife weighs decisions based on need
- Added additional tasks for ALife to perform during downtime
- Fixed error in life.get_event()
- Potential doors no longer ask for real estate
- life.get_all_items_of_type() now accepts lists
- life.claim_building()
- life.get_claimed()
- life.get_all_growing_crops()
- life.get_all_grown_crops()
- ALife no longer buys items remotely
- ALife can cook
- Fixed levelgen.get_real_estate() returning duplicate entries
- Added stove
- Added cooking
- life.flag_item()
- life.cook()
- Saving/loading
- Level no longer ticks every second, but instead every 20 frames
- life.go_to_building_and_buy()
- life.go_to_building_and_sell()
- life.get_owned_land()
- life.claim_real_estate()
- Fixed life.get_money()
- Farmers now buy seed when they run out
- levelgen.claim_real_estate() no longer the worst function I have ever written
- Pressing 'c' now shows real_estate on the map
- Fixed error in life.pick_up_item_at() that caused ALife to not remove item from chest
- Real estate
- Farmers attempt to plant closer to their homes
- Server should now be able to tick at specified TPS: var.server_tick_rate
- 'data' directory created. Stores save files and name files
- Saving
- Most major functions now use logging.debug()
- Fixed some code that casued life.path_dest to be reset
- Menus now draw on their own surface
- Added headless (server) mode. Run with -server
- Fixed drawing in caves
- Fixed level not clearing brightness settings
- Added ID system for future use
- Drawing is a lot faster
- Added
ignore_storage
flag to level.get_all_items_tagged(), should probably be put everywhere else - Farmers now sell their crops
- Farmers store some food for themselves
- level: get_all_items_in_building_of_type()
- life: put_item_of_type()
- life.go_to_and_do() now supports most two-argument functions
- Fixed menu title rendering too far above the menu items
- Disabled thirst, which caused the ALife to become unresponsive
- Added farming task for ALife
- Farmers now pickup their crops
- Added level.get_all_items_tagged()
- Added wheat
- life.add_item() and life.add_item() now set 'pos' key
- levelgen.add_item() no longer returns a pointer to the original item
- Levels now have a tick function that is called every second
- Crops can have different images for each stage of growth
- Moved all event code for run_shop into the function of the same name
- Purchasing items no longer leaves a duplicate in the shop
- Shop owner now stores traded items in chests
- LevelGen: Walkers no longer travel to the edge of the map
- Fixed error in go_to() that caused it to never return if the destination had been reached
- Life: get_all_items_tagged()
- Life: put_all_items_tagged()
- Life: go_to_and_do()
- Life: run_shop()
- ALife can claim buildings
- Messages when entering/leaving buildings
- Icons now listed next to items in inventory
- Extended menu system
- New item: Bronze
- Buying items now works
- Items spawned in chests are no longer duplicated and placed outside of the chest
- Starting to add docstrings
- Life: in_building()
- Level: get_room_items()
- Menu system
- Added 'delay' flag to tasks so ALife will rest between iterations
- PygCurse now checks to see if the tile being drawn was drawn in a previous frame
- Items are now automatically put into storage by levelgen
- Fixed crash that involved buildings being built too close together, blocking doors
- Crazy Miner should no longer get thirsty/hungry and raid the surface for food
- Doors no longer built on cornerstones
- ALife can remove items from storage
- ALife finds the closest object first when searching for something
- Pickaxes speed up mining
- Removed stairs going upwards in the forest.
- Blood now fades even when outside of the player's view.
- Fixed crash relating to removal of the forest's "entrances" variable.
- Timing is much more accurate now.
- "Sticky" movement fixed.
- max_fps is now set to 20 by default.
- No longer checking large amounts rooms during generate_cave_rooms()
- Added "sharp" flag to weapons.
- Fixed some dialog errors.
- Blood.
- Forgot to update readme with new changes.
- ALife forgets about enemies after they're killed.
- Fixed some repeating dialog.
- ALife now takes into consideration a target's weapon.
- Weapons now have ranks and statuses.
- Game now goes into turn-based mode when danger arises.
- Fixed issue with idle ALife automatically traveling to the surface for food.
- Added weapons.
- Added Crazy Miner.
- No longer real-time (for now).
- Fixed bug that prevented ALife from following targets between z-levels.
- Fixed possible bug relating to A* cache returning paths for wrong z-level.
- Started room generation for caves.
- Optimized draw_screen() for caves.
- ALife clips through fellow workers.
- Fixed additional pathing issues.
- Teleporting due to pathing conflicts fixed.
- Fixed crash relating to old item system.
- A* cache.
- ALife can path a bit better. No longer teleports (as much.)
- Optimized A*.
- Composed some music.
- Items are now dropped properly.
- Items can be stored.
- Gold and coal are now items.
- ALife understands difference between solid and blocking objects when pathing.
- ALife can mine.
- ALife counts attacking as an event, doing away with the need for interrupts.
- A* tries to understand solid items.
- Working buildings
- Items overhauled to allow extensive customization
- ALife follows events, has basic wants/needs.
- Dirt now counted as an item and is rendered as such