Writing is hard. Even harder when you are your own editor.
I haven’t been idle. As usual, I’ve been busy. A great deal of the busy has been work related, but I also spent a good deal of time trying to work on climbing movement and the monstrous spider. I also threw in a couple of other critters: wolf, black bear and worg. The wolf (and worg) led me down the path of the trip action (and from there sunder and disarm, where I am currently finishing up) since one of their features is “natural trip”.
Alright, first the movement diagram (the release of Visual Studio Community Edition has brought class diagrams back to me):
I’ve had LandMovement and FlightMovement for quite a while, link movement is used in by the system to find links between rooms, and fall movement is transient on falling. Swim movement and burrow movement shouldn’t be much different from flight movement in a very basic sense, but climb movement is very “skill-based” and deals a lot with the conditions of the local terrain and gravity.
Anyway, back to spiders…here’s the set of “sheets” for a small 1 Power-Dice spider. (There’s actually a tiny version if the first power-die is partial)
…all working fairly well. I haven’t implemented the web-net attack, nor web-sense, nor web-sheets, nor bonuses for moving across a web (yet). Attack damage sizes, poison difficulties, hunter/web-spinner differences are all handled for all sizes of spiders up through colossal (with a couple of caveats…)
My large monstrous spider still has weapon finesse bite, so its attack roll is one better than the SRD spider. I hadn’t accounted for bonus feats vanishing when a monster progresses. If I find more creatures like this, I’ll consider revamping how bonus feats from creature species work.
My huge spider has a bite attack modifier one less than the SRD spider (Note: weapon finesse doesn’t even matter any more here, as the strength score outstrips dexterity at this size and greater). I cannot account for why the huge spider in the SRD gets a +9, so I am assuming the SRD is in error and my calculation is correct (mine is calculated purely from the application of the rules via the system). After this point, the gargantuan and colossal spiders match the SRD without divergence.
Finally got to test “skeletonizing” creatures. First a human, then with a gargoyle (I use both). For those of you that have been following me (ha ha, I jest!), you are well aware of how much I like the gargoyle as a test bed creature. It has monster levels (and can increase in size by number of power dice), it can advance by character class, it has extra natural weapons slots, it can fly, has darkvision, magic damage reduction, etc. So it also makes a good skeleton (and soon: zombie) test bed due to the the plethora of traits and things associated with replacing it.
Skeletons and zombies are handled by creating entirely new creatures whose skeleton/zombie species is based on the original creature, and the workshop command performs the tasks of removing the game token for the original creature and adding the one for the replacement creature (currently using the same model). Skeletal gargoyles get more power dice than human skeletons, and they have bite and gore attacks. They cannot fly and lose the DR/10 magic (though get DR/5 bludgeoning).
I had to fix some things (of course, that’s what debugging is all about) and have a few more tweaks to do: namely make an item slot trait to get around an ugly kludge for dealing with extra item slots (gore and bite, for instance) currently defined by the species body generator and not in the body constructor itself.
Just finished my third (and hopefully final for this year) road-trip to Atlanta and back. Flights were crazy expensive over Memorial Weekend, so I opted to take a day off work and drive my daughter to her drum corps camp. While there, I followed my usual practice of major refactoring (since I’ve got little else to do on Saturday).
Amongst the things I accomplished:
- defined a MagicAugment adjunct for enhancing weapons and armor, replacing a rather loosely defined “IsDependent” property of base adjuncts
- allowed natural weapons to be augmented (and included ability to have +0 augmentation to overcome damage reduction)
- excluded species from the species selection list if the constructor has arguments (such as a Skeleton, which needs a source creature to work)
- fixed some icons on menus by going through the resource manager instead of directly at the package
- Traits became adjuncts
- changed some magic-styles back to match OGL names
- created an UndeadClass
- defined BaseMonsterClass as an IPowerClass (so it can source powers)
- removed GetTraits (which just enumerated strings)
- did some housecleaning on power classes and fractional power dice
- defined body cloning (for skeleton/zombie at the very least)
Since I got back, I did a few more things:
- refactored PowerDefs and PowerSources (and their interfaces) to have non-action oriented versions in support of qualities that do not have actions associated with them (think: magical damage reduction). My goal here is to get all power sources running as adjuncts so that anti-magic fields (and such) can shut down everything magical without having to write tons of specialized code
- made the PickUpHandler check load limits
Finish equipment and natural weapon transfer for skeleton, follow similar pattern for zombie (possibly generalize).
I had been toying with upgrading to a newer Visual Studio (was on 2010 for 4 years), but couldn’t feel compelled to fork over more money than I had for upgrading from Visual Studio 2008 to 2010 to get to the next level. If I was making money on Ikosa, it would be a different story. Anyway, I had rejected the express editions due to Source Control integration issues (or lack of support). The 2013 editions support Visual Studio online source control integration, so I made the plunge and shifted my development to VS 2013 and TFS. The only thing I really miss is class diagramming 😐, and I can’t work with WCF projects (directly as VS project types, though I can edit their project files to be libraries, and I can still host services) since Express for desktop lacks designer and host launch support for WCF debugging.
Last weekend I drove my daughter to Atlanta for a drum corps audition camp. I spent Saturday recovering from the drive (which was repeated in the reverse direction Sunday), getting an oil change (the reminder went off somewhere in the Carolinas), and fixing up the client-side contract changes to match up with the server-side changes made previously.
I finally got to test and fix the code this weekend, and ended up finishing some resource transfer code I had been delaying, as well as removing some client-server transfer classes by marking the original classes with DataContract attributes.
I can now run a host and client, with the ability to render the terrain and presentable objects. Before I move on to implementing icon visualization on the client-side, and building more animation support for actions, there is still some work to make sure the “Ikosa” services are working, since in my test, I couldn’t get my character to move…
I’ll be heading back to Atlanta this next weekend, so I want to avoid spending the time on Saturday fixing my refactoring.
Spent a lot of time this past weekend refactoring the code-base to isolate the DataContracts into their own assemblies. The idea is to get the services and proxies to understand each other without having to export meta-data through the Mex endpoint. I had to “invert” a lot of code so that the game-state model classes created their service info instances. All done now (server-side at least), still have to do the proxy/client changes, then the dreaded distributed testing.
While this was on the agenda for awhile, the immediate impetus was the pending addition of DataContracts for animation support, which would be cumbersome to add using the meta-data exchange (Mex) mechanism.
The proxy/client changes won’t be without challenges, as I originally defined partial class additions to the imported WSDL; and these will have to find a new way to get involved in the proxy (MVVM anyone?). I wrote a previous post many moons ago on my proxy-side shift to MVVM style WPF UI, so should be “fun”!