Compare commits

...

246 Commits

Author SHA1 Message Date
Zed A. Shaw 3008be5958 Mark this one migrated. 1 week ago
Zed A. Shaw e92fd2b6f3 Needed to rewrite the pathing to get this to work. I actually had been using a purposefully broken pathing algorithm from when I was making random maps. 1 week ago
Zed A. Shaw c894f6e094 Initial part of the rewrite for the autowalker to fix the pathing and aiming issues. 2 weeks ago
Zed A. Shaw 63eaea3536 rewrite game_level::player_position to be more efficient. 2 weeks ago
Zed A. Shaw 4a2d8770d9 Cleaned up how the camera is configured so that it can be easily queried in other parts like the autowalker. 2 weeks ago
Zed A. Shaw b4569622a0 Cleanup the autowalker for new work. 2 weeks ago
Zed A. Shaw 4bf9a9177f Made an AI debug view to I can make working on the AI easier. I might add the ability to toggle things on/off live to see what the AI does. 2 weeks ago
Zed A. Shaw fc8e65f4d6 Enemies how fight back when cornered, either by being blocked by another enemy or when at a dead end walls. 2 weeks ago
Zed A. Shaw 586343a614 Enemies will now fight back if they're cornered. Was actually way easier than I thought. 3 weeks ago
Zed A. Shaw 7ffa6025ce And finally fix some of the API names to make more sense in their current location. 3 weeks ago
Zed A. Shaw a20d701096 Rename to GameDB and GameDB::Level. 3 weeks ago
Zed A. Shaw c46927ea10 Now all of the old LevelManager code is gone. Next phase is to rename the Game:: to something better then test the shit out of it. 3 weeks ago
Zed A. Shaw a83ee77eea levelmanager.* is now gone, but the code is just moved over to game_level. Now to clean up the api and give it a new name. 3 weeks ago
Zed A. Shaw 5aca2fb56a Tests are now clean so next step is to officially nuke the level manager. 3 weeks ago
Zed A. Shaw 564f9842a2 All of the UIs should be cleared out, and that just leaves the tests. 3 weeks ago
Zed A. Shaw d5ff57e025 Now systems.cpp is disconnected from levelmanager. That leaves the GUIs and then to completely remove it and clean up the api. 3 weeks ago
Zed A. Shaw 81e25f73bb Next phase of the refactor is done. Now to replace everything in Systems. 3 weeks ago
Zed A. Shaw 644ff6edc0 Bad test that wasn't running. 3 weeks ago
Zed A. Shaw 097879440d Changed facts in DinkyECS to be a shared_ptr so that it is a singular data store instead of copied around. Closes #85. 3 weeks ago
Zed A. Shaw b839fb6463 The problem was keeping a reference in a class/object means that it will not get updated copies when levelmanager makes a new level. Honestly that whole constelation of bullshit needs to die. Closes #62. 3 weeks ago
Zed A. Shaw ae1a48deed Now I have a better error that's more exact, but I think next level of this is to just show a generic texture for missing ones. Closes #80. 3 weeks ago
Zed A. Shaw 25a143cf22 Turns out I don't need to remove so much when I simply don't want to display something. Closes #82. 3 weeks ago
Zed A. Shaw 20fa95bd93 Simple test to make sure world events actually loop. Closes #84. 3 weeks ago
Zed A. Shaw a86912705c Refactored the mouse handling to use the new guecss Modifiers system and improved Clickable. 4 weeks ago
Zed A. Shaw ad0069e899 Made it so you can right-click on an item to use it, but yeah it's bad. Gotta refactor. 4 weeks ago
Zed A. Shaw 42575ef1f5 Updated the lootable body asset. 4 weeks ago
Zed A. Shaw f19c1dbb20 Now you can heal yourself. 4 weeks ago
Zed A. Shaw e03a63f9fb A little bit of refactoring while thinking about the loot next. 4 weeks ago
Zed A. Shaw 48e28ee636 New dead_body_lootable sprite for dead things you can loot. 4 weeks ago
Zed A. Shaw b9209beddd Better error when you have duplicate map icons. 4 weeks ago
Zed A. Shaw 8594568ff4 Slight clean up. 4 weeks ago
Zed A. Shaw 521180b086 Refactor out the junk randomizer and put it in rituals where it belongs. 4 weeks ago
Zed A. Shaw 05d54ff661 Now also combat works no matter what's on the ground. Closes #81. 1 month ago
Zed A. Shaw f84b63f0e6 The problem with picking up items under a dead body is fixed but now need to fix combat. 1 month ago
Zed A. Shaw 97fe02d99d Add a new dead_body sprite for things that are dead but you can't loot them. 1 month ago
Zed A. Shaw 0d889cd0ff Quick start to making it possible to use healing items, or any item really. Going with a style that it has to be on your toolbar to use it, and the toolbelt looks in your inventory to see ifyou have healing items. 1 month ago
Zed A. Shaw b9656013b0 Now have dead bodies working but need art for it. 1 month ago
Zed A. Shaw fc4eacadb0 There's now a Collision component that determines collision if its set. Closes #72. 1 month ago
Zed A. Shaw 9bf6926dc3 A bit of optimization to keep from generating the sorted sprite list over and over. Also tried to solve the problem of tombstone covering everything but no luck. 1 month ago
Zed A. Shaw 077f0e84ea Don't add wiggle to the things in the player's square since that moves them into the player eyes. 1 month ago
Zed A. Shaw a4a4389281 Move amt's examples into scratchpad for later review. 1 month ago
Zed A. Shaw 9c02fb846b Now the spatialmap determines the 'wiggle factor' when there's multiple entities in a cell, which staggers them visually. Closes #78. 1 month ago
Zed A. Shaw 694ee210d6 Now floor drops always work by having a drop against a wall just drop at your feet. Closes #77. 1 month ago
Zed A. Shaw 1788b8fb28 Now items drop where you aim, and won't let you drop on a floor. But maybe one more change. 1 month ago
Zed A. Shaw 23ead1f0ca SpatialMap now has a full test suite and that helped find some bugs. 1 month ago
Zed A. Shaw f26189c696 SpatialMap now uses unordered_multimap to allow for multiple items in a square, but they're also tagged to mark some with collision. 1 month ago
Zed A. Shaw b193bab148 Add in the tests from finding the bug in spatial map. 1 month ago
Zed A. Shaw 569d04725a This is the cause of the bug where going to the next level caused things to disappear. What happened is that on next level this code was adding the player but _not_ adding them to collision. Then when the player moved the spatialmap would remove them, see they're technically 'no collision' and then add them back in without collision. 1 month ago
Zed A. Shaw e51fb8627c Switching to Linux to find a memory bug and I want to keep a record of what caused it. 1 month ago
Zed A. Shaw be3eef7082 Make money. 1 month ago
Zed A. Shaw d6326c9e41 Mostly working spatical map with 2 level collision/space structure. Not the best implementation but this is the idea. 1 month ago
Zed A. Shaw fd53f92fe6 Prep for fixing the spatialmap to allow for entities without collision to still be in the space. 1 month ago
Zed A. Shaw d93bc1615c Big changes to use the new lel-guecs setup but now almost everything works. Only thing missing is Issue #16 in quecs. 2 months ago
Zed A. Shaw 86ddfc460f Update to the new lel-guecs with Icons and the ability to set a Sprite to stretch or not. Now Icons for loot pickup work perfectly, but need to be centered. 2 months ago
Zed A. Shaw ff7111b006 Icons now work way better and don't have the the 'Rayview cuts icons' bug. It actually was a bug in the lel-guecs Sprite class that was using the TextureRect from the source sprite. Now its initialized with the framesize from the .json. This also uses the new guecs::Icon, but I have to fix that as it doesn't scale correctly. Closes #2. 2 months ago
Zed A. Shaw b311713064 Quick prototype of how switch to an icon during pickup makes the rendering bug go away and also looks better visually. 2 months ago
Zed A. Shaw 6f91533950 Fog of War now works fairly normally, but I think I'll have to do something so people don't live in the map. Probably something like hearing distance is increased because you're louder with a map out, and you can't see enemies on the map. 2 months ago
Zed A. Shaw 2997dc363b FoW is now moved into lighting so light determines what's seen not player's last position. Not sure if I like that though. 2 months ago
Zed A. Shaw d264760405 Fog of War works but it's in the wrong place and needs to be based on light. 2 months ago
Zed A. Shaw 2802a44ba4 Clean up System::render_map. 2 months ago
Zed A. Shaw aa72cfe4a4 Now have a working compass based directional player sprite in the map, but using the compass isn't going to work long term. Need to move that into the raycaster.cpp and get real degrees for facing direction. 2 months ago
Zed A. Shaw 3b81959aa9 Map now displays way better. The paper is gone for now. 2 months ago
Zed A. Shaw 973495b687 Map now has a color theme rather than random colors. 2 months ago
Zed A. Shaw 379060b8c7 Can now set a color to another already existing color. 2 months ago
Zed A. Shaw f4fa50a413 Colors are now being loaded from assets/palette.json 2 months ago
Zed A. Shaw 48a7f72411 Now have a simple color palette system. 2 months ago
Zed A. Shaw 0272ba8540 Trying a bit of color changes. 2 months ago
Zed A. Shaw 75646619b3 Map now displays and works, just need to refine the colors and the compass directions. 2 months ago
Zed A. Shaw dca38397e7 Systems::render_map now holds the logic to render the map, and it's working well enough to use for displaying. 2 months ago
Zed A. Shaw 0d1eacdc5c Now entities are drawn after the map so that there's no holes. 2 months ago
Zed A. Shaw 72ecca8c82 I can now draw a map and then render it with the sprites pretty easily. Problem currently is the entities replace their floor tiles so need to fix that. 2 months ago
Zed A. Shaw a3f82139e9 One step closer to map rendering from tile sprites. 2 months ago
Zed A. Shaw dd541ae59d Ripped out the string based map and created a Matrix map drawing function. 2 months ago
Zed A. Shaw d9219a8c64 This cleans up how I'm rendering the map but there's no way I can render a large map like this. It'd be way too big. 2 months ago
Zed A. Shaw 3b06105813 Map tiles are generating fine, and I can make a map, now to bring it into the game and see how it works. 2 months ago
Zed A. Shaw 5db3d1a306 Tried out using the actual textures from the game but they don't really have the feel I want. I'll have to think about it. 2 months ago
Zed A. Shaw 5e01eb29a9 There's a bug where the last item in tiles.json draws a black square, which is why I named ceiling_blue to zceiling_blue to temporarily solve it. 2 months ago
Zed A. Shaw b2a6262964 Now have background color for the sprites used in the maps. 2 months ago
Zed A. Shaw b16ca3fd65 I now have hacked in basic color for the wall tiles but not enemies and items. 2 months ago
Zed A. Shaw b2d0b0ee4c Map tiles are now correctly sized and positioned. Errors from before were due to floating point being used for positioning. 2 months ago
Zed A. Shaw 2c011079a8 I have a test now that can generate a map image so I'll make it look nice there before bringing the code into the game. 2 months ago
Zed A. Shaw cfefffe1cc I now can output a map_tiles.json that has all of the tiles in the tile sheet tagged by their display char and where they are. 2 months ago
Zed A. Shaw 40611d4d54 Crop the map sprite so it's not bigger than necessary. 2 months ago
Zed A. Shaw 04b3cf3f16 Now have a sprite sheet with tiles expanded to fill the cell, but other sprites reduced to 80% and centered in the cell. 2 months ago
Zed A. Shaw d6e2b64140 icongen now makes a sprite sheet for the map which should be easier to work with. 2 months ago
Zed A. Shaw dbc2000434 Started a map icon gen tool that will load the fonts and create tile sprites for everything I use. 2 months ago
Zed A. Shaw 056b0b307b Implemented a little screenshot tool. 2 months ago
Zed A. Shaw f64b202ee7 Finally have inventory not crashing for most edge cases. This solves many bugs but mostly closes #58. 2 months ago
Zed A. Shaw 601f3331ed As an experiment, disable copy and move of the StatusUI. 2 months ago
Zed A. Shaw cd89625c96 Just need one function for the 'hold_item' action. 2 months ago
Zed A. Shaw 265e53e05a Simple fix, and honestly I should eliminate this whole thing and use one unified event system. Closes #1. 2 months ago
Zed A. Shaw af3568154a Just had to grab the sprite, duh. Closes #3. 2 months ago
Zed A. Shaw 1baf90a776 Easy fix, just set aiming_at in the camera position. Closes #57. 2 months ago
Zed A. Shaw a26f0b0c0a Player's aim is now updated constantly as they move, just need to solve #57 to complete it. Closes #9. 2 months ago
Zed A. Shaw 584c4e9f67 Make the AIM_CLICK handler in FSM properly deal with an item already there while looting or not. Closes #56. 2 months ago
Zed A. Shaw 87e69bebde There was a memory corruption bug in remove() because I get a reference to the slot string, then remove it from by_entity, but that deletes the string so then later using it to remove by_slot silently fails because map.erase() silently fails. Closes. #54. 2 months ago
Zed A. Shaw 970905fcd5 Make the player's inventory just a regular entity attached to the player.entity. 2 months ago
Zed A. Shaw 2421a33bb0 Swapping and putting back now work in the status_ui inventory, but now I need to refactor so this operation works on any inventory::Model. 2 months ago
Zed A. Shaw 784f753e72 Standardized on using only DinkyECS:Entity for most inventory:::Model operations, then create swap based on the same entities. 2 months ago
Zed A. Shaw 8c8d6dc9e7 Clean things up before solving the move problem. 2 months ago
Zed A. Shaw 6576164fad Give a healing potion too for testing. 2 months ago
Zed A. Shaw b6d1ae2700 Move the management of the 'fake loose items container' into the loot_ui.cpp rather than get rid of it. Closes #34. 2 months ago
Zed A. Shaw efdb0cb119 Just use get_if here instead. 2 months ago
Zed A. Shaw 8bbafc4d10 Raycaster now keeps track of the square we are aimed but _does not_ know what is there, that's the job of other things like MainUI. Closes #50. 2 months ago
Zed A. Shaw 0d79ce35b3 Every sprite's dimensions are now taken from their config rather than a global. Closes #42. 2 months ago
Zed A. Shaw a418b48e94 Don't re-run the whole next level thing on every spawned item. Closes #48 2 months ago
Zed A. Shaw b28b76ee2d Ritual blanket now has its own internal id but I'm sort of thinking it needs to be more like inventory::Model. Closes #47. 2 months ago
Zed A. Shaw cad51f4908 Use RGBA for the uint32_t color pixels. Closes #49. 2 months ago
Zed A. Shaw ab1a415b55 Refactored the CameraLOL to be inside the rayview instead of a convolute main_ui->camera->rayview and back. Closes #16. 2 months ago
Zed A. Shaw 75c28cd764 Fixed a few places. Closes #11 2 months ago
Zed A. Shaw b603ef5a3f Forgot to update the level in the RitualUI so nothing actually worked. Closes #41. 2 months ago
Zed A. Shaw 6a0725e401 Simply re-init the overlay on new level. Closes #14. 2 months ago
Zed A. Shaw 02c42eb042 System::distribute_loot now manages setting up loot junk and does a new entity instead of reusing old ones, that allows System::death to do a coorect world->destroy() on the dead thing. Closes #46. 2 months ago
Zed A. Shaw 6437bd3b54 Now have a 'destroy' method that removes everything related to an entity. Closes #18. 2 months ago
Zed A. Shaw 7602fb0b31 Not using Weapon anymore. 2 months ago
Zed A. Shaw 57d69015c2 Renamed to random_walk since that's what it called. Closes #26. 2 months ago
Zed A. Shaw 769530b45c Now standardized on GameConfig everywhere I can. Closes #28. 2 months ago
Zed A. Shaw b0204772c7 Need to not transition out of END if the slot clicked is empty. Closes #45 2 months ago
Zed A. Shaw 19682fd0bc Add the frame width/height to SpriteTexture. Closes #13 2 months ago
Zed A. Shaw ea92dcc3c4 Change from ENEMY_SPAWN to ENTITY_SPAWN since that's what it does. Closes #31 2 months ago
Zed A. Shaw fcd1bc589c Make a function to access overlay cells Closes #35. 2 months ago
Zed A. Shaw f668ff6b7a First round of cleanup. dnd_loot. 3 months ago
Zed A. Shaw 689bb150c6 I think that's all the edge cases handled. You can more loot around fairly arbitrarily. 3 months ago
Zed A. Shaw 6ff1919587 Cleaned up the move operation more so that I can use it in the other places that I need it. 3 months ago
Zed A. Shaw f559b5a39d Fixed the problem where the only way to complete a grab/drop operation was to capture the MOUSE_CLICK directly. Solution was to move the mouse processing out of DNDLoot and only handle the MOUSE_MOVE/DRAG. 3 months ago
Zed A. Shaw 6a72d1160f When things die you get their things. 3 months ago
Zed A. Shaw fb064ffbf1 Loot boxes now have ritual items and you can click on them, or the enemy just dies. 3 months ago
Zed A. Shaw 3c5021e4c9 So far most of the bugs are solved but there's still some edge cases in the inventory dance. 3 months ago
Zed A. Shaw e0588847fa Tracked down the bug that was caused by picking up an item but not removing its Position in the world, so when you go to another level it gets brought back to life causing a dupe. 3 months ago
Zed A. Shaw 2c6565c40a Kind of jank but the old functionality is back, and now needs to move to loot ui dealing with any container. 3 months ago
Zed A. Shaw 812407c3df Now the loot UI can work with any container and only uses an ECS id to work, not have its own contents. 3 months ago
Zed A. Shaw a0eff927b6 Big BIG refactor to make inventory use a model that's placed into the world, following a more sane MVC style. 3 months ago
Zed A. Shaw 119b3ed11d Can now drag an item out of inventory and drop on the ground, then pick it back up, and put it in a loot container, and then back again. Still buggy but working for now. 3 months ago
Zed A. Shaw 68e50342e5 Can now drag an item out of inventory and drop it. 3 months ago
Zed A. Shaw 87459d41bb Add the buttons I'll need for the next round of development. 3 months ago
Zed A. Shaw dfd3118d04 Make the transitions more solid by having an open/close set of functions to maintain cleaning up internal state. 3 months ago
Zed A. Shaw 029a0f86ae Drag now show the icon while you're dragging, so now need to work out all of the edge cases for each action. 3 months ago
Zed A. Shaw ca74b817e5 You can grab stuff off the ground and put in your inventory but it doesn't show the sprite while you do it yet. 3 months ago
Zed A. Shaw cd02507023 Make a function that handles the mouse events for everything since those are very similar. 3 months ago
Zed A. Shaw d99d9a68c8 Tried to use Ragel to create state machines but its lacking an incremental mode and doesn't do any logging of state activity so debugging is harder. Put it in scratchpad for reference though. 3 months ago
Zed A. Shaw 7fc32b0248 Trying out Ragel's state machine generation as an alternative to the DinkyFSM style. 3 months ago
Zed A. Shaw 9468990f76 DNDLoot works now, just had to fix a problem with the constructor. 3 months ago
Zed A. Shaw 82ee8f68f7 Created a separate FSM for the DND functionality that compiles but need to wire it in to work. 3 months ago
Zed A. Shaw 1ab708c4eb Clean up more of the FSM so that it's almost nothing.Now I'll try to make a stand-alone 'dnd' state machine to handle drag and drop functionality. 3 months ago
Zed A. Shaw 06a843f169 Autowalker does some basic item pickup now, just for testing. 3 months ago
Zed A. Shaw af933c827a Have a separate container vs. item loot for the different situations where you're pick items out of a container vs. an item on the ground. 3 months ago
Zed A. Shaw 7db64b73c5 Made some notes for the next bit of work. 3 months ago
Zed A. Shaw 7b0bac4f59 You now click on things to interact with them. 3 months ago
Zed A. Shaw 2aa4f0a2e8 Finally can pick things up, but it's really bad so far. Need a bunch of refactoring in how the collision system works, and make it so collision and maps can have multiple entities in the same square. 3 months ago
Zed A. Shaw 2458f01ebd Loot UI now opens when you can loot something, but it's still buggy and doesn't always show the stuff. 3 months ago
Zed A. Shaw 86eabed3db Now when you loot an item the loot UI works. 3 months ago
Zed A. Shaw 38159a5f84 Fix the window coordinates so that you can resize. 3 months ago
Zed A. Shaw d6c5a89251 Fix the last few loot bugs before actually implementing the data model for inventory and loot. 3 months ago
Zed A. Shaw 4a48910273 There's a UISystem now for to compliment the entities and components in GUECS. I now use that to do the drag/drop transfers instead of raw code right in the FSM. 3 months ago
Zed A. Shaw e01e697535 Move now works better, and the API is a lot cleaner. Now just need to make it not crash. 3 months ago
Zed A. Shaw be7b86a913 Mostly refactored out the common things for drag/drop so now just to refine how it's used and bring back moving the sprite around. 3 months ago
Zed A. Shaw 570b70ab0c More of the drag/drop is handled by the GrabSource/DropTarget components. 3 months ago
Zed A. Shaw 7a551cf83a Remove commit_drop from status and loot UI since DropTarget already does that. 3 months ago
Zed A. Shaw 343f3a246f Cleaned up and unified the source before the big refactor. 3 months ago
Zed A. Shaw 0d6a71b06f Fixed a couple little bugs in the state so now can refactor out the dnd code. 3 months ago
Zed A. Shaw 2a6b892e7f Can now round-trip a torch from loot to inventory and back. 3 months ago
Zed A. Shaw 4b0d76bbcc Even better API, but still not the best organization. This will let me implement both sides, then I can pull it out and try to generalize it into a few guecs components. 3 months ago
Zed A. Shaw 3e0adf0c22 Better meaning API on both sides for the drag-n-drop operations, but I _swear_ there's a way to do this in the GrabSource/DropTarget instead. 3 months ago
Zed A. Shaw 47c219b86e Disable inventory select for now until I can get drag-n-drop formalized better. 3 months ago
Zed A. Shaw e1c2869d1c Sometimes we click too fast in the router to just handle it in IDLE. 3 months ago
Zed A. Shaw 461ad03d27 Taking things from the LootUI to the StatusUI works way better now and there's a DropTarget to match the GrabSource. 3 months ago
Zed A. Shaw 842aac3127 Worked out an initial stab at a GrabSource for drag-n-drop or just simple grabbing things in the UI. 3 months ago
Zed A. Shaw 94385b195d Mostly worked out how to do looting but now need how to take out of inventory and put into loot. 3 months ago
Zed A. Shaw c509162be1 The event router is working well and I can do drag-n-drop but I'll have to rethink where to use it. 3 months ago
Zed A. Shaw 5aa54d875f Initial first steps in pulling the SFML event processing out of the gui::fsm so that I can handle more complex things like drag and drop. 3 months ago
Zed A. Shaw 0674908e49 Implemented an initial cut at the event router. Its job is to take the random events from SFML and translate them into nice clean orderly events to the Gui::FSM. 3 months ago
Zed A. Shaw 5c47a0151c Basic loot UI mostly working. Each time you open there's a torch and you can place it visually on any slot on your character. 3 months ago
Zed A. Shaw 4b34de2109 Initial loot UI works to load an item by its world entity ID. 3 months ago
Zed A. Shaw f208ca946e Made the components module work like textures and sound so that there's just one constant map of components. 3 months ago
Zed A. Shaw ab391aaa97 Have a plan for the new inventory and looting system, now have to implement it. Temporarily you can't pick anything up, but it will go away. 3 months ago
Zed A. Shaw b8d2d1870d Clean up the debug UI so that it's not using the jank debug component I didn't use anyway. 3 months ago
Zed A. Shaw e8199a973c Fix up the healing potion so it looks more like a healing potion. 3 months ago
Zed A. Shaw d2a5dfa713 Rooms are now styled randomly based on assets/styles.json which will evolve into specifications for themes of levels and rooms in them plus other configs. 3 months ago
Zed A. Shaw e45de2a2cf The config now prints a way better error message if you give it a bad file to use. 3 months ago
Zed A. Shaw dc8648016d Refactor the way assets are laid out in the assets/ dir and then have a build script that can automatically pixelate/posterize images that I save, saving me tons of time. 3 months ago
Zed A. Shaw 3dc70c3af6 This implements base ambient lighting for tiles which helps with tiles like lava and ceiling lights. 3 months ago
Zed A. Shaw 74a1801069 More scripts for converting and pixelating images for the game. 3 months ago
Zed A. Shaw cdd58ee21a Another nice scritp from fred. 3 months ago
Zed A. Shaw 31df3fe7a3 Better light ceiling and floor tiles. 3 months ago
Zed A. Shaw dd463d7d6e Did a bunch of pixelation tests and I think this is the best setup so far. 3 months ago
Zed A. Shaw 931d9493d2 The raycaster can now pair a floor with a ceiling tile and to demonstrate this I have a blue light that shines on to a stone floor. I also played with just pixelating a regular image rather than painting it and honestly it looks better in a lot of ways. 4 months ago
Zed A. Shaw e015652f4c Now have the ability to load different textures for the floor, not ceiling though, it just matches the floor. 4 months ago
Zed A. Shaw 8453e7c3b9 Map is back. 4 months ago
Zed A. Shaw af2947c50a Simple styling of the rooms done. 4 months ago
Zed A. Shaw 5cb74151f5 Remove more dead code from texturemgr. 4 months ago
Zed A. Shaw 3a745d492a Refactored out the tilemap since it was mostly doing nothing useful. 4 months ago
Zed A. Shaw ea9f6bf383 Prior to deleting the TileMap to see if I can just replace it with new features in Map and textures::. 4 months ago
Zed A. Shaw f45dbe8c48 Ready to refactor the tilemap so I can stylize different parts of the maps generated. 4 months ago
Zed A. Shaw 96a585220b Raycaster now leaves colors that are above a threshold to have a 'glow' effect. 4 months ago
Zed A. Shaw c0d668fb0b Played around with a circular map real quick. 4 months ago
Zed A. Shaw 9dcc2036aa Trying a new 'glowing moss' texture to sort out how to make the raycaster alter the light of a surface that has its own light. 4 months ago
Zed A. Shaw e361984c40 Fixed a long standing bug I didn't realize where I did -1 on the map in the raycaster which made the textures not actually work. 4 months ago
Zed A. Shaw 90c37fe4c9 Fixing up how rotation works with combat and then making the lighting better. 4 months ago
Zed A. Shaw 4eaf3c35d6 Fixed up the map generator so that it's placing entities in non-overlapping tiles and adapting the style for the size. It can also deal with maps that have no rooms better and places the stairs better. 4 months ago
Zed A. Shaw 5f1a453fb4 Refactored the maze functions to be a builder that can do different things to the maze. Also when I hit p in the game it'll save the map to a file. This was extremely hard for no reason. 4 months ago
Zed A. Shaw 20f03731e5 Cleaned up the maze placement so that I can have mazes without rooms and with other features. 4 months ago
Zed A. Shaw 37715f05a5 Cleaned up maze and ready to use. 4 months ago
Zed A. Shaw 33cd490ed3 Playing with maze gen again. 4 months ago
Zed A. Shaw c97648ab3a Remove useless log messages and bring back the tests. 4 months ago
Zed A. Shaw ac252bf09d Maze works well now and there's something placed in all rooms and dead ends. Will need to randomize it more so not every dead end is an enemy. 4 months ago
Zed A. Shaw a0b785cb2a Hunt-and-kill algorithm rocks. It handles everything I need for map gen, including spawn points, room placement, and the maze like map. 4 months ago
Zed A. Shaw 0f8e61797f Now using a hunt-and-kill maze algorithm. 4 months ago
Zed A. Shaw 7a0b2f988d Add a terrible maze generation algorithm to test if a maze style map looks/feels better. The walls are disabled so you can walk around. 4 months ago
Zed A. Shaw 6cbfcf993e Meson build was using the wrong sfml_main on windows. 4 months ago
Zed A. Shaw 0eb245d113 Working on a better character view. 4 months ago
Zed A. Shaw d6e64dd06b The log is now moved to the map, but changing StatusUI caused a weird compiler error so need to remove logs from that separate. 4 months ago
Zed A. Shaw a2246d2b71 Move the map_view and mini_map into gui as well. 4 months ago
Zed A. Shaw bed5ce22d2 Move gui_fsm to fsm but this causes some problems. 4 months ago
Zed A. Shaw cc44c9d37a Move the guecstra stuff into the gui. 4 months ago
Zed A. Shaw dfc6aa08e9 Loot UI is now mostly formed, just need to get loot into it and make it work. 4 months ago
Zed A. Shaw 8545b8cf1d Simple Loot UI started. 4 months ago
Zed A. Shaw 8a3046e141 The colors and other theme elements can be configured in assets/config.json 4 months ago
Zed A. Shaw 74a8599977 Fully converted to using the lel-guecs library externally now. 4 months ago
Zed A. Shaw 7c90eb6da1 GUECS now doesn't have the facts feature from DinkyECS and instead you refer to the whole area with gui.MAIN. This is an entity that's at 0 and represents the whole grid. Background is placed there. 4 months ago
Zed A. Shaw abea6da2e0 More GUECS cleanup before releasing. Still need to sort out events and reduce the amount of stuff that GUECS needs. 4 months ago
Zed A. Shaw 1780a758b3 Initial GUECS refactor is done, it's now on its own with no other dependencies, but now I need to trim it down to do only what it needs. 4 months ago
Zed A. Shaw 20176cf54a GUECS refactor part 1. 4 months ago
Zed A. Shaw 4e7f837240 Cleanup of GUECS and the textures manager. 4 months ago
Zed A. Shaw 438bd8ab8a Finally upgraded the strings to const& since I'm about to pull guecs out and distribute it. Oh well, the joke's finally over. 4 months ago
Zed A. Shaw 82ce3cb6be Autowalker now knows how to craft its first weapon and open the map. 4 months ago
Zed A. Shaw 70d27b9a95 GUECS now has a click_on function so you can programatically click on buttons for testing. 4 months ago
Zed A. Shaw 78ba83e916 Move the map opened detect out to the class. 4 months ago
Zed A. Shaw c4ed26184b Autowalker now opens the map at first to test that it works. 4 months ago
Zed A. Shaw edf10c976a Cleaned up the ritual UI some more and solved a few more bugs, then brought in a quick 'dubious combination' image. 4 months ago
Zed A. Shaw bac552c3d7 Ritual ui now does the combination correctly. 4 months ago
Zed A. Shaw dab0e092e6 RitualUI is mostly working, but need to make the consumption of items work in the UI. 4 months ago
Zed A. Shaw 6269d10807 The ritual UI is now a lot better using a FSM to control everything. Probably one more session to work out the remaining functionality. 4 months ago
Zed A. Shaw 8a1f42c0f1 RitualUI is now ritual::UI and uses a FSM to coordinate its activities. 4 months ago
Zed A. Shaw d1bd6b7c45 Mostly does everything I need, minus the ritual description. That'll have to probably be a separate generator. Next, rewrite this crap. 4 months ago
Zed A. Shaw 2ceab51c40 A really shitty ritual crafting UI is working but needs a big reshape. 4 months ago
Zed A. Shaw 14619558fa Better UI for the ritual crafting that almost works, but need to get the selected items to move down. Might need some state machine love soon. 4 months ago
Zed A. Shaw 9d55b2954a The rituals can now craft from items taken from dead enemies and they go into the blanket right away. 4 months ago
Zed A. Shaw 1a9e068d02 Junk items are now transfered to your blanket so you can use them in crafting. No UI for that though. 4 months ago
Zed A. Shaw bc557652ba The player now has some starting items to craft a first weapon, and it is craftable in the UI. 5 months ago
Zed A. Shaw c8a8d2b1af You can now craft a single ritual from the blanket. 5 months ago
Zed A. Shaw 292711f91f Prep for the actually making ritual crafting work. 5 months ago
Zed A. Shaw ad1d08ca96 There's now an hp status indicator 'doll' when you click on it your host (character) will tell you how they're doing for HP. 5 months ago
Zed A. Shaw dac9b1b3de rcrnstn found a way to make the shaders work under MESA by forcing the version number to 120 and no default params in functions. 5 months ago
Zed A. Shaw 1ab5fa4291 Fix from ORBLISH suggestion to stop any component that's not hover/clicked on in the mouse handler. 5 months ago
Zed A. Shaw 4c03fe1ed3 Make the raycaster 'highlight' things you point at. 5 months ago
Zed A. Shaw bc31750d9c Fix from ORBLISH suggestion to stop any component that's not hover/clicked on in the mouse handler. 5 months ago
  1. 1
      .gitignore
  2. 2
      .vimrc_proj
  3. 26
      Makefile
  4. 146
      README.md
  5. 1
      ai.hpp
  6. 10
      ai_debug.cpp
  7. 20
      assets/ai.json
  8. BIN
      assets/armored_knight_1-256.png
  9. BIN
      assets/armored_knight_1-512.png
  10. BIN
      assets/axe_ranger-256.png
  11. BIN
      assets/blood_splatter-256.png
  12. 0
      assets/bossfights/devils_fingers_background.jpg
  13. 0
      assets/bossfights/devils_fingers_sprite.png
  14. 0
      assets/bossfights/devils_fingers_stage.png
  15. 0
      assets/bossfights/down_the_well.jpg
  16. 0
      assets/bossfights/rat_king_2_frame_animation.png
  17. 0
      assets/bossfights/rat_king_boss_fight_background.jpg
  18. 0
      assets/bossfights/rat_king_boss_fight_sprite.png
  19. 0
      assets/bossfights/tunnel_with_rocks.png
  20. 0
      assets/bossfights/tunnel_with_rocks_stage.png
  21. BIN
      assets/ceiling_test-256.png
  22. BIN
      assets/ceiling_test-512.png
  23. BIN
      assets/ceiling_worm-256.png
  24. BIN
      assets/cinqueda_1-256.png
  25. BIN
      assets/cinqueda_1-512.png
  26. 303
      assets/config.json
  27. 82
      assets/devices.json
  28. 49
      assets/enemies.json
  29. BIN
      assets/evil_eye-sprites.png
  30. BIN
      assets/evil_eye_test-256.png
  31. BIN
      assets/evil_eye_test-512.png
  32. BIN
      assets/floor_tile_test-256.png
  33. BIN
      assets/floor_tile_test-512.png
  34. BIN
      assets/gold_savior-256.png
  35. BIN
      assets/grave_stone-256.png
  36. BIN
      assets/hairy_spider-256.png
  37. BIN
      assets/hanging_brazier-256.png
  38. BIN
      assets/healing_potion_small-256.png
  39. 12
      assets/icons.json
  40. BIN
      assets/icons/healing_potion_small.png
  41. BIN
      assets/icons/torch_horizontal_floor.png
  42. 68
      assets/items.json
  43. BIN
      assets/items/broken_locket.png
  44. BIN
      assets/items/broken_pen_knife.png
  45. BIN
      assets/items/broken_yoyo.png
  46. BIN
      assets/items/chess_pawn.png
  47. BIN
      assets/items/cinqueda.png
  48. BIN
      assets/items/dirty_kerchief.png
  49. BIN
      assets/items/dubious_combination.png
  50. BIN
      assets/items/healing_postion_small.png
  51. BIN
      assets/items/healing_potion_small.png
  52. BIN
      assets/items/leather_pouch.png
  53. BIN
      assets/items/mushroom.png
  54. BIN
      assets/items/pocket_watch.png
  55. BIN
      assets/items/rusty_nails.png
  56. BIN
      assets/items/severed_finger.png
  57. BIN
      assets/items/stone_doll_cursed.png
  58. BIN
      assets/items/torch_crappy.png
  59. BIN
      assets/items/torch_horizontal_floor.png
  60. BIN
      assets/items/wood_barrel_small.png
  61. 140
      assets/map_tiles.json
  62. BIN
      assets/map_tiles.png
  63. 81
      assets/palette.json
  64. BIN
      assets/paper_ui_background.png
  65. BIN
      assets/rat-king-boss-fight-test-small.jpg
  66. BIN
      assets/rat_king-256.png
  67. BIN
      assets/rat_with_sword-256.png
  68. 31
      assets/rituals.json
  69. BIN
      assets/rituals/dubious_combination-128.png
  70. BIN
      assets/rituals/dubious_combination-64.png
  71. BIN
      assets/rope_vines_up-256.png
  72. 6
      assets/shaders/flame_trash.frag
  73. 4
      assets/shaders/lightning_attack.frag
  74. BIN
      assets/sounds/fireball_01.ogg
  75. BIN
      assets/sounds/hp_status_00.ogg
  76. BIN
      assets/sounds/hp_status_10.ogg
  77. BIN
      assets/sounds/hp_status_30.ogg
  78. BIN
      assets/sounds/hp_status_60.ogg
  79. BIN
      assets/sounds/hp_status_80.ogg
  80. BIN
      assets/sprites/armored_knight_1.png
  81. BIN
      assets/sprites/axe_ranger.png
  82. BIN
      assets/sprites/dead_body.png
  83. BIN
      assets/sprites/dead_body_lootable.png
  84. BIN
      assets/sprites/gold_savior.png
  85. BIN
      assets/sprites/grave_stone.png
  86. BIN
      assets/sprites/hairy_spider.png
  87. BIN
      assets/sprites/peasant_girl_2.png
  88. BIN
      assets/sprites/rat_with_sword.png
  89. BIN
      assets/sprites/rope_vines_up.png
  90. BIN
      assets/sprites/torch_pillar.png
  91. BIN
      assets/sprites/tripwire_trap.png
  92. BIN
      assets/sprites/undead_peasant.png
  93. BIN
      assets/sprites/well_down.png
  94. 17
      assets/styles.json
  95. BIN
      assets/textures/ceiling_black.png
  96. BIN
      assets/textures/ceiling_blue_light.png
  97. BIN
      assets/textures/floor_gray_stone.png
  98. BIN
      assets/textures/glowing_moss_wall.png
  99. BIN
      assets/textures/gray_stone_floor_light.png
  100. BIN
      assets/textures/lava_floor.png
  101. Some files were not shown because too many files have changed in this diff Show More

1
.gitignore vendored

@ -27,4 +27,5 @@ backup
*.dll
*.world
coverage
coverage/*
.venv

@ -1 +1 @@
set makeprg=meson\ compile\ -C\ .
set makeprg=make\ -f\ ../Makefile\ build

@ -1,3 +1,5 @@
ROOT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
all: build test
reset:
@ -8,10 +10,19 @@ else
endif
%.cpp : %.rl
ragel -o $@ $<
ragel -I $(ROOT_DIR) -G1 -o $@ $<
build: lel_parser.cpp
meson compile -j 10 -C builddir
%.dot: %.rl
ragel -Vp -I $(ROOT_DIR) -o $@ $<
%.png: %.dot
dot -Tpng $< -o $@
build:
meson compile -j 10 -C $(ROOT_DIR)/builddir
asset_build: build
./builddir/icongen
release_build:
meson --wipe builddir -Db_ndebug=true --buildtype release
@ -25,8 +36,8 @@ tracy_build:
meson setup --wipe builddir --buildtype debugoptimized -Dtracy_enable=true -Dtracy:on_demand=true
meson compile -j 10 -C builddir
test: build
./builddir/runtests
test: asset_build build
./builddir/runtests -d yes "[pathing]"
run: build test
ifeq '$(OS)' 'Windows_NT'
@ -49,10 +60,13 @@ clean:
meson compile --clean -C builddir
debug_test: build
gdb --nx -x .gdbinit --ex run --args builddir/runtests -e
gdb --nx -x .gdbinit --ex run --ex bt --ex q --args builddir/runtests -e "[pathing]"
win_installer:
powershell 'start "C:\Program Files (x86)\solicus\InstallForge\bin\ifbuilderenvx86.exe" scripts\win_installer.ifp'
coverage_report:
powershell 'scripts/coverage_report.ps1'
money:
scc --exclude-dir subprojects

@ -1,147 +1,5 @@
# The Artisanal Handcrafted Retro-Future "3D" Dungeon Crawler
# Repository Moved
Welcome to my latest obsession, and turn based dungeon crawler in the style of old school raycasted
games like _Wizardry_, _Might and Magic_, _Ultima_, and similar games. The game uses SFML 3.x as
it's "cross platform layer" but other than that everything is hand coded by me. It's fully
artisinal, created manually, with nothing but a terminal and vim. No LSPs, AI, or anything.
This repository is archived here and moved to https://git.zedshaw.games/games/raycaster
This code is truly a work of art. Like an espresso at that Speakeasy Coffee bar in Brooklyn nobody
talks about. You know the one? You don't? Oh sorry, I thought you were cool.
## STATUS
Currently it's only officially tested on Windows, but I'm not really using anything OS specific (I
think).
## Where's the LICENSE?
You don't need a LICENSE that gives everything away to thieving corporations just to publish your
works online. Nobody makes artists, musicians, painters, photographers, or sculptors get a license
before posting online, so why do programmers need one? You worried you'll get sued? Ok, so just put
a disclaimer but why do you _also_ have to give your hard work away for anyone to steal and profit
from just so they don't sue you?
You don't, and no matter what the OSI says, nobody can sue you if they steal your code and cause a
plane to crash. _They_ would get sued for stealing your code and putting it in a plane, not you.
Requiring _only_ programmers to release their code with a license to avoid lawsuits creates a
[Chilling Effect](https://www.thefire.org/research-learn/chilling-effect-overview) on programmer free speech and that violates the First Amendment.
So this code isn't licensed, it's copyright by default. I'm publishing it using my free speech
rights to express myself and that means you can look at it the same as if I posted a painting or an
essay on my blog. I obviously can't sue you for just looking at it and playing the game because I
published it so you can, but _that doesn't mean you own it._ You can't resell it, fork it,
nothing.
Just grab the code and play it. That's it. Tell people about it. Fair use says you can even record
videos reviewing it and talking about it.
See? That's how Free Speech works. You don't need a LICENSE.
## Build Instructions
On all platforms you'll need these components:
* [Meson](https://mesonbuild.com/) -- which needs Python.
* C++ Compiler -- Tested with Clang and GCC 14.2.0. You can use my [Windows C++ Setup Guide](https://git.learnjsthehardway.com/learn-code-the-hard-way/lcthw-windows-installers) which features an automated installer for Windows.
* [GNU make](https://www.gnu.org/software/make/) -- For the convenience Makefile. On Windows you should have this if you used my setup scripts. Otherwise `winget install ezwinports.make` will set you up.
* [Ninja](https://ninja-build.org/) -- Meson uses this to do builds on most systems.
* [git](https://git-scm.com/) -- Which should be on almost every platform, and is installed by default with my Windows setup scripts.
### Windows Instructions
I primarily develop in Windows using the above setup, so this should work the best. Open [Windows
Terminal](https://github.com/microsoft/terminal) and run these commands _one at a time_. Don't
copy-past bomb this:
```shell
git clone https://git.learnjsthehardway.com/learn-code-the-hard-way/raycaster.git
cd raycaster
# ignore the errors the first time
./scripts/reset_build.ps1
# first compile takes a while
make
# this copies the binary so you can run it
make run
```
After that the game should be running. It'll be in different states depending on how far I've
pushed it, but you should at least have a few enemies, some loot, and rooms light in it. Go find them.
## Linux and OSX
Linux and OSX have the same requirements as Windows and almost the same install steps. The only
difference is that once you get your developer tools installed then you only need [Meson](https://mesonbuild.com/). Linux and OSX should have everything else you need or there's a package for it.
Once you have that installed you can run these commands:
```shell
git clone https://git.learnjsthehardway.com/learn-code-the-hard-way/raycaster.git
cd raycaster
# ignore the errors the first time
./scripts/reset_build.sh
# first compile takes a while
make
./builddir/zedcaster
```
You don't need `make run` because Linux and OSX are sane operating systems that don't lock every
damn thing a process touches.
### Other Platforms
No testing done on other platforms but let me know if you get it to build somewhere fun and I'll
mention it.
## Development Guide
You can look in the `notes.txt` file for my informal TODO list of things to fix and make. I'm not
really accepting contributions from others, but if you want to follow along then that's what I'm
doing.
If you're just starting out in C++ or programming then the project is designed to be readable by
someone who knows very little. Every file is small and should be easy to read. I don't use any
insane tricks or weird C++ idioms. I also try to avoid too many external libraries so I'll use
plain old [std::vector]() and [std::unordered_map]() rather than external libraries that might be
faster. This is done _on purpose_ so people (myself included) can learn about the basics of C++ and
the STL.
I also don't do a lot of performance tuning or obsession over _THE CACHE_. Clean, simple, readable
code is more important than squeezing 4% performance out of the code. I do however attempt to
design things so that it doesn't do useless work because the fastest thing you can do in a computer
is nothing. If I can architect away a performance issue and not make the code too complex then I'll
do that instead.
That means if you have a suggestion for a micro-benchmark improvement that will dramatically boost
performance, but the code is convoluted and hard to understand, then it won't work. If your
suggestion is interesting and provides a massive boost then let me know and I'll check it out. But,
I would also like statistics that show it's better, not just your word.
## Known Bugs
It's early so probably a bunch of bugs.
## Linux Build Notes
Libraries Needed:
* libxi-dev
* libfreetype-dev
It uses c++ so you may need to install a libg++ or libc++ for your system. Usually this is all you
need:
apt install build-essential
## OSX Build Notes
* Quite a bad experience. Need to install Python, cmake, meson, and ninja all which are in homebrew but if you don't use homebrew then this is a problem.
* You need to run the .command script in Application/your python that updates the SSL certs.
* You have to give iTerm access to your keystrokes...because wtf it already has them?

@ -34,6 +34,7 @@ namespace ai {
void update();
void dump();
std::string to_string();
};
struct AIManager {

@ -61,4 +61,14 @@ namespace ai {
dump_script(script, start, plan.script);
}
std::string EntityAI::to_string() {
AIProfile* profile = ai::profile();
std::string result = wants_to();
for(auto& [name, name_id] : *profile) {
result += fmt::format("\n{}={}", name, start.test(name_id));
}
return result;
}
}

@ -9,7 +9,8 @@
"have_item": 6,
"have_healing": 7,
"detect_enemy": 8,
"tough_personality": 9
"tough_personality": 9,
"cant_move": 10
},
"actions": [
{
@ -32,7 +33,8 @@
"tough_personality": false,
"in_combat": true,
"have_healing": false,
"health_good": false
"health_good": false,
"cant_move": false
},
"effects": {
"in_combat": false
@ -52,6 +54,19 @@
"enemy_dead": true
}
},
{
"name": "face_enemy",
"cost": 10,
"needs": {
"no_more_enemies": false,
"in_combat": false,
"enemy_found": true
},
"effects": {
"in_combat": true,
"enemy_dead": true
}
},
{
"name": "collect_items",
"cost": 5,
@ -117,6 +132,7 @@
"Host::actions":
["find_enemy",
"kill_enemy",
"face_enemy",
"collect_items",
"use_healing"],
"Enemy::actions":

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Before

Width:  |  Height:  |  Size: 665 KiB

After

Width:  |  Height:  |  Size: 665 KiB

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Before

Width:  |  Height:  |  Size: 1011 KiB

After

Width:  |  Height:  |  Size: 1011 KiB

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Before

Width:  |  Height:  |  Size: 466 KiB

After

Width:  |  Height:  |  Size: 466 KiB

Before

Width:  |  Height:  |  Size: 818 KiB

After

Width:  |  Height:  |  Size: 818 KiB

Before

Width:  |  Height:  |  Size: 413 KiB

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

@ -22,293 +22,207 @@
"ui_hover": "assets/sounds/ui_hover.ogg",
"punch_cartoony": "assets/sounds/punch_cartoony.ogg",
"electric_shock_01": "assets/sounds/electric_shock_01.ogg",
"fireball_01": "assets/sounds/fireball_01.ogg"
"fireball_01": "assets/sounds/fireball_01.ogg",
"hp_status_80": "assets/sounds/hp_status_80.ogg",
"hp_status_60": "assets/sounds/hp_status_60.ogg",
"hp_status_30": "assets/sounds/hp_status_30.ogg",
"hp_status_10": "assets/sounds/hp_status_10.ogg",
"hp_status_00": "assets/sounds/hp_status_00.ogg"
},
"sprites": {
"gold_savior":
{"path": "assets/gold_savior-256.png",
{"path": "assets/sprites/gold_savior.png",
"frame_width": 256,
"frame_height": 256
},
"armored_knight":
{"path": "assets/armored_knight_1-256.png",
{"path": "assets/sprites/armored_knight_1.png",
"frame_width": 256,
"frame_height": 256
},
"sword":
{"path": "assets/cinqueda_1-256.png",
"axe_ranger":
{"path": "assets/sprites/axe_ranger.png",
"frame_width": 256,
"frame_height": 256
},
"rat_with_sword":
{"path": "assets/rat_with_sword-256.png",
"hairy_spider":
{"path": "assets/sprites/hairy_spider.png",
"frame_width": 256,
"frame_height": 256
},
"rat_king":
{"path": "assets/rat_king-256.png",
"rat_with_sword":
{"path": "assets/sprites/rat_with_sword.png",
"frame_width": 256,
"frame_height": 256
},
"rat_king_boss":
{"path": "assets/rat_king_2_frame_animation.png",
{"path": "assets/bossfights/rat_king_2_frame_animation.png",
"frame_width": 720,
"frame_height": 720
},
"barrel_small":
{"path": "assets/wood_barrel_small-256.png",
{"path": "assets/items/wood_barrel_small.png",
"frame_width": 256,
"frame_height": 256
},
"torch_pillar":
{"path": "assets/torch_pillar-256.png",
{"path": "assets/sprites/torch_pillar.png",
"frame_width": 256,
"frame_height": 256
},
"torch_crappy":
{"path": "assets/torch_crappy-256.png",
{"path": "assets/items/torch_crappy.png",
"frame_width": 256,
"frame_height": 256
},
"torch_horizontal_floor":
{"path": "assets/torch_horizontal_floor-256.png",
"frame_width": 256,
"frame_height": 256
},
"evil_eye":
{"path": "assets/evil_eye-sprites.png",
{"path": "assets/items/torch_horizontal_floor.png",
"frame_width": 256,
"frame_height": 256
},
"peasant_girl":
{"path": "assets/undead_peasant-256.png",
{"path": "assets/sprites/peasant_girl_2.png",
"frame_width": 256,
"frame_height": 256
},
"grave_stone":
{"path": "assets/grave_stone-256.png",
"frame_width": 256,
"frame_height": 256
},
"floor":
{"path": "assets/floor_tile_test-256.png",
"frame_width": 256,
"frame_height": 256
},
"ceiling":
{"path": "assets/ceiling_test-256.png",
{"path": "assets/sprites/grave_stone.png",
"frame_width": 256,
"frame_height": 256
},
"healing_potion_small":
{"path": "assets/healing_potion_small-256.png",
{"path": "assets/items/healing_potion_small.png",
"frame_width": 256,
"frame_height": 256
},
"well_down":
{"path": "assets/well_down-256.png",
{"path": "assets/sprites/well_down.png",
"frame_width": 256,
"frame_height": 256
},
"rope_vines_up":
{"path": "assets/rope_vines_up-256.png",
{"path": "assets/sprites/rope_vines_up.png",
"frame_width": 256,
"frame_height": 256
},
"tripwire_trap":
{"path": "assets/tripwire_trap-256.png",
"frame_width": 256,
"frame_height": 256
},
"cinqueda":
{"path": "assets/cinqueda_1-256.png",
"frame_width": 256,
"frame_height": 256
},
"blood_splatter":
{"path": "assets/blood_splatter-256.png",
{"path": "assets/sprites/tripwire_trap.png",
"frame_width": 256,
"frame_height": 256
},
"axe_ranger":
{"path": "assets/axe_ranger-256.png",
"frame_width": 256,
"frame_height": 256
},
"hairy_spider":
{"path": "assets/hairy_spider-256.png",
"frame_width": 256,
"frame_height": 256
},
"down_the_well":
{"path": "assets/down_the_well.jpg",
"frame_width": 900,
"frame_height": 600
},
"boss_fight_background":
{"path": "assets/rat_king_boss_fight_background.jpg",
{"path": "assets/bossfights/rat_king_boss_fight_background.jpg",
"frame_width": 1080,
"frame_height": 720
},
"devils_fingers_background":
{"path": "assets/devils_fingers_background.jpg",
{"path": "assets/bossfights/devils_fingers_background.jpg",
"frame_width": 1080,
"frame_height": 720
},
"devils_fingers_sprite":
{"path": "assets/devils_fingers_sprite.png",
{"path": "assets/bossfights/devils_fingers_sprite.png",
"frame_width": 720,
"frame_height": 720
},
"devils_fingers_stage":
{"path": "assets/devils_fingers_stage.png",
{"path": "assets/bossfights/devils_fingers_stage.png",
"frame_width": 1080,
"frame_height": 720
},
"tunnel_with_rocks":
{"path": "assets/tunnel_with_rocks.png",
{"path": "assets/bossfights/tunnel_with_rocks.png",
"frame_width": 1080,
"frame_height": 720
},
"tunnel_with_rocks_stage":
{"path": "assets/tunnel_with_rocks_stage.png",
{"path": "assets/bossfights/tunnel_with_rocks_stage.png",
"frame_width": 1080,
"frame_height": 720
},
"ritual_crafting_area":
{"path": "assets/ritual_crafting_area.png",
"frame_width": 380,
"frame_height": 720
},
"the_ritual_circle":
{"path": "assets/the_ritual_circle.png",
"frame_width": 380,
"frame_height": 380
},
"paper_ui_background":
{"path": "assets/paper_ui_background.png",
{"path": "assets/ui/ritual_crafting_area.png",
"frame_width": 380,
"frame_height": 720
},
"full_screen_paper":
{"path": "assets/full_screen_paper.png",
{"path": "assets/ui/full_screen_paper.png",
"frame_width": 1280,
"frame_height": 720
},
"broken_locket-64":
{"path": "assets/rituals/broken_locket-64.png",
"frame_width": 64,
"frame_height": 64
},
"broken_locket-128":
{"path": "assets/rituals/broken_locket-128.png",
"frame_width": 128,
"frame_height": 128
},
"broken_pen_knife-64":
{"path": "assets/rituals/broken_pen_knife-64.png",
"frame_width": 64,
"frame_height": 64
},
"broken_pen_knife-128":
{"path": "assets/rituals/broken_pen_knife-128.png",
"frame_width": 128,
"frame_height": 128
},
"broken_yoyo-64":
{"path": "assets/rituals/broken_yoyo-64.png",
"frame_width": 64,
"frame_height": 64
},
"broken_yoyo-128":
{"path": "assets/rituals/broken_yoyo-128.png",
"frame_width": 128,
"frame_height": 128
},
"chess_pawn-64":
{"path": "assets/rituals/chess_pawn-64.png",
"frame_width": 64,
"frame_height": 64
},
"chess_pawn-128":
{"path": "assets/rituals/chess_pawn-128.png",
"frame_width": 128,
"frame_height": 128
},
"dirty_kerchief-64":
{"path": "assets/rituals/dirty_kerchief-64.png",
"frame_width": 64,
"frame_height": 64
},
"dirty_kerchief-128":
{"path": "assets/rituals/dirty_kerchief-128.png",
"frame_width": 128,
"frame_height": 128
},
"leather_pouch-64":
{"path": "assets/rituals/leather_pouch-64.png",
"frame_width": 64,
"frame_height": 64
},
"leather_pouch-128":
{"path": "assets/rituals/leather_pouch-128.png",
"frame_width": 128,
"frame_height": 128
},
"mushroom-64":
{"path": "assets/rituals/mushroom-64.png",
"frame_width": 64,
"frame_height": 64
},
"mushroom-128":
{"path": "assets/rituals/mushroom-128.png",
"frame_width": 128,
"frame_height": 128
},
"pocket_watch-64":
{"path": "assets/rituals/pocket_watch-64.png",
"frame_width": 64,
"frame_height": 64
},
"pocket_watch-128":
{"path": "assets/rituals/pocket_watch-128.png",
"frame_width": 128,
"frame_height": 128
},
"rusty_nails-64":
{"path": "assets/rituals/rusty_nails-64.png",
"frame_width": 64,
"frame_height": 64
},
"rusty_nails-128":
{"path": "assets/rituals/rusty_nails-128.png",
"frame_width": 128,
"frame_height": 128
},
"severed_finger-64":
{"path": "assets/rituals/severed_finger-64.png",
"frame_width": 64,
"frame_height": 64
},
"severed_finger-128":
{"path": "assets/rituals/severed_finger-128.png",
"frame_width": 128,
"frame_height": 128
},
"stone_doll_cursed-64":
{"path": "assets/rituals/stone_doll_cursed-64.png",
"frame_width": 64,
"frame_height": 64
},
"stone_doll_cursed-128":
{"path": "assets/rituals/stone_doll_cursed-128.png",
"frame_width": 128,
"frame_height": 128
"broken_locket":
{"path": "assets/items/broken_locket.png",
"frame_width": 256,
"frame_height": 256
},
"broken_pen_knife":
{"path": "assets/items/broken_pen_knife.png",
"frame_width": 256,
"frame_height": 256
},
"broken_yoyo":
{"path": "assets/items/broken_yoyo.png",
"frame_width": 256,
"frame_height": 256
},
"chess_pawn":
{"path": "assets/items/chess_pawn.png",
"frame_width": 256,
"frame_height": 256
},
"dirty_kerchief":
{"path": "assets/items/dirty_kerchief.png",
"frame_width": 256,
"frame_height": 256
},
"leather_pouch":
{"path": "assets/items/leather_pouch.png",
"frame_width": 256,
"frame_height": 256
},
"mushroom":
{"path": "assets/items/mushroom.png",
"frame_width": 256,
"frame_height": 256
},
"pocket_watch":
{"path": "assets/items/pocket_watch.png",
"frame_width": 256,
"frame_height": 256
},
"rusty_nails":
{"path": "assets/items/rusty_nails.png",
"frame_width": 256,
"frame_height": 256
},
"severed_finger":
{"path": "assets/items/severed_finger.png",
"frame_width": 256,
"frame_height": 256
},
"stone_doll_cursed":
{"path": "assets/items/stone_doll_cursed.png",
"frame_width": 256,
"frame_height": 256
},
"dubious_combination":
{"path": "assets/items/dubious_combination.png",
"frame_width": 256,
"frame_height": 256
},
"dead_body":
{"path": "assets/sprites/dead_body.png",
"frame_width": 256,
"frame_height": 256
},
"dead_body_lootable":
{"path": "assets/sprites/dead_body_lootable.png",
"frame_width": 256,
"frame_height": 256
}
},
"worldgen": {
"enemy_probability": 50,
"empty_room_probability": 1,
"device_probability": 10
},
"graphics": {
@ -324,9 +238,12 @@
"W": 8592,
"NW": 8598
},
"test_rituals": [
{ "has_spikes": true, "active": true },
{ "has_magick": true, "active": true },
{ "has_magick": true, "shiny_bauble": true, "active": true }
]
"theme": {
"NOTE": "colors are in assets/palette.json",
"padding": 3,
"border_px": 1,
"text_size": 20,
"label_size": 20,
"font_file_name": "assets/text.otf"
}
}

@ -7,13 +7,13 @@
"inventory_count": 0,
"randomized": false,
"components": [
{"_type": "Tile", "display": 10949,
"foreground": [24, 205, 189],
"background": [24, 205, 189]
{"_type": "Tile", "display": 6105,
"foreground": "devices/fg:stairs_down",
"background": "devices/bg:stairs_down"
},
{"_type": "Device",
"config": {"test": true},
"events": ["Events::GUI::STAIRS_DOWN"]},
"config": {},
"events": ["STAIRS_DOWN"]},
{"_type": "Sprite", "name": "well_down", "width": 256, "height": 256, "scale": 1.0}
]
},
@ -25,12 +25,12 @@
"placement": "fixed",
"components": [
{"_type": "Tile", "display": 8793,
"foreground": [24, 205, 189],
"background": [24, 205, 189]
"foreground": "devices/fg:stairs_up",
"background": "devices/fg:stairs_up"
},
{"_type": "Device",
"config": {"test": true},
"events": ["Events::GUI::STAIRS_UP"]},
"config": {},
"events": ["STAIRS_UP"]},
{"_type": "Sprite", "name": "rope_vines_up", "width": 256, "height": 256, "scale": 1.0}
]
},
@ -40,14 +40,66 @@
"description": "Watch where you're going.",
"inventory_count": 0,
"components": [
{"_type": "Tile", "display": 6855,
"foreground": [24, 205, 189],
"background": [24, 205, 189]
{"_type": "Tile", "display": 95,
"foreground": "devices/fg:tripwire",
"background": "devices/bg:tripwire"
},
{"_type": "Device",
"config": {"test": true},
"events": ["Events::GUI::TRAP"]},
{"_type": "Device", "config": {}, "events": ["TRAP"]},
{"_type": "Sprite", "name": "tripwire_trap", "width": 256, "height": 256, "scale": 1.0}
]
},
"BARREL_SMALL": {
"id": "BARREL_SMALL",
"name": "Small Barrel",
"description": "A small rotten barrel that may hold things.",
"components": [
{"_type": "Tile", "display": 85,
"foreground": "devices/fg:barrel",
"background": "devices/bg:barrel"
},
{"_type": "Device", "config": {}, "events": ["LOOT_CONTAINER"]},
{"_type": "Sprite", "name": "barrel_small", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"GRAVE_STONE": {
"id": "GRAVE_STONE",
"name": "Grave Stone",
"description": "Something died here. Was this your doing?",
"components": [
{"_type": "Tile", "display": 8687,
"foreground": "devices/fg:grave_stone",
"background": "devices/bg:grave_stone"
},
{"_type": "Device", "config": {}, "events": ["LOOT_CONTAINER"]},
{"_type": "Sprite", "name": "grave_stone", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"DEAD_BODY_LOOTABLE": {
"id": "DEAD_BODY_LOOTABLE",
"name": "Grave Stone",
"description": "Something died here. Was this your doing?",
"components": [
{"_type": "Tile", "display": 1890,
"foreground": "devices/fg:dead_body_lootable",
"background": "devices/bg:dead_body_lootable"
},
{"_type": "Device", "config": {}, "events": ["LOOT_CONTAINER"]},
{"_type": "Sprite", "name": "dead_body_lootable", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"DEAD_BODY": {
"id": "DEAD_BODY",
"name": "Something Dead",
"description": "You can't loot this, weirdo.",
"components": [
{"_type": "Tile", "display": 1939,
"foreground": "devices/fg:dead_body",
"background": "devices/bg:dead_body"
},
{"_type": "Sprite", "name": "dead_body", "width": 256, "height": 256, "scale": 1.0}
]
}
}

@ -2,22 +2,40 @@
"PLAYER_TILE": {
"placement": "fixed",
"components": [
{"_type": "Tile", "display": 42603,
"foreground": [255, 200, 125],
"background": [30, 20, 75]
{"_type": "Tile", "display": 10733,
"foreground": "enemies/fg:player",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 200, "max_hp": 200, "damage": 10, "dead": false},
{"_type": "Motion", "dx": 0, "dy": 0, "random": false},
{"_type": "LightSource", "strength": 45, "radius": 2.0}
{"_type": "Collision", "has": true},
{"_type": "LightSource", "strength": 35, "radius": 2.0}
]
},
"GOLD_SAVIOR": {
"components": [
{"_type": "Tile", "display": 42586,
"foreground": "enemies/fg:gold_savior",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 20, "max_hp": 20, "damage": 1, "dead": false},
{"_type": "Collision", "has": true},
{"_type": "Motion", "dx": 0, "dy": 0, "random": false},
{"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"},
{"_type": "Personality", "hearing_distance": 5, "tough": false},
{"_type": "Animation", "easing": 1, "ease_rate": 0.2, "scale": 0.1, "simple": true, "frames": 10, "speed": 0.3, "stationary": false},
{"_type": "Sprite", "name": "gold_savior", "width": 256, "height": 256, "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "Sword_Hit_2", "death": "Humanoid_Death_1"}
]
},
"KNIGHT": {
"components": [
{"_type": "Tile", "display": 2189,
"foreground": [131, 213, 238],
"background": [30, 20, 75]
{"_type": "Tile", "display": 2216,
"foreground": "enemies/fg:knight",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 20, "max_hp": 20, "damage": 1, "dead": false},
{"_type": "Collision", "has": true},
{"_type": "Motion", "dx": 0, "dy": 0, "random": false},
{"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"},
{"_type": "Personality", "hearing_distance": 5, "tough": true},
@ -29,25 +47,27 @@
"AXE_RANGER": {
"components": [
{"_type": "Tile", "display": 1898,
"foreground": [156, 172, 197],
"background": [30, 20, 75]
"foreground": "enemies/fg:axe_ranger",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 40, "max_hp": 40, "damage": 10, "dead": false},
{"_type": "Collision", "has": true},
{"_type": "Motion", "dx": 0, "dy": 0, "random": true},
{"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"},
{"_type": "Personality", "hearing_distance": 5, "tough": true},
{"_type": "Sprite", "name": "axe_ranger", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Animation", "easing": 3, "ease_rate": 0.5, "scale": 0.1, "simple": false, "frames": 2, "speed": 0.6, "stationary": false},
{"_type": "Animation", "easing": 3, "ease_rate": 0.5, "scale": 0.1, "simple": true, "frames": 1, "speed": 0.6, "stationary": false},
{"_type": "Sound", "attack": "Sword_Hit_2", "death": "Ranger_1"}
]
},
"RAT_GIANT": {
"components": [
{"_type": "Tile", "display": 2220,
"foreground": [205, 164, 246],
"background": [30, 20, 75]
"foreground": "enemies/fg:rat_giant",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 50, "max_hp": 50, "damage": 2, "dead": false},
{"_type": "Collision", "has": true},
{"_type": "Motion", "dx": 0, "dy": 0, "random": false},
{"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"},
{"_type": "Personality", "hearing_distance": 5, "tough": false},
@ -59,10 +79,11 @@
"SPIDER_GIANT_HAIRY": {
"components": [
{"_type": "Tile", "display": 1218,
"foreground": [205, 164, 246],
"background": [30, 20, 75]
"foreground": "enemies/fg:spider_giant",
"background": "color:transparent"
},
{"_type": "Combat", "hp": 20, "max_hp": 20, "damage": 20, "dead": false},
{"_type": "Collision", "has": true},
{"_type": "Motion", "dx": 0, "dy": 0, "random": false},
{"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"},
{"_type": "Personality", "hearing_distance": 5, "tough": true},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,12 @@
{
"healing_potion_small":
{"path": "assets/icons/healing_potion_small.png",
"frame_width": 96,
"frame_height": 96
},
"torch_horizontal_floor":
{"path": "assets/icons/torch_horizontal_floor.png",
"frame_width": 96,
"frame_height": 96
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

@ -7,58 +7,13 @@
"components": [
{"_type": "LightSource", "strength": 50, "radius": 2.5},
{"_type": "Tile", "display": 3848,
"foreground": [24, 120, 189],
"background": [230,120, 120]
"foreground": "items/fg:flame",
"background": "color:transparent"
},
{"_type": "Sprite", "name": "torch_horizontal_floor", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"SWORD_RUSTY": {
"id": "SWORD_RUSTY",
"name": "Rusty Junk Sword",
"description": "A sword left to rot in a deep hole where it acquired a patina of dirt and tetanus. You aren't sure if it's more deadly for you to hold it or for the people you stab with it.",
"inventory_count": 1,
"components": [
{"_type": "Weapon", "damage": 15},
{"_type": "Tile", "display": 7735,
"foreground": [24, 120, 189],
"background": [24, 120, 189]
},
{"_type": "Sprite", "name": "cinqueda", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"BARREL_SMALL": {
"id": "BARREL_SMALL",
"name": "Small Barrel",
"description": "A small rotten barrel that may hold things.",
"components": [
{"_type": "Tile", "display": 43754,
"foreground": [150, 100, 189],
"background": [150, 100, 189]
},
{"_type": "Loot", "amount": 10},
{"_type": "Sprite", "name": "barrel_small", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
],
"inventory_count": 1
},
"TORCH_PILLAR": {
"id": "TORCH_PILLAR",
"name": "Light Hanging from Ceiling",
"description": "Light Hanging from Ceiling",
"inventory_count": 0,
"components": [
{"_type": "Tile", "display": 1918,
"foreground": [24, 205, 210],
"background": [24, 205, 210]
},
{"_type": "LightSource", "strength": 50, "radius": 2.8},
{"_type": "Sprite", "name": "torch_pillar", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"POTION_HEALING_SMALL": {
"id": "POTION_HEALING_SMALL",
"name": "Small Healing Potion",
@ -66,27 +21,12 @@
"inventory_count": 1,
"components": [
{"_type": "Tile", "display": 1003,
"foreground": [255, 205, 189],
"background": [255, 205, 189]
"foreground": "items/fg:potion",
"background": "color:transparent"
},
{"_type": "Curative", "hp": 20},
{"_type": "Sprite", "name": "healing_potion_small", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
},
"GRAVE_STONE": {
"id": "GRAVE_STONE",
"name": "Grave Stone",
"description": "Something died here. Was this your doing?",
"inventory_count": 1,
"components": [
{"_type": "Tile", "display": 8687,
"foreground": [32, 123, 164],
"background": [24, 205, 189]
},
{"_type": "Loot", "amount": 10},
{"_type": "Sprite", "name": "grave_stone", "width": 256, "height": 256, "scale": 1.0},
{"_type": "Sound", "attack": "pickup", "death": "blank"}
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1,140 @@
[
{
"centered": false,
"display": 35,
"x": 0,
"y": 0
},
{
"centered": false,
"display": 8284,
"x": 64,
"y": 0
},
{
"centered": false,
"display": 11590,
"x": 128,
"y": 0
},
{
"centered": false,
"display": 10899,
"x": 192,
"y": 0
},
{
"centered": false,
"display": 9256,
"x": 256,
"y": 0
},
{
"centered": false,
"display": 9608,
"x": 320,
"y": 0
},
{
"centered": false,
"display": 10747,
"x": 384,
"y": 0
},
{
"centered": false,
"display": 8285,
"x": 448,
"y": 0
},
{
"centered": true,
"display": 1003,
"x": 512,
"y": 0
},
{
"centered": true,
"display": 3848,
"x": 576,
"y": 0
},
{
"centered": true,
"display": 85,
"x": 0,
"y": 64
},
{
"centered": true,
"display": 1939,
"x": 64,
"y": 64
},
{
"centered": true,
"display": 1890,
"x": 128,
"y": 64
},
{
"centered": true,
"display": 8687,
"x": 192,
"y": 64
},
{
"centered": true,
"display": 6105,
"x": 256,
"y": 64
},
{
"centered": true,
"display": 8793,
"x": 320,
"y": 64
},
{
"centered": true,
"display": 95,
"x": 384,
"y": 64
},
{
"centered": true,
"display": 1898,
"x": 448,
"y": 64
},
{
"centered": true,
"display": 42586,
"x": 512,
"y": 64
},
{
"centered": true,
"display": 2216,
"x": 576,
"y": 64
},
{
"centered": true,
"display": 10733,
"x": 0,
"y": 128
},
{
"centered": true,
"display": 2220,
"x": 64,
"y": 128
},
{
"centered": true,
"display": 1218,
"x": 128,
"y": 128
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

@ -0,0 +1,81 @@
{
"color": {
"transparent": [100, 100, 100, 100],
"BAD": [255, 0, 0]
},
"gui/theme": {
"black": [0, 0, 0, 255],
"dark_dark": [10, 10, 10, 255],
"dark_mid": [30, 30, 30, 255],
"dark_light": [60, 60, 60, 255],
"mid": [100, 100, 100, 255],
"light_dark": [150, 150, 150, 255],
"light_mid": [200, 200, 200, 255],
"light_light": [230, 230, 230, 255],
"white": [255, 255, 255, 255],
"fill_color": "gui/theme:dark_mid",
"text_color": "gui/theme:light_light",
"bg_color": "gui/theme:mid",
"border_color": "gui/theme:dark_dark",
"bg_color_dark": "gui/theme:black"
},
"map/theme": {
"black": [0, 0, 0, 255],
"dark_dark": [10, 10, 10, 255],
"dark_mid": [30, 30, 30, 255],
"dark_light": [60, 60, 60, 255],
"mid": [100, 100, 100, 255],
"light_dark": [150, 150, 150, 255],
"light_mid": [200, 200, 200, 255],
"light_light": [230, 230, 230, 255],
"white": [255, 255, 255, 255]
},
"items/fg": {
"flame": "map/theme:white",
"potion": "map/theme:white"
},
"enemies/fg": {
"player": "map/theme:white",
"gold_savior": "map/theme:white",
"knight": "map/theme:white",
"axe_ranger": "map/theme:white",
"rat_giant": "map/theme:white",
"spider_giant": "map/theme:white"
},
"tiles/fg": {
"floor_tile": "map/theme:mid",
"wall_plain": "map/theme:dark_mid",
"wall_moss": "map/theme:dark_light",
"ceiling_black": "color:transparent",
"lava_floor": [200, 100, 100],
"gray_stone_floor_light": [40, 60, 180],
"wood_wall": "map/theme:dark_mid"
},
"tiles/bg": {
"floor_tile": "map/theme:dark_dark",
"wall_plain": "map/theme:dark_dark",
"wall_moss": "map/theme:light_dark",
"ceiling_black": "color:transparent",
"lava_floor": "map/theme:dark_dark",
"gray_stone_floor_light": "map/theme:dark_mid",
"wood_wall": "map/theme:dark_dark"
},
"devices/fg": {
"stairs_down": [24, 205, 189],
"stairs_up": [24, 205, 189],
"tripwire": [24, 205, 189],
"barrel": [150, 100, 189],
"grave_stone": [32, 123, 164],
"dead_body": [32, 123, 164],
"dead_body_lootable": [32, 123, 164]
},
"devices/bg": {
"stairs_down": [24, 205, 189],
"stairs_up": [24, 205, 189],
"tripwire": [24, 205, 189],
"barrel": [150, 100, 189],
"grave_stone": [24, 205, 189],
"dead_body": [24, 205, 189],
"dead_body_lootable": [24, 205, 189]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

@ -169,5 +169,34 @@
"damage": 16,
"probability": 1.0
}
}
},
"junk": {
"chess_pawn": {
"name": "chess_pawn",
"provides": ["cursed_item"]
},
"dirty_kerchief": {
"name": "dirty_kerchief",
"provides": ["has_magick"]
},
"mushroom": {
"name": "mushroom",
"provides": ["has_magick"]
},
"pocket_watch": {
"name": "pocket_watch",
"provides": ["shiny_bauble"]
},
"rusty_nails": {
"name": "rusty_nails",
"provides": ["has_spikes"]
},
"severed_finger": {
"name": "severed_finger",
"provides": ["cursed_item"]
}
},
"starting_junk": [
"pocket_watch", "mushroom", "rusty_nails"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

@ -1,8 +1,10 @@
#version 120
uniform vec2 u_resolution;
uniform float u_time;
uniform sampler2D source;
uniform float u_mouse;
uniform float value = 0.2;
uniform int octaves=8;
float random (in vec2 st) {
return fract(sin(dot(st.xy,
@ -26,7 +28,7 @@ float noise(in vec2 st) {
(d - b) * u.x * u.y;
}
float fbm(in vec2 st, int octaves=8) {
float fbm(in vec2 st) {
float v = 0.0;
float a = 0.5;
vec2 shift = vec2(100.0);
@ -47,7 +49,7 @@ void main() {
vec3 color = vec3(0.0);
float speed = u_time * 10.0;
float value = cos(u_time) * cos(u_time);
float value = 0.8; // cos(u_time) * cos(u_time);
vec2 q = vec2(0.0);
q.x = fbm(st + 0.00 * speed);

@ -1,8 +1,10 @@
#version 120
uniform vec2 u_resolution;
uniform float u_time;
uniform sampler2D source;
uniform float u_mouse;
uniform float value = 0.2;
uniform int octaves=8;
float random (in vec2 st) {
return fract(sin(dot(st.xy,
@ -26,7 +28,7 @@ float noise(in vec2 st) {
(d - b) * u.x * u.y;
}
float fbm(in vec2 st, int octaves=8) {
float fbm(in vec2 st) {
float v = 0.0;
float a = 0.5;
vec2 shift = vec2(100.0);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,17 @@
[
{
"name": "Mossy Blue Ceiling",
"floor": "gray_stone_floor_light",
"walls": "wall_moss"
},
{
"name": "Plain",
"floor": "floor_tile",
"walls": "wall_plain"
},
{
"name": "Wood Walls",
"floor": "floor_tile",
"walls": "wood_wall"
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Some files were not shown because too many files have changed in this diff Show More