Warcraft: War Heroes - Official Thread
-
@Cernel. I see now that the previous turn trigger successes seem to stick, so that the rewards are given every following turn also. I don’t understand what you are saying about how to make the triggers reset … showing an example trigger is equal to 1000 words

-
@Frostion So the original code I posted was if the first roll fails then they get reward 1, if second rolls fails then they get reward 2, etc. If all rolls succeed then they get nothing. This is kind of just the inverse of what you described though achieves the proper percentages if set right. I believe you could invert all of this if you want to get items on success rather than on failure. Each failure was 1/7 chance and then 1/7 chance of all 6 to succeed (get nothing).
The second example shows a 1/12 chance of each failure (getting items) and 1/2 chance of all succeeding (get nothing).
-
-
@Frostion Ok, since anyways at this point, this is the lightest option:
<attachment name="triggerAttachment_Set_Condition_True_HumansFish1" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish1"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish1"/> <option name="playerProperty" value="switch" count="true"/> </attachment>Multiplied by 6, accordingly.
You can have this actually firing any time from after "HumansEndTurn" comprised till the next before "HumansEndTurn" excluded.
-
@Cernel Yep. Either that or just make the condition always true so it just sets the switch to true regardless.
<attachment name="triggerAttachment_Set_Condition_True_HumansFish1" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="alwaysTrueCondition"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish1"/> <option name="playerProperty" value="switch" count="true"/> </attachment> -
@redrum If only the menu would have an option for hiding triggers from history, otherwise it creates clutter. I actually think triggers should default not be present in history, and at most having a menu option to see them; a properly made map should give the user only what he needs to read, with notification, or documented in Notes (like the fact that in WaW you get these units on this round). Like I have some games I've difficulties searching for the moves in the middle of the huge quantity of trigger history, and I practically cannot use the arrows bottom left to move through history to see the game.
-
-
@Frostion Good to hear. And writing conditions/triggers without being able to test is always a bit interesting

Also, once you look to implement these across all players, I'd highly recommend using the new variable functionality as otherwise, you'll end up with a very long XML.
-
@Frostion Cool. Good look everyone with that 1 over 486 probability of getting 10 XP, by the way...:crossed_fingers:
-
@Cernel the fishing and reward chances are as of now:
1:3 of getting a catch - Standard catch is 1 Food
Within this catch there is 1:3 chance of getting better / 5 Food
Within this catch there is 1:3 chance of getting better / 25 Gold
Within this catch there is 1:3 chance of getting better / 50 Gold
Within this catch there is 1:3 chance of getting better / 100 Mana
Within this catch there is 1:3 chance of getting better / 100 XP
How do you like the odds? Whats the chances above in %? And does it correspond with the code?:<attachment name="conditionAttachmentHumansHaveTheFishingPole" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="directPresenceTerritories" value="Arthur Backpack" count="1"/> <option name="unitPresence" value="Fishing-Pole" count="1"/> </attachment> <attachment name="conditionAttachmentHumansFish1" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="conditionAttachmentHumansFish2" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="conditionAttachmentHumansFish3" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="conditionAttachmentHumansFish4" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="conditionAttachmentHumansFish5" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="conditionAttachmentHumansFish6" attachTo="Humans" javaClass="RulesAttachment" type="player"> <option name="switch" value="true"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_6" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish6"/> <option name="playerProperty" value="switch" count="false"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_5" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish5"/> <option name="playerProperty" value="switch" count="false"/> <option name="activateTrigger" value="triggerAttachment_-_Arthur_goes_fishing_-_Level_6:1:false:false:false:true"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_4" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish4"/> <option name="playerProperty" value="switch" count="false"/> <option name="activateTrigger" value="triggerAttachment_-_Arthur_goes_fishing_-_Level_5:1:false:false:false:true"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_3" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish3"/> <option name="playerProperty" value="switch" count="false"/> <option name="activateTrigger" value="triggerAttachment_-_Arthur_goes_fishing_-_Level_4:1:false:false:false:true"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_2" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish2"/> <option name="playerProperty" value="switch" count="false"/> <option name="activateTrigger" value="triggerAttachment_-_Arthur_goes_fishing_-_Level_3:1:false:false:false:true"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_goes_fishing_-_Level_1" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansHaveTheFishingPole"/> <option name="when" value="before:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish1"/> <option name="playerProperty" value="switch" count="false"/> <option name="activateTrigger" value="triggerAttachment_-_Arthur_goes_fishing_-_Level_2:1:false:false:false:true"/> <option name="chance" value="1:3"/> </attachment> <attachment name="triggerAttachment_-_Arthur_catches_a_small_fish" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish1:conditionAttachmentHumansFish2"/> <option name="conditionType" value="1"/> <option name="resource" value="Food"/> <option name="resourceCount" value="1"/> <option name="notification" value="HumansFishingFood1"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_-_Arthur_catches_a_large_fish" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish2:conditionAttachmentHumansFish3"/> <option name="conditionType" value="1"/> <option name="resource" value="Food"/> <option name="resourceCount" value="5"/> <option name="notification" value="HumansFishingFood5"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_-_Arthur_finds_a_small_treasure_in_the_water" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish3:conditionAttachmentHumansFish4"/> <option name="conditionType" value="1"/> <option name="resource" value="Gold"/> <option name="resourceCount" value="25"/> <option name="notification" value="HumansFishingGold25"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_-_Arthur_finds_a_large_treasure_in_the_water" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish4:conditionAttachmentHumansFish5"/> <option name="conditionType" value="1"/> <option name="resource" value="Gold"/> <option name="resourceCount" value="50"/> <option name="notification" value="HumansFishingGold50"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_-_Arthur_finds_a_flask_of_mana_in_the_water" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish5:conditionAttachmentHumansFish6"/> <option name="conditionType" value="1"/> <option name="resource" value="Mana"/> <option name="resourceCount" value="100"/> <option name="notification" value="HumansFishingMana100"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_-_Arthur_finds_an_old_scripture_in_the_water" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish6"/> <option name="conditionType" value="0"/> <option name="resource" value="XP"/> <option name="resourceCount" value="100"/> <option name="notification" value="HumansFishingXP100"/> <option name="players" value="Humans"/> <option name="when" value="after:HumansEndTurn"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish1" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish1"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish1"/> <option name="playerProperty" value="switch" count="true"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish2" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish2"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish2"/> <option name="playerProperty" value="switch" count="true"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish3" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish3"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish3"/> <option name="playerProperty" value="switch" count="true"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish4" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish4"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish4"/> <option name="playerProperty" value="switch" count="true"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish5" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish5"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish5"/> <option name="playerProperty" value="switch" count="true"/> </attachment> <attachment name="triggerAttachment_Set_Condition_True_HumansFish6" attachTo="Humans" javaClass="TriggerAttachment" type="player"> <option name="conditions" value="conditionAttachmentHumansFish6"/> <option name="conditionType" value="0"/> <option name="when" value="after:HumansEndTurn"/> <option name="players" value="Humans"/> <option name="playerAttachmentName" value="RulesAttachment" count="conditionAttachmentHumansFish6"/> <option name="playerProperty" value="switch" count="true"/> </attachment>
So this is how the first draft of the fortification’s “Wall Archers” AA and the “Siege-Tower” and “Battering Ram” countermeasures.
The players will have the option to start bombarding fortifications from a distance (with flying ammunition) or directly engage the fortifications and inhabitants in an attempt to capture the fortification. So … bombard with bombard shots to destroy or alternatively invade the territory to capture. But then the Wall Archer defense comes in use.
Bringing along a battering ram will cause:
Guard-Tower Wall Archer effectives reduced by 100% (From 1 to 0 rolls)
Fort Wall Archer effectives reduced by 50% (From 2 to 1 rolls)
Garrison City Wall Archer effectives reduced by 33% (From 3 to 2 rolls)
Castle Wall Archer effectives reduced by 25% (From 4 to 3 rolls)
Capital-City Wall Archer effectives reduced by 20% (From 5 to 4 rolls)Bringing along a Siege Tower will:
Reduce every and all fortification Wall Archers by 33 % (From 6 to 4 AA strength)or, this is the idea anyway

-
@Frostion Wow, 5 siege engines. That is going to be challenging to configure soundly, especially if they would be totally useless for anything else but siege warfare (as they should). By the way, historically the ballista, or rather the springald, was used for the defence of fortifications, not much for the offence of the same.
Well, now the chance of getting 100 XP is 1 over 729.
Those chances are pretty easy to calculate, just multiply them with each other until the wanted step, and also multiply it by the probability of not proceeding further (as that is losing the current one):
1 food: (1/3)(1-1/3)=2/9=22.22%
5 food: (1/3)(1/3)(1-1/3)=2/27=7.41%
25 gold: (1/3)(1/3)(1/3)(1-1/3)=2/81=2.47%
50 gold: (1/3)(1/3)(1/3)(1/3)(1-1/3)=2/243=0.82%
100 mana: (1/3)(1/3)(1/3)(1/3)(1/3)(1-1/3)=2/729=0.27%
100 XP: (1/3)(1/3)(1/3)(1/3)(1/3)(1/3)=1/729=0.14% -
@Cernel The Battering-Ram and Siege-Tower will be for suppressing Wall Archers. Without the use if them, right now a Capital would practically kill 3 attacker units every turn, but only 1,6 unit if suppressed by two siege engines.
The three artillery units are long range artillery vs. buildings and units, but their ammo will ofcours also fire if attacked. The Trebuchet is mostly an offence weapon, catapult a balanced weapon and the ballista has defensive stats.
Right now the units can also defend themselves in combat with 1 def/1 att, but right now I am considering removing this and adding footmen/pikemen support abilliy.
-
@redrum Could you help take a look at something regarding the Hard AI and this map?
Development slowly progresses
But there are A LOT of errors when playing with the pre-release engines which are required. But that is not what I would like you to check out.The AI does not seem to build factories. More specific to my map: The AI does not build the Guard-Tower (Alliance players) or the Watch-Tower (Horde players) factories that produce 1 unit. They are the only factories players can build that are not upgrades of other building. Even if the game has progressed far along, and the AI players have expanded a lot, having to walk a long distance with units, they don’t build factories.
Could you investigate why by looking at my map and round 15 save game?
I played with engine version 2.0.16920.
I can send you the files via chat. -
@Frostion Just took a look at it. The reason the AI never buys Guard-Tower or Watch-Tower is that right now it only considers buying factories in territories with at least 3 production (sometimes 2 production if certain criteria are met like it can't spend PUs on anything else). Since every territory on this map has only 1 production it will currently never buy any factories.
We'd have to think about how to expand the AI to handle the factories on this map without negatively impacting other maps if you want to stick with all territories being 1 production.
FYI, looks like you are missing a few unit images:
SEVERE: MISSING UNIT IMAGE (won't be displayed): Guard-Banner owned by Humans in Arthur Backpack
SEVERE: No image for unit type: UnitType{name=Khorman}, player: PlayerId named:Nature
SEVERE: No image for unit type: UnitType{name=Footmen}, player: PlayerId named:Nature -
Would multiplying everything by 3 work ? Or would that cause issues elsewhere ?
-
-
@redrum said in World of War Heroes – Official Thread:
@Frostion Just took a look at it. The reason the AI never buys Guard-Tower or Watch-Tower is that right now it only considers buying factories in territories with at least 3 production (sometimes 2 production if certain criteria are met like it can't spend PUs on anything else). Since every territory on this map has only 1 production it will currently never buy any factories.
We'd have to think about how to expand the AI to handle the factories on this map without negatively impacting other maps if you want to stick with all territories being 1 production.
I already said so years ago, but I still think the AI should not the based on fixed numerical values, that don't really mean anything on their own. For example, I could take "World War II Revised" and make a mod in which:
- Each territory has a production value 10 times the original.
- Each player starts with 10 times as many PUs.
- All the units numbers in each territory in the starting setup are multiplied by 10, except factory and aaGun units.
- Factory costs 150 PUs.
- AaGun costs 50 PUs.
- I tell in notes that you can place up to 10 units per zone with bid resources.
This mod of Revised would play very close to the original, except the fact that you would have less relative TUV destruction, due to the much reduced impact of minimals (like minimum 1 unit to take a territory or minimum 1 unit to block infinite units), some more strategic freedom and some less dice influence (also reducing the advantage for whoever starts bidding first), but placing a factory in a value 10 territory would be about the same as (read as crazy as) placing it in a value 1 territory in the original, condemning all those AI checks based on absolute values (there would be simply no territories of value in between of 0 and 10).
-
OK. Thanks for looking into it.
But why does player "Nature" need to have unit “Khorman”? It is a Dwarven Hero unit that Nature should not have access to? I have seen similar errors, where for example the engine wants Undead to have image of for example Human Hero unit. Does every player need image of every single unit type in the game?
In regards to the AI building factories, I actually thought the motivation was based on distance from battle fields, like if the AI could see that it had to walk like 6 territories to meet the enemy (or 3 turns with 2 movers), then AI would like to build closer to the enemy. Could the AI logic not benefit from something like this?
-
@Frostion Not sure about the images, I'll have to take a closer look.
The AI does check distance from the enemy but it has a hard limit right not where it won't even consider any 1 production territories. The reason for that is that on pretty much all existing maps, you never want to build a factory on 1 production territories and rarely on 2 production territories (so this is essentially an assumption that is invalid for this map). The way the AI works around buying factories is essentially like this (ignoring sea purchases for now):
- Buy defenders to hold factories
- Buy land units in factories reasonably close the the enemy (has a bunch of calculations to determine distance and whether to buy low/high movement units)
- Buy factory in 3 or more production territories reasonably close to the enemy
- Try to spend remaining PUs on land units in factories further from the enemy not used in 1 & 2
- Buy factory in 2 production territories as couldn't spend PUs on anything else
@Cernel Ideally, you are correct. The AI shouldn't hard code to fixed values but given that it works on almost all existing maps and is much simpler to code that is why it was done that way. There are very few existing maps where you would ever place a factory in a 1 production territory (given that placement is limited by territory production). But the AI should instead look at say average territory production values instead of having a hard limit (if all territories are 1 production and factories are cheap then be willing to build anywhere). Your example is a bit different and even more extreme but the AI would probably do ok (definitely better than it would on this map with all 1 prod territories). The reason is the AI only tries to build a factory if it thinks it needs one after using its existing factories that are reasonably close to the enemy so the only thing that would change is it would be willing to buy a factory in territories that might not be worth it since you could argue it shouldn't build in a 10 prod territory in your example (only in maybe 20 or more prod territories).
-
@redrum My Warcraft map now has 1-3 PU territories, so the AI is building factories, but sadly not upgrading.
@everybody
First post here for a long time. And it is not even a progress report, even though there has been a lot of progress and changes to this map.I need to know if this way of representing bridges (land+air unit connections) and air bridges (air units only connection) is intuitively understood? Is it obvious what a blue arrow, floating in the air, is saying? I myself have been working on this and might be blinded in terms of what I see. I have tried to make the arrow very discreet, as to not look like a physical presence, like the "real" bridge with black outline.

Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login