Is there any chance that I can boost all monster's attack/defence?

As I can find there is a way inceasing there levels.

Hey guys,

 

I felt boring when each time I wanted playing an epic game but found nothing else through all over the world except for other AI with 1,000 or more attach/defence. Those "deadly" monsters are so so weak at that time...

 

So I wonder if there exist any chanc that I can change this.

I found this in the random event "eclipse":


<ModType>Player</ModType>
<Attribute>AllUnitsGainLevel</Attribute>
<StrVal>WildCreatures</StrVal>
<Value>2</Value>

 

Is there any thing else like that which can boost their attact/defence? for example each trun, +1% attach for all monsters.

 

Any suggestions?

10,874 views 16 replies
Reply #1 Top

Certainly gaining levels will increase a lot of these things. If you want to spend a lot of time you can go through all the xml files and update every monsters attack and defense to be higher than they are currently.

You could play with the CoreUnitStat.xml files and give yourself blood penalties that will effectively raise everyone else attack and defense while keeping yours the same as the original. I do not know of a good way of accomplishing what you seek without quite a bit of work.

Another way is to add an ability that raises these things for every monster per level, making the monsters a lot more scary as they gain levels. But this ability in turn must be given to every monster. Then you can give the monsters what you expect them to be in terms of attack and defense.

Reply #2 Top

Quoting parrottmath, reply 1

Certainly gaining levels will increase a lot of these things. If you want to spend a lot of time you can go through all the xml files and update every monsters attack and defense to be higher than they are currently.

You could play with the CoreUnitStat.xml files and give yourself blood penalties that will effectively raise everyone else attack and defense while keeping yours the same as the original. I do not know of a good way of accomplishing what you seek without quite a bit of work.

Another way is to add an ability that raises these things for every monster per level, making the monsters a lot more scary as they gain levels. But this ability in turn must be given to every monster. Then you can give the monsters what you expect them to be in terms of attack and defense.

 

So it means there is nothing like "AllUnitsGainAttack"? Thank you man, Iike the bloody suggestion :)

Reply #3 Top

Quoting parrottmath, reply 1

Certainly gaining levels will increase a lot of these things. If you want to spend a lot of time you can go through all the xml files and update every monsters attack and defense to be higher than they are currently.

You could play with the CoreUnitStat.xml files and give yourself blood penalties that will effectively raise everyone else attack and defense while keeping yours the same as the original. I do not know of a good way of accomplishing what you seek without quite a bit of work.

Another way is to add an ability that raises these things for every monster per level, making the monsters a lot more scary as they gain levels. But this ability in turn must be given to every monster. Then you can give the monsters what you expect them to be in terms of attack and defense.

 

I created a ability that assigned to the race, but seems the perlevel wasn't working.

<ModType>Player</ModType>
<Attribute>AbilityBonus</Attribute>
<StrVal>A_UnitStat_Attack_Pierce</StrVal>
<Value>6</Value>
<PerLevel>1</PerLevel>
<Provides>+6% Attack per level</Provides>

Anyway let me play with the units file :)

Reply #4 Top

You might want to model your bonus after this ability

    <AbilityBonus InternalName="MonsterousAbility">
        <AbilityBonusOption InternalName="Monsterous">
            <DisplayName>Monstrous</DisplayName>
            <Description>Cannot be knocked Prone, +8 Hit Points per Level</Description>
            <Icon>Ability_Large_Icon.png</Icon>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_ChanceToAvoidProne</StrVal>
                <Value>100</Value>
                <Provides>Cannot be knocked Prone</Provides>
            </GameModifier>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_HitPoints</StrVal>
                <Value>8</Value>
                <PerLevel>1</PerLevel>
                <Provides>+8 Hit Points per Level</Provides>
            </GameModifier>
            <IsCombatAbility>1</IsCombatAbility>
            <Type>Defensive</Type>
            <AIData AIPersonality="AI_General">
                <AIPriority>5</AIPriority>
            </AIData>
        </AbilityBonusOption>
    </AbilityBonus>

You might want to do something along these lines...

            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_Attack_Pierce</StrVal>
                 <Multiplier>1.06</Multiplier>
                 <PerLevel>1</PerLevel>
                <Provides>+6% Attack per Level</Provides>
            </GameModifier>

Similarly, you want to do this for the defense. You then want to add this ability to each monster unit type. Have fun modding. Not that this mod will not be compatible with CoS unless you do a few things of course I'll let heavenfall fill in the details if you choose to pursue compatibility with his mod.

Reply #5 Top

Quoting parrottmath, reply 4

You might want to model your bonus after this ability

    <AbilityBonus InternalName="MonsterousAbility">
        <AbilityBonusOption InternalName="Monsterous">
            <DisplayName>Monstrous</DisplayName>
            <Description>Cannot be knocked Prone, +8 Hit Points per Level</Description>
            <Icon>Ability_Large_Icon.png</Icon>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_ChanceToAvoidProne</StrVal>
                <Value>100</Value>
                <Provides>Cannot be knocked Prone</Provides>
            </GameModifier>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_HitPoints</StrVal>
                <Value>8</Value>
                <PerLevel>1</PerLevel>
                <Provides>+8 Hit Points per Level</Provides>
            </GameModifier>
            <IsCombatAbility>1</IsCombatAbility>
            <Type>Defensive</Type>
            <AIData AIPersonality="AI_General">
                <AIPriority>5</AIPriority>
            </AIData>
        </AbilityBonusOption>
    </AbilityBonus>

You might want to do something along these lines...

            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_Attack_Pierce</StrVal>
                 <Multiplier>1.06</Multiplier>
                 <PerLevel>1</PerLevel>
                <Provides>+6% Attack per Level</Provides>
            </GameModifier>

Similarly, you want to do this for the defense. You then want to add this ability to each monster unit type. Have fun modding. Not that this mod will not be compatible with CoS unless you do a few things of course I'll let heavenfall fill in the details if you choose to pursue compatibility with his mod.

 

Thank you man...

 

However I may want ask some other thing

 

Is there any chancce that I can get the current turn number like that:

 

<Expression><![CDATA[[TurnNumber]]]></Expression>?

Reply #6 Top

The only way I can conceive of doing this is by creating a unit stat that increases every turn and use that unit stat to determine what turn it is... not sure if it would work, but it is the only thing that I can think of at the moment.

Other than that idea, I wouldn't know.

Reply #7 Top

Quoting parrottmath, reply 6

The only way I can conceive of doing this is by creating a unit stat that increases every turn and use that unit stat to determine what turn it is... not sure if it would work, but it is the only thing that I can think of at the moment.

Other than that idea, I wouldn't know.

 

Well that's really  good idea. You know I was trying to avoid modifying the whole monsters, but adding an ability to their race. It's an ability looks like this:


<AbilityBonus InternalName="DancingWorldAbility">
<AbilityBonusOption InternalName="DancingWorld">
<DisplayName>Dancing world</DisplayName>
<Description>All monsters would grow stronger when they levels.</Description>
<Icon>Ability_Veteran_Icon.png</Icon>
<GameModifier>
<ModType>Player</ModType>
<Attribute>AbilityBonus</Attribute>
<StrVal>A_UnitStat_Attack_Pierce</StrVal>
<Calculate InternalName="Value" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_MonsterRage] * 0.6]]></Expression>
</Calculate>
<Provides>All monsters +6% Attack.</Provides>
</GameModifier>
</AbilityBonusOption>
</AbilityBonus>

 

As you can see above, I've added the unitStat above(Howeve I have no idea how to get it increased each turn, I used a randomevent that may trigger frequently increasing it...) So here comes the problem, what could the valueOwner be?

 

Thank you very much for your pacience.  ^_^

Reply #8 Top

My thoughts on this, that just jumped to mind reading your suggestion.

Trying to use a CDATA call outside a Spelldef can be a problem, from what I've seen. Direct multipliers i.e. percentage bonuses to a stat directly) are obviously possible, though.  So you may need to put this in a Spelldef instead of AbilityBonus, with a tag in AbilityBonus for Monstrous or whatever you want to call the ability that calls out the spelldef, if you were set on using CDATA.  Tie this in with BattleAutoCastSpell and all monsters will have the bonus added when the combat encounter starts (see Noble Legacy for an example).

The good news is that the stat boosts you are looking for happen in tactical combat, which is what I've seen most CDATA calcs used for.  I've tried some calcs for Strategic that have been no goes.

Ingame example of a 'direct' muliplier calculation, if you want to try that route instead:

<AbilityBonus InternalName="BloodthirstyAbility">
        <AbilityBonusType>Unit_Design</AbilityBonusType>
        <AbilityBonusOption InternalName="Bloodthirsty">
            <DisplayName>Bloodthirsty</DisplayName>
            <Description>+25% Attack vs damaged enemies</Description>
            <Icon>Ability_BloodThirsty_Icon.png</Icon>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_Attack_Pierce</StrVal>
                <Multiplier>1.25</Multiplier>
                <Provides>+25% Attack vs Damaged Opponents</Provides>
                <vsDamaged>1</vsDamaged>
            </GameModifier>
            <AdditionalTrainingTurns>20</AdditionalTrainingTurns>
            <CombatRating>10</CombatRating>
            <IsCombatAbility>1</IsCombatAbility>
            <Type>Aggressive</Type>
            <AIData AIPersonality="AI_General">
                <AIPriority>5</AIPriority>
            </AIData>
        </AbilityBonusOption>

So you could do UnitStat_HitPoints, Attack_Pierce, Defense_Pierce, etc. for the multiplier, all using the same ability.  You'd need separate <GameModifiers> for each stat boosted, of course.

 

Reply #9 Top

Quoting tjashen, reply 8

My thoughts on this, that just jumped to mind reading your suggestion.

Trying to use a CDATA call outside a Spelldef can be a problem, from what I've seen. Direct multipliers i.e. percentage bonuses to a stat directly) are obviously possible, though.  So you may need to put this in a Spelldef instead of AbilityBonus, with a tag in AbilityBonus for Monstrous or whatever you want to call the ability that calls out the spelldef, if you were set on using CDATA.  Tie this in with BattleAutoCastSpell and all monsters will have the bonus added when the combat encounter starts (see Noble Legacy for an example).

The good news is that the stat boosts you are looking for happen in tactical combat, which is what I've seen most CDATA calcs used for.  I've tried some calcs for Strategic that have been no goes.

Ingame example of a 'direct' muliplier calculation, if you want to try that route instead:

<AbilityBonus InternalName="BloodthirstyAbility">
        <AbilityBonusType>Unit_Design</AbilityBonusType>
        <AbilityBonusOption InternalName="Bloodthirsty">
            <DisplayName>Bloodthirsty</DisplayName>
            <Description>+25% Attack vs damaged enemies</Description>
            <Icon>Ability_BloodThirsty_Icon.png</Icon>
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_Attack_Pierce</StrVal>
                <Multiplier>1.25</Multiplier>
                <Provides>+25% Attack vs Damaged Opponents</Provides>
                <vsDamaged>1</vsDamaged>
            </GameModifier>
            <AdditionalTrainingTurns>20</AdditionalTrainingTurns>
            <CombatRating>10</CombatRating>
            <IsCombatAbility>1</IsCombatAbility>
            <Type>Aggressive</Type>
            <AIData AIPersonality="AI_General">
                <AIPriority>5</AIPriority>
            </AIData>
        </AbilityBonusOption>

So you could do UnitStat_HitPoints, Attack_Pierce, Defense_Pierce, etc. for the multiplier, all using the same ability.  You'd need separate <GameModifiers> for each stat boosted, of course.

 

 

Ahh, great idea about the auto cast

 

However here comes another problem. the ability should be put in the unit, can it trigger the auto cast in combat. It means there could be no easy way (as I'm thinking about adding an ability to the race of all monsters) doing that except for adding it for every monster...

Reply #10 Top

OK, the BattleAutoCastSpell is called out under the unit ability.  Example:

    <AbilityBonus InternalName="Blood_AmarianAbility">

(snip)
            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>BattleAutoCastSpell</Attribute>
                <StrVal>NobleLegacy</StrVal>
                <Value>100</Value>
                <Provides>+1 Dodge per air shard, +1 Initiative per fire shard, +1 Spell Mastery per water shard and +1 Spell Resistance per earth shard in combat</Provides>
            </GameModifier>

Noble Legacy is in CoreSpells.xml, btw.

 

Anyways, you'd simply replace the <StrVal> with whatever spell ability you've defined, say DancingWorld.  Then make a Dancing World spell of course, with your modifiers.

 

Then, you'd need to add <SelectedAbilityBonusOption>Blood_Monster</SelectedAbilityBonusOption> to each monster in the CoreMonsters.xml file that you'd like to see with this level boost.  Sure, there are a lot of monsters there, but cut and paste is a wonderful tool!

 

Again, though, if you are simply increasing stats, I think calling out the <Multiplier> tag directly in the <AbilityBonus InternalName="Blood_Monster"> would be cleaner.  That way, you'll see the boosted hit points, etc. on the Strategic Level, whereas Spell boosts might not be visible until you enter combat.

Reply #11 Top

Also, using the battle auto cast has issues when dealing with auto resolve. The auto resolve doesn't compute the battle cast. This is something you need to think about for your mod, since the AI will not get the advantage of these things when it gets into combat.

Reply #12 Top

Skip the whole spell and unit trait thing. The monsters are a faction and you should be able to give the faction as a whloe +% tyrough its raceconfig. Note wildland monsters come from different faction.

Reply #13 Top

Interesting, Heavenfall!  Where were you when this thread started?!?

Kidding, of course!  We always appreciate your input.

 

Anyways, just clarifying, it should be possible to add a <SelectedAbilityBonusOption> to the faction config?

I.E.:


    <RaceConfig InternalName="WildCreatures">
        <DisplayName>Monsters and Ruffians</DisplayName>
        <ShortName>Creatures</ShortName>
        <DefaultCityWallSet>CityWalls_Fence</DefaultCityWallSet>
        <UnitSkinColor>190,145,110</UnitSkinColor>
        <UnitHairColor>60,50,65</UnitHairColor>
        <UnitClothing1Color>196,155,49,255</UnitClothing1Color>
        <UnitClothing2Color>40,35,30,255</UnitClothing2Color>
        <UnitMetalColor>100,100,110,255</UnitMetalColor>
        <ZoneOfControlColor>20,20,20</ZoneOfControlColor>
        <PreferredLogoType>CreatureCrest</PreferredLogoType>
        <SovereignUnitType>EbbenWolf</SovereignUnitType>
        <FactionType>Creature</FactionType>

        <SelectedAbilityBonusOption>Blood_Monster</SelectedAbilityBonusOption>


    </RaceConfig>

Above is found at the bottom of the CoreRaceConfigs.xml file, btw.

I don't see why not, and this certainly might be a little faster than adding it to every unit individually.  Also, I've successfully added <GameModifier>(s) to Sovs/Races before, so as Heavenfall mentioned, you should be able to add the <GameModifier>(s) to this entry directly I would think.

Of course, if for some reason a unit doesn't have the faction type you think it does, it will be missed, but this saves a lot of coding.  This also ties into an issue I've been wanting to tackle...

Thanks Heavenfall!

Reply #14 Top

Quoting Heavenfall, reply 12
        Blood_Monster

 

Yes great idea, that's what I'm think about at the far start, see #3 :)

The problem is, there is no meature that could get that defiend boost gain by their levels, like this as I've supposed:

<ModType>Player</ModType>
<Attribute>AbilityBonus</Attribute>
<StrVal>A_UnitStat_Attack_Pierce</StrVal>
<Value>6</Value>
<PerLevel>1</PerLevel>
<Provides>+6% Attack per level</Provides>

It's not working, 6% forever. Nor will Multiper work (take the place of value).

 

@tjashen, if you may want apply the ability to a race, 

<SelAbilityBonusOption>DancingWorld</SelAbilityBonusOption>

instead of 

<SelectedAbilityBonusOption>Blood_Monster</SelectedAbilityBonusOption>

So the final way I can think about is, as @parrottmath adviced, add the ability to every monster. However no auto cast required:

<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_Attack_Pierce</StrVal>
<Multiplier>1.06</Multiplier>
<PerLevel>1</PerLevel>
<Provides>+6% Attack per level</Provides>

The monster levels with their attack gained. However I have a super editplus, Ctil + H helped me a lot, :D

Thank you all guys. Or maybe I shoud share what I have done here?

Reply #15 Top

I'd be interested in seeing your approach.

I was suggesting Blood_Monster for the <Ability> name, and DancingWorld for the <Spelldef> name, btw.  Either way around is fine, of course.

As for level calculations, there are a couple of examples that are done outside of spelldefs.  Bacco's Hammer comes immediately to mind.


            <GameModifier>
                <ModType>Unit</ModType>
                <Attribute>AdjustUnitStat</Attribute>
                <StrVal>UnitStat_Attack_Boost</StrVal>
                <Value>1</Value>
                <PerLevel>1</PerLevel>
                <Provides>+1 Attack per Level</Provides>
            </GameModifier>

 

Doing these bonues outside of spelldefs is the cleaner approach IMHO when possible.

Reply #16 Top

Couldn't you just go into the CoreAbilities file and add this as a new inherent ability to each bloodline, so that when you enter combat the ability triggers on the enemy?  So on the game map, Monsters look normal, in combat they get an auto-boost applied using Blood Sigil or Mass Berserk as your frame of reference.

Easier to add an ability to the 8(?) bloodlines than to every single monster