The Ridder Clan Mod is a modification for The Lord of the Rings: The Battle for Middle-Earth II & for The Lord of the Ring: The Battle for Middle-Earth II, The Rise of the Witch-King.Our main focus is to bring into the games the fantasy of the movies but at the same time merging with our own ideas. In 8 years of existence we always tried to listen to our fans because this is indeed a mod for fans made by fans.

Post tutorial Report content RSS feed RC Mod - Weapons Tutorials - INI Modding

BFME I + BFME II + BFME II: RC MOD + BFME II: ROTWK ~ INI Modding! This is a tutorial about Weapons & Weapon Nuggets, Weapon 'Leveling' and how to make a 'MorgulBlade' weapon effect.

Posted by on - Basic Client Side Coding

These small tutorials will show you how to make weapons and some neat stuff you can do with weapons, such as have a morgul blade effect (explained on Page 6).
You will need to know how to make weapons work and how a character uses them.
Some understanding of special powers and OCL's would also be helpfull.

Index:
Page 1 - Intro

Page 2 - Weapons & Nuggets in detail
Page 3 - Weapons & Nuggets in detail Cont.

Page 4 - Weapon 'leveling'
Page 5 - Weapon 'leveling' ~Changing Weapon Projectile~

Page 6 - Making 'MorgulBlade' effect

Page 7 - Interesting Weapons ~ Nature's Wrath / Galadriel's Tornado

Please rate my tutorials and post comments!
I would appreciate it if you send me a PM after rating my article to say what I should Improve/Change to get a better rating from you.

I will be updating this tutorial and adding more different kinds of things about weapons!
So don't forget to check this article every once in a while!


Weapons & Nuggets in detail


This Tutorial will show you more about weapons and damagenuggets.

NOTE
I Suggest that you have read the Weapons & Weaponsets by Hostile article before you read this tutorial, but you don't have to since I will be explaining a bit about the basics too...

This tutorial does not require you to do anything, it is just for you to find out more things about weapons and damagenuggets.

For all the damage types look in the file: DamageTypes which you can download at the bottom of this page!

WEAPONS

Weapons are the basic things you need for a unit to be able to do any damage at all.
Here is an example of a Weapon with descriptions of the different parts:

Weapon HobbitSword  ; BALANCE Hobbit Sword Weapon
	LeechRangeWeapon      = Yes		;Once fired is it avoidable?
	AttackRange           = 20.0		;How far can you be from the target and still be able to attack?
	MeleeWeapon           = Yes		;Is it a melee weapon?
	DelayBetweenShots     = HOBBIT_SWORD_DELAYBETWEENSHOTS             ; time between shots, msec
	PreAttackDelay        = HOBBIT_SWORD_PREATTACKDELAY              ; 433 is natural time of the stabbing animation.
	PreAttackType         = PER_SHOT				; Do the delay each time we attack a new target
	FiringDuration        = HOBBIT_SWORD_FIRINGDURATION            ; min 600 for anim
	FireFX                = FX_GondorSwordHit		;FX Played when fired
	FireFlankFX		= FX_Flanking			;FX Played when Flanking

	DamageNugget                        ; A basic Nugget that just does damage
		Damage        = HOBBIT_SWORD_DAMAGE ; The amount of damage the nugget does
		Radius        = 0.0			; How far from target do other units get hurt?
		DelayTime     = 0			; Time it takes for the nugget to be used
		DamageType    = CRUSH	  ;What kind of damage is it?
		DamageFXType  = SWORD_SLASH ;used to cross with their DamageFX listing to determine what effect to play
		DeathType     = NORMAL  ;What kind of death does the unit have when killed, EX: Burning, Normal, Crushed
		FlankingBonus = 50%		;If attacked from behind, how much extra damage is done
	End
End

This is the basics of the Hobbitsword weapon. If you read all the descriptions on the side you should pretty much be able to understand what each part of the weapon does.

A Ranged weapon has a not so different kind of code:
I'm not going to put descriptions to things I have already mentioned

;------------------------------------------------------------------------------
; Merry and Pippin use these to throw rocks
Weapon HobbitRockThrow  ; BALANCE Hobbit Weapon Rock 
	AttackRange           = HOBBIT_ROCK_RANGE
	WeaponSpeed           = 150.0        ; dist/sec (huge value == effectively instant)
	AcceptableAimDelta    = 20		; prevent twitchy reaiming in horde on horde
	PreAttackDelay        = 500		
	PreAttackType         = PER_SHOT
	HitPercentage	      = 0 ; never auto hits, always hits ground
	ScatterRadius	      = 0.0     ;When this weapon misses it can randomly miss by as much as this distance.
	FiringDuration			= 1200
	DelayBetweenShots		= 3166
	CanFireWhileMoving		= Yes	;This is Self-explanatory

	ProjectileNugget                    ; A Nugget that creates an Object and sends it to the target with a Warhead
		ProjectileTemplateName = HobbitRockProjectile	;The object that goes to target
		WarheadTemplateName = HobbitRockThrowWarhead	;The warhead, or thing that does damage when it hits
	End
End

;----------------------------
Weapon HobbitRockThrowWarhead		;The Warhead mentioned up there
	FireFX		      = FX_ImpactHobbitRock
	ProjectileCollidesWith = ENEMIES NEUTRAL STRUCTURES WALLS ; What can it collide with?
	RadiusDamageAffects	= ENEMIES			;who does the radius damage affect?
	HitStoredTarget = Yes	; Always hits initial target.
	DamageNugget                        ; A basic Nugget that just does damage
		Damage        = HOBBIT_ROCK_DAMAGE	; ; The *DAMAGE* Done
		DamageScalar  = 25% ANY +HERO +STRUCTURE +INFANTRY -MONSTER ; ; how much % of the *Damage* these units take
		DamageScalar  = 50% ANY +MONSTER			; ; how much % of the *Damage* these units take
		Radius        = 0.0	; HitStoredTarget means we hurt the person we launched at.  And nobody else.  So a miss hurts nobody.
		DelayTime     = 0
		DamageType    = HERO_RANGED
		DamageFXType  = SMALL_ROCK
		DeathType     = NORMAL
	End
End

A ranged weapon from a hobbit is somewhat different from another units bow:

;------------------------------------------------------------------------------
Weapon GondorRangerBow  
	AttackRange         = GONDOR_RANGER_RANGE
	
	RangeBonusMinHeight	= 10	;how much higher than target do i have to be to have an longer range
	RangeBonus		= 1	;range advantage gotten from height
	RangeBonusPerFoot	= 1 ; ;range advantage gotten per foot
	
	LeechRangeWeapon    = Yes
	WeaponSpeed 		= 321         ; dist/sec 
	MinWeaponSpeed 		= 241
	MaxWeaponSpeed 		= 481      ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
	FireFX 				= FX_RohanArcherBowWeapon
	PlayFXWhenStealthed = Yes	;does FX play even though unit is stealthed?
	ScaleWeaponSpeed 	= Yes ; Used for lob weapons, scales speed proportional to range
	HitPercentage     	= 100     ;Chance it hits target '100 = Always'
	ScatterRadius     	= 16.0
	
	AcceptableAimDelta	= 20
	DelayBetweenShots 	= 0
	PreAttackDelay      = GONDOR_RANGER_BOW_PREATTACKDELAY
	PreAttackType       = PER_SHOT
	PreAttackRandomAmount     = 0
	FiringDuration      = 0
	
	ClipSize 			= 1	;How many of the projectilenuggets are shot at one shot?
	AutoReloadsClip 	= Yes
	AutoReloadWhenIdle 	= 1	
	ClipReloadTime 		= 1366 ; Time to reload
	ContinuousFireOne	= 2 ; ; ; amount of times to fire fast after each other
  	WeaponBonus = CONTINUOUS_FIRE_MEAN RATE_OF_FIRE 225% ; ;
	ContinuousFireCoast	= GONDOR_RANGER_BOW_RELOADTIME_MAX
	
	AntiAirborneVehicle	= Yes	;can hit airborne things?
	AntiAirborneMonster	= Yes	;can hit airborne things?
	HitPassengerPercentage	= 20%
  	CanBeDodged = Yes ; Will check for a DodgePercent on the target to have a second chance at failing HitPercent
	
	ProjectileNugget                    ; Default arrow
		ProjectileTemplateName    = GoodFactionArrow
		WarheadTemplateName       = GondorRangerBowWarhead
		ForbiddenUpgradeNames     = Upgrade_GondorFireArrows ;upgrades not allowed for shooting this
	End
	;Fire arrow available from fire arrow upgrade
	ProjectileNugget	;Nugget used when *Upgrade_GondorFireArrows* is purchased
		ProjectileTemplateName    = GoodFactionFireArrow
		WarheadTemplateName       = GondorRangerBowFireWarhead
		RequiredUpgradeNames      = Upgrade_GondorFireArrows	;upgrades needed for shooting this
	End
End

;----------------------------
Weapon GondorRangerBowWarhead
	ProjectileCollidesWith = ENEMIES NEUTRAL STRUCTURES WALLS
	RadiusDamageAffects = ENEMIES NEUTRALS ALLIES NOT_SIMILAR
	HitStoredTarget = Yes	; Always hits initial target.
	DamageNugget                        ; A basic Nugget that just does damage
		Damage        = GONDOR_RANGER_DAMAGE
		DamageScalar	= 135% ANY +MONSTER -SUMMONED
		Radius        = 0.0
		DelayTime     = 0
		DamageType    = PIERCE
		DamageFXType  = GOOD_ARROW_PIERCE
		DeathType     = NORMAL
	End
End

If you look at both the Hobbit's rocks and the ranger's bow you will notice that the bow has alot more code. This is because a ranger has a bigger chance of hitting a unit and he shoots a different speeds and has height advantages!

This rounds up the Weapon part of this tutorial...

_________________________________________________________________
On the next page I will explain the different kind of Weapon Nuggets in the game \


Weapons & Nuggets in detail Cont.


This part of the tutorial will show you more Nuggets.

For all the damage types look in the file: DamageTypes which you can download at the bottom of this page!

Nuggets

There are many kind of NUGGETS in BFME2, here's a list of the ones I have found:
*1* DamageNugget
*2* MetaImpactNugget
*3* ProjectileNugget
*4* WeaponOCLNugget
*5* AttributeModifierNugget
*6* StealMoneyNugget
*7* DOTNugget
*8* ParalyzeNugget
*9* EmotionWeaponNugget
*10*FireLogicNugget
*11*SpecialModelConditionNugget
*12*ClearNuggets
*13*DamageFieldNugget
*14*HordeAttackNugget
*15*SpawnAndFadeNugget
*16*GrabNugget
*17*LuaEventNugget
*18*SlaveAttackNugget
*19*DamageContainedNugget
*20*OpenGateNugget
*Cool* Cool Nuggets

Tip: Use the Search function (Ctrl+F) to find a specific Nugget so for DamageNugget Search for *1*
There may be many more, so comment if you know another one!

DamageNugget *1*

The Name says it already, its a nugget that just does normal damage.
Example:

DamageNugget                        ; A basic Nugget that just does damage
	Damage        = 1      ;Damage for a normal hit    
	Radius        = 0.0    ;Radius of damage
	DelayTime     = 0      ;How long from hit till the damage is applied
	DamageType    = SLASH  ;Used to cross reference with victim's armor to determine if hurt
	DamageFXType  = SWORD_SLASH  ;used to cross with their DamageFX listing to determine what effect to play
	DeathType     = NORMAL ;Used as index to their Death Modules to determine which one to play
End

MetaImpactNugget *2*

A Nugget that throws things back with force, Think about moves like wizardblast or when drogoth smacks the ground with his tail.
Example:

MetaImpactNugget                    ; A Nugget that throws things back with force
	HeroResist	= .75	   ;only knocks heroes down 75% of the time
	ShockWaveAmount   = 50.0	;Amount of force that will push units
	ShockWaveRadius   = 10.0	;Radius the shockwave affects
	ShockWaveArc      = 90 ; in degrees to each side 180 is full circle
	ShockWaveTaperOff = 1.0
	ShockWaveSpeed    = 0.0		;Speed of shockwave
	ShockWaveZMult    = 1.0
	InvertShockWave = Yes		; Pull(YES) OR Push(NO)
End

ProjectileNugget *3*

A Nugget that creates an Object and sends it to the target with a Warhead.
Example:

ProjectileNugget                    ; A Nugget that creates an Object and sends it to the target with a Warhead
	ProjectileTemplateName = GimliAxeProjectile		;object shot
	WarheadTemplateName = RohanGimliAxeThrownWarhead	;warhead that gives damage
End

WeaponOCLNugget *4*

A Nugget that should only be used for the rarest of super special weapons According To EA
Creates an object at the target's position, not used alot
Example:

WeaponOCLNugget						; A Nugget that should only be used for the rarest of super special weapons.
	WeaponOCLName = OCL_SuperComplicatedFivePartMovingDeathBlossom ;don't know if this OCL even exists!
End

AttributeModifierNugget *5*

A nugget that modifies a units attribute.
Example:

AttributeModifierNugget
	AttributeModifier = WitchKingMorgulBladeEffect ;The attribute modifier used.
	DamageFXType = SWORD_SLASH  ;used to cross with their DamageFX listing to determine what effect to play
End

StealMoneyNugget *6*

I like the idea of this nugget,
It steals money per attack!
Example:

StealMoneyNugget
	AmountStolenPerAttack = 5 ; amount of money unit steals per attack
End

DOTNugget *7*

DOT stands for Damage Over Time, at least that is what I believe.
It does damage to a target over a period of time, most common in poison attacks.
Example:

DOTNugget                        ; An example of a poison DOTNugget.
	Damage        = DEFAULT_POISON_DAMAGE
	AcceptDamageAdd = No
	Radius        = 0.0
	DelayTime     = 0
	DamageType    = POISON
	DamageFXType  = POISON
	DeathType     = NORMAL
	DamageInterval = 1000	;how many seconds between poison damage done?
	DamageDuration = 10000	;how long is target poisoned?
	SpecialObjectFilter = AFFECTED_BY_POISON_OBJECTFILTER
End

ParalyzeNugget *8*

Paralyzes unit for a period of time.
Example:

ParalyzeNugget
	Radius				= 0.0
	Duration			= POISONED_STINGER_DURATION
	SpecialObjectFilter	= CRIPPLE_STRIKE_OBJECT_FILTER ;Who does it affect?
	ParalyzeFX			= FX_PoisonedStunEffect
End

EmotionWeaponNugget *9*

Gives target a specific emotion, most commonly used emotion is Terror, which causes unit to run away.
Example:

EmotionWeaponNugget
	EmotionType			= TERROR
	Radius				= 0
	Duration			= 5
	SpecialObjectFilter	= ANY ENEMIES +MONSTER
End

FireLogicNugget *10*

This Nugget affects the fire logic of the ground around the target.
Example:

	;These 2 together make almost any ground burn
	FireLogicNugget
		LogicType		= INCREASE_BURN_RATE
		Radius			= 1
		Damage			= 40
	End	

	FireLogicNugget
		LogicType		= INCREASE_FUEL
		Radius			= 40
		Damage			= 20
		MinMaxBurnRate		= 40
		MinDecay		= 25
		MaxResistance		= 1
	End

SpecialModelConditionNugget *11*

I'm not exacly sure what this does, but I think it has to do with a weapon used when a model has a specific condition.
Example:

Weapon MordorMtTrollBored		;I suspect this one is for a troll who smacks around because he is bored and it hurts people
  AttackRange           = 40.0
  PreAttackFX           = FX_TrollTreeSwing
  FireFX                = FX_TrollPunchGeneric		;FX_TrollTreeHit
  RadiusDamageAffects = ALLIES

	SpecialModelConditionNugget
		ModelConditionNames = USER_2	; Can be used to set multiple, and it doesn't use the normal hit reaction because this one is special
		ModelConditionDuration = 2000
		SpecialObjectFilter = NONE +MordorCaveTroll +MordorMountainTroll +GoblinCaveTroll
	End

	SpecialModelConditionNugget
		ModelConditionNames = USER_3 
		ModelConditionDuration = 21000
		SpecialObjectFilter = NONE +MordorMountainTroll	
	End
End

ClearNuggets *12*

Clear all the damage/fx/paralyze etc nuggets so they can be replaced.

Example:

ClearNuggets ; Clear all the damage/fx/paralyze etc nuggets so they can be replaced.

DamageFieldNugget *13*

A Nugget that lays down an area of damage that persists independantly.
Example:

DamageFieldNugget
	WeaponTemplateName = SmallFireFieldWeapon	;Weapon to "put down"
	Duration = 3000		;How long will the weapon live?
End

HordeAttackNugget *14*

This nugget tells the horde to attack something.
Example:

HordeAttackNugget
End

SpawnAndFadeNugget *15*

This nugget spawns an object and tells the object who uses the weapon to fade away.
Example:

;;Isengard Mine
SpawnAndFadeNugget
	ObjectTargetFilter = ANY +STRUCTURE +INFANTRY +CAVALRY +MONSTER -ROCK_VENDOR	;where not to spawn?
	SpawnedObjectName = IsengardDeployedExplosiveMine	;What to spawn?
	SpawnOffset = X:8 Y:1 Z:0	;How far away from me to spawn?
End

GrabNugget *16*

A Nugget that makes the unit grab another object.
Example:

GrabNugget                    			; A Nugget that makes me grab you
	SpecialObjectFilter		= ANY +GRAB_AND_DROP
	ContainTargetOnEffect   = Yes
	ImpactTargetOnEffect	= Yes ;... if for some reason, I can not contain you, I'll try to give you a shove
	ShockWaveAmount   	= 50.0
	ShockWaveRadius   	= 16.0
	ShockWaveTaperOff 	= 0.75
	ShockWaveZMult    	= 1.1
End

LuaEventNugget *17*

A Nugget that Sends a lua script event out.
This is usefull to make people be scared of you!
Example:

LuaEventNugget                        ; Sends a lua script event out
	LuaEvent		= BeUncontrollablyAfraid	;What LUA Script?
	Radius			= 200	;How far?
	SendToEnemies	= Yes	;Enemy units recieve the LUA?
	SendToAllies	= No	;Ally units recieve the LUA?
	SendToNeutral	= Yes	;Neutral units recieve the LUA?
End

SlaveAttackNugget *18*

A Nugget that tells the objects slave to perform the attack.
Example:

SlaveAttackNugget
End

DamageContainedNugget *19*

A Nugget that damages anyone who is contained by any object, such as a transport boat.
Example:

DamageContainedNugget
	KillCount = 5	;how many to kill
	KillKindof = INFANTRY	;What "Kind" to kill
	KillKindofNot = NONE	;What not to kill?
	DeathType = BURNED	;How will they die?
End

OpenGateNugget *20*

A Nugget that forces a gate to open.
For example, some battering ram might automatically break open the gate!
Example:

OpenGateNugget ;Force open any gate hit by this.
	Radius			= 0.0
End

Some Cool Nuggets *Cool*

Get healed by attacking unit, like a wight!

Weapon BarrowWightTouch ;BALANCE BarrowWightTouch
	RadiusDamageAffects	= ENEMIES NEUTRALS
	LeechRangeWeapon      = Yes
	AttackRange           = 20.0
	MeleeWeapon           = Yes
	DelayBetweenShots     = BARROWWIGHT_SWORD_DELAYBETWEENSHOTS  ; Bad Things happen if delay between shots is less than Preattack+Firing times.  You are ready to fire before you are done firing.
	PreAttackDelay        = BARROWWIGHT_SWORD_PREATTACKDELAY             ; 400 is sword swing delay time before contact with target.
	PreAttackType         = PER_SHOT ; Do the delay each time we attack a new target
	FireFX                = FX_BarrowWightHit	;FX_GondorSwordHit
	FiringDuration        = BARROWWIGHT_SWORD_FIRINGDURATION    ; Duration of the sword swing

	DamageNugget                        ; A basic Nugget that just does damage
		Damage        		= BARROWWIGHT_SWORD
		Radius        		= 10.0
		DelayTime     		= 0
		DamageType    		= MAGIC
		DamageFXType  		= SWORD_SLASH
		DeathType     		= NORMAL
		DrainLife     		= Yes		;<- This is the part that allows unit to steal health
		DrainLifeMultiplier	= 0.5		;<- How much % of damage done is converted into health for unit?
	End
	AttributeModifierNugget
		AttributeModifier	= BarrowWightTouchDebuff
		AntiCategories		= LEADERSHIP BUFF
		SpecialObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER
	End
End

This rounds up this tutorial,
So good luck with making cool Nugget Combo's.

If you know of any other Nuggets then comment it or send me a PM!


Leveling Spear

This Tutorial will show you how to make your spear become stronger as your hero levels up!
In this tutorial 'myhero' will be Jack and he is going to throw a spear that gets stronger everytime he levels up!

NOTE
If you are going to do this then I do expect you to know what you are going to do and that you have a fairly good understanding about coding.
This tutorial will not teach you how to understand everything I'm doing here, but if you read other tutorials about the INI's that are listed down there then you should be able to have a basic idea about what im doing.
One last thing, you should know how to add commandsets and buttons since i wont be telling that.

INI's Needed:
-'Myhero'.ini *the hero you are editing
-Upgrade.ini
-experiencelevels.ini
-Weapon.ini

-'MyHero'.ini-
Open your hero's ini and add this to his specialpowers area:

	//--------------------------------------------------------------------------	
	//	THROW SPEAR SPECIAL POWER
	//--------------------------------------------------------------------------
	Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SmiteEnabler
		SpecialPowerTemplate = SpecialAbilitySpearThrow
		TriggeredBy = Upgrade_JackSpearThrow
	End

	Behavior = SpecialPowerModule ModuleTag_EowynSmiteStarter                      
		SpecialPowerTemplate		= SpecialAbilitySpearThrow
		UpdateModuleStartsAttack	= Yes
		StartsPaused			= Yes
	End

	Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_SpecialAbilitySmiteUpdate
		SpecialPowerTemplate    = SpecialAbilitySpearThrow

		UnpackTime              = 1200
		PackTime                = 2000

		AwardXPForTriggering    = 0
		
		StartAbilityRange		= 275.0
		ApproachRequiresLOS		= Yes
		
		SpecialWeapon = JackSpear
		WhichSpecialWeapon = 1
	End

Your hero will now use the 'JackSpear' as the weapon he throws.

-Upgrade.ini-
Open the Upgrade.ini
Go all the way to the bottom of the file and add this code.

Upgrade Upgrade_JackSpearThrow
  Type				= OBJECT
End

Upgrade Upgrade_JackSpearLVL1
  Type				= OBJECT
End

Upgrade Upgrade_JackSpearLVL2
  Type				= OBJECT
End

Upgrade Upgrade_JackSpearLVL3
  Type				= OBJECT
End

Upgrade Upgrade_JackSpearLVL4
  Type				= OBJECT
End

Most of these 'upgrades' you don't have to worry about for now.
You should have noticed that we start with the upgrade Upgrade_JackSpearThrow.
We will put this upgrade in the experience.ini later on.
The upgrades after that one are the ones which will enable the spear to become stronger as 'Jack' Levels up.
In this tutorial I will only use the spear upgrades till lvl 4, but you can just add your own upgrades to make it go up to LVL 10 or higher.

-experiencelevels.ini-
We will now add the upgrades to 'Jacks' experience levels...

Add this code at the bottom of the file:

ExperienceLevel	JackLevel1
	TargetNames						=	Jack	
	RequiredExperience				=	1	
	ExperienceAward					=	FARAMIR_LVL1_EXP_AWARD  
	Rank							=	1
	Upgrades						=	Upgrade_JackSpearThrow Upgrade_JackSpearLVL1
	SelectionDecal
		Texture						=	decal_hero_good
		Style						=	SHADOW_ALPHA_DECAL
		OpacityMin					=	50%	
		OpacityMax					=	100%
		MinRadius					=	40
		MaxRadius					=	200
		MaxSelectedUnits			=	40
	End	
End	

ExperienceLevel	JackLevel2
	TargetNames						=	Jack	
	RequiredExperience				=	FARAMIR_LVL2_EXP_NEEDED
	ExperienceAward					=	FARAMIR_LVL2_EXP_AWARD  
	LevelUpFx						=	FX:GandalfLevelUp1FX
	Rank							=	2
	AttributeModifiers				=	HeroLevelUpDageel1
	Upgrades						=	Upgrade_JackSpearLVL2
	SelectionDecal
		Texture						=	decal_hero_good
		Style						=	SHADOW_ALPHA_DECAL
		OpacityMin					=	50%	
		OpacityMax					=	100%
		MinRadius					=	40
		MaxRadius					=	200
		MaxSelectedUnits			=	40
	End	
End	

ExperienceLevel	JackLevel3
	TargetNames						=	Jack	
	RequiredExperience				=	FARAMIR_LVL3_EXP_NEEDED
	ExperienceAward					=	FARAMIR_LVL3_EXP_AWARD  	
	LevelUpFx						=	FX:GandalfLevelUp1FX
	Rank							=	3
	Upgrades						=	Upgrade_JackSpearLVL3
	AttributeModifiers				=	HeroLevelUpDageel2
	SelectionDecal
		Texture						=	decal_hero_good
		Style						=	SHADOW_ALPHA_DECAL
		OpacityMin					=	50%	
		OpacityMax					=	100%
		MinRadius					=	40
		MaxRadius					=	200
		MaxSelectedUnits			=	40
	End	
End	

ExperienceLevel	JackLevel4
	TargetNames						=	Jack	
	RequiredExperience				=	FARAMIR_LVL4_EXP_NEEDED
	ExperienceAward					=	FARAMIR_LVL4_EXP_AWARD  	
	LevelUpFx						=	FX:GandalfLevelUp1FX
	Rank							=	4
	Upgrades						=	Upgrade_JackSpearLVL4
	AttributeModifiers				=	HeroLevelUpDageel3
	SelectionDecal
		Texture						=	decal_hero_good
		Style						=	SHADOW_ALPHA_DECAL
		OpacityMin					=	50%	
		OpacityMax					=	100%
		MinRadius					=	40
		MaxRadius					=	200
		MaxSelectedUnits			=	40
	End	
End

For your information all I did was add the upgrades Upgrade_JackSpearLVL1 till LVL 4 and add the Upgrade_JackSpearThrow at JackLevel1
So if you have other upgrades for your hero all you have to do is add those upgrades Manually to your character's Experience levels.
And remember in this tutorial I will only go till lvl 4, but you can make it go up to LVL 10 or higher.

-Weapon.ini-
So finally we are going to make the Weapon for our hero's spear.

Add this code to the bottom of your weapon.ini:

Weapon JackSpear						; BALANCE Rohan Eomer Spear Weapon
	AttackRange 		= 300.0
	LeechRangeWeapon		= Yes
	WeaponSpeed			= 261				; dist/sec 
	MinWeaponSpeed		= 201
	MaxWeaponSpeed 		= 301				; dist/sec Upper limit on scaling, when attacking past nominal "max" range
	FireFX 			= FX_EomerSpearThrow
	ScaleWeaponSpeed 		= Yes				; Used for lob weapons, scales speed proportional to range
	HitPercentage		= 100
	ScatterRadius     	= 0.0				;When this weapon misses it can randomly miss by as much as this distance.
	AntiAirborneVehicle     = Yes
	AntiAirborneMonster	= Yes

	PreAttackDelay		= 1
	PreAttackType		= PER_SHOT			; Do the delay each time we attack a new target
	FiringDuration		= 2000			; Duration of the archer firing shot is 500ms.
	HoldAfterFiringDelay	= 2000

	ProjectileNugget						; A Nugget that creates an Object and sends it to the target with a Warhead
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL1
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL2 Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 2
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL2
		RequiredUpgradeNames	= Upgrade_JackSpearLVL2
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 3
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL3
		RequiredUpgradeNames	= Upgrade_JackSpearLVL3
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 4
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL4
		RequiredUpgradeNames	= Upgrade_JackSpearLVL4
	End
End

;-----------------------------------

Weapon JackSpearWarheadLVL1
	RadiusDamageAffects	= ENEMIES NEUTRALS NOT_SIMILAR
	FireFX			= FX_GondorSwordHit
	HitStoredTarget		= Yes
	DamageNugget       				                 ; A basic Nugget that just does damage
		Damage		= 1000
		;Spear Bad Against Buildings, Perfect For Flying Units, Good For Breaking Ships.	
		DamageScalar	= 5% NONE +STRUCTURE
		DamageScalar	= 400% NONE +MordorFellBeast +MordorWitchKingOnFellBeast +GondorGwaihir +Drogoth
		DamageScalar	= 200% NONE +EvilMenCorsairShip +EvilShoreBombardShip +EvilFireShip +ElvenBattleShip +ElvenFireShip +ElvenShoreBombardShip			
		Radius		= 15
		DelayTime		= 0
		DamageType		= MAGIC
		DamageFXType	= SWORD_SLASH
		DeathType		= NORMAL
	End
End

Weapon JackSpearWarheadLVL2
	RadiusDamageAffects	= ENEMIES NEUTRALS NOT_SIMILAR
	FireFX			= FX_GondorSwordHit
	HitStoredTarget		= Yes
	DamageNugget       				                 ; A basic Nugget that just does damage
		Damage		= 1000
		;Spear Bad Against Buildings, Perfect For Flying Units, Good For Breaking Ships.	
		DamageScalar	= 5% NONE +STRUCTURE
		DamageScalar	= 400% NONE +MordorFellBeast +MordorWitchKingOnFellBeast +GondorGwaihir +Drogoth
		DamageScalar	= 200% NONE +EvilMenCorsairShip +EvilShoreBombardShip +EvilFireShip +ElvenBattleShip +ElvenFireShip +ElvenShoreBombardShip			
		Radius		= 15
		DelayTime		= 0
		DamageType		= MAGIC
		DamageFXType	= SWORD_SLASH
		DeathType		= NORMAL
	End
End

Weapon JackSpearWarheadLVL3
	RadiusDamageAffects	= ENEMIES NEUTRALS NOT_SIMILAR
	FireFX			= FX_GondorSwordHit
	HitStoredTarget		= Yes
	DamageNugget       				                 ; A basic Nugget that just does damage
		Damage		= 1500
		;Spear Bad Against Buildings, Perfect For Flying Units, Good For Breaking Ships.	
		DamageScalar	= 5% NONE +STRUCTURE
		DamageScalar	= 400% NONE +MordorFellBeast +MordorWitchKingOnFellBeast +GondorGwaihir +Drogoth
		DamageScalar	= 200% NONE +EvilMenCorsairShip +EvilShoreBombardShip +EvilFireShip +ElvenBattleShip +ElvenFireShip +ElvenShoreBombardShip			
		Radius		= 15
		DelayTime		= 0
		DamageType		= MAGIC
		DamageFXType	= SWORD_SLASH
		DeathType		= NORMAL
	End
End

Weapon JackSpearWarheadLVL4
	RadiusDamageAffects	= ENEMIES NEUTRALS NOT_SIMILAR
	FireFX			= FX_GondorSwordHit
	HitStoredTarget		= Yes
	DamageNugget       				                 ; A basic Nugget that just does damage
		Damage		= 2000
		;Spear Bad Against Buildings, Perfect For Flying Units, Good For Breaking Ships.	
		DamageScalar	= 5% NONE +STRUCTURE
		DamageScalar	= 400% NONE +MordorFellBeast +MordorWitchKingOnFellBeast +GondorGwaihir +Drogoth
		DamageScalar	= 200% NONE +EvilMenCorsairShip +EvilShoreBombardShip +EvilFireShip +ElvenBattleShip +ElvenFireShip +ElvenShoreBombardShip			
		Radius		= 15
		DelayTime		= 0
		DamageType		= MAGIC
		DamageFXType	= SWORD_SLASH
		DeathType		= NORMAL
	End
End

Your hero now throws this spear, which becomes stronger when your hero levels up!
If you want to add more then you should look at the principle I have used up there.
Its fairly simple: to add more levels you must add more upgrades to the projectilenuggets and you must make more warheads for the spear...

Your spear throw should now work!
Just a little tip: don't forget to add the command button Command_RohanEomerSpear to your hero's commandset!

On The Next Page:
How to make the spear change color as you level up...


Leveling Spear Changing colors


This Part of my tutorial will show you how to make your spear Change colors as your hero levels up!
This tutorial will refer to parts of the tutorial from the previous page.

NOTE
You should have done the things on the previous page if you want to be able to do this correctly.

INI's Needed:
-Weapon.ini
-Goodfactionsubobjects.ini *or Evilfactionsubobjects.ini, depends on which side your hero is!
-FXparticlesystem.ini

Texture Needed:
- exspearglow.tga

-Weapon.ini-

Here is the part of the weapon JackSpear that we will be working on:

	ProjectileNugget						; A Nugget that creates an Object and sends it to the target with a Warhead
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL1
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL2 Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 2
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL2
		RequiredUpgradeNames	= Upgrade_JackSpearLVL2
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 3
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL3
		RequiredUpgradeNames	= Upgrade_JackSpearLVL3
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 4
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL4
		RequiredUpgradeNames	= Upgrade_JackSpearLVL4
	End

Notice that the ProjectileTemplateName is RohanEomerSpearProjectile, this is the object Jack throws!
Lets have Jack throw a special color spear as soon as he reaches LVL 4:

	ProjectileNugget			; A Nugget that creates an Object and sends it to the target with a Warhead
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL1
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL2 Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 2
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL2
		RequiredUpgradeNames	= Upgrade_JackSpearLVL2
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL3 Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 3
		ProjectileTemplateName	= RohanEomerSpearProjectile
		WarheadTemplateName	= JackSpearWarheadLVL3
		RequiredUpgradeNames	= Upgrade_JackSpearLVL3
		ForbiddenUpgradeNames	= Upgrade_JackSpearLVL4
	End
	ProjectileNugget                    ; LVL 4
		ProjectileTemplateName	= JackSpearLVL4Projectile ;<-Special Spear Color for lvl 4
		WarheadTemplateName	= JackSpearWarheadLVL4
		RequiredUpgradeNames	= Upgrade_JackSpearLVL4
	End

Notice I changed the ProjectileTemplateName to JackSpearLVL4Projectile.
Now we will move on to changing the looks of that spear...

-Goodfactionsubobjects.ini-

Now we will add this code to the bottom of this ini:

Object JackSpearLVL4Projectile

	Draw = W3DScriptedModelDraw ModuleTag_01 ;ModuleTag_Draw
		DefaultModelConditionState
			Model = RUEomer_SPER
			ParticleSysBone NONE JackSpearLVL4ContrailThin		;<-ParticleSystem used
			ParticleSysBone NONE JackSpearLVL4FlameTrail		;<-ParticleSystem used
			Texture = exspearglow.tga	JackSpearLVL4exspearglow.tga	;<- The TGA File that you are using
		End
	End

	; *** AUDIO Parameters ***

	; ***DESIGN parameters ***
	EditorSorting = SYSTEM
	ArmorSet
		Armor = NoArmor
	End
	VisionRange = 0.0

	; *** ENGINEERING Parameters ***
	KindOf = PROJECTILE
	Body = ActiveBody ModuleTag_02
		MaxHealth			 = 10.0
	End

	Behavior = DestroyDie ModuleTag_03
		;nothing
	End
		
	Behavior = BezierProjectileBehavior ModuleTag_04
		; To tweak a Bezier path
		FirstHeight = 9	; Height of Bezier control points above highest intervening terrain
		SecondHeight = 9
		FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
		SecondPercentIndent = 90%
		FlightPathAdjustDistPerSecond = 50 
			; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag. (45 is default human speed)
		DetonateCallsKill = Yes
		CurveFlattenMinDist = 100.0
	End

	Behavior = CreateObjectDie ModuleTag_06
		DeathTypes = ALL
	End

	Behavior = FXListDie ModuleTag_07
		DeathTypes = ALL -CRUSHED -SPLATTED
		DeathFX = FX_SmiteHit
	End

	Geometry = Sphere
	GeometryIsSmall = Yes
	GeometryMajorRadius = 0.8
End

Now a little bit of grafical stuff, In Textures1.BIG find the file exspearglow.tga and extract it.
Rename the file to JackSpearLVL4exspearglow.tga.
Open Paint Shop Pro or Photoshop, or any other good image editing software...

Choose a color to make your spear,
For this tutorial I'll make the spear red.
Colorize it with the options:
Hue: 0 Saturation: 153
Now save it...

Notice I have put 3 notes up there in the codebox:
The first 2 are Particlesystems, which will come later on.
The 3rd is the name of the TGA file you have just changed!

-FXparticlesystem.ini-

This is the code you need to add at the bottom of the file:

;Look at these 2 systems to see changes made!
;FXParticleSystem SpearContrailThin
;FXParticleSystem SpearFlameTrail

;---------Jack Spear FX---------
FXParticleSystem JackSpearLVL4FlameTrail
  System
    Priority = ALWAYS_RENDER
    ParticleName = EXspearhead.tga
    Lifetime = 50 50
    SortLevel = 1
    Size = 40 40
    BurstCount = 2 2
    IsGroundAligned = Yes
    IsParticleUpTowardsEmitter = Yes
  End
  Color = DefaultColor
    Color1 = R:90 G:20 B:20 0
    Color2 = R:0 G:0 B:0 50
  End
  Alpha = DefaultAlpha
  End
  Update = DefaultUpdate
    SizeRateDamping = 0.8 0.9
    AngleZ = -2 2
    AngularDamping = 1 1
    AngularDampingXY = 1 1
  End
  Physics = DefaultPhysics
    VelocityDamping = 1 1
  End
  EmissionVelocity = OrthoEmissionVelocity
  End
  EmissionVolume = PointEmissionVolume
  End
  Draw = DefaultDraw
  End
End

FXParticleSystem JackSpearLVL4ContrailThin
  System
    Priority = MEDIUM_OR_ABOVE
    Type = STREAK
    ParticleName = EXContrail.tga
    Lifetime = 7 7
    SortLevel = 1
    Size = 1 2
    BurstCount = 1 1
    InitialDelay = 1 1
  End
  Color = DefaultColor
    Color1 = R:90 G:20 B:20 0
    Color2 = R:0 G:0 B:0 7
    Color4 = R:32 G:32 B:32 0
  End
  Alpha = DefaultAlpha
  End
  Update = DefaultUpdate
    SizeRate = -0.3 -0.3
    SizeRateDamping = 0.85 0.9
    AngularDamping = 1 1
    AngularDampingXY = 1 1
  End
  Physics = DefaultPhysics
    VelocityDamping = 0.93 0.94
  End
  EmissionVelocity = OrthoEmissionVelocity
  End
  EmissionVolume = LineEmissionVolume
    StartPoint = X:7 Y:0 Z:0
    EndPoint = X:8 Y:0 Z:0
  End
  Draw = StreakDraw
  End
End

What I have changed in these 2 systems is the 'DefaultColor's:
Color1 = R:90 G:20 B:20 0
This is the same kind of color we gave our JackSpearLVL4exspearglow.tga.
Now the spear Jack throws at LVL 4 is a reddish color.

Once again a tip: If you want to look at the differences between the spear's coding you should look at the RohanEomerSpearProjectile in the Goodfactionsubobjects.ini

Play around with the color values to make cool looking spear, and good luck.

I hope this tutorial has helped you understand the weapons and thrown projectiles in BFME better!


'MorgulBlade' effect

This Tutorial will show you how to make your own MorgulBlade!
In this tutorial 'myhero' will be Jack (once again) and he is going to use the MorgulBlade that makes a chest of gold appear when he kills a unit!

NOTE
If you are going to do this then I do expect you to know what you are going to do and that you have a fairly good understanding about coding.
This tutorial will not teach you how to understand everything I'm doing here, but if you read other tutorials about the INI's that are listed down there then you should be able to have a basic idea about what im doing.
One last thing, you should know how to add commandsets and buttons and experiencelevels since I wont be telling that.

INI's Needed:
-'Myhero'.ini *the hero you are editing
-Upgrade.ini
-Weapon.ini
-Objectcreationlist.ini

-'Myhero'.ini-

Add this code to your hero's special power area:

	;--------- Kill For a chest of gold -----------------------------------------------------------------------------------
	Behavior = UnpauseSpecialPowerUpgrade ModuleTag_BlackRiderMorgulBlade
		SpecialPowerTemplate = SpecialAbilityBlackRiderMorgulBlade
		TriggeredBy = Upgrade_JackChest
	End

	Behavior = SpecialPowerModule ModuleTag_BlackRiderMorgulBladeStarter
		SpecialPowerTemplate		= SpecialAbilityBlackRiderMorgulBlade
		UpdateModuleStartsAttack	= Yes
		StartsPaused				= Yes
		InitiateSound				= FellBeastVoiceAttack
	End

	Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_BlackRiderMorgulBladeUpdate
		SpecialPowerTemplate    = SpecialAbilityBlackRiderMorgulBlade
		SkipContinue			= Yes

		UnpackTime				= 150 ;250
		PreparationTime			= 1
		PersistentPrepTime		= 250 ;500
		PackTime				= 50 ;100
		
		AwardXPForTriggering	= 0
		StartAbilityRange		= 15.0
		
		SpecialWeapon			= Jackschestofgold ;EvilMenBlackRiderMorgulBlade
		WhichSpecialWeapon		= 1
	End

	Behavior = AutoAbilityBehavior ModuleTag_MorgulBladeAutoAbility
		SpecialAbility	= SpecialAbilityBlackRiderMorgulBlade
		ForbiddenStatus = INSIDE_GARRISON
		AllowSelf		= No
		Query			= 1 MORGULBLADE_OBJECT_FILTER
	End

Im going to explain what I changed from the original 'MorgulBlade' power:

1st
TriggeredBy = Upgrade_JackChest
Its the upgrade needed to do the power...

2nd
SpecialWeapon = Jackschestofgold
The Weapon he uses when doing the power...

Moving On...

-Upgrade.ini-

Add this code at the bottom of upgrade.ini:

Upgrade Upgrade_JackChest
  Type				= OBJECT
End

This is the upgrade you will need to add to the experiencelevels.INI yourself, and it will be used later!
~if you do not know how to do this then you did not read my note on the top of the page!~

-Weapon.ini-

Add this code at the bottom of the file:

Weapon Jackschestofgold
	LeechRangeWeapon = Yes
	AttackRange				= 30.0
	MeleeWeapon				= Yes
	;FireFX					= FX_BlackRiderMorgulBladeTempAudio		;FX_BlackRiderMorgulBlade
	DelayBetweenShots		= EVILMEN_BLACKRIDER_DELAYBETWEENSHOTS
	PreAttackDelay			= EVILMEN_BLACKRIDER_PREATTACKDELAY    ; 1467 is the prep time for archer.
	PreAttackType			= PER_SHOT ; Do the delay each time we attack a new target
	FiringDuration			= EVILMEN_BLACKRIDER_FIRINGDURATION     ; Duration of the archer firing shot is 500ms.

	DamageNugget                        ; A basic Nugget that just does damage
		Damage        = 2000
		Radius        = 0.0
		DelayTime     = 0
		DamageType    = MAGIC
		DamageSubType = BECOME_UNDEAD ;<- This seems like it has nothing to do with a chest when he dies...
		DamageFXType  = MAGIC
		DeathType     = NORMAL
	End

	AttributeModifierNugget
		AttributeModifier        = BlackRiderMorgulBlade
		DamageFXType             = SWORD_SLASH
		SpecialObjectFilter      = MORGULBLADE_OBJECT_FILTER
	End
End

You might have seen the Note in the codebox,
Its true the BECOME_UNDEAD might seem like a joke but I'm sure you'll understand:
Become_undead just spawns a wight when the dude dies... so you could change the OCL so it drops a chest or another creature instead when it dies!

I also removed the poison damagenugget from the code, you can just get it back from the original morgulblade weapon if you want...

-Objectcreationlist.ini-

Find this code:

;--------------------------------Become Undead----------------------------
ObjectCreationList OCL_BecomeUndead
	CreateObject
		ObjectNames				= BarrowWight_Summoned ; ;
		Count					= 1
		FadeIn					= No
	End
End

And change it to:

;--------------------------------Become Undead----------------------------
ObjectCreationList OCL_BecomeUndead
	CreateObject
		ObjectNames				= BarrowWight_Summoned ; ;
		Count					= 1
		FadeIn					= No
		ForbiddenUpgrades = Upgrade_JackChest
	End

	CreateObject
		ObjectNames				= TreasureChest1 ;; BarrowWight_Summoned ; ;
		Count					= 1
		FadeIn					= No
		RequiredUpgrades = Upgrade_JackChest
	End
End

Now Jack should get a chest of gold when he kills someone with his power!

Note
You still have to add the upgrade Upgrade_JackChest to the experiencelevels.ini and add the command Command_BlackRiderMorgulBlade to your hero's commandset

With this code you should be able to make another unit appear after killing a unit with the power I have tested this myself and it worked, so it should work for you!

I hope this tutorial helped you alot.

Please put a comment if the power does not work, I tried it myself and it worked but who knows...


Nature's Wrath ~ Tornado


This part of the tutorial is about a special 'weapon',
The Tornado's Wind from Galadriel's Nature's Wrath Power.

NOTE
I expect you to have read most things on Pages 2 & 3.
This is not a 'real' tutorial it is just an example of a cool thing you can do with weapons!

INI's Needed:
-Weapon.ini
-Neutralunits.ini *only needed for reference to the "units" GaladrielTornado02 & GaladrielTornado

-Weapon.ini-

This is the code in the weapon.ini that Galadriel's tornado uses.
It has many interesting parts in it as you can see...

Weapon TornadoWindWeapon
 RadiusDamageAffects = ENEMIES NEUTRALS 
  
   DelayBetweenShots  = 0 ; time between shots, msec
 ClipSize                 = 0 ; how many shots in a Clip (0 == infinite)

 DamageNugget                        ; A basic Nugget that just does damage
  Damage        = TORNADO_DAMAGE_INNER
  Radius        = 20.0
  DelayTime     = 0
  DamageType            = HERO
  DamageFXType          = TORNADO ;GIMLI_LEAP
  DeathType             = NORMAL
  DamageScalar  = 35% NONE +STRUCTURE
  CylinderAOE   = Yes
 End

 DamageNugget                        ; A basic Nugget that just does damage
  Damage        = TORNADO_DAMAGE_OUTER
  Radius        = 50.0
  DelayTime     = 0
  DamageType            = HERO
  DamageFXType          = TORNADO ;GIMLI_LEAP
  DeathType             = NORMAL
  DamageScalar  = 35% NONE +STRUCTURE
  CylinderAOE   = Yes
 End

 MetaImpactNugget                    ; A Nugget that throws things back with force
  KillObjectFilter  = INSTANT_DEATH_ON_METAIMPACT_OBJFILTER
  ShockWaveAmount   = TORNADO_METASHOCKWAVE_AMOUNT
  ShockWaveRadius   = TORNADO_METASHOCKWAVE_RADIUS
  ShockWaveTaperOff = 1.0
  ShockWaveZMult    = 1.6
  InvertShockWave   = Yes  // makes it "suck"
  CyclonicFactor   = 0.66
 End
End

-Interesting Parts In The Weapon Code-
-Delaybetweenshots is set to 0 so it is a 'continuous' effect/weapon
-Killobjectfilter tells what units to kill the second they get 'sucked up'
-InvertShockWave is set to Yes so the weapon 'sucks' units toward it
-CyclonicFactor is how strong the 'suction' should be

-Neutralunits.ini-
GaladrielTornado02

This part of the code in the object/unit GaladrielTornado02 lets the weapon be used continuously.

 Behavior = FireWeaponUpdate ModuleTag_WINDY
  FireWeaponNugget
   WeaponName = TornadoWindWeapon
   FireDelay = 0
   OneShot = No
  End
 End

This is all for the Nature's Wrath ~ Tornado Part of the tutorial.
I hope this has helped you to see how the Tornado and it's weapon works.

Original Tutorial on The 3rd Age:
The3rdage.net

Comments
Me2aswell
Me2aswell

Flanking gives bonus damage if the enemy is surrounded

Reply Good karma Bad karma+3 votes
Ridder-Geel Author
Ridder-Geel

Thanks, changed the description :P

Reply Good karma+1 vote
Guest
Guest

how can i install the Mod

Reply Good karma Bad karma+1 vote
Guest
Guest

I have a problem, somehow when I try to start my game a game.dat occurs about the weapons.ini (The reason I'm posting here). The error is something about Unknown Block LeechRangeWeapon. Which makes no sense for me, 'cause as far as I understand the weapon.ini only works with gamedata.ini and there is no mentioning about LeechRangeWeapon in gamedata.ini? :)

Reply Good karma Bad karma+2 votes
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Icon
Battle for Middle-earth II: Rise of the Witch King
Developer
Ridder Clan
Contact
Send Message
Release date
Mod watch
Start tracking
Tutorial
Browse
Tutorials
Share
Related Games
Related Engines
SAGE (Strategy Action Game Engine)
SAGE (Strategy Action Game Engine) Proprietary
Related Groups
Electronic Arts
Electronic Arts Developer & Publisher with 8 members
Ridder Clan
Ridder Clan Developer & Publisher with 4 members
SAGE 2D & 3D fans
SAGE 2D & 3D fans Fans & Clans with 1,349 members