Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Adding a new Weapon
How to create a new weapon
Creating a new weapon is very easy in OpenRA. In this tutorial we are going to copy a weapon and explain what everything is for.
First of all open the
missiles.yaml from this location:
Then search for the
SCUD entry and copy this part of the code:
SCUD: Inherits: ^AntiGroundMissile ReloadDelay: 240 Range: 10c0 MinRange: 3c0 Report: missile1.aud
After that, paste it at the bottom of the file (however you can paste it at any place). Now we will make little changes here to make it separate.
First of all we change the name. In this tutorial, we call it
LRSCUD (Long Range Scud).
Now, we are looking into the first lines of code:
|Inherits||From which weapon definition are traits inherited (e.g. from
|ReloadDelay||How long it takes to reload the weapon in ticks.|
|Range||How far the weapon can fire.|
|MinRange||How close the target can be to the actor to shoot the weapon.|
|Report||Soundfile to play when the weapon is firing.|
(See World-Coordinate-System for more information about cells.)
In our tutorial, we change the values like that:
LRSCUD: Inherits: ^AntiGroundMissile ReloadDelay: 400 Range: 24c0 MinRange: 7c512 # 0c512 is the half of a cell. Report: missile7.aud # make sure the audio file you choose exists.
Let's look on the next part. Copy and paste it too:
Projectile: Bullet Speed: 170 Blockable: false TrailImage: smokey TrailDelay: 5 Inaccuracy: 213 Image: V2 Shadow: True LaunchAngle: 62
Again, we look on every single trait:
|Projectile||-||The Projectile of the weapon. (e.g.
|Projectile||Speed||Speed of the projectile.|
|Projectile||Blockable||The projectile is blockable (e.g. by walls).|
|Projectile||TrailImage||A sequence/image given as trail.|
|Projectile||TrailDelay||How long the trail is / how long it exists (! This has nothing to do with
|Projectile||Inaccuracy||How much the weapon can differ from the target.|
|Projectile||Image||Image of the projectile.|
|Projectile||Shadow||If true, a shadow will be generated.|
|Projectile||LaunchAngle||In which angle the projectile will be fired.|
We are also changing the values a bit:
Projectile: Bullet Speed: 150 Blockable: false TrailImage: smokey TrailDelay: 10 Inaccuracy: 512 Image: V2 Shadow: True LaunchAngle: 70
After that, we are looking into the last part of the
SCUD. Again, copy and paste the code.
Warhead@1Dam: SpreadDamage Spread: 341 Damage: 45 Falloff: 1000, 368, 135, 50, 18, 7, 0 ValidTargets: Ground, Water, Trees Versus: None: 90 Light: 70 Heavy: 40 Concrete: 100 DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath, Incendiary Warhead@3Eff: CreateEffect Explosions: napalm ImpactSounds: firebl3.aud Warhead@4EffWater: CreateEffect Explosions: large_splash
|Warhead||SpreadDamage||-||A Warhead. It will be triggered when the weapon reached its target (e.g.
|Warhead||SpreadDamage||Spread||How wide the damage affects actors.|
|Warhead||SpreadDamage||Damage||The damage to add to the hitted actors.|
|Warhead||SpreadDamage||Falloff||The damage percentage at each range step.|
|Warhead||SpreadDamage||ValidTargets||What actors are affected by the warhead.|
|Warhead||SpreadDamage||Versus||The damage percentage at each armor (the armor is given at the actors definition).|
|Warhead||SpreadDamage||DamageTypes||If the actor dies, this will trigger it to e.g. play a specified animation (e.g.
|Warhead||CreateEffect||Explosions||Image of the explosion.|
|Warhead||CreateEffect||ImpactSounds||The sound of the explosion.|
We are changing the values a bit:
Warhead@1Dam: SpreadDamage Spread: 2c256 # you can also use cell values here. Damage: 75 Falloff: 1000, 768, 535, 250, 118, 17, 0 ValidTargets: Ground, Water, Trees Versus: None: 140 Light: 110 Heavy: 90 Concrete: 150 DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath, FireDeath Warhead@3Eff:: CreateEffect Explosions: nuke ImpactSounds: kaboom1.aud Warhead@4EffWater: CreateEffect Explosions: large_splash
If you want to, you can copy other warheads and paste them here.
After that, you can save the file.
Adding the weapon to an actor
Now go to:
vehicles.yaml file and search for
V2RL: (It will most likely be at the top for just find it using Ctrl + F). now look for
Armament: and change
V2RL: # ... Armament: Weapon: LRSCUD
Now if you run the game, the V2 Rocket Launcher will fire your long range missiles.
You can also change the values of the other fields, copy parts of other weapons and look whats happening then.