<skill>
<type value="stop"/>
<name value="stop_skill"/>
<ep-cost value="0"/>
<speed value="1000"/>
<anim-speed value="45"/>
<animation-random-cycle-maxcount value="1" />
<animation path="models/archer_standing.g3d" />
<animation path="models/archer_walking.g3d" />
<sound enabled="false"/>
</skill>
<skill>
<type value="attack"/>
<name value="attack_skill"/>
<ep-cost value="0"/>
<speed value="50"/>
<anim-speed value="50"/>
<animation path="models/archer_attacking.g3d"/>
<sound enabled="true" start-time="0.5">
<sound-file path="/sounds/archer_attack1.wav"/>
<sound-file path="/sounds/archer_attack2.wav"/>
<sound-file path="/sounds/archer_attack3.wav"/>
<sound-file path="/sounds/archer_attack4.wav"/>
</sound>
<attack-strenght value="100"/>
<attack-var value="50"/>
<attack-range value="10"/>
<attack-type value="piercing"/>
<attack-start-time value="0.5"/>
<attack-fields>
<field value="land"/>
<field value="air"/>
</attack-fields>
<attack-boost>
<allow-multiple-boosts value="false" />
<radius value="5"/>
<target value="faction"> <!-- ally foe faction unit-types all -->
<!-- <unit-type value="catapult" /> -->
</target>
<max-hp value="100"/>
<max-ep value="0"/>
<sight value="5"/>
<attack-strenght value="6"/>
<attack-range value="0"/>
<armor value="10"/>
<move-speed value="0"/>
<production-speed value="0"/>
<particles value="true">
<originator-particle-file path="glow_particles.xml"/>
<affected-particle-file path="glow_particles.xml"/>
</particles>
</attack-boost>
<projectile value="true">
<particle value="true" path="particle_proj.xml"/>
<sound enabled="true">
<sound-file path="/sounds/arrow_hit1.wav"/>
<sound-file path="/sounds/arrow_hit2.wav"/>
<sound-file path="/sounds/arrow_hit3.wav"/>
<sound-file path="/sounds/arrow_hit4.wav"/>
<sound-file path="/sounds/arrow_hit5.wav"/>
</sound>
</projectile>
<splash value="false"/>
</skill>
Once its fully tested and final changes are made it will be fully documented on the wiki.Mmk. A suggestion then, if willing to expand, would be to add multipliers too to number 2 (puns not intended). Static modifiers are great, but taking away 100 health is biased towards the weaker foes with very little health, where that could be 20% of their max, but almost nothing to a strong unit with, say, 2000 hp, where that would only be 5%. The solution is multipliers, a number that will multiply the stat. For example, increasing your units HP by 10% (a multiplier of 1.1) would be more consistent and is relative to the unit's abilities.
The VBros are working out any issues they find as they test it in their mods.
<move-speed value="300" value-percent-multipler="true" /><?xml version="1.0" standalone="no"?>
<unit>
<parameters>
<size value="1"/>
<height value="3"/>
<max-hp value="700" regeneration="0"/>
<max-ep value="0"/>
<armor value="20"/>
<armor-type value="leather"/>
<sight value="15"/>
<time value="60"/>
<multi-selection value="true"/>
<cellmap value="false"/>
<levels>
<level name="elite" kills="5"/>
</levels>
<fields>
<field value="land"/>
<field value="air"/>
</fields>
<properties/>
<light enabled="false"/>
<unit-requirements>
<unit name="barracks"/>
</unit-requirements>
<upgrade-requirements/>
<resource-requirements>
<resource name="wood" amount="50"/>
<resource name="gold" amount="100"/>
<resource name="food" amount="1"/>
</resource-requirements>
<resources-stored/>
<image path="images/archer.bmp"/>
<image-cancel path="images/tech_cancel.bmp"/>
<meeting-point value="false"/>
<selection-sounds enabled="true">
<sound path="sounds/archer_select1.wav"/>
<sound path="sounds/archer_select2.wav"/>
<sound path="sounds/archer_select3.wav"/>
<sound path="sounds/archer_select4.wav"/>
<sound path="sounds/archer_select5.wav"/>
<sound path="sounds/archer_select6.wav"/>
<sound path="sounds/archer_select7.wav"/>
<sound path="sounds/archer_select8.wav"/>
<sound path="sounds/archer_select9.wav"/>
<sound path="sounds/archer_select10.wav"/>
<sound path="sounds/archer_select11.wav"/>
</selection-sounds>
<command-sounds enabled="true">
<sound path="sounds/archer_ack1.wav"/>
<sound path="sounds/archer_ack2.wav"/>
<sound path="sounds/archer_ack3.wav"/>
<sound path="sounds/archer_ack4.wav"/>
<sound path="sounds/archer_ack5.wav"/>
<sound path="sounds/archer_ack6.wav"/>
<sound path="sounds/archer_ack7.wav"/>
<sound path="sounds/archer_ack8.wav"/>
<sound path="sounds/archer_ack9.wav"/>
<sound path="sounds/archer_ack10.wav"/>
<sound path="sounds/archer_ack11.wav"/>
<sound path="sounds/archer_ack12.wav"/>
<sound path="sounds/archer_ack13.wav"/>
<sound path="sounds/archer_ack14.wav"/>
<sound path="sounds/archer_ack15.wav"/>
</command-sounds>
</parameters>
<skills>
<skill>
<type value="stop"/>
<name value="stop_skill"/>
<ep-cost value="0"/>
<speed value="1000"/>
<anim-speed value="45"/>
<animation path="models/archer_standing.g3d" />
<animation path="models/archer_walking.g3d" />
<sound enabled="false"/>
</skill>
<skill>
<type value="move"/>
<name value="move_skill"/>
<ep-cost value="0"/>
<speed value="220"/>
<anim-speed value="125"/>
<animation path="models/archer_walking.g3d"/>
<sound enabled="false"/>
</skill>
<skill>
<type value="attack"/>
<name value="attack_skill"/>
<ep-cost value="0"/>
<speed value="50"/>
<anim-speed value="50"/>
<animation path="models/archer_attacking.g3d"/>
<sound enabled="true" start-time="0.5">
<sound-file path="/sounds/archer_attack1.wav"/>
<sound-file path="/sounds/archer_attack2.wav"/>
<sound-file path="/sounds/archer_attack3.wav"/>
<sound-file path="/sounds/archer_attack4.wav"/>
</sound>
<attack-strenght value="100"/>
<attack-var value="50"/>
<attack-range value="10"/>
<attack-type value="piercing"/>
<attack-start-time value="0.5"/>
<attack-fields>
<field value="land"/>
<field value="air"/>
</attack-fields>
<attack-boost>
<allow-multiple-boosts value="false" />
<radius value="5"/>
<target value="faction"> <!-- ally foe faction unit-types all -->
<!-- <unit-type value="catapult" /> -->
</target>
<max-hp value="100"/>
<max-ep value="0"/>
<sight value="5"/>
<attack-strenght value="6"/>
<attack-range value="0"/>
<armor value="10"/>
<move-speed value="300" value-percent-multipler="true" />
<production-speed value="0"/>
<particles value="true">
<originator-particle-file path="glow_particles.xml"/>
<affected-particle-file path="glow_particles.xml"/>
</particles>
</attack-boost>
<projectile value="true">
<particle value="true" path="particle_proj.xml"/>
<sound enabled="true">
<sound-file path="/sounds/arrow_hit1.wav"/>
<sound-file path="/sounds/arrow_hit2.wav"/>
<sound-file path="/sounds/arrow_hit3.wav"/>
<sound-file path="/sounds/arrow_hit4.wav"/>
<sound-file path="/sounds/arrow_hit5.wav"/>
</sound>
</projectile>
<splash value="false"/>
</skill>
<skill>
<type value="die"/>
<name value="die_skill"/>
<ep-cost value="0"/>
<speed value="60"/>
<anim-speed value="60"/>
<animation-random-cycle-maxcount value="1" />
<animation path="models/archer_dying.g3d"/>
<animation path="models/archer_attacking.g3d"/>
<sound enabled="true" start-time="0">
<sound-file path="sounds/archer_die1.wav"/>
<sound-file path="sounds/archer_die2.wav"/>
<sound-file path="sounds/archer_die3.wav"/>
<sound-file path="sounds/archer_die4.wav"/>
</sound>
<fade value="false"/>
</skill>
</skills>
<!-- *** commands *** -->
<commands>
<command>
<type value= "stop"/>
<name value="stop"/>
<image path="images/tech_stop.bmp"/>
<unit-requirements/>
<upgrade-requirements/>
<stop-skill value="stop_skill"/>
</command>
<command>
<type value="move"/>
<name value="move"/>
<image path="images/tech_move.bmp"/>
<unit-requirements/>
<upgrade-requirements/>
<move-skill value="move_skill"/>
</command>
<command>
<type value="attack"/>
<name value="attack"/>
<image path="images/archer_attack.bmp"/>
<unit-requirements/>
<upgrade-requirements/>
<move-skill value="move_skill"/>
<attack-skill value="attack_skill"/>
</command>
<command>
<type value="attack_stopped"/>
<name value="hold_position"/>
<image path="images/tech_hold.bmp"/>
<unit-requirements/>
<upgrade-requirements>
<upgrade name="training_field"/>
</upgrade-requirements>
<stop-skill value="stop_skill"/>
<attack-skill value="attack_skill"/>
</command>
</commands>
</unit>
<parameters>
<water effects="true">
<texture path="water/water_1.png"/>
<texture path="water/water_2.png"/>
<texture path="water/water_3.png"/>
etc..
- min/max hp values for damage particles: <damage-particles value="true">
<particle-file path="fire_particles1.xml" minHp="4000" maxHp="5000"/>
<particle-file path="fire_particles2.xml" minHp="1000" maxHp="3999"/>
<particle-file path="fire_particles3.xml" minHp="1" maxHp="999"/>
</damage-particles>
<allow-multiple-boosts value="false" />
<radius value="5"/>
<target value="all|ally|foe|faction"/>
<max-hp value="100"/>
<max-ep value="0"/>
<sight value="0"/>
<attack-strenght value="0"/>
<attack-range value="0"/>
<armor value="0"/>
<move-speed value="100" value-percent-multipler="true" />
<production-speed value="0"/>
<particles value="true">
<originator-particle-file path="glow_particles.xml"/>
<affected-particle-file path="glow_particles.xml"/>
</particles>First tricky one we have seems to be the target tag. Am I correct in the assumption that if using the ally, all, foe, or faction values, the tag would simply look like <target value="value" /> while if the value is unit-types, then it would contain a children list of <unit-type name="name" /> tags? And another question about that tag, can it have units from any faction in that techtree, or just from the current faction? (eg: if a magic unit has point boost, can it use a unit-type tag to give a negative boost to tech's swordmen?)AND ( this one i will use ) i want to use particles only for affected units!You can, just use the <affected-particle-file path="glow_particles.xml"/> tag as demonstrated in my example (which I will add to the wiki if softcoder could answer the few questions and/or confirm my guesses). Since I'm assuming both particles tags are optional, just don't use the <originator-particle-file path="glow_particles.xml"/> tag.
AND (this one i will use too) i want to do the attack-boost only on ALLY unit-types (hm my bad english :) )Yeah, that doesn't seem possible, you could have either unit types or ally, but not both. Perhaps an improvement would be to allow the <unit-type name="name" /> tags to be used in any target tag, such as with the below example:
<target value="ally">
<unit-type name="name" />
</target>That would actually make the unit-types tag obsolete, since if any of the target values could be used, they would be far more "accurate" in terms of defining what units exactly will be affected.No, not really. Tags are far more flexible because they can refer to a hypothetical unit. For example, if you have an effect that targets all "infantry" units, you don't have to worry about listing the Dwarven Warrior, Elvish Magol, Tech Sword(s)man, Axe Indian, etc., so long as they are tagged as "infantry" in their own respective XML files. The same could go for "undead" or "vehicle" just as easily. This allows the file to refer to units outside of its own tech tree without having to know what they are (and without having to maintain multiple lists across several XML files!). The system was originally inspired by CSS, to which I'm sure you can relate.
Sorry, I don't think I was clear enough. Long explanation time.That would actually make the unit-types tag obsolete, since if any of the target values could be used, they would be far more "accurate" in terms of defining what units exactly will be affected.No, not really. Tags are far more flexible because they can refer to a hypothetical unit. For example, if you have an effect that targets all "infantry" units, you don't have to worry about listing the Dwarven Warrior, Elvish Magol, Tech Sword(s)man, Axe Indian, etc., so long as they are tagged as "infantry" in their own respective XML files. The same could go for "undead" or "vehicle" just as easily. This allows the file to refer to units outside of its own tech tree without having to know what they are (and without having to maintain multiple lists across several XML files!). The system was originally inspired by CSS, to which I'm sure you can relate.
That doesn't work: i tried itAND (this one i will use too) i want to do the attack-boost only on ALLY unit-types (hm my bad english :) )Yeah, that doesn't seem possible, you could have either unit types or ally, but not both. Perhaps an improvement would be to allow the <unit-type name="name" /> tags to be used in any target tag, such as with the below example:Code: [Select]<target value="ally">
<unit-type name="name" />
</target>
Quote from: PT on 10 July 2011, 10:07:03 AM
AND ( this one i will use ) i want to use particles only for affected units!
You can, just use the <affected-particle-file path="glow_particles.xml"/> tag as demonstrated in my example (which I will add to the wiki if softcoder could answer the few questions and/or confirm my guesses). Since I'm assuming both particles tags are optional, just don't use the <originator-particle-file path="glow_particles.xml"/> tag.
Of course it doesn't, that's not a code example (though by testing it, you did verify that I am understanding Softcoder's XML example correctly), it's just an example of how this feature should be implemented.That doesn't work: i tried itAND (this one i will use too) i want to do the attack-boost only on ALLY unit-types (hm my bad english :) )Yeah, that doesn't seem possible, you could have either unit types or ally, but not both. Perhaps an improvement would be to allow the <unit-type name="name" /> tags to be used in any target tag, such as with the below example:Code: [Select]<target value="ally">
<unit-type name="name" />
</target>
When it comes to targets of the attack-boost the following are valid:The problem is, those tags alone aren't very useful unless you can combine them with unit-types. That way you could have ONLY allied Guards be boosted, or maybe only enemy Archers, etc. Otherwise, it's impossible to affect units without accidentally boosting foes or reducing allies, unless you want to affect all units.
Ally,Foe,Faction,UnitTypes,All
If the value is UnitType then you are able to specify specific unitTypes that should be affected (this is where the sub tags fit in). If modders want the ability to use these sub-tags as a 'second level filter' that could potentially also be done, but currently is not implemented as such.
Fair enough, unit-type may now be used for all types as a sub-filterCool, but could you please answer my questions and assumptions in my previous post so that we can add this to the Wiki?
Oh, wow, didn't notice that you edited your post. Thankfully Elim bumped it. Since it's now in the SVN and has a mod that uses some of the features, I think it's time to document it properly. I can happily do that if you supply a bit more information, or you can do so yourself.
I think multiple animations may be in there, not sure, if it is though, we'd probably have to add the min-hp and max-hp parameters. Question first: What happens if these parameters overlap, eg: one animation is when the unit's HP is 0-60, and the other is 40-100, what happens when the hp is 40-60, where it fills both animation requirements?
This here seems to be the full XML options for these unit boosts.Code: [Select]<allow-multiple-boosts value="false" />First tricky one we have seems to be the target tag. Am I correct in the assumption that if using the ally, all, foe, or faction values, the tag would simply look like <target value="value" /> while if the value is unit-types, then it would contain a children list of <unit-type name="name" /> tags? And another question about that tag, can it have units from any faction in that techtree, or just from the current faction? (eg: if a magic unit has point boost, can it use a unit-type tag to give a negative boost to tech's swordmen?)
<radius value="5"/>
<target value="all|ally|foe|faction"/>
<max-hp value="100"/>
<max-ep value="0"/>
<sight value="0"/>
<attack-strenght value="0"/>
<attack-range value="0"/>
<armor value="0"/>
<move-speed value="100" value-percent-multipler="true" />
<production-speed value="0"/>
<particles value="true">
<originator-particle-file path="glow_particles.xml"/>
<affected-particle-file path="glow_particles.xml"/>
</particles>
The boosting tags seem to be the exact same as scenarios except that they can have an optional "value-percent-multiplier" which will have the value input instead be divided by 100 then multiply the stat (sadly, this percentage format is rather inconsistent with every other occurance in the XMLs, which instead use 1.0 = 100%, aka: decimal form).
As for particles, I'm assuming that originator-particle-file is the particles to give to the unit that will distribute the boost when the the affected unit is nearby (which would get the affected-particle-file particle system). This would last only while the affect unit is within the radius distance (and thus being affected), and would end when the affected unit leaves.
And the trickiest question: when using multiple boosts (and allow-multiple-boosts is true), how do multipliers stack? In GAE, the ADD all the multipliers together, then multiply them by the base stat, then finally add on the static modifiers (this prevents multipliers from becoming godly exponential increases, which could be too steep and thus be overpowered and unintended). The formula's GAE uses and examples are explained here: GAE/Enhancements#Analysis (https://docs.megaglest.org/GAE/Enhancements#Analysis)
<target value="faction">
<unit-type name="archer" />
<unit-type name="swordman" />
<unit-type name="guard" />
<unit-type name="ect" />
</target>
all = all units
ally = all alies (including your units)
foe (all enemy units)
faction (all units in your faction)
unit-types = the explicit list of unit types.<unit-type name="archer" />
<unit-type name="swordman" />
<unit-type name="guard" />
<unit-type name="ect" />
The post only says the syntax, it doesn't explain what they are, what they do, or even what XML they belong in! Are these part of particle splashes? Unit particle systems? Can you post an example, please?Code: [Select]<damage-particles value="true">
<particle-file path="fire_particles1.xml" minHp="4000" maxHp="5000"/>
<particle-file path="fire_particles2.xml" minHp="1000" maxHp="3999"/>
<particle-file path="fire_particles3.xml" minHp="1" maxHp="999"/>
</damage-particles>
@Omega: i think it means that the fire_particles1 are used from 1-999 hp, fire_Particles2 from 100 to 3999hp and fire_Particles3 from 4000-5000Ah, but I still need the parent tag, and preferably a short example. Is it in the skill tag?
Exp.: a unit has 6000hp and has the damage_particles. another unit is attack this unit. The Unit with max of 6000hp loses hp: now it has 4900 fire_Particles3 are activated...
and if you don't know what damage_particles are: THAT A VERY VERY OLD FEATURE.25 June is old? And regardless of how old one can consider it to be, it doesn't seem to be documented anywhere but the tiny snippet here. Can we get that expanded please?
Damage particles have been out for over 4 months.Ok, so just the HP part was added then...
Would it be possible to make the boost able to increase the (hp/ep-) regeneration, too?i already wrote that here :)
Well damage particles are pretty simple. Just like the burnable property, except you can specify the particle file you want. And now you can pick the HP too.While that's a start, I still need more than that... :P
will likely make it so hp and ep regen are supportable items for any upgrade.
I couldn't figure out what these damage particles are!The post only says the syntax, it doesn't explain what they are, what they do, or even what XML they belong in! Are these part of particle splashes? Unit particle systems? Can you post an example, please?Code: [Select]<damage-particles value="true">
<particle-file path="fire_particles1.xml" minHp="4000" maxHp="5000"/>
<particle-file path="fire_particles2.xml" minHp="1000" maxHp="3999"/>
<particle-file path="fire_particles3.xml" minHp="1" maxHp="999"/>
</damage-particles>
The error is, that the boost sometimes doesn't end when leaving the boost-radiusAh, I see. I'm a touch confused by your video, though. Where's the attacker?
They are unit particle systems, like the fire in the campfire of Indians.The post only says the syntax, it doesn't explain what they are, what they do, or even what XML they belong in! Are these part of particle splashes? Unit particle systems? Can you post an example, please?Code: [Select]<damage-particles value="true">
<particle-file path="fire_particles1.xml" minHp="4000" maxHp="5000"/>
<particle-file path="fire_particles2.xml" minHp="1000" maxHp="3999"/>
<particle-file path="fire_particles3.xml" minHp="1" maxHp="999"/>
</damage-particles>
Thanks Elim, I think I may have it in the right spot, now. https://docs.megaglest.org/XML/SkillsThey are unit particle systems, like the fire in the campfire of Indians.The post only says the syntax, it doesn't explain what they are, what they do, or even what XML they belong in! Are these part of particle splashes? Unit particle systems? Can you post an example, please?Code: [Select]<damage-particles value="true">
<particle-file path="fire_particles1.xml" minHp="4000" maxHp="5000"/>
<particle-file path="fire_particles2.xml" minHp="1000" maxHp="3999"/>
<particle-file path="fire_particles3.xml" minHp="1" maxHp="999"/>
</damage-particles>
Would it be possible to have attack boost work for other skills such as stop and move?Yes, it dose work for other skills. It can boost other skills and it can be located in other skills.