Attnam / ivan

Iter Vehemens ad Necem - a continuation of the graphical roguelike by members of http://attnam.com
GNU General Public License v2.0
297 stars 42 forks source link

Mana (MagicPower) usage: #586

Open AquariusPower opened 4 years ago

AquariusPower commented 4 years ago

Mana is gained from consuming some edibles, also from using magic items like wands, from praying to sophos, may be something else too...

Mana is used to determine how effective is the usage of magic items, and also affects their cooldown and protection against them I think.

so, my guess is Mana should actually be called/renamed to Magic or MagicPower, as it is used like that.

So I think Mana is already well used in game, but renaming would be less confusing...


Based on that, we could have an actual ManaPool, which it's max could be based on MagicPower (like x10), and it could be recharged with time, potions or as an atronach (a % of magical damage taken).

Now below I would like to know your opinion about that (should we have ManaPool at all?), and possible usages for the ManaPool?

AquariusPower commented 4 years ago

MANA POOL:

I think it could let us cast the same spells we can from scrolls, but we must first learn that spell by reading (and spending) one scroll first, at least. The chance to learn would be based on wisdom.

Casting would have a minimum and optimal mana requirement, focusing (spending more mana) would lower fumble chances.

Casting anything would not be safe, if fumble happens, we could teleport (near/into something/someone bad), explode, polymorph, confusion, etc, anything bad. Also casting spells would not improve your MagicPower...

Regenerating it would be 1 point per hour.

Recharging it would be thru mana potions (a fixed value, may be 10, and 1 per vial), a bit from eating or drinking from magical corpses, or much more receiving magical damage (a mine explosion would not help, but a fireball would).

Having sophos provided limbs would increase a lot the mana recharged, and also the regeneration rate above. So you would be weak (sophos is not good for strengthened limbs right?) but could become a powerful mage (in a sense).

I just dont know if this is a good idea? xD

ryfactor commented 4 years ago

Well, there's this post from the original illustrator of IVAN: https://attnam.com/posts/26232 J_Kahvi appeared and disappeared from github like a blink dog. If you can find him, I bet he would be willing to share some details about the mechanics (?) of Four Mountains.

This is all I could find on Four Mountains at the moment http://a.moq.fi/

Edit: I think the general thrust of J_Kahvi's argument is that a magic system in IVAN should not resemble the magic systems of other games.

AquariusPower commented 4 years ago

I tried to read it all, but in IVAN, how we would do that? the "Four Mountains" grid has a huge lot of possibilities, but how to transtale each to IVAN?

so I think now, may be magic could actually be a deity thing, but we would have some control on the outcome results (as praying is usually random).

So instead of praying we could, lets say, meditate for a deity (now that Sit or Knee command thru '_' now could be useful!), and that would grant us access to cast one spell, so:

This way there is no ManaPool and is completely based on deities relationship! :)

ex.: sophos, max worship = 1000, per hour we would have access to: 100-250 : 1x teleport 250-500 : 2x teleport, 1x unlock door 500-750 : 3x teleport, 2x unlock door, 1x cause fear 750-1000:4x teleport, 3x unlock door, 2x cause fear

so, being neutral would prevent access to sophos spells, and grant to others like earthquake. To sophos you would have to be lawful.

Also, you would still have to learn these spells, from scrolls or when dismantling a magic item that provides that power/functionality (I dont know if there is any to unlock doors tho), and we would receive a nice message saying we learned something while dismantling the item :)

The % chance to learn would be based on Random%100 <= (((Intelligence+wisdom)/2) / 50.0)*100, where 50.0 is actually a high value, hard to reach for each Intelligence and Wisdom (actually I dont how hard it is to reach Int=50 and Wis=50, but I guess it is very hard, in case it is not, that value should be greater than 50.0).

red-kangaroo commented 4 years ago

I personally don't think that the player should be able to learn classic spellcasting.

I always liked that IVAN has more swords & sorcery feel than high fantasy, more Conan than Gandalf. :) The "hero" battles against monsters and powerful sorcereres with normal weapons, a lot of luck and maybe a magic item, but definitely not any magical powers of their own. You start as a barely literate slave, after all, and I like to imagine than learning magic is hard and long process, given how all dark mages are old.

Besides, magic in IVAN is scarce powerful and I would like to keep it that way. Many scrolls offer considerable, permanent benefits. Wands deal huge damage, making them quite scary. If those spells could be cast, they become renewable resource and need to be scaled down to maintain game balance. I'd rather them remain only as powerful magic items. :)

Saying that, maybe some form of more controlled prayer system could be a nice substitute for the standard spellcasting. The magic comes from the gods, not the hero, so it doesn't break the Conan feel, and I think it could be balanced by giving the player only very limited number of powers as you mention above, rather then them eventually learning all spells and breaking the game.

What if these prayers used up your favour with the given god? So you don't have X free teleports from worshipping Sophos, you can pray for teleportation at any time, but is decreases your favour by eg. 100. If you don't sacrifice some items in the meantime, the next time Sophos might be below 0 favour and use his prayBadEffect on you. :D Thus we have a more reliable prayer, but with a strong limit, a bit of uncertainty (as you can't see how much favour exactly you have left) and a negative effect if overused.

AquariusPower commented 4 years ago

Yeah, for sure it is the Conan way of life!

Do you think we could use god::GetRelation() (the existing value) as the current favour value with the given god? As it increases with sacrifices, reading holy books and I think with the current generic (let the god do as it wishes) prayers too. It would decrease based on each kind of favor, may be teleport -100, causeFear -250 etc. And that would remain a hidden value by all means. It would be activated thru the "sit down" button '_' (I think it could become "knee and pray", as I found no other use for it other than if you do it over altars).

What spells we have access would still be restricted by alignment and deity.

Should we be required to learn what to pray for?

Should it have some kind of cool down too? like a few minutes. Asking for ex. teleport just after any other favour could randomly cause a bad effect, so the player would have to wait a bit before doing it again?

PS.: Btw, currently we only know the last time we prayed (mostly to avoid we having to take note of that manually, that was the main idea about it), so I know now that I can only pray after 4h in most cases to avoid their rage, but it also means now I am able to avoid their rage most of the time. It could be spiced up by randomly changing these values in case of player be in confused state at least, and also it could happens when we get hit in the head, the same way map squares are forgotten, but in this case it would have the real LastPrayTime and a new and displayed MemorizedPrayTime that we could play with :).

red-kangaroo commented 4 years ago

Do you think we could use god::GetRelation() (the existing value) as the current favour value with the given god?

Yeah, that's what I was thinking.

It would be activated thru the "sit down" button '_' (I think it could become "knee and pray", as I found no other use for it other than if you do it over altars).

You need the "_" command to activate other SitOn effects, like thrones and I think fountains. But it doesn't see much use in most games.

Should it have some kind of cool down too?

I don't think it needs to. Normal prayer already has a cooldown, and here we would be paying with god relation to have no cooldown. YOu still wouldn't be able to see your exact relation, so if you went to zero/negative, you could get hit with negative prayer effect instead. :)

It could be spiced up by randomly changing these values in case of player be in confused state at least, and also it could happens when we get hit in the head, the same way map squares are forgotten, but in this case it would have the real LastPrayTime and a new and displayed MemorizedPrayTime that we could play with :).

I like that a big hit to the head could forget last prayer time. :) Maybe just have a line "You forgot when you last prayed to this god."?

ryfactor commented 4 years ago

What about using the 'O' offer command, instead of '_' sit? The reason being offering only works over an altar, and it could otherwise mean "request fav'O'ur" or something.

AquariusPower commented 4 years ago

I already coded as 'P' (as 'p' is pray will be easy to use I guess?) btw it is already working for some gods : sophos and silva at the PR: https://github.com/Attnam/ivan/pull/587 Yes, O or P would not conflict so we coud ask a favour over a fountain xD We still have to learn about the possible favours, so normal praying is required to discover them!

ryfactor commented 4 years ago

I already coded as 'P' (as 'p' is pray will be easy to use I guess?)

Ah yep, capital P is even better!

AquariusPower commented 4 years ago

I need some help on this, they should be the name of Favours or Spells shown to player, but they are also the ID that will be saved on the savegame file (may be I should try to rework this into numeric IDs (std::vector<std::pair<int,festring>> and using an enum)? so we can freely change the favours names and still let old savegames be imported... the problem is, if the strings get changed and they still are an ID, they would be ignored after the old game is imported. DONE

Well, anyway, I am not sure these naming per se are good/fun/cool enough, so feel free to give me tips :)

  AddFavourID(FAVOUR_CALLRAIN,"Make it Rain");
  AddFavourID(FAVOUR_CONFUSE,"Cause Confusion amongst your enemies");
  AddFavourID(FAVOUR_CURELEPROSY,"Cure Leprosy");
  AddFavourID(FAVOUR_CURELYCANTHROPY,"Cure Lycanthropy");
  AddFavourID(FAVOUR_CUREMINDWORM,"Cure Mindworm");
  AddFavourID(FAVOUR_CUREPOISON,"Cure Poison");
  AddFavourID(FAVOUR_CURESLOWNESS,"Cure Slowness");
  AddFavourID(FAVOUR_CURETAPEWORM,"Cure Tapeworm");
  AddFavourID(FAVOUR_CUREWOUNDS,"Cure Wounds");
  AddFavourID(FAVOUR_DISEASEIMMUNITY,"Gain temporary Immunity to Diseases");
  AddFavourID(FAVOUR_EARTHQUAKE,"Invoke the rage of an Earth Quake");
  AddFavourID(FAVOUR_ENCHANT,"Enchant Equipment");
  AddFavourID(FAVOUR_ETHEREALMOV,"Become Ethereal");
  AddFavourID(FAVOUR_EXTINGUISHFIRE,"Put out these Flames"); //TODO consider price vs FAVOUR_HEALBURNS);
  AddFavourID(FAVOUR_FEED,"Calms your Hunger");
  AddFavourID(FAVOUR_FIRESTORM,"Fiery Firestorm");
  AddFavourID(FAVOUR_FIXEQUIPMENT,"Fix one broken equipped item");
  AddFavourID(FAVOUR_HEALBURNS,"Heals your burns");
  AddFavourID(FAVOUR_HOLYGREN,"Paladin's Holy Grenade");
  AddFavourID(FAVOUR_INFRAVISION,"See in the Darkness");
  AddFavourID(FAVOUR_INVIGORATE,"Invigorate");
  AddFavourID(FAVOUR_INVISIBILITY,"Become Invisible");
  AddFavourID(FAVOUR_SHOPPING,"Black Friday");
  AddFavourID(FAVOUR_SPEEDUP,"Make you Fast");
  AddFavourID(FAVOUR_STOPFIRE,"Unburn one Equipment");
  AddFavourID(FAVOUR_SUMMONWOLF,"Summon Wolf friend(s)");
  AddFavourID(FAVOUR_TAME,"Tame this Monster");
  AddFavourID(FAVOUR_TELEPORT,"Teleport");
AquariusPower commented 4 years ago

Detailing some of the mechanics, this could be in a doc may be?

Every favour will debit in the god's Relation changing the overall player's alignment.

Ok, fair in a sense that we are "forcing" the god to obey our plea... and so displeasing him/her somewhat.

And that also means we may fastly/easily change the player's alignment between the 3 Lawful/Neutral/Chaotic, and so provide access to other favours and lose access to current favous. The current mechanics will provide access to all favours related to all gods of only one of those 3 base alignments. But that will change the way we got used to play I guess, so we would normally end up very lawful or very chaotic right? now, that alignment may keep changing the more favours are used... and there are some triggers based on you being very lawful or chaotic, that may not be triggered anymore? may be only testing (a full play thru, when all favours are ready) to be sure...

Staying on any god holy ground will provide half prices for it's favours and double price for other gods favours. Being perfectly aligned with any god's alignment will provide a very good discount on the price (which is mostly a temporary helpful thing as player's alignment may soon change again).

Obs.: It is still missing a few favours to be prepared on the code (moved from pray to favour calls).

red-kangaroo commented 4 years ago

I like favours. :)

If I understand it right, using favours costs you relation with the given god, and that further changes your alignment a bitk? I'm not exactly sure how god relations and alignment work in the current system. :)

I don't think it's a problem if your alignment changes because you requested too many favours. Nothing's stopping you from not using favour when you need to be extremely lawful/chaotic.

AquariusPower commented 4 years ago

I'm not exactly sure how god relations and alignment work in the current system.

apparently player alignment was only used for... muramasa::HitEffect() masamune::HitEffect()

well, now it is used a lot with favours :)

AquariusPower commented 4 years ago

Btw, (copied from https://github.com/Attnam/ivan/pull/587#discussion_r403393850) Mana always make me think of "Mana pool" since I begin playing this long ago... it always was very confusing making me think like: "where is my mana pool?" "How I spend it? using wands?" and then I used a lot the wands and nothing happened, I wonder a user that doesnt know how to read code, how confused they get about it? :>

and til now it still sounds weird having "Mana" there :P

what about changing it to MagicAttunement or MagicalAcclimatization? May be short: MgkAttun or MgkAcclim (Mgk for Magick instead, that 'k' looks nice :> )

EDIT: mmm... only 4 letters, so could be Mgck?

red-kangaroo commented 4 years ago

I like Mana. It's already used as a stat related to magic usage by other roguelikes (eg. ADOM), and it's short enough not to require massive shortening to fit on the side panel.

I personally wouldn't change that.

AquariusPower commented 4 years ago

yeah.. that's the main point I guess: it is short :)