ihhub / fheroes2

fheroes2 is a recreation of Heroes of Might and Magic II game engine.
https://ihhub.github.io/fheroes2/
GNU General Public License v2.0
2.63k stars 368 forks source link

Extended spell/monster info #3397

Closed 0181532686cf4a31163be0bf3e6bb6732bf closed 3 years ago

0181532686cf4a31163be0bf3e6bb6732bf commented 3 years ago

I don't know if it's by design, but comparing to HoMM 3 there's no extended unit info in troop info dialog. For example, Mummies curse, Liches do attack with death cloud, Griffons always retaliate and so on. For example, this function: https://github.com/ihhub/fheroes2/blob/master/src/fheroes2/dialog/dialog_armyinfo.cpp#L255 can be extended to output all such info and it can made as configurable option (I can make a PR). The real question in this case is, what is the single source of truth for monsters data? XML files seem pretty outdated.

Same goes for spells – there's no information of damage inflicted, which makes it pretty hard to use...

ihhub commented 3 years ago

Hi @lyssdod , it is the original behavior of the original game. XML files are not used anywhere anymore.

LeHerosInconnu commented 3 years ago

Hello @lyssdod,

I don't know if it's by design, but comparing to HoMM 3 there's no extended unit info in troop info dialog. For example, Mummies curse, Liches do attack with death cloud, Griffons always retaliate and so on. For example, this function: https://github.com/ihhub/fheroes2/blob/master/src/fheroes2/dialog/dialog_armyinfo.cpp#L255 can be extended to output all such info and it can made as configurable option (I can make a PR). The real question in this case is, what is the single source of truth for monsters data? XML files seem pretty outdated.

Same goes for spells – there's no information of damage inflicted, which makes it pretty hard to use...

There are already proposals concerning these subjects. They will be discussed after fheroes2 version 1.0 is released.

Related issues and discussion: https://github.com/ihhub/fheroes2/issues/1632, https://github.com/ihhub/fheroes2/issues/1627, https://github.com/ihhub/fheroes2/issues/1625, https://github.com/ihhub/fheroes2/issues/1624, https://github.com/ihhub/fheroes2/discussions/3224.

0181532686cf4a31163be0bf3e6bb6732bf commented 3 years ago

thank you guys! do you mind accepting a PR before 1.0? It will have an option to be disabled by default

LeHerosInconnu commented 3 years ago

Hello @lyssdod,

thank you guys! do you mind accepting a PR before 1.0? It will have an option to be disabled by default

It's okay for me. :)

ihhub commented 3 years ago

Hi @lyssdod , before doing this we should find a solution which will be agreed by the majority of the team:

The most important question is where we're going to show this extra info as the right part of monster stats dialog is full and the left part needs a delicate UI adjustment for this.

ihhub commented 3 years ago

This is Monster information window in the battle. As you can see there is no space for the information on the right side of the window: image

Resizing the window is not trivial at all. However, I agree that this information might be useful for most of players.

@Branikolog , @oleg-derevenetz and @idshibanov , could you please express your opinion as well?

Branikolog commented 3 years ago

The task is definitely not easy. We have to rearrange elements of this window and there's no guarantee that the result visually will look nice... Also, each creature will have its own info, so there's a lot of work creating a proper description for each. First of all we need all these descriptions for each creature to understand the amount of space required. After that we need to decide in what way we want to show it in the window.

oleg-derevenetz commented 3 years ago

Hi all,

@lyssdod Do you have any concept/outline how this should look like?

LeHerosInconnu commented 3 years ago

Hello all,

If I haven't forgotten anything, here are the creature's abilities, immunities, etc. This is a start, some texts should be reduced. :)

For flying creatures, does this have to be specified in the creature information window? With just: "Flies."

Or nothing indicated. (This would be my choice.)

And for creatures that fire at range? With just: "Ranged attack."

Or nothing indicated. (This would be my choice.)

Ranger:

Paladin:

Crusader:

Wolf:

Troll:

War Troll:

Cyclops:

Sprite:

Dwarf:

Battle Dwarf:

Elf:

Grand Elf:

Unicorn:

Phoenix:

Griffin:

Hydra:

Green Dragon:

Red Dragon:

Black Dragon:

Iron Golem:

Steel Golem:

Mage:

Archmage:

Giant:

Titan:

Undead creatures are of a special type with special features. Does this have to be specified in the creature information window?

With just: "Undead."

Or: "Immune to Bless, Curse and Mind affecting spells (Blind, Paralyze, Berserker and Hypnotize spells). Has always Morale at normal level. Reduces the Morale of the Living creatures in the army by one level." (Way too long.)

Or nothing indicated. (This would be my choice.)

Mummy:

Royal Mummy:

Vampire:

Vampire Lord:

Lich:

Power Lich:

Bone Dragon:

Rogue:

Ghost:

Genie:

Medusa:

Air Elemental:

Earth Elemental:

Fire Elemental:

Water Elemental:

0181532686cf4a31163be0bf3e6bb6732bf commented 3 years ago

Hi again, thanks for your comments guys! Yes, I didn't notice that battle window is a bit different and that's indeed a challenge. As for implementation, first of all I thought about moving this into separate header: https://github.com/ihhub/fheroes2/blob/master/src/fheroes2/monster/monster.cpp#L58 and then adding a set of flags for each ability, like so:

namespace Special {
enum monster_special_t {
    SPECIAL_NONE = 1,
    UNLIMITED_RETALIATIONS,
    ...
    SPECIAL_END
}

enum monster_special_info_t {
    "No special abilities",
    "Attacks twice",
    "Unlimited retaliations",
    "Immune to mind spells",
    ...
    "Unknown special ability"
}
}

and then somewhere in monster general info:

{5, 5, 2, 3, 15, Speed::VERYFAST, 4, 24, _( "Grand Elf" ), _( "Grand Elves" ), {300, 0, 0, 0, 0, 0, 0}}, Special::ATTACKS_TWICE,
{14, 14, 25, 50, 300, Speed::VERYFAST, 1, 0, _( "Black Dragon" ), _( "Black Dragons" ), {4000, 0, 0, 0, 2, 0, 0}}, Special::MAGIC_IMMUNITY,
{8, 8, 4, 5, 50, Speed::SLOW, 4, 0, _( "Earth Elemental" ), _( "Earth Elementals" ), {500, 0, 0, 0, 0, 0, 0}}, Special::MIND_SPELLS_IMMUNE | Special::METEOR_SHOWER_VULNERABLE

After that, this struct https://github.com/ihhub/fheroes2/blob/master/src/fheroes2/monster/monster.cpp#L41 has to be extended to accommodate this new data, let's say with u8 special_type.

And for the text rendering, it can be done by cycling through this enum and then assembling a string, like so:

std::string monster_special = "";

for(int s = Special::SPECIAL_BEGIN; s != Special::SPECIAL_END; s++ )
{
    if(monster.special_type & Special::s) {
        monster_special << monster_special_info_t[it] << ".";
    }
}
0181532686cf4a31163be0bf3e6bb6732bf commented 3 years ago

@LeHerosInconnu thanks for the summary, that's really helpful. I'd stick with "best practices" from H3, so undead units just get "Undead", flying or shooting units don't have anything until it's unlimited shots, and dragons/phoenixes also don't have anything (from my point of view multihex attack is implied from monster size). It also seems that Phoenixes are not reborn but do have "Elemental spells immunity", as per https://mightandmagic.fandom.com/wiki/Phoenix_(H2)

As for percentage probabilities (25% chance to blind, for example), I think it would be better to put just "Blinds" and do it for all similar cases (if someone really cares that much, they should consult wiki or source code, in my opinion).

Branikolog commented 3 years ago

Hi, @lyssdod

from my point of view multihex attack is implied from monster size

Have to disagree: Cyclops have 2-hex attack being small troop. As well as Champions don't attack 2hexes with their lance.

Breath attack should be discovered through info.

I'd stick with "best practices" from H3, so undead units just get "Undead"

👍

As for percentage probabilities (25% chance to blind, for example), I think it would be better to put just "Blinds" and do it for all similar cases (if someone really cares that much, they should consult wiki or source code, in my opinion).

Agreed, Don't want to watch "numbers%" in the descriptions. Simple text looks authentic for this retro-game.

Also, I'd like to watch the shortest description in this window. If we want, in future we could create an in-game wiki, where player could read about every attribute. For now, I prefer classic, short description. Ex: "Undead; Drains Life; No enemy retaliation."

P.S. @LeHerosInconnu I've always thought, that Cavalry and Champions have jousting bonus, like in H3. )

LeHerosInconnu commented 3 years ago

Correction for Vampire.

Vampire:

ihhub commented 3 years ago

This is the first attempt: image

As you could see the description must be very short to fit to one line written by a small font. This is how it looks when we write in two line: image image

And this is how it looks by the big font: image image

If we want to proceed with the description (which must fit to 2 lines only) I think we should go with small font.

LeHerosInconnu commented 3 years ago

Hello @ihhub,

Definitely in small white font. Sentences should be shortened as much as possible. Thank you for the visuals. :)

It seems that there will be a Chicken creature in the official mod after version 1.0 o_0 :D

Branikolog commented 3 years ago

Hi, @ihhub Looks pretty nice with small white font. I believe, it could look even better if we place in a special frame or box (like creature counter below) but nevertheless it still looks well. Are you sure that the longest description (I suppose Elementals of Crusaders) would fit two lines?

@LeHerosInconnu

It seems that there will be a Chicken creature in the official mod after version 1.0 o_0 :D

I think there will be a special state of creature, given if it acts appropriate during battle.

P.S.

Hydra:

  • Attacks all adjacent enemy creatures.

"No retaliation" is missing.

LeHerosInconnu commented 3 years ago

Hello @Branikolog,

@LeHerosInconnu

It seems that there will be a Chicken creature in the official mod after version 1.0 o_0 :D

I think there will be a special state of creature, given if it acts appropriate during battle.

P.S.

Hydra:

  • Attacks all adjacent enemy creatures.

"No retaliation" is missing.

It's corrected. Thanks. :)

LeHerosInconnu commented 3 years ago

Hello @ihhub,

Here are the texts in a shorter version: (Difficult to be shorter for Elementals.) It may be necessary to display the text on three lines for Elementals.

Ranger:

Paladin:

Crusader:

Wolf:

Troll:

War Troll:

Cyclops:

Sprite:

Dwarf:

Battle Dwarf:

Elf:

Grand Elf:

Unicorn:

Phoenix:

Griffin:

Hydra:

Green Dragon:

Red Dragon:

Black Dragon:

Iron Golem:

Steel Golem:

Mage:

Archmage:

Giant:

Titan:

Mummy:

Royal Mummy:

Vampire:

Vampire Lord:

Lich:

Power Lich:

Bone Dragon:

Rogue:

Ghost:

Genie:

Medusa:

Air Elemental:

Earth Elemental:

Fire Elemental:

Water Elemental:

zenseii commented 3 years ago

Here are the texts in a shorter version: (Difficult to be shorter for Elementals.) It may be necessary to display the text on three lines for Elementals

These descriptions look really good and sound very authentic to the Heroes franchise! I have some humble suggestions and questions about how to shorten them further. In general I suggest not to write "Chance to" and just leave the name of the effect or change it to one word. However, I do acknowledge that this might be interpreted by some to mean that the ability or effect happens every time, but some sort of wiki explaining this might solve this and a wiki in general sounds very cool. The ones in bold are suggestions and the italic ones are more like questions or proposals for a debate:

Suggestions Drop Down. Click here
Crusader: + Double strike. **Curse Immunity**. _Undead Bane_ or _Hates Undead_ - That last one is very "Heroes 3"-sounding and I'm not very convinced of it. Maybe because I would prefer to keep the games as distinct as possible. Troll: + **Regeneration**. - I don't think any creature regenerates mana or anything else other than HP, so just writing Regeneration should be enough (?) War Troll: + Same as above. Cyclops: + **Two-Hexed attack**. **Paralyze** or **Paralyzes** or **Paralyzing**. Sprite: + **No Retaliation**. - No one else other than enemy is going to retaliate anyways and there is no creature that has the ability to never retaliate as far as I know so it should only mean one thing. Dwarf: + **Spell Resistance** or **Magic Resistance** Battle Dwarf: + Same as above Unicorn: + **Blinding** or **Blinding Strike** or **Blinding Attack**. - "Blind" would sound like they are blind.. As noted above this could sound like it always happens, but a player will quickly realize it doesn't, though. Phoenix: + **Two-Hexed Attack**. _Elemental Spell Immunity_ - The last one manages to include more spells in one very precise description and it is good if more creatures share this ability or if someone in a future mod desires to give this to another creature. Hydra: + Attacks all adjacent hexes. **No Retaliation**. - I'm not able to come up with a way to shorten the first ability. Green Dragon: + **Two-Hexed Attack.** **Spell Immunity** or **Magic Immunity** Red Dragon: + Same as above Black Dragon: + Same as above Iron Golem: + **Reduced Elemental Spell Damage** or **Elemental Spell Resistance** - Resistance and Immunity could be used as a way to differentiate between partial and 100% resistance, respectively. Steel Golem: + Same as above Archmage: + No melee penalty. Chance to dispel beneficial spells. **Dispel Beneficial Spells** or **Dispel/Cancel/Remove Blessings** Giant: + **Mind Spell Immunity** or **Mind Shield** or _Strong-Minded_ - I personally like this general way you suggested of naming it. An experienced player will know that it always means those four spells and a beginner could look it up in a wiki, which is generally how some mechanics are refered to. Mind Shield is borrowed from the term used for the same ability in Heroes 4, even if that refers to an item. Strong-Minded sort of works for Giants and Titans (albeit very vague), but it sounds wrong if the same description is used for elementals who share this ability. I think having a general description, rather than listing them, all makes it possible to give more of an impression of the creature, like how this makes giants and titans seem like strong-minded creatures who are not easily tricked or taken control of by magic. To me, listing the spells one by one seems more like listing a set of rules that were necessary for balancing the game and are _independent_ of the creature in question, in other words very objective and sterile compared to a more "colorful" description of the creature. Titan: + Same as above Mummy: + Undead. _Curses_ - Can be interpreted several ways. Maybe _Cursed Attack or Cursed Strike_?. Royal Mummy: + Same as above Vampire: + Undead. **No Retaliation.** Vampire Lord: + Undead. **No Retaliation.** **Drains Life** or **Life Drain** I prefer the latter because it's a noun with adjective rather than a verb in presence (i.e. "drains") Rogue: + **No Retaliation**. Ghost: + _Decimated creature becomes Ghost_. - There should be a shorter way of saying this but I can't think of anything like a "Ghostify", which is horrible, or "Turn Troops into Ghosts". Genie: + _Halves creatures number._ -This sounds a lot like it would happen every time. Maybe "Troop Halving" is better. Not sure if the exact terminology used in Heroes 2 is troop or stack etc. Medusa: + _Petrify._ or _Petrification_ or _Petrifying_ Air Elemental: + Normal Morale. - Does this mean that they are unaffected by morale? **Mind Spell and Meteor Shower Immunity** or **Mind Shield and Meteor Shower Immunity**. _Double damage from Lightning and Elemental Storm. (Or: "2x damage from Lightning and Elemental Storm.") (Or: "Vulnerable to Lightning and Elemental Storm.")_ - I'm not sure how to shorten this last and most important part.. I do like that last alternative which could optionally be phrased like this "Lightning and Elemental Storm Vulnerability" Earth Elemental: + See above. Fire Elemental: + See above. Water Elemental: + See above.

Also I can't seem to remember how two-hex attacks work in Heroes 2 but do dragons damage across two hexes like those standing behind the target too, or is it like an arc/swipe breath, in other words damaging creatures standing on the sides? If it is the former then I think multiple-hex attacks should be named according to which adjacent hexes are hit. Not sure how this could be solved.

Also I notice that some descriptions I came up with are present tense verbs like "Curses", "Drains Life", while others are nouns sometimes with adjectives "Cursed Attack". I generally think that the nouns w/ adjectives are better.

Branikolog commented 3 years ago

Hi, @zenseii

Also I notice that some descriptions I came up with are present tense verbs like "Curses", "Drains Life", while others are nouns sometimes with adjectives "Cursed Attack". I generally think that the nouns w/ adjectives are better.

I think for each description we should decide individually. While "Cursed attack" looks pretty well and not too long, how'd "Drains Life" look in a form of noun? Also, Verbs are shorter. We should prefer short descriptions, as in future, some new creatures could appear with combination of current abilities as well.

So, taking away "chances" is a good proposal. I like both descriptions, but vote for shorter ones.

Troll:

Regenerates Hit Points. War Troll:

Regenerates Hit Points.

I suggest to take away "Hit Points" leaving just "Regenerates" or "Regeneration".

Phoenix:

Two hexes attack. Immune to Cold, Fire, Lightning and Elemental Storm. (Or: "Immune to Elemental spells.")

Vote for "Immune to Elemental spells".

And the same to Golems.

Giant:

Immune to Blind, Paralyze, Berserker and Hypnotize. (Or: "Immune to Mind spells.")

Same here: vote for "Immune to Mind spells".

For all necromancers creatures I propose to type "Undead" (for missing skeletons and zombies in the list above).

Genie:

Chance to halve creatures number.

I don't like the word "creatures number" in the description. Could It be changed into something like "enemy" or "target"?

Air Elemental:

Normal Morale. Immune to Mind spells and Meteor Shower. Double damage from Lightning and Elemental Storm. (Or: "2x damage from Lightning and Elemental Storm.") (Or: "Vulnerable to Lightning and Elemental Storm.")

For elementals I suggest to transform "Normal morale and immunity to Mind spells" into a single word "Elemental" or "Non-living", which implies this abilities, like it was made with "Undead" (Immune to mind, bless and morale penalties) Also, I vote for "Vulnerable to Meteor Shower".

zenseii commented 3 years ago
Quoted message
``` > > Hi, zenseii > > > Also I notice that some descriptions I came up with are present tense verbs like "Curses", "Drains Life", while others are nouns sometimes with adjectives "Cursed Attack". I generally think that the nouns w/ adjectives are better. > > I think for each description we should decide individually. While "Cursed attack" looks pretty well and not too long, how'd "Drains Life" look in a form of noun? Also, Verbs are shorter. We should prefer short descriptions, as in future, some new creatures could appear with combination of current abilities as well. > > So, taking away "chances" is a good proposal. I like both descriptions, but vote for shorter ones. > > > Troll: > > Regenerates Hit Points. > > War Troll: > > Regenerates Hit Points. > > I suggest to take away "Hit Points" leaving just "Regenerates" or "Regeneration". > > > Phoenix: > > Two hexes attack. Immune to Cold, Fire, Lightning and Elemental Storm. (Or: "Immune to Elemental spells.") > > Vote for "Immune to Elemental spells". > > And the same to Golems. > > > Giant: > > Immune to Blind, Paralyze, Berserker and Hypnotize. (Or: "Immune to Mind spells.") > > Same here: vote for "Immune to Mind spells". > > For all necromancers creatures I propose to type "Undead" (for missing skeletons and zombies in the list above). > > > Genie: > > Chance to halve creatures number. > > I don't like the word "creatures number" in the description. Could It be changed into something like "enemy" or "target"? > > > Air Elemental: > > Normal Morale. Immune to Mind spells and Meteor Shower. Double damage from Lightning and Elemental Storm. (Or: "2x damage from Lightning and Elemental Storm.") (Or: "Vulnerable to Lightning and Elemental Storm.") > > For elementals I suggest to transform "Normal morale and immunity to Mind spells" into a single word "Elemental" or "Non-living", which implies this abilities, like it was made with "Undead" (Immune to mind, bless and morale penalties) > Also, I vote for "Vulnerable to Meteor Shower". ```

Hi @Branikolog ! I'm not sure you saw that I had made almost the same comments that you did in the dropdown quote I made in mine. I've updated my first comment making this clearer. I figured it was better so we could avoid making this issue into a long wall of text.

Suggestions Drop Down. Click here:

For example in my first post my proposal for a noun version of "Drains life" was "Life Drain", which sounds good unless it exists as a spell? I know Heroes 4 has a spell called this and it does pretty much the same as a vampire attack.

Branikolog commented 3 years ago

Oh, sorry, @zenseii, didn't noticed that! :) Edit:

Anyway, my thoughts appear to be similar to your post above.) The only description is not satisfying for me is the ghost's one... I prefer watching descriptions more poetic and literary in Heroes 2. But as not native English speaker I cannot do nice suggestions in that way. :) Probably something like : "Absorbs eliminated souls". :)

zenseii commented 3 years ago

The only description is not satisfying for me is the ghost's one... I prefer watching descriptions more poetic and literary in Heroes 2. But as not native English speaker I cannot do nice suggestions in that way. :) Probably something like : "Absorbs eliminated souls". :)

I agree and as I wrote first, I'm not able to come up with any satisfying way of describing the ghost ability. I also think something more "poetic" is more in line with the essence of the rest of the game/franchise. Also we don't have to be native speakers to come up with good descriptions :)

If @LeHerosInconnu is indeed French as his name would suggest, maybe he has some good suggestions of French/Latins words for turning into a ghost or coming back to life as a ghost that are Anglicizable :)

LeHerosInconnu commented 3 years ago

Hello everyone,

Whatever description is used, I suggest that it not be ambiguous. For example with "No enemy retaliation." and "No retaliation.".

"No enemy retaliation." indicates that it is the enemy creature that does not retaliate to an attack (supposedly). But with "No retaliation." it is not clear. Who doesn't retaliate? The creature on its own? This description is getting really borderline, but it can still be used.

The goal is not to make it as short as possible, but to make it short while remaining accurate. :)

Another possibility for Crusader:

LeHerosInconnu commented 3 years ago

Continuing in poetry. :D

Ghost:

zenseii commented 3 years ago

Continuing in poetry. :D

Ghost:

  • "Soul Gatherer."

I like that one! How about "Soul Harvester"? The only problem with both is that they both sound like the ghosts only keep souls stored and don't convert or transform them into ghosts.

Also about No Retaliation, I have to admit that I did not think it could be interpreted two ways, but you raise a good point. I changed it to this also because this is the way this ability is called in English in Heroes 4, when it still was New World Computing. I see some descriptions in Heroes 3, like for cerberi, explain it like avoiding or evading retaliation. So maybe Avoid Retaliation or Evade Retaliation are not ambiguous?

Undead slayer sounds cool too.

LeHerosInconnu commented 3 years ago

Yes, "Soul Harvester." is even better. :) And yes, this is still "imaged".

I don't have any idea about Retaliation yet.

LeHerosInconnu commented 3 years ago

Ghost:

ihhub commented 3 years ago

As a person who is most likely to going to implement this very soon (1-2 days more) I'm taking a right to choose any version of descriptions :)

LeHerosInconnu commented 3 years ago

@ihhub:

ihhub commented 3 years ago

I mean it's just initial implementation, we could always polish descriptions and make them better!

zenseii commented 3 years ago

As a person who is most likely to going to implement this very soon (1-2 days more) I'm taking a right to choose any version of descriptions :)

And I have no problem with that! Consider mine as just suggestions you can keep or toss as you feel.

Going back to the three-lines long Elementals, I suggest to save space you can change the "unaffected by moral" to Unmoral or Amoral, which according to how they are described here have the correct meanings for these pseudo non-sentient beings that don't have a moral perception. Even Morally Unaffected works but is longer.

Personally I might just prefer Branikolog's suggestion of saying that they are Elementals and having that signify that they are unaffected by moral and their other shared traits.

Branikolog commented 3 years ago

Continuing in poetry. :D Ghost:

  • "Soul Gatherer."

I like that one! How about "Soul Harvester"? The only problem with both is that they both sound like the ghosts only keep souls stored and don't convert or transform them into ghosts.

Also about No Retaliation, I have to admit that I did not think it could be interpreted two ways, but you raise a good point. I changed it to this also because this is the way this ability is called in English in Heroes 4, when it still was New World Computing. I see some descriptions in Heroes 3, like for cerberi, explain it like avoiding or evading retaliation. So maybe Avoid Retaliation or Evade Retaliation are not ambiguous?

No enemy retaliation still is my #1 ;)

Considering ghosts - I'm 100% sure any player will remember, what does this description means, once he met ghosts before.

Even "Soul Eater" would be enough clear.)

What about "halving" ability for genies? Any "poetic" ideas ? :)

ihhub commented 3 years ago

@zenseii , @LeHerosInconnu and @Branikolog , if we can come out with a single most suitable solution in 1-2 days it would be perfect 🙂

zenseii commented 3 years ago

No enemy retaliation still is my nr.1 ;)

I don't disagree with this as long as there is enough space. As stated earlier, No enemy retaliation does remove any ambiguity. However I don't think there exists any creature that has the "ability" to never retaliate back when struck.

Considering ghosts - I'm 100% sure any player will remember, what does this description means, once he met ghosts before.

Even "Soul Eater" would be enough clear.)

I agree that these descriptions will mostly add flavor and serve to help new players remember what traits a creature has. Furthermore, Heroes 2 doesn't take itself very seriously which is why whimsical/comical descriptions are fine, in my opinion, of course. The pitfall of going for something comedic is that it can ruin an experience if done wrong (not everyone shares the same sense of humor).

Having said that, I think Soul Eater implies that the ghost consumes the souls of the creatures it kills, which is more in the territory of how the vampires work. I believe something like Soul Transformer, Ghost Transformer are more precise and gets the job done, though they are slightly bland and boring.

What about "halving" ability for genies? Any "poetic" ideas ? :)

Well, first we would need to imagine what happens in the game world when genies perform the mathematical operation of halving the number of the stack. I always felt it was more of a pure "game-logic" sort of attack than something that came natural to the game universe, but I might not have given it much thought.

I figure what they do is make half of an army "go poof" as a genie would be able to with his incredible magic. I could also imagine that the genies grant the wish for the player to make half his opponent's army disappear, occasionally.

So my best suggestion so far is:

Genies

  • Wish Granting (Occasionally)

For new players this leaves a sort of wonder of what sort of wishes are granted. However, the problem is that quite often you will be facing these genies as neutral armies and in that case it becomes a bit harder to imagine who is doing the wishing when they cut your stacks in half...

Maybe naming their occasional super-magic is easier, like:

Genies:

  • Genie's Wrath

A genuine name for it does, however, imply that this attack is actually referenced to as this name in the game, which it doesn't, and it also sort of ends up in slight fan-fiction terriroty of naming things in the game universe, which I'm personally not much of a fan of.

ihhub commented 3 years ago

Hi @zenseii , @Branikolog and @LeHerosInconnu , I'm attaching a text document which was generated from totally new code. Could you please verify all monster info even including flying ability or 2-hex size? This is very important as we have to be sure that we don't make a mistake. These changes are also needed for the future monsters addition.

monster.txt

ihhub commented 3 years ago

Few notes:

LeHerosInconnu commented 3 years ago

Hello @ihhub,

So, if I haven't forgotten anything. :)

Hydra should have "No enemy retaliation".

Dragons should have "Double melee attack cell".

Archmage has "20% chance to cast Dispel Magic", note that only beneficial spells are removed, not negative ones. (The Archmage has a 20% chance to dispel beneficial spells on targeted creatures.)

The Giant does not need to have "No melee penalty" because it is not a ranged unit.

Yes, Ghost is "Undead".

zenseii commented 3 years ago

@ihhub Ghosts are indeed undead in the game. They give -1 morale to other troops in the army.

Comments to monster.txt:

Instead of:

Attack all enemies around

Questions:

Will single and mass variants be joined? Like for example writing only:

100% Immunity to Curse

Instead of

100% Immunity to Curse 100% Immunity to Mass Curse

Small notes:

Archer Ranger Double shot

Tested with Heroes 2 Gold version 2.1

LeHerosInconnu commented 3 years ago

Hello @zenseii,

Comments to monster.txt:

  • Earth Elementals are immune to Meteor Shower, and in other words do not take 200% damage from it. So both Earth and Air Elementals are immune to Meteor Shower.
  • Earth Elementals are not immune to Elemental Storm. They take normal damage from it.

This is an "original" bug from Heroes 2. :) Air and Earth Elementals, and Fire and Water Elementals should be opposite in their immunities and weaknesses.

  • For all elementals it should be corrected to *Always neutral morale

Correct. Also the first letter of Morale can be capitalized here (see below).

  • For Hydras I think adjacent sounds more correct than around, which feels like it needs to be followed by an object/noun:

Hydra: Attack all adjacent enemies

Instead of:

Attack all enemies around

Yes "adjacent" sounds better. Also there should be an "s" in "Attacks". Or: "Attack on all adjacent hexes". Or : "Attack on all hexes".

  • Small correction:

Genies: 10% chance to halve enemy

Correct.

Small notes:

  • For the creatures who have a chance to inflict a spell together with their attack (Cyclopes, Unicorns, Magi, Medusas), I think it sounds weird to say that they have an X% chance to "cast" a spell, since they do not really cast the spell, but the effect comes from their attack, like a paralyzing attack.

Yes, I think something like "20% ability to Paralyze" or "20% capacity to Paralyze" would be more appropriate.

  • In general I suggest to be consistent with capitalization of words. Either write Double Shot or Double shot. In the monster.txt it says:

Crusader: Double damage to Undead

Archer Double shot

I think it's okay to capitalize the name of a Creature or the name of a Spell or a type of creature like "Undead" here, it gives the reader some kind of extra information. Also, the Archer does not have a double shot, only the Ranger. :)

I think these are the terms specific to the game engine, they will not be the description texts.

zenseii commented 3 years ago

@LeHerosInconnu Thanks for clearing that up! I did sort of expect that the Elemental thing was a bug, since I saw these immunities and weaknesses reported the same everywhere on the web etc.

Anyways as for the choices on how to word things I know ihhub will land on something good in the end since there is not a lack of good suggestions.

ihhub commented 3 years ago

@zenseii and @LeHerosInconnu , thank you! I'll correct them. Are other statistics correct? Because all this information is written from scratch so I might made a mistake somewhere.

zenseii commented 3 years ago

@ihhub I checked all statistics up against heroesofmightandmagic.com and for necromancer and the neutral creatures I checked all of them up against Heroes2 Gold, and there were no differences. The only things I did not check were the neutral creature's base growth and cost. I could go back and check all creatures apart from necromancers up against Heroes 2 gold rather than that site.

LeHerosInconnu commented 3 years ago

Hello @ihhub,

I checked and all values seem to be correct. The levels mentioned here seem more appropriate for neutral creatures. Not sure about the growth values for neutral creatures, the values provided are from the Project Ironfist files. How are these values used in fheroes2?

Rogue

Nomad

Ghost

Medusa

Air Elemental

Earth Elemental

Fire Elemental

Water Elemental

Genie

ihhub commented 3 years ago

Hi @LeHerosInconnu , I corrected neutral monster stats (growth is not used anywhere, except castle). Level is used for setting monster amount for random monsters at the start of map: 50, 30, 25, 25, 12, 8 monsters per level. Some creatures have their own unique values.

Also a build for testing will be ready very soon. Almost every creature have a proper description but elementals have the worst...

LeHerosInconnu commented 3 years ago

@ihhub

Okay, I'll take a look at it tomorrow, I have to move. :)

ihhub commented 3 years ago

Hi @zenseii , @LeHerosInconnu and @Branikolog , you could download Windows build from this pull request using this explanation. Not everything is the same as you proposed due to some development complexities. Please verify the changes and if they're good we could go with them. In the future we will polish monster's description.

Please note that I moved creature sprite 5 pixels to top to make 3 lines of description fit within the window. Also I made some changes in saves (saves older thna 0.9.3 won't work) as old monster related code was using monster data in saves. Not it doesn't.

LeHerosInconnu commented 3 years ago

Hello @ihhub,

Some remarks after checking.

There are two Lightning spells, "Lightning Bolt" and "Chain Lightning". Either the word "Bolt" can be replaced by the word "spells". Or if there isn't enough room, simply write "200% damage from Lightning and Elemental Storm." I think this is evocative enough for both Lightning spells. Creature description 003

Same remark here. "Immune to Lightning and Elemental Storm." Creature description 004

For elementals, the term "Elemental." is a bit "bland". The player will think: "I actually see that it's an Elemental." Some thoughts:

But this only takes into account the Morale and not the immunity to Mind spells.

When the description of the creature only needs one line, I suggest to write the text on the bottom line (location of the third line) rather than on the top line (not necessarily in this PR). (Same when the description of the creature only needs two lines.) Creature description 005

Maybe, when the description of the creature contains several sentences and each sentence can be written on one line, I suggest to do so (not necessarily in this PR). In the example, with the Crusader: (The text should remain center justified.)

"Double Strike. Double damage to Undead. Immune to Curse." Creature description 006

Same remark here. "20% chance to Paralyze. Two hexes attack." Creature description 007

Correction: "Always retaliates." with an "s" in retaliates. (It's the description of the creature (so one creature).) (Or should we make a description according to the number of creatures in the troop, I think not.) :) Creature description 008

Same remark here. "Attacks all..." with an "s" in Attacks. Creature description 009

Same remark here. "Decreases..." with an "s" in Decreases. Creature description 010

I think the word "Eater" should be spelled with a capital "E" here, to give it a bit of "depth". "Soul Eater." Creature description 011

ihhub commented 3 years ago

Hi @LeHerosInconnu , I addressed almost every comment of yours. Let's please create a separate topic if extra improvements are needed.

LeHerosInconnu commented 3 years ago

Hello @ihhub,

Even if the growth of neutral creatures is not yet used in fheroes2, I think it would be nice to have a basis for the future. I think that the same growth as the Barbarian castle creatures (but with the well and horde building bonuses) should be adequate. I can open a discussion if necessary.

Rogue

Nomad

Ghost

Medusa

Air Elemental

Earth Elemental

Fire Elemental

Water Elemental

Genie