Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Vapourware Codexian Game Development Thread

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Scrapped old dungeon generation altogether and started over. Below is an example of a generated floor, what is shown is very basic and is only empty rooms and corridors, this will of course be fixed over time. The grey squares are used for automapping and is not seen in game (except on the map of course).

new_dungeons.jpg
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Looked at some dungeon pictures and realized that my system was setup kind of stupid. My system always used a full tile to represent a door, but it also supports changing tile size, so when very large tiles are used it will look weird. Also, the walls were always one tile thick which also gets ridiculous. Looked at some pictures of dungeons and thought for a while then re-wrote some parts, also added a lot of options I had planned since before but never implemented, now I can get a nice variety by changing some parameters. Below is a example with room probability = 1.0 so no corridors, and I think room extension probability (no wall between rooms so they together make up a larger room) is at about 0.8. Linearity is set to 0.0 so rooms get randomly placed each time (instead of building something from the formerly placed room/corridor always if linearity is set to 1.0). Looks a bit like Diablo 1 or Divine Divinity which is kind of nice.

new_dungeons2.jpg

new_dungeons3.jpg
 
Last edited:

J1M

Arcane
Joined
May 14, 2008
Messages
14,745
If you are going to generate dungeons with walls like this, you should make sure you have ways for players to knock them down and create new passageways. Perhaps even some secret rooms that require knocking down a wall to gain access.
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
If you are going to generate dungeons with walls like this, you should make sure you have ways for players to knock them down and create new passageways. Perhaps even some secret rooms that require knocking down a wall to gain access.

I know this is possible in Arena and it has been on my mind, would not be trivial to do (the walls on each side does not automatically know each other, Arena work on a grid and have doors that are 1 tile thick, in that case it is super easy to do, I do not use a grid at all) but certainly possible. However, I probably will not implement it in a general sense since I think that it breaks gameplay and exploration if abused (players will still be able to lock pick SOME doors with the right amount of skill etc.), but the secret room implementation is already there. The latter is going to use a skill (digging/mining) or special items (explosives or spells) to break down the "walls", but in this case the actual wall is going to be a door that looks like a wall, which is super easy to do, I just collect all secret rooms/branches of rooms in a list , mark the door parent and child, check the parent and child properties when building the door and choose prefab depending on that.
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Have you considered the algorythm to build more realistically placed rooms and corridors?

Well that depends on what you mean, in what aspects? Like I mentioned I can change some parameters and get something like this instead:

new_dungeons4.jpg


I also keep track of "zones" so that I can lock doors but always place the key/puzzle/artifact/lever/push plate in a way that it is always solvable, and the zones can be placed either linear (zone 1 to 2, 2 to 3 etc) or non-linear, much like Doom does.
And of course I will add more stuff to build better dungeons over time, I keep implementing new features (things to do next is to being able to force away dead end corridors if wanted and also build "loops", as in get to one place from several places).

Will also add functions that generate specific sections, such as long corridors with rooms on sides, symmetrical parts, force more "squarish" structures like inside of buildings etc.
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Well that depends on what you mean, in what aspects?

Realistic as in more likely to exist in a real world with rooms serving a purpose and not appearing to be randomly thrown together. What you described above sounds really cool.

Well that is somewhat the idea, there are two obstacles though; 1. Real world dungeons are not that exciting, so there is very little reference material. 2. Realistic does not equals to fun gameplay. But of course things should make sense, when generating a goblin lair a corridor with rooms does make sense, and most rooms are rooms for sleeping and perhaps a kitchen etc, this will be taken into account. And I will improve layouts over time, perhaps not real life-like, but more logical. But one thing I have noticed is that your space awareness is very low when you walk around, that is why the overhead layout might matter less.

Yes, each zone can have its own characteristics, I will also be able to inject hand made rooms at e.g. chokepoints to enable more focused gameplay.
 
Last edited:

set

Arcane
Joined
Oct 21, 2013
Messages
944
Have you considered an algorithm which generates multiple entrances and exits to the dungeon region in your dungeon? I think it's really important for RPG/Strategy games to give players multiple approaches to entering a dungeon and even a single room. The difficulty of a room increases the fewer entrances there are. Multiple entrances to a dungeon is what gives VTMB and other games a bit more replay value, too (sewers vs street level access). The less often a player can plow through a straightway in your dungeon's heart, the better.

The problem with you above pic is it seems like it generates two points and connects them gradually. Players will naturally gravitate through the rooms, knowing which ones lead to dead ends right away. Path of Exile really had this problem during its alpha stages (you should play that F2P game to see their current dungeon generator in action -- it's not that deep, but you almost never know which way to go even after playing the same dungeon a thousand times).
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Have you considered an algorithm which generates multiple entrances and exits to the dungeon region in your dungeon? I think it's really important for RPG/Strategy games to give players multiple approaches to entering a dungeon and even a single room. The difficulty of a room increases the fewer entrances there are. Multiple entrances to a dungeon is what gives VTMB and other games a bit more replay value, too (sewers vs street level access). The less often a player can plow through a straightway in your dungeon's heart, the better.

The problem with you above pic is it seems like it generates two points and connects them gradually. Players will naturally gravitate through the rooms, knowing which ones lead to dead ends right away. Path of Exile really had this problem during its alpha stages (you should play that F2P game to see their current dungeon generator in action -- it's not that deep, but you almost never know which way to go even after playing the same dungeon a thousand times).


Well actually, I start at one point and add from there, for example in the larger dungeon I showed you can see a small white dot in the very middle, that is where the player begins, the player has no idea where to go in that example. I know what Path of Exile does (used to do?), they make a linear path and then add some rooms/branches on top of that straight line (not literally straight, but from a design perspective) to add some non-linearity. I can do that to without any problem, just set linearity to 1.0 and enable zone branching and you will get something that looks like similar to Path of Exile, remove branches and you got Skyrim dungeons.

Regarding the multiple entrances it is possible, but keep in mind that these are procedural and the world above it is also procedural making it near impossible to get the actual space coordinates to match. Since spacial correctness that is not super important I guess it can be solved with teleports (not visible to the player) which would be kind of simple to add. One can even have entrances hooked up to different "zones" so that a player can get to zone 3 if he takes another route (e.g. through another dungeon).
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
Not to spam the thread, but since Rhuantavan asked about more logical dungeons I started programming the planned "structures". Structures are pattern based but not size set, so the idea is to program the grid pattern, but the number of rooms, room size and corridor length varies. First out is a grid/sewer kind of structure:

new_dungeons5.jpg
 

Mastermind

Cognito Elite Material
Patron
Bethestard
Joined
Apr 15, 2010
Messages
21,144
Steve gets a Kidney but I don't even get a tag.
Haven't worked much on my game, mostly because making the interface in gamemaker is not unlike waxing your balls.

Added the deployable turrets. They, along with drones and explosives are secondary weapons you can use while holding another weapon. You can have all 5 types (1 bomb, 3 types of turrets and 1 type of drone). Unlike weapons, you can unlock all of their upgrades and reconfigure them from the menu. You are however fairly limited in how many you can hold and once you use them you need to make more. There aren't that many options for components but the ones that are there are fairly distinct.

FOujjhv.png


Also added the option to open stuff like notebooks, books or view computer monitors. As you can see from the screenshot below, taken inside the local school, I strive to create a believable world:

pcEa4XO.png
 

r3jonwah85

Savant
Joined
Sep 1, 2013
Messages
211
Location
Sweden
And the latest update, might be hard to see but "looped" sections are now possible, next off is to kill dead ends altogether.

new_dungeons6.jpg
 

eric__s

ass hater
Developer
Joined
Jun 13, 2011
Messages
2,301
Had one of those rare programming days where despite not having any idea what I was doing, everything I did worked 100% how it was supposed to the first time I tried it. Maybe I'm actually getting good at programming.
 

set

Arcane
Joined
Oct 21, 2013
Messages
944
You say that now, but in two months everything you think is working fine has a critical design flaw which causes you to rewrite it all :)
 
Joined
Jun 20, 2014
Messages
906
Location
Malaysia
Shadorwun: Hong Kong
Finished the tile assets for the combat demo
Finished my battlefield layout for the combat demo.
Finished design for both the initial enemy and initial player combatant.
Finished Z-order coding.
Make a second attempt at pixel portrait drawing. Look even worse than the first attempt. Discarded.

Here's the layout.

WDMMeFl.png

Robbery. Robbery never changes.

Feel free, as always, to mock or crit.
 
Unwanted

jcd

Punished JCD
Patron
Joined
Jan 4, 2012
Messages
10,681
Location
UNATCO HQ
Codex 2014 PC RPG Website of the Year, 2015 Codex 2016 - The Age of Grimoire Bubbles In Memoria
c32385d04ff176bc87058989079946002433523231e321f57563a2aa2132dd4f37a29a8e8746e8abf8c4ce53af1d31b6059d8b019cca3252b1aaf315bdef63de0617eefe89e3dd6c63f9eed0ffbf11588104e648a9802c7afc8417c12aec3e3decd6fa3e20087593633a6989c3a06bc99cb47738f6314a64acf77bab0feafe1e8f395d6a090d36189c94c6da2fe9dd36ef938fdfeb14e4185dcafc255f721733bafb2986099efe818e5479ba74d5f1c2f385f2e673de97afffe6692b26010ee31c8ca5546fdd1aed53b156df3646cf65b6894ecbed57527ca2af9b1d8cb855d62c58d8813e23192b43b0a8f66ff1d718e00e0a8c34a00b3bcd30e3257e2ee1d54faa65a3a62d5e3459d428f64c13121173e7bc2d4497ce40964850799ab095d53d27b8b895064347f474a11667ef61f5d667883edbf39f4e4b3de4b402e458d9ed35446e578ab2bf5596be06e63dacac00033382f81857bae7c8e226810a2c91beaab0c3f24275effdabf585e96e0296cb448496a1d5f870ba33bba54cebe34d231d6bb2ea1afa42f1885fb33dad0247563dd50b6ef477bbecf36b1bbc48dd0f923aa65ed13a087ceb57bc37bcd51fc0a27108cec1a9541c5429f04e0628baeba4f3d941eabf434614129178e2a121b12ce44baec7650af4358db379e88a63bb047b810e5fd7c35b1cd90eaed3c25b8391540262edc7fc4cc28a997c24c82ac3b32647214a904562fc94caa9d0ed712b9bd6c2c8fe8a5bb00d0cafbc4329425f96ee0572118cd81402d25ce2df07d62732ffe54fb4cd3043526c30056012e2f8174b8c25586b1bf0d253c01ef678fdeee78cac10af3f181cf3f4ac09548992d0bde135eeeef3973bcec6e2a4e20303e98b07f62ed45ed0df7d12475d60107f19953fbed8dec25fb6262c385ecb4b8d6d16c33b98ebba818d0a18affd6469de351c4ef47110e596b811cc9336155522faca6c549d8fa8344fba8d3004eb5597297bf2ab25668272abc20233480740469507d7490374225a93806ddbcc4b05eb32253961c343f94cde1c1ecdfee6e0593d930896d96294ca5836316535898713462861d54edcee37e600a0e90cf25518d6b84b113de7de33265b97c00cfcc8caffe00cf7cf98813b866a7b1f76d747374e2bc8dbe4a8fccb68fd85847d8e91c0d5aba7d5aa2d6f74b3a0c0e9678f49640eba1b9855a5241318922c7ca8b94936b0082d9d554948106eed36146f902ca27a0031df043098fbd86b6204340f0af5a93dd048ec35af2ce619ca7fcbdfaa73c8d9316e5edbb5baabba80b393014475e511cc77f3f0b74740b4dabcfeeb3ddc68ab768075af52b90b4629a243b65d72890760a7733cd97d0a311d9b610f85346d43265210dd2f9854874ad2daa9ee74097d64ee09b6f1bc53378cbedfb2adc9a4879ecf8a054914ab72ad306bd495ed2c9bbd2bd82e4fcd4922294c6b81e7cec75e23e930c5edc372b7b68d562a53c042eb7f03067fca9ef1d5a8eb9829cb8fe74f3ba185edeb5b0747a5851a7e981eb66d280ff3cd3c85d67012a29c87da3bedd4503389d7ea87fa200691989f14d5a3dd5e56b2ba325cec7f1c2a96c73a8f5d5e14ca8187d7a77dc8dc689080b0f35f5c4f24ccbf119ba8ce9a38aecfce15f801baf964caf3c06e14a1ff4fcd058ed7c4ea78e2e1c1d1a2d9b87dca1aaddc5b88c9cb938a70b3d3690ed1e8080192b79b0a794e543cd1626d5e782aec53aa2db7b2d8cc38a3857de771b3984313ce8e3435baf2432ef02f76adf76175c7f304cda9d1a6bfe37812b77413cdfb176c148ccf86f2c58ceac36f24a172c5ee9d2d030570f38176528ea2a5eeb9acf6dbea7fae38a06508ee57afd635a06bc9008fd422d10921777fbae9221a8931ff941079d027d54c1091c74bd647eb8101d85800d15e137036d6c6645660f2fa173e8c0a185fd3f1ec728c834849206d4c92a94da2bc8d8796cdaa0335b46f371f07bd0bda46f65147d375cdaff8b2807b2d4a0449eba08c153e66dec7abdf755c1c0e4d8a4f1ba34e1426633b011212a8b15b26ba41cf4893b24107706e3e7887f48e0fe52832fa0b5f89116bd37d636ba06100841a92778d17fdda772d441715263c680cdbb9a75ab3c83266acbebec52f210bc89a046c137b70b3902322366ccb6969bd1f199aaabebb163a0e29f9ea6be882a573d3156589340d2a655c81e7b99ff636e66c866a8a7e6dac53e66419aaabf7dd10b6c5ba28795948cb10d98b76327a0ec6f60d730ea98fa7e4328a6da070c32a25def71403faf8345ea4bccb91e1b4760e6da19c634d5042e15a906fabeacf853f2772e6644a566d4726eecf4b67b6c88ae730ab70f0fce04d89477c0733fcdb49bc4df1b682535f493df5be986c617711886f4515a71125022f434f4743a8a753e59c2d8ff644fc832cad6a7d40913b055832218259f4e8885cc971fb3a353b864b20fc1654974bc9bbf4da0faead1e843e027ced53313dea7db6096658bb736b2c06f0eb4c9e43b744f5d4a1361be81efa9ce3a35d05a5b50768d6935afb79a3d5d66953f38888a122f25b6688dbacf21c838b23aa7f0d3395ea6a2cc764df73e8d0f866717da62a42f3d7ea3380525f01d580ab38f38646c473a66859fc90be03f903abe8dd185f8337d397819ecbb58953c0d0b5f2f8e775c55682dd29706f6f9b03027712d59ef5cf52e5cea24c433d377b03828d5c819cb5558014883f124684fbc50af249eee50e0e7d5955d64fba59dfc142d83a42b7e1fafe6e8a95533810118dcee56be447eda9b14b05106771ec6c4a12c038eec6a75b1cf10aa1800e1378f906fdd7101161e2946495da5f54435f56fce9cd8263da319a1ad3bea4a71c4518a5be1d2278fa0228891645e7235c9faa7e577a1779f769732eb4a1992df58e4ddfe11728ee60f4d88616eb2648c7baa625e2b0ee19d1e6f97c079b171c7cca11a23cddce3bfea10795d964b4788ccf559ac384c85a079c48450fb425b21190eee8797ad6bebe257cb2969abea00d7af9a5a4b43e54bdbdd3ed4c87fcd27c4873cab09a866d6f5858f849760e84d3e20f939544701ad4397e3dcc1309402ca4993d9ddbf8730b2ed397930593803103d426819534573d1ae07ed902e0d480f4c6d7af215a16411c4592af0acb62273a2d078974a2e74d913e6ce00005b56cfe609df450098f5dab32a41c8629118dfc80a3a3a1d5976ebf02f0f1fa4a808da55121ad4de66908483ac587dc66bbcadcef23dabca9a0b682881a863947051e1d1d48ff518611ebf8ee52f65fe1c895e6450fec0514d5091b24d868840e0da770b5e465f627c238a12879d83e5e5db1f38c335b9fa5343241574b093e80ca6ecee9b35540cc0bc7e99ec1344735e2926a9944e59c982e2cbe779600db0ae83d8af28a45572620d45e77c22b3561159e52d9d45b8e037ff67b1ed78a7c8d92277aa0ff53f8fed34ececbfbdb975693fdbe08fbee42fefd74cff9e06f6dd8fbd21003c38c96ca898a5eefe398b738024912398bda063b76e7a4399ea1c11b43b1c82a2ab7181274627514ed06094dd70a2411f15bddccb66d602f5d4c76380721d5af7f55fc0d93399f0864c9684f05e73028348532d3de86b9679ae8a16e73a86674d62424e85281da4fc676ae84f4b07544f2da38d49b2d03f76677c1a1d15745df0197cb4aee392b1233812e6b6be3feea62330b9415f9f68becc8fbee6df4cc8611fb9403b354ebca00f1ff2c70b6a7c47cfaa428d2dd6e24ac782e7fd4aef111716ed32c965ca2bed3e5af5a825fe1ca3418f82faa5d08ed0e6d528e9b392b5e0802fd3499bc14aff8e12abd358013e394af71dae59f2db9c8f46f2465ccd9a188ae8d9437d72b47db1173cf2d8b53e5f3f996b56d2c2bfaba72d86b84aa0b2fc0758405a423d7c5c1d88ca869ec9ef8d1e89fcd1eeddf522e04494b06f4aea96eca59c05fcd56f2e2239a47aaff2e3cc71d6aead1b0b1ec570c8a6921cb891621aeee09ceb319cb4a9d59e34fee265aec7631a5bf3dcf4f76447e9533383ba0caf4749073d07e495cc774d905476811088ab06e280dec64001c30ac8e848004cd42185291b4597a22a2fc5f285245c9a58c2d5d21f9d655357b70d254589d2019b8c56935e32fb04403e66681c46afcb401a647404f06e3a0771b08e4e780a57e737063d7d6090859bddc97e468628d79f5caea3ff27269529d1e9411cb5236debe1baa80c23d10060e83ea7c29175d9f684f6b59aa33e1d9f1de84e4f6192d4222a65560ad526aede71e9680954a13a1c3d0b613518a643adfe4bcc3c918c5b6e24d45fab6992757ec9f436b397c5515b1f9748cdce6183ba9f5e32c3dcb4e19476216ad6a281b8906cb646fc3836fa953dfff922a562e9f92b32274b2483cefe9499f722d300cbb64024742d3cc145a0a779166cac5897ac9eead041c944cc37eadfd3c08dc534591f2c848276c0fa04086e8fbd94a912f6d5f55ce2a12044c772867ea9d6b72e497ddacadea06c58c604eb1cd78f463796598a6bb2ae419daf5081b90c59bb29baabf55d7a88f9528da2fc5ffbfdbdc75c1bfd786d589448b2720eae16e661a0aca01cad6569b5c0d2b143c48cba7fdc10204ca17dccf11f3067e7a07ccc03081ca95713266218f0a898354fde807ccccc7a739724005de925c2998d2c7139af75c0cca23eabea6cf32039d0b098c74171c88a4ce918cc099cd2fb5833b0e078d04596401929611784404e79063e5142408e25df05eb53469297699e408b1992b3cd89fc25873f5d2d24849619bf52910995082e6765e3b2034a7b6db18198f1730821600fcf43dcc138e74b45431e3deac5fff3a7894b80124d37f2aa4ac2d06836d11806cc4286cd14a4b91830af0e00a648eb2e69b5f1fdc67db0ccd5cac01ed07f8a400932ab00affa90a253493cb5302ef2b1385839ca81708c5a00c57afceda84eb377873e9a583a72a8026ed5b044af03ab2f3e298c6a8ea1e82130e20fdb113fb69c57b412128c529609fbf26955fd663dfaf48861f2058632746b670d05c74ca6ddd0336b4fae761e32d46ee780c21e2f38088e778838ecf7c1d0ce654431a67211a60ae39589d1c8d56d41cd36d76557242670fad15ce4f8e0316d7e77715d87c9a4ebfa0151b3007f52d8f9e579d8c0bf3f035655e02a3d4648584ed36ad69693d1949da088da0df967edebf8d74098cd8b1ede2318590e9ff9d72ac77c712be41043a3691034bbf346c0f3e02cfcac03780eb73a7e8bb589be7c63f79e54c6a44fdb2b0e175e4dc098f66978546928dcf119d40ce3380fe2a40adce583f0d406b251a768ff17cb817aee52585d1896dd6635519bc931f69953b5a7ad09b88176d30c0ae86acb275ab2465646003aa53df54aeecb99c1c44025d4d6cba60671e6ddaf35f04d1fff028c320a103a1207aabefc6b517d6b76a8c652d1304614489f25cb143d2e74df5a8659dffaabede99d48106c0e3d58c32606a8dcc18fd5ed73fad45b9c83927f6f60164fe1c0b83a4fed664503776567fd76ecf1ee2e5cc003d3c45d332fe284e7c909bcce17034442955e57b521c554afa9889f92e53ac737182b1f18bb8cb7e704bf644a96f764724b61986d4007e4c2612bb25d73c7f7c3d21972602f549b644fd71b410070a1e5351a32e414133f6dd12b32ce154ee65dab1dd43500783b46a8eafb8b45007767adc1a5ce67bb93424aaa3980afca13fa27f88a8516cb467343dad66212b4dd47e8fe25270e701389898f4
 
Last edited:
Joined
Jun 20, 2014
Messages
906
Location
Malaysia
Shadorwun: Hong Kong
A horrible attempt at map making.
Fortunately, the actual overworld map will be in isometric, mimicking the battlefield style.
The map below is just for cutscenes and exposition.

The map in question (after an hour or two with photoshop)
aoqrKdF.png

The excuse was that the cartographer have no skill points in Profession (Cartography)
 

Mastermind

Cognito Elite Material
Patron
Bethestard
Joined
Apr 15, 2010
Messages
21,144
Steve gets a Kidney but I don't even get a tag.
*looks at interface code*

db917b65dc76c5f49aeee9365b8b7ef246059e25a173582da40969fd784b1bce.jpg


I don't understand a word fuck why did I overcomplicate this shit. I'm gonna rewrite it tomorrow. If I don't forget about the dead simple rewrite I have in mind now.
 
Unwanted

jcd

Punished JCD
Patron
Joined
Jan 4, 2012
Messages
10,681
Location
UNATCO HQ
Codex 2014 PC RPG Website of the Year, 2015 Codex 2016 - The Age of Grimoire Bubbles In Memoria
fd07046564d924698c37d21e0b1cbd19fed29963478512e2e295719bf7c69c3a3cae9420202f1bb2b9127650af3e1d70d4be99b0a34e7388f968115d34da085213f7cb6cac7535bc201f3d76cdbbe2313412797b49223a88701e1078f3aaad6250b0953be55a4cd030948b491701ddb49d1c8130930bfff132e266460d7257dcab31594e7a3bd398e500b5db10d094dbd289c6b46524881e51fb325047e1b7a715d27723b4a2a6ccd480cca35837f2dbf9e254c3feca0e2447520ef343a59a1af28568ebb6141507c535e536e086f97edfe9797a07aadd9cb37dfbfbd1da250c54623145f185c858fd549df469aa70d1d4346188f2274d3e272d1991e0e6b08ef6513dde5fc3db8a41e3cddab8c45042be4fa0923da22f287cc10b2f8ce753207c52d0fb4e76dceacc1b8100d4bc1666c1022f2af3a16982eff529e7ef8f6aad29609343181435f2c0b062d809fd12ff7e7120bcecebfad33175ad5b20caae7b82f699a2b0bbcbe9affd560cca9409d3f4c113aa63ef1994ad84ce3217f67052fe64720439b3f69c3639c6921599ddd3a71144997e2dcac91f80f58288c7034f901ad171d971324f521e64352d0d3138a378eb45fb8de55daa4f254117dfc264725780f15d7b934274d72962236048d625549faba769e8517706418dd0a7117ca53eb79d14a2d991649b12bade0c0388ae439b908e0929f0e6207b320afecb40a57a394f72d2500224d5162018a8be2efa90a548d84907e13349e9190e08ec31c1f7ef9cb308985b18686d4a26828ff159646c4e9ebcfc913ee8957534a76e907f9be62a52b263923aeb51ce588abc5f897e12c6b37d9bbe185c6a877d98d95fa87d7752f939ddffd3c0c4f105c24625124ab3f3b6f6e649eaf598d50fa04823de8557e04397cab9e2fe697313487b705313b59bedf25a54e4500714104242406f613d057c5af78d5fb036f9e19a4ff99d4abfc404950ddb81485ba7771c2c9bda1e031e9c2ff475762eb8d432c9268251d78de8e2b5dddaa3a42bd253d6a784801b3d90fd584ce6f76110ba05c711a8168804048860261e95213eca8ed2d7ade7f55f3ca7b8dfa6550bade30aab8e99376818630cc5c1b26c605df00d3501439f6101dbc48d886758a4f089a037f2f870b3ebeb8c4ee05431c36e79745c9d5da9b706a4466aba127d72f0ef2fde3ddebe6909a098faeb8eba3b01d5aa0d01f6d41bf2e2595a75954c7902171424d0f3d848d4d999f24245f79f952972bdfbe4519578b6a14ac08339f76aac6a1d05f4beacb75a453dcab6082e115c18eff86d26923ccb3269bed183e71ed22630035ac6c793b941495cfa81bce792ddb3ca0b6f001187c67ef9bdcf3a735b2a7bb7611a25fd7acaf6176391f5fafb942da1480f30eb23b5e27db1b06cdc2cab321a9ef800706de26049174f2d8c0f493e28a6fd1a41cba4cead69ea295871b62e9a6e3748b3c6ce74cecfd9a98e92887b1552bb04628a07637f0a17777b5b4c860ea9abd0c844928da73191f80d4500eded4ce28baf41d4ff6f53064431b3ec758d4f5fa8a012197611ac30876c99deff69c92ed5df81e7dcd54dcdf4c222dba45fd24e766b76bd230f9f04085cf71c03f410797e053f9b431953148f7e4e3c97b44b9d4d08f6c81178be9b0cec2d82da0acf863517b3505309bed1c055373c3c194376e767ac5424192c81778e32fe87d5372b3662b0173dc6f6a90b64278d3a3898623b146aa046ab58157bf4840af0bc3f8fca79f31f50237f006b9270c7a4f3edd6858ed39a7db35338099b95287f4a4d9d0adf2c9225e1ad8cb70422f34b29ad5ff140f88bcd7e1626b931d82a6a5869a8a5b915d233de2e5a7ef55db447c261e28867f15cb359b273586fe2b6d38d0c1d577669c2555917e8930ae993f716580984405bc03360f8c07cbf79421c30e5c7ab310d98a0e3cc01668c417387a41a88cf8ba223b75b95c16f8596a182dc664660cd76e734b61a60e77d39904940e155c086611caa78446c5e513a75be8e31dfafb3ebd1654f469f53fed8c398fce207015e33c008452cc9c4671327c6aa2bf5be96532cca24c93b66b5247177f576e986fc0a8067d945b518dc0e408727c5900f27d45f24b9460293009b004f30d886136bd03cee5b7302def4408a7ff987cddff28298357ba9c685ec24adaf42ef239e9bcf5f0a6c5adc929564d2a53ae9d37c0509e40457c5096be3f339bb2c171191d77d8df749b165e027d7e814335ff88cde596044c6fa1765bcb75f32897ac7602b9040851f38b4a07b7129732ffc36ea46167a0d7e5ff6ac35168d5e0c683d6e9625482e5e00552c947ee4a62d3bd1ceee0128ab93a3b9e5cbc04be68df1c9f4b7f93b05d9507308e0881e15b505844f2910f1e254e40cd09377c8ca432fe71e972184572a20e83f33242cfc05d302c6536548c76fcefe819140ab4dd8a429f0a3091ac181f6ddd779f48327621a9c12286789322582a6e37dfb0dbbaa468ef51a46fad63d1bc163e2ae64a72d546252f0529c55d445bd2769528602c7127e7c0b3dc26b2bb6b692eefbcdfa2bdeca5b31632698169dc8e6a06da442901261761b31001fe0daa732848e0de86584cc7f4935ec08d8b36d03555377ffe4295c32296d2a0746f2019ac3942068c7fc2ed785bdc501698b98565d55b1df49b56027e33d7ab71d9c0a66aaebd14982248c1ad90d2242119fc37934b6d0648f45d6e6b29d41a1fa58874f5f8d18cd8190d8356742a3fca9c6cebdee825f632be12804bd9ca8bd32ca8d69eca0d7a25478b67e0107a1083f9ef7dc5299ab4646ab81f8ddbf0881e60c52683a62eb89c05fceff934d549a674a2af993205fd49e5e09d751fb7f92d13f2b2100059d4ce3d3f9ffec8697f76235b48d800e88dc50c871a2527ef570eea1db57aee0f23ee045400fda3d6107c4c7212bb59fae8185f7045d9bbb89b45360cc26308cc64332e2916d2a17c51ed3dc74a117c0ed66cc4600463ae1f964d4f5367b074e6b267636ad44221df61376f6bf5e5aaa261d9d03f5d773215dec7af0d7e31ca028bc04fd9032f48d2fec651e664d86328974602f47d6751485bf41e5cae52867313ce1b18f5b827092e71f395282255355e279b3d82ce868c05fe193cf1a13dbc4cf4795aea9fc6135c17609359b6b20dd4c94bd0f319681a2e4102c2b5c463afa385a1f6d196df2159bbb4c033978edf573f5f4bd2b60d74b89e32b7d610c7e9cfe214fd069091f14897c6dc22037f9786107f945a3f336d33d5eaa4359fe891be960439b57cb6cfb098d2c4bffc03730a8ac7bf8fc20b2e18dfedb9c371cc9fedb09f3a7f07c690d0993387a79cec858852eab4bcc3e8e9109c471539952174b84db2d420ddfcc84cf1afb8d7aed1b2d2dc9b9702caed3f25d354ec657b07fadf252a8fee8194f7f4bde50e10cd4e47cc4e7c50002fa20506bc1cc76fb27c0e5bba89bea2a071be50e9c5b497a15acfa2a49beb0be959ac92f9d431a44a9f23155d7a8885a74e6da52f11c128a7c0c0270cf561c73cdfbb037ceafe9704f123fe10be5123341fa540376c3d2679386f1bf48048f217208d57e2d8f132d43fb18ed862fa47ef146a49c142b28aa7d032190b8c22ac6d1e1617e598aa2c9322d4ff54610daced4a98e9a6f220e5ea3481cab902e3552a43e198b97d10b37cf97e8430eea304baad08b73ff6bd93206b7cbfb1ac7233f3d97b378408108034fb52ba53f6ed3d72a62ba49c64bd655907a97b925ea02fe93a4132e7965ea8c2144fbd1b3450b954b7665986e3e39eb586d3f821f0f73449ee0c792eee8b278e285991333f4477f9f5a21782bd4032caeca36023d8d677be210005f8fc38e7946b054b5acea2ecd117d9dc5337bdbc6d869bf9445a695c38d1bfd6282ddd1dc61996a1036349a2fd6407d7ed8b24a93dedd602f68b7c4f9a3675100c4a399dfc5193ff6ab3528cb894d6f4743032634d7a502be0c5ea41f9b0ee7c81db8556012e11475637193015b869736427195ab70ca4d9bc1175018d6abd2690e4ff9ea6ffa806d71a487b0c01443a5f3bc614bba27c7e3c2908e1f57428dfbbf52d16d04a83148e32b9fb77b1bf010c430286a4d39f2adef4f164599d90296a064748de1f5d0fb60c3f7b94185ae72bf03baaed7e9a004ab465362d17bc6474cd0fd484979823559a81cac5a261b3ac0800f47e54792a7bb12c4dba7ae55e4ee18b995a7753b8edb035fd46de2fce8428c83335fa76090676365bc1d956e37a5ac94a8c7dd2b806018292e3afa0826e02135346bbe97aacb577c877b7f4644d1093f0c6561e29b773e20034589c0ce24db674e3d296d3ae02680c53824a87906d80cebba599b64b02ec1373f7cd71c2fc3f93521e9755720fcd496f3cb5f4d91839df4ffe7e285b66ca52b4962cc3304da2724ef3f405564c8f3faa882b34f57fc4dfc08c04f9ac224139c6e5e33b4e5bb8b865c74c4b860991b25dafb9eba562dcf3a2405fa90231c2b57952ccafd660c411a92692237bc6eb90788b2ab9b694790a3aece2df2d98b24e5df03f590f4e38442e768eae20b6944a564a133fcae5499122b4661e68775618ebb5dce78dd82b8debabee47276d186731f41a701391eb3f7b88a9409b9b6407930e7421e202ad1c56adcea3424411ab3c1b6f6c32e90cc2bb616a1fc1a152e9c82ecbc4dc2cfdf9175a5ae8186ca4b1b1d657bdf45648fc48a80426f5c075020c73f79b84ffe583e3f63cefc6cb5add70d5e33285d0075610113845148a991bc1671e9d740542991efa7d761c3c94c0f3c60039c24e75911fcc434eac624c044d1915851ef53a1014edc282b36a635f95172695c7b309bce419eed24c2081ae43143949eb2d73218c1059809524524357b06124f587ed425c5c859dcc71b461a3728a4865f00b7c34698445d3327488efb23f386564ee99f1006d36f0e9cd54bef5b63d8a0de2d971168822ca138adfea7f732bccc533177208d97a63c2f12b49cba537fca45a14210d5b269e29e855f8142ac3353220950e8572faa2a128bbddfa178d5834b718cb3acefbdff2f63551f94b2115b60a25c4bf9771c705080be338d1f06e25f67af5fd4123974e78d9e60617d7eef58f8975a5a2ba2b26c878d3b5dd1deb0bc10356c007cc6709cb524269a7082e2c30573b78c1072884273a39c89cb6d3e37043247f7a16e150741d56229e6a795e1675085557745d2afd619be4295ff1c8388dda8bf320d811f689a88e981238cc7f4239ccfa6cb95cbe52f5a29e097f59d6efc0eb90220af04037d21e92d09ab372b375e25fabbf53e847f93b68eb9b2997e4d1c65dc8f180eaff61a97080a9a3537c2a494f317c05ef9d9335a73447773f5358d88fdd8ac19f6f3e3f1a762740f0f9cbff341c2e200344918ab301b36a07d6c8819b00a5bd896864e9b008b2ce47ad0b22db1ae50703c6c9f3d5932e262377417f5e155edcd6499054d3c3e74fc0572acdeffa8de0308587024b0427ad1e2020ed47e283e479b46d5ca48ce4e2882cf7a08653e9a369ee343fdfee627989f2875ed27475b7e00d3e040ce738bdea2c3ed41d02f3cc91278cdfd8507fb50269628c9c4db99d30e8c8abcf61431ccd31d3d85bcb8a637ff1a4b4e1519607597e43d33d9e3145f9900b249cf2943e22fa864e46e153ed11e650e26cdb37f30b4f7d47df665c7fc992894e1f4ce0c08555b38eea3d31cf8441de5c71d2491f31fc46ea24b8fc5eff92c4aebf5675632e9df4814cff59ef7
 
Last edited:

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom