Editing XML/Skills

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
[[XML|Back to XML Overview ]]
+
{{XMLs}}
 
 
 
Skills define the abilities of a unit, and are generally used with commands to provide actions that the unit can perform, but sometimes mandate automated events too, such as the death skill, which fires every time the unit dies. There can be as many skills as you want (though there can only be one of some types of skills, such as the death or be_built skill).
 
Skills define the abilities of a unit, and are generally used with commands to provide actions that the unit can perform, but sometimes mandate automated events too, such as the death skill, which fires every time the unit dies. There can be as many skills as you want (though there can only be one of some types of skills, such as the death or be_built skill).
  
 
+
{{TOC limit|2}}
  
 
==Common tags for skills==
 
==Common tags for skills==
Line 282: Line 281:
  
 
===anim-progress-bound===
 
===anim-progress-bound===
A value that, if true, will lock the animation speed to the progress of the production as it completes. Thus, when the production is half complete, the animation would be halfway through, etc. This will override any specified animation speed and if not used, the entire tag may be omitted.
+
A GAE and MegaGlest only value that, if true, will lock the animation speed to the progress of the production as it completes. Thus, when the production is half complete, the animation would be halfway through, etc. This will override any specified animation speed and if not used, the entire tag may be omitted.
  
 
==Upgrade==
 
==Upgrade==
Line 316: Line 315:
 
==Morph==
 
==Morph==
 
Similar to the produce skill, but rather than creating a new unit, it turns the current unit into a new unit.
 
Similar to the produce skill, but rather than creating a new unit, it turns the current unit into a new unit.
 +
{{XML_definition_header}}
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
 
<skill>
 
<skill>
Line 346: Line 346:
 
==Attack==
 
==Attack==
 
Attacks are the most complex skills, but also have the largest area of customizability. All types of attacks, long ranged, melee, splash attacks, etc all use the same attack skill and are defined via its elements.
 
Attacks are the most complex skills, but also have the largest area of customizability. All types of attacks, long ranged, melee, splash attacks, etc all use the same attack skill and are defined via its elements.
 +
{{XML_definition_header}}
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
 
<skill>
 
<skill>
 
<type value="attack"/>
 
<type value="attack"/>
 
<name value="attack_skill"/>
 
<name value="attack_skill"/>
 +
<!-- Start MG Only -->
 
<hp-cost value="0"/>
 
<hp-cost value="0"/>
 +
<!-- End MG Only -->
 
<ep-cost value="50"/>
 
<ep-cost value="50"/>
 
<speed value="80"/>
 
<speed value="80"/>
 
<anim-speed value="80"/>
 
<anim-speed value="80"/>
 
<animation path="models/model.g3d"/>
 
<animation path="models/model.g3d"/>
 +
<!-- Start MG Only -->
 
<animation-random-cycle-maxcount value="1" />
 
<animation-random-cycle-maxcount value="1" />
 +
<!-- End MG Only -->
 
<sound enabled="true" start-time="0.5">
 
<sound enabled="true" start-time="0.5">
 
<sound-file path="sounds/sound-file.wav" />
 
<sound-file path="sounds/sound-file.wav" />
 
</sound>
 
</sound>
<unit value="unit_name" amount="1" spawnAtTarget="true"/>
+
<!-- Start MG Only -->
 +
<unit value="unit_name" amount="1" />
 +
<!-- End MG Only -->
 
<attack-strenght value="150"/>
 
<attack-strenght value="150"/>
 
<attack-var value="50"/>
 
<attack-var value="50"/>
Line 379: Line 386:
 
<particle value="true" path="particle_splash.xml"/>
 
<particle value="true" path="particle_splash.xml"/>
 
</splash>
 
</splash>
 +
<!-- Start GAE+MG Only -->
 
<particles value="true" start-time="0.0" end-time="1.0">
 
<particles value="true" start-time="0.0" end-time="1.0">
 
<particle-file path="unit_particle_system.xml"/>
 
<particle-file path="unit_particle_system.xml"/>
 
</particles>
 
</particles>
 +
<!-- Start MG Only -->
 
<damage-particles value="true">
 
<damage-particles value="true">
 
<particle-file path="unit_particles.xml" minHp="0" maxHp="5000"/>
 
<particle-file path="unit_particles.xml" minHp="0" maxHp="5000"/>
 
</damage-particles>
 
</damage-particles>
 +
<!-- End MG Only -->
 +
<!-- End GAE+MG Only -->
 +
<!-- Start GAE Only -->
 +
<effects/>
 +
<!-- End GAE Only -->
 +
<!-- Start MG Only -->
 +
<attack-boost/>
 +
<!-- End MG Only -->
 
</skill>
 
</skill>
</syntaxhighlight>
+
 
===Alternative way to handle multiple projectiles:===
+
<!-- Start MG Only -->
<syntaxhighlight lang="xml">
+
alternative way to handle projectiles: ( Megaglest>3.9.1 )
 
<skill>
 
<skill>
 
<type value="attack"/>
 
<type value="attack"/>
Line 402: Line 419:
 
<sound-file path="sounds/shot.ogg"/>
 
<sound-file path="sounds/shot.ogg"/>
 
</sound>  
 
</sound>  
<attack-strength value="90"/>
+
<attack-strenght value="90"/>
 
<attack-var value="40"/>
 
<attack-var value="40"/>
 
<attack-range value="20"/>
 
<attack-range value="20"/>
 
<attack-type value="bite"/>
 
<attack-type value="bite"/>
<unit value="unit_name" amount="1" spawnAtTarget="false"/>
 
 
<attack-fields>
 
<attack-fields>
 
<field value="land"/>
 
<field value="land"/>
 
</attack-fields>
 
</attack-fields>
 
<attack-start-time value="0.25"/>
 
<attack-start-time value="0.25"/>
 +
 
<projectiles>
 
<projectiles>
 
<projectile attack-start-time="0.25" damage-percentage="10">
 
<projectile attack-start-time="0.25" damage-percentage="10">
Line 435: Line 452:
 
</hitsound>
 
</hitsound>
 
</skill>
 
</skill>
 +
<!-- End MG Only -->
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 440: Line 458:
  
 
===unit===
 
===unit===
An optional attribute which is used to spawn units each time this attack is commenced. If this feature is not used, the tag should be excluded completely
+
A MegaGlest only feature which spawns a unit of the specified name and quantity each time this attack is commenced. If this feature is not used, the tag should be excluded completely. Currently, it is not checked if the spawned units are dead before creating more. This feature is most useful for creating a custom unit such as a suicide bomb, or such which will destroy itself eventually.
"value" is the unitType that is spawned
 
"amount" is used to set the number of units that are spawned
 
"spawnAtTarget" is a boolean which let the unit spawn at the target Unit if set to true.
 
  
===attack-strength===
+
===attack-strenght===
The base damage an attack will deal, in HP. Note: in older versions you had to use the misspelling "attack-strenght" in order for the tag to work.
+
The base damage an attack will deal, in HP. Note the misspelling in the element tag, it must be spelled as "attack-strenght" in order for the tag to work.
  
 
===attack-var===
 
===attack-var===
Line 458: Line 473:
  
 
===attack-fields===
 
===attack-fields===
The fields that the attack skill is capable of damaging. Either <tt>land</tt> or <tt>air</tt>, and depends on what the target unit has as their field.
+
The fields that the attack skill is capable of damaging. Either <tt>land</tt> or <tt>air</tt>, and depends on what the target unit has as their field. While GAE technically has additional fields such as any_water, they are not used for attack fields because attacks with the land field will hit such units.
  
 
===attack-start-time===
 
===attack-start-time===
Line 474: Line 489:
  
 
===splash===
 
===splash===
If true, the attack will have a splash, an area of affect when the projectile hits the area where its target was, eg: an explosion. The radius is the size, as a radius (thus, the diameter will be almost twice the size, the center is counted as part of the radius, so a 3 radius would have a 5 diameter). Damage all is a function which is meant to toggle whether or not all units (including friendly units) are hurt by the splash. Finally, a [[Splash Particle XML]] is linked to define how the splash will look.
+
If true, the attack will have a splash, an area of affect when the projectile hits the area where its target was, eg: an explosion. The radius is the size, as a radius (thus, the diameter will be almost twice the size, the center is counted as part of the radius, so a 3 radius would have a 5 diameter). Damage all is a function which is meant to toggle whether or not all units (including friendly units) are hurt by the splash, though is currently broken in Glest and GAE, only working in MegaGlest. Finally, a [[Splash Particle XML]] is linked to define how the splash will look.
 +
 
 +
===effects===
 +
{{See|GAE/Effects}}
 +
Effects are a GAE only extender which allows special effects to be applied to attacks. It allows attacks to add a persisting effect which can modify the stats of the target unit, as well as can allow recourse effects with allows the stats of the attacker to be modified as well. For example, an attack that drains a units stats and gives it to the attacker could be created, or a poisonous arrow which damages the target, or a blinding gas which reduces their sight.
 +
 
 +
===attack-boosts===
 +
{{See|MG/Attack-boosts}}
 +
Attack boosts are a MG only extender which allows boosts to be applied to units when attacking, such as increasing the attacker and units near the attack's stats.
  
 
==Die==
 
==Die==
 
Death is another autoskill which is executed when the unit's HP reaches zero. This is how the death animation is controlled.
 
Death is another autoskill which is executed when the unit's HP reaches zero. This is how the death animation is controlled.
 +
{{XML_definition_header}}
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
 
<skill>
 
<skill>
 
<type value="die" />
 
<type value="die" />
 
<name value="die_skill" />
 
<name value="die_skill" />
 +
<!-- Start MG Only -->
 +
<hp-cost value="0"/>
 +
<!-- End MG Only -->
 +
<ep-cost value="0" />
 
<speed value="300" />
 
<speed value="300" />
 
<anim-speed value="100" />
 
<anim-speed value="100" />
 
<animation path="models/model.g3d" />
 
<animation path="models/model.g3d" />
 +
<!-- Start MG Only -->
 
<animation-random-cycle-maxcount value="1" />
 
<animation-random-cycle-maxcount value="1" />
 +
<!-- End MG Only -->
 
<sound enabled="true">
 
<sound enabled="true">
 
<sound-file path="sounds/sound-file.wav" />
 
<sound-file path="sounds/sound-file.wav" />
 
</sound>
 
</sound>
 
<fade value="false" />
 
<fade value="false" />
 +
<!-- Start GAE+MG Only -->
 
<particles value="true" start-time="0.0" end-time="1.0">
 
<particles value="true" start-time="0.0" end-time="1.0">
 
<particle-file path="unit_particle_system.xml"/>
 
<particle-file path="unit_particle_system.xml"/>
 
</particles>
 
</particles>
 +
<!-- End GAE+MG Only -->
 +
<!-- Start MG Only -->
 
<damage-particles value="true">
 
<damage-particles value="true">
 
<particle-file path="unit_particles.xml" minHp="0" maxHp="5000"/>
 
<particle-file path="unit_particles.xml" minHp="0" maxHp="5000"/>
 
</damage-particles>
 
</damage-particles>
<spawn start-time="0.1">
+
<!-- End MG Only -->
<unit value="technician"/>
 
<amount value="1"/>
 
<health-percent min="80" max="100"/>
 
<probability value="100"/>
 
</spawn>
 
 
</skill>
 
</skill>
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 510: Line 538:
 
If true, the unit's "corpse" will fade away at the end of the animation, rather than lying "dead" on the ground for a short period of time.
 
If true, the unit's "corpse" will fade away at the end of the animation, rather than lying "dead" on the ground for a short period of time.
  
===spawn===
+
==Cast-spell (GAE Only)==
If this tag exists the given number <amount> of units of type <unit> is spawned with a probability of <probability> and a predamage of <health-percent> at the given start-time ( related to the death animation playback.)
+
Cast-spell allows a unit to apply an [[GAE/Effects|effect]] to friendly unit. Thus, it could be used to heal them or boost stats temporarly.
 +
{{XML_definition_header}}
 +
<syntaxhighlight lang="xml">
 +
<!-- Start GAE Only -->
 +
<skill>
 +
<type value="cast-spell" />
 +
<name value="cast-spell_skill" />
 +
<ep-cost value="20" />
 +
<speed value="20" />
 +
<anim-speed value="200" />
 +
<animation path="models/model.g3d" />
 +
<sound enabled="true">
 +
<sound-file path="sounds/sound-file.wav" />
 +
</sound>
 +
<effects>
 +
<effect name="effect_name" bias="beneficial"
 +
stacking="overwrite" duration="10">
 +
<multipliers>
 +
<attack-strength value="1.5" />
 +
<attack-speed value="1.2" />
 +
</multipliers>
 +
</effect>
 +
</effects>
 +
<particles value="true">
 +
<particle-file path="unit_particle_system.xml"/>
 +
</particles>
 +
<start-time value="0.5" />
 +
<projectile value="true">
 +
<particle value="true" path="projectile_particle.xml"/>
 +
<sound enabled="false" />
 +
</projectile>
 +
<splash value="true">
 +
<radius value="3"/>
 +
<particle value="true" path="splash_particle.xml"/>
 +
</splash>
 +
</skill>
 +
<!-- End GAE Only -->
 +
</syntaxhighlight>
 +
 
 +
[[XML/Skills#Common_tags_for_skills|Common tags for skills]]
 +
 
 +
===effects===
 +
{{See|GAE/Effects}}
 +
 
 +
===start-time===
 +
The time, as a ratio of the animation, to start the projectile (if there is one). Optional.
 +
 
 +
===projectile===
 +
If true, allows the usage of projectile particles. If particle is true, the spell will use a particle system. The path is the relative path to the [[Projectile Particle XML]]. There is also a sound tag childed in here, which uses similar syntax to the other sound tag in this skill, but the sound is played when the particle hits.
 +
 
 +
===splash===
 +
If true, the spell will have a splash, an area of affect when the projectile hits the area where its target was. The radius is the size, as a radius (thus, the diameter will be almost twice the size, the center is counted as part of the radius, so a 3 radius would have a 5 diameter). A [[Splash Particle XML]] is linked to define how the splash will look.
 +
 
 +
==Build self (GAE Only)==
 +
{{XML_definition_header}}
 +
<syntaxhighlight lang="xml">
 +
<!-- Start GAE Only -->
 +
<skill>
 +
<type value="build_self" />
 +
<name value="build_self_skill" />
 +
<ep-cost value="0" />
 +
<speed value="300" />
 +
<anim-speed value="300" />
 +
<animation path="models/model.g3d" />
 +
<anim-progress-bound value="false" />
 +
<sound enabled="true">
 +
<sound-file path="sounds/sound-file.wav" />
 +
</sound>
 +
<particles value="true">
 +
<particle-file path="unit_particle_system.xml"/>
 +
</particles>
 +
</skill>
 +
<!-- End GAE Only -->
 +
</syntaxhighlight>
 +
 
 +
Build self is used for the [[GAE/Self building|self building]] command, which allows a unit to build itself once its basis is laid.
 +
 
 +
[[XML/Skills#Common_tags_for_skills|Common tags for skills]]
 +
 
 +
===anim-progress-bound===
 +
If true, this will lock the animation speed to the hp of the unit as it builds. Thus, when the unit is half built, the animation would be halfway through, etc. This will override any specified animation speed and if not used, the entire tag may be omitted.
 +
 
 +
==Load (GAE Only)==
 +
The [[GAE/Transports|loading]] command it used to load a unit into a transport, building for garrisoning, etc.
 +
{{XML_definition_header}}
 +
<syntaxhighlight lang="xml">
 +
<!-- Start GAE Only -->
 +
<skill>
 +
<type value="load" />
 +
<name value="load_skill" />
 +
<ep-cost value="0" />
 +
<speed value="120" />
 +
<anim-speed value="120" />
 +
<animation path="models/model.g3d" />
 +
<sound enabled="true">
 +
<sound-file path="sounds/sound-file.wav" />
 +
</sound>
 +
<max-range value="3" />
 +
<particles value="true">
 +
<particle-file path="unit_particle_system.xml"/>
 +
</particles>
 +
</skill>
 +
<!-- End GAE Only -->
 +
</syntaxhighlight>
 +
 
 +
[[XML/Skills#Common_tags_for_skills|Common tags for skills]]
 +
 
 +
===max-range===
 +
Maximum distance the unit can be from the transport to be loaded. Too large and the unit will seem to disappear before it reaches the transport, too short and it large size units may have trouble accessing it.
 +
 
 +
==Unload (GAE Only)==
 +
The opposite of [[GAE/Transports|loading]], unloading unloads units which were previously loaded with the load command.
 +
{{XML_definition_header}}
 +
<syntaxhighlight lang="xml">
 +
<!-- Start GAE Only -->
 +
<skill>
 +
<type value="unload" />
 +
<name value="unload_skill" />
 +
<ep-cost value="0" />
 +
<speed value="120" />
 +
<anim-speed value="120" />
 +
<animation path="models/model.g3d" />
 +
<sound enabled="true">
 +
<sound-file path="sounds/sound-file.wav" />
 +
</sound>
 +
<max-range value="2" />
 +
<particles value="true">
 +
<particle-file path="unit_particle_system.xml"/>
 +
</particles>
 +
</skill>
 +
<!-- End GAE Only -->
 +
</syntaxhighlight>
 +
[[XML/Skills#Common_tags_for_skills|Common tags for skills]]
 +
 
 +
===max-range===
 +
Maximum distance from the transport units will be placed when unloading. If too large, they may appear to be appearing nowhere near the loaded unit, but if too small, units risk not having enough space.
  
 
==See also==
 
==See also==

Please note that all contributions to MegaGlest are considered to be released under the Creative Commons Attribution Share Alike (see MegaGlest:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Template used on this page: