NOTE: I was moving last week so skipped the Jan 17th update:
===========================
This is going to be a big update today; I have a couple of items to talk about; Inventory updates being large, and the new Affinity Power system discussion. Affinity Power's are the way that I've finally glued together my concept for the Magic system in Rise of Dagon in an interesting way that makes these powers more than simple spell schools.
This post might be a little TLDR for some folks ; if so feel free to either skip to Inventory or Affinity Power headings depending on your interests!
First though some quick comments about my move ; last week I was moving and things went reasonably well. I did end up with no Heat and no Hot Water. And no one would come out to look at them as it was the weekend! I called the entire first page of top rated reviews on Yelp and not a single one would help.
Like a true engineer / independent / do it yourself guy I ended up doing some research around the house until I had a suspect and then used Youtube HowTo videos to isolate/verify and fix the guilty breaker fuses in my main breaker panel outside the house. The problem ended up being one of the breakers was bad ; but did not actually 'trip' so it appeared to be good!
Inventory : Armor updatesSo anyways moving business aside it has been two weeks and I wanted to share that the inventory system coding has been going really well. The week before the move I had done some really productive programming on two evenings in particular and really got a solid start in to breaking the armor in to its proper design.
One challenge I deal with is that all of my base classes for items do not extend Monodevelop; the reason for this is simple of course - you can only inherit from one class and I need the inventory items of each kind to all extend BaseItem so I can address them more easily in code via lists or dictionaries of BaseItems. Ultimately though this ends up creating a design issue in that I need to be able to pick up the Sprite for the icon for the inventory item - which is part of Monodevelop!
So I ended up making separate Icon classes such as IconLightArmor, IconsHeavyArmor, IconsMediumArmor. These classes have helper methods that can retrieve or look up the icon sprite by the sprites internal ID that I have assigned and then the GUI can do the same. So these helper classes are good - but in the case of something like potions its pretty simple , there are only so many types of potions right?
But in the case of Armor now were talking about a whole new level of complexity for several reasons:
Firstly we have to determine what kind of BaseItem it is (equipment)
Then we have to determine if it is by Light, Medium, or Heavy.
Then we have to determine its Slot such as Helm, Chest, Leg.
So when I ask for a new piece of random equipment I have to figure out that its going to be a Light Helm and have the IconLightArmor class find me specifically a helmet icon -- meaning that icon assignment can't be as random as the initial item generation.
So this ends up being a fair bit of pretty close to Boiler Plate kind of code in each class for Icons. I did enough work in fact I was able to make it all generic code except for the actual Sprite assignment (because of course the Cloth Helmet and the Plate Helmet icons are unique) and the unique IconID's in each class!
I felt pretty pleased with myself when I got this all working and the screenshots you see inline here are showing some icon inspector windows
It was also at this point I realized I had not put any kind of Armor rating on the armor, so it was a very easy task to go to the BaseEquipment class and add a new integer for ArmorRating and then add the armor to the random item generator and the inspector!
There is still a little bit more work that needs doing when it comes to Armor as you'll notice the item names are in ALL CAPS as well as they aren't exactly great item names; but I am reserving that work for when I get in the Prefix and Suffix modifiers for equipment and then finally mix in those prefix/suffix modifiers with naming improvements and well have the full system rounded out at that point.
Affinity PowersSo finally I'm announcing something a bit unique about the game and that is the Affinity Power system!
Previously you may have noticed on the inventory an area that was labelled "resistances" and that is now changed to be "Affinity Powers"
The fantasy universe of the Chronicles of the Dead Sun takes place in a primordial/elemental universe that is inverted in its composition from our current universe. Instead of the void of outer space we have in our universe - the Dead Sun universe is filled with matter.
Planets are in fact holes in the endless matter, some of these holes might be the size of a city. Some of the holes are the size of planets, and very occasionally there are holes that are immense..
The point of this at the moment for the Affinity Power discussion is that this primordial universe this game takes place in is intertwined or even overlaps the 6 Primary Elemental planes.
The Primary Element planes are:
- Fire
- Earth
- Water
- Air
- Light (Positive)
- Dark (Negative)
As players are created, and as they level they may either inherit or place points in their Affinity Powers.
Depending on your class, and its abilities Affinity Powers will grant you potentially multiple benefits.
Fire Mage Example:If you are a Mage type class and have points in the Fire affinity ; then naturally your Fire spells will be more effective. This is not to say without points in Fire that they would be useless; they would simply be at their base level. A high Fire affinity spell might in fact have a higher critical hit range as well.
In addition this Mage with a high Fire affinity would be more resistant to Fire based spell effects and attacks against them.
Finally for this example a Mage is a generic caster; but a Mage who has invested in Fire affinity might gain access to specialized Fire spells beyond the core spells available to the Mage class.
Spells have not been designed at this time so this area is very up in the air at this time as to what this will end up looking like.
Water Warrior Example:Lets also say for example you had chosen the Tortuga race (which is an humanoid turtle race). Being a Tortuga grants you a starting bonus for Water affinity - and over a few levels , or perhaps even with some items bonuses you had raised your water affinity to a high level you would (similar to the Fire Mage) receive a resistance benefit to Water based magic attacks against you - but furthermore healing spells based in the Water Affinity would grant you a larger healing benefit than those who lacked Water affinity that you have!
Furthermore if you had weapons, or armor that had water based power or properties on them you might expect to do more damage with them or gain higher critical ratings the higher your personal water affinity was.
So a Tortuga Warrior with an Ice Sword might be able to both hit for more water damage, and if a freeze proc occurred expect the freeze duration to potentially be longer (if the water affinity is high enough).
Faction Example:Finally Affinity Powers are not merely magical ; they are also social in effect affinities -- and like in real life if you share an affinity with someone you are more likely to get along with them!
This area is not designed out yet because I have not placed in NPC interaction yet but the plan is that if you go to a merchant with a really high matching affinity they might offer you an extra magic item for sale that matches the affinity you share. Or they might give a slight discount to you because of the shared affinity.
In summary Affinity Powers are meant to have a broad effect for your character and react against how your character is built. While you can not control the random drops you will get in the procedural loot system - it will certainly be a really cool moment when your Dark Mage finds a Longstaff of Death that grants +10 Dark power!
I wanted to combine this in to something that was a multi-faceted and meaningful attribute for the player rather than just a number on a character sheet that you will not care about at all.
Players interested in min/max will potentially build a party that takes advantage of Affinity Powers such as a Tortuga Healer with Water affinity and seeks out Water affinity gear will make possibly the most effective healer in the game!
Thanks for reading, let me know what you think of Affinity Powers? See you next week!