Changing the Magic system

Joined
May 7, 2009
Messages
604
I had originally been going to create a modmod for base FFH to enhance the Amurites. After playing with ideas more and more, I ended up coming to the conclusion that it wasn't so much the amurites that I felt were poor, but the magic system in FFH that I didn't like. After far too many hours thinking about that instead of focusing on my schoolwork, I came up with a different idea that I would rather try to attempt. However, FFH doesn't have many of the implementations to make it work - fall further does.

So, now that I have my reasons out of the way, on to what I would like to do. I would like to change the current magic system to work off of "mana", rather than the current implementation of "hey, look at me, I can cast once or twice". I would also like summons to be permanent, and controlling them based off of willpower instead of short term duration. This would require that I create 2 new variables - mana, and willpower. An adept starts out with 0 of both. Channeling 1 would then provide 10 mana, 10 willpower, channeling 2 another 10 of both, and channeling 3 another 10 of both. Then other promotions would become available to increase a casters mana or willpower. Spells would then cost x mana - for example, spring could cost 10 mana, fireball 20, etc. Mana would be available in the same quantity at the beginning of each turn. A summon (ex, summon skeleton), would also then cost 10 willpower to control, and be permanent.

And now finally, to why I am posting this. What would I need to do in the code to implement this? I doubt that its going to be simply XML work (well, I suppose that I could handle it through having mana granting promotions give an auto-acquire promotion x number of times for how much mana it has, stacking like the bannor chain of command's more xp for commander promotion, and then having spells remove x number of those promotions), but that gets a little ugly, and there has to be a cleaner way of implementing it. And thats not even going into my current willpower ideas... now THOSE are ugly...

If you are interested, I will post more of what I have planned. Otherwise, once I get this part working then I'll create my own little modmod page when (and if... who knows, I might release like MC :p) i get it working.

-Colin
 
Willpower control of summons is an excellent concept. But I think it'll need dll work.
I'd say, use a formula to determine how much willpower a unit has based on it's level, and also make tags for certain promotions to add extra willpower. Then give each summon a cost, which is used up when it's summoned, and given back when the summon dies/expires
 
I'd think you could wing it with stacking "Willpower" promotions like you said, but I go there because editing the DLL is above me. Hopefully you'll have better luck than me with that :D
 
Actually, what I was thinking about for summons would be like this.

Channeling 1 grants 10 mana, 10 willpower. Summon skeleton would cost 20 mana, 10 willpower (this hinges on creating a system where casting something that costs more mana than the caster has takes multiple turns, otherwise, this would need modification. As such, this would mean that summoning a skeleton with no other modifiers would take two turns). So an adept could then cast summon skeleton, take two turns to summon the skeleton, and then have 1 skeleton under its control. He would however still be able to cast summon skeleton again, even with all his willpower being used. Upon completion, he would then have two skeletons under his command. However, there would be another auto-acquire promotion for every 5 willpower over his available that he is using. This auto-acquire grants all his summons a 25% chance of becoming enraged, and 10% chance of becoming barbarian each turn. So the adept would be able to control 2 skeletons despite having only 10 willpower, but both skeletons would have a 50% chance of becoming enraged, and 20% chance of becoming a barbarian each turn. Summoning a third skeleton would mean that each skeleton would have a 100% chance of becoming enraged, and a 40% chance of becoming barbarian each turn. The reason why I am using every 5 willpower is I do intend for there to be a promotion available at level 10 that halves the willpower costs of summons (similar to how twincast allows 2x the current summons).

To prevent summons from becoming OP, the adept would work similarly to a commander, and grant a promotion to all units within 1 square (similarly to current commanders). Spell extension would increase this range, and upgrading to a wizard would increase the range to 2, and archmage to 3. This promotion would be hidden, and prevent the summons from getting another auto-acquire promotion. This auto-acquire promotion would be 50% chance of disappearing each turn (being dispelled), and 25% chance of going barbarian each turn.

As you can see, this wouldn't necessarily require that DLL work would be necessary. Everything would hinge upon how much willpower the caster has (either from a built in number, or the number of willpower "promotions"). The caster would never be prevented from summoning more creatures, but there would be effects. It can be done with just promotions, but again, it would be VERY ugly, and possibly a little painful.

-Colin
 
wow, that are really great ideas.
i also think that the magic system in ffh2 should be improved in some way and your changes sounds very cool.

one thing i would see a problem is that when you kill one of your barbarian summons you will get cheap experience. maybe you can prevent this with a special (hidden) promotion given to the barbarian summons or something...
 
True, and it could end up being a way to cheaply get experience. But on the other hand, it would be significanly more dangerous to have summons run amok than to have them just mysteriously vanish. Consider - would you ever really summon more than you can control unless you are either defending or attacking? So then, your summons (and note, if you have too many, it is possibly that a mages entire stack could all go barbarian at the same time) are not just a threat to you - they can also be a threat to your neighbors (or whoever is attacking you, or you are attacking).

To counter mass summons, I am also planning on changing dispell to also have a chance to dispell all summons within 1 or 2 squares. (Am planning on having it be a 30% chance, with each level of summoning reducing that by 5%, to a minimum of 5% chance of dispelling). In addition, summons sticking around makes life 2 useful, as it will actually harm an opponent to have all their death summons damaged/destroyed.

-Colin
 
I would say base the excess Willpower level at which you degrade your promotions on your natural max. So for an Adept it would be 5, but for a Mage it would be 10.

Done with DLL, this would be rather easy. And to get the AI to try and cast spells more than once a turn, required. You could also make it function like workers building improvements and allow multiple adepts to contribute to the mana cost.
 
multiple adepts contributing to the mana cost isn't something that I had thought of. Maybe allow that only for the amurites?

As for the DLL - I understand how to mod the XML and python, but DLL isn't something that I have messed with. I'll look through your idiot's guide to editing the DLL (thanks for having that in yoru sig btw :p, nice easy location in which to find it), but if you have any suggestions for how to do it and what exactly to change, I would greatly appreciate hearing them.

-Colin
 
well, with "(hidden)" promotion i meant a promotion (for the barb summon) that prevents a unit to get experience form killing the brabarian summon (so you cant exploit this system)

i like the idea with the barbarian summons. it's way better than if they just dissapear. but i think it would be bad if you can get easy exp with your barb skeletons and stuff...
 
Not sure how to apply a promotion that makes it not give xp. I know how to make the summons not get xp (and I didn't plan on letting them have xp - they are already powerful enough), but not give xp? Is there an example of something that already does this?

-Colin
 
the golem promotion.
 
golem promotion does nothing. Golems don't gain xp because they have no unitcombat.

There is a tag that modifies xp gained from combat. Applying a -100 modifier there will mostly, but not completely, prevent levelling

There's no concrete way to completely prevent levelling at present. I've been poking xienwolf for a new tag to sort that.
 
don't fireballs give no xp when they die, though ? There are tags to set how much xp a unit is worth when killed. Couldn't those just be set to 0, or even negative maybe ?
 
I did this three years ago fro vanilla civ4. I added three variables to the unit class in the dll: iMana, iMaxMana, and iManaRechargeRate. I used the ActionButtons mod to do all of the spells. It worked really well but I never bothered trying to teach the Ai to use it correctly. I would look at the actionButtons mod to start with, unless there has been a better implememtation of it since then. Good luck with your project.
 
don't fireballs give no xp when they die, though ? There are tags to set how much xp a unit is worth when killed. Couldn't those just be set to 0, or even negative maybe ?

These tags should do the trick shouldn't they :

<iXPValueAttack>0</iXPValueAttack>
<iXPValueDefense>0</iXPValueDefense>
 
While those tags would work for not giving xp at all, it wouldn't solve the problem of only giving xp when they are barbarian (after all, if you fend off a stack of summons, you should get SOME xp from it).

-Colin
 
Top Bottom