-
-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extended spell/monster info #3397
Comments
Hi @lyssdod , it is the original behavior of the original game. XML files are not used anywhere anymore. |
Hello @lyssdod,
There are already proposals concerning these subjects. Related issues and discussion: #1632, #1627, #1625, #1624, #3224. |
thank you guys! do you mind accepting a PR before 1.0? It will have an option to be disabled by default |
Hello @lyssdod,
It's okay for me. :) |
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. |
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: 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? |
The task is definitely not easy. |
Hi all, @lyssdod Do you have any concept/outline how this should look like? |
Hello all, If I haven't forgotten anything, here are the creature's abilities, immunities, etc. For flying creatures, does this have to be specified in the creature information window? Or nothing indicated. And for creatures that fire at range? Or nothing indicated. 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. With just: Or: Or nothing indicated. Mummy:
Royal Mummy:
Vampire:
Vampire Lord:
Lich:
Power Lich:
Bone Dragon:
Rogue:
Ghost:
Genie:
Medusa:
Air Elemental:
Earth Elemental:
Fire Elemental:
Water Elemental:
|
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:
and then somewhere in monster general info:
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 And for the text rendering, it can be done by cycling through this enum and then assembling a string, like so:
|
@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). |
Hi, @lyssdod
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.
👍
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. |
Correction for Vampire. Vampire:
|
Hello @ihhub, Definitely in small white font. It seems that there will be a Chicken creature in the official mod after version 1.0 o_0 :D |
Hi, @ihhub
I think there will be a special state of creature, given if it acts appropriate during battle. P.S.
"No retaliation" is missing. |
Hello @Branikolog,
It's corrected. Thanks. :) |
Hello @ihhub, Here are the texts in a shorter version: 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:
|
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 hereCrusader:
Troll:
War Troll:
Cyclops:
Sprite:
Dwarf:
Battle Dwarf:
Unicorn:
Phoenix:
Hydra:
Green Dragon:
Red Dragon:
Black Dragon:
Iron Golem:
Steel Golem:
Archmage:
Giant:
Titan:
Mummy:
Royal Mummy:
Vampire:
Vampire Lord:
Rogue:
Ghost:
Genie:
Medusa:
Air Elemental:
Earth Elemental:
Fire Elemental:
Water Elemental:
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. |
Hi, @zenseii
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.
I suggest to take away "Hit Points" leaving just "Regenerates" or "Regeneration".
Vote for "Immune to Elemental spells". And the same to Golems.
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).
I don't like the word "creatures number" in the description. Could It be changed into something like "enemy" or "target"?
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) |
Quoted message
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. |
Oh, sorry, @zenseii, didn't noticed that! :) Anyway, my thoughts appear to be similar to your post above.) |
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 :) |
Hello everyone, Whatever description is used, I suggest that it not be ambiguous. "No enemy retaliation." indicates that it is the enemy creature that does not retaliate to an attack (supposedly). The goal is not to make it as short as possible, but to make it short while remaining accurate. :) Another possibility for Crusader:
|
Continuing in poetry. :D Ghost:
|
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. |
Yes, "Soul Harvester." is even better. :) I don't have any idea about Retaliation yet. |
Ghost:
|
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 :) |
|
I mean it's just initial implementation, we could always polish descriptions and make them better! |
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. |
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 ? :) |
@zenseii , @LeHerosInconnu and @Branikolog , if we can come out with a single most suitable solution in 1-2 days it would be perfect 🙂 |
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.
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.
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
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:
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. |
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. |
Few notes:
|
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 Giant does not need to have "No melee penalty" because it is not a ranged unit. Yes, Ghost is "Undead". |
@ihhub Comments to monster.txt:
Instead of:
Questions:Will single and mass variants be joined? Like for example writing only:
Instead of
Small notes:
Tested with Heroes 2 Gold version 2.1 |
Hello @zenseii,
This is an "original" bug from Heroes 2. :)
Correct.
Yes "adjacent" sounds better. Also there should be an "s" in "Attacks". Or: "Attack on all adjacent hexes". Or : "Attack on all hexes".
Correct.
Yes, I think something like "20% ability to Paralyze" or "20% capacity to Paralyze" would be more appropriate.
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. I think these are the terms specific to the game engine, they will not be the description texts. |
@LeHerosInconnu 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. |
@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. |
@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. |
Hello @ihhub, I checked and all values seem to be correct. Rogue
Nomad
Ghost
Medusa
Air Elemental
Earth Elemental
Fire Elemental
Water Elemental
Genie
|
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... |
Okay, I'll take a look at it tomorrow, I have to move. :) |
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. |
Hello @ihhub, Some remarks after checking. There are two Lightning spells, "Lightning Bolt" and "Chain Lightning". Same remark here. For elementals, the term "Elemental." is a bit "bland".
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). 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). "Double Strike. Same remark here. Correction: Same remark here. Same remark here. I think the word "Eater" should be spelled with a capital "E" here, to give it a bit of "depth". |
Hi @LeHerosInconnu , I addressed almost every comment of yours. Let's please create a separate topic if extra improvements are needed. |
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. Rogue
Nomad
Ghost
Medusa
Air Elemental
Earth Elemental
Fire Elemental
Water Elemental
Genie
|
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...
The text was updated successfully, but these errors were encountered: