The 3rd Age

Immersive Middle-earth (v. 1.4)

Immersive Middle-earth (v. 1.4)

An attempt to make the original BFME1 more personable

Button for The 3rd AgeButton for The Dwarf HoldsButton for The Elven AllianceButton for Helm's Deep Last HopeButton for GothmogtheOrcButton for BFME+Button for The Four AgesButton for HDR HeadquartersButton for Middle Earth CenterButton for Project Perfect Mod

Become an affiliate!

   

Quick Lists

Top Rated Popular New Updated Last Comments Users

Register and log in to move these advertisements down

The Special Power Guide

Avatar of Ridder Blauw

Ridder Blauw

Category: Code
Level: Intermediate
Created: Wednesday March 25, 2009 - 9:41
Updated: Friday May 28, 2010 - 15:36
Views: 12090
Summary: Here you will read and learn tips and tricks about special powers.

Rating

Staff says

3.7

Members say

4.0

Average

3.9/5.0

9 votes

Page 1 2 3 4 5 6 7 8 9
Firing Word of Power on Wound Arrow

This tutorial will show you how to add a Wound Arrow that carries Word of Power to a hero of your choice.
Level: Begginer (Though this depends on how much you want to fool around with this)

INI's Needed:
'Your Hero'.ini *The hero you will be editing
Goodfactionsubobjects.ini


To start of we must create a new arrow for the spell. Open the file goodfactionsubobjects.ini.

Goodfactionsubobjects.ini
Now scroll down all the way and past this piece of code:

              
Code
Object FaramirSpecialArrow
    ; *** ART Parameters ***
    Draw = W3DScriptedModelDraw ModuleTag_Draw
        DefaultModelConditionState        
            Model = RULegolas_AROW
            ParticleSysBone NONE FaramirArrowTrail
        End

        IdleAnimationState
            Animation                            = RULegolas_AROW
                AnimationName                = RULegolas_AROW.RULegolas_AROW
                AnimationMode                = LOOP
            End
        End
    End

    ; *** AUDIO Parameters ***

    ; ***DESIGN parameters ***
    EditorSorting         = SYSTEM

    ArmorSet
        Armor = NoArmor
    End

    VisionRange = 0.0

    ; *** ENGINEERING Parameters ***
    KindOf = PROJECTILE NO_COLLIDE HIDE_IF_FOGGED SCARY
    Body = ActiveBody ModuleTag_02
        MaxHealth             = 100.0
    End

    ;Behavior = DestroyDie ModuleTag_03

    ;    nothing
    ;End

    Behavior = SlowDeathBehavior ModuleTag_03
        SinkDelay = 0
        DestructionDelay = 250
    End
        
    Behavior = BezierProjectileBehavior ModuleTag_04
        ; To tweak a Bezier path
        DetonateCallsKill            = Yes
        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)
        GroundHitFX                    = FX_WoundingArrowHit
        CurveFlattenMinDist            = 100.0
    End

    Behavior = FXListDie ModuleTag_07
        DeathTypes = ALL
        DeathFX = FX_WoundingArrowHit
    End

    Geometry = Sphere
    GeometryIsSmall = Yes
    GeometryMajorRadius = 0.8
End


At the moment it is just a copy of Faramir's Wound Arrow object, so we will start with renaming the arrow.

              
Code
Object FaramirSpecialArrow


Because my hero is named Plaffie I will call the object:

              
Code
Object PlaffieSpecialArrow


Next go to the end of the object and look at this piece of code:

              
Code
    Behavior = FXListDie ModuleTag_07
        DeathTypes = ALL
        DeathFX = FX_WoundingArrowHit
    End


Replace it with this piece of code:

              
Code
    Behavior = FXListDie ModuleTag_07
        DeathTypes = ALL
        DeathFX = FX_GandalfPreAttackBlast ;This allows you to see the wop fx at the destruction of the arrow. Without this block there is no fx.
    End

    Behavior = FireWeaponWhenDeadBehavior ModuleTag_07Weapon
        StartsActive = Yes ;No need to give an upgrade to let this happen.
        DeathWeapon = GandalfWordOfPower ; This tells what weapon must be fired, in this spell Word of Power.
    End


The whole object should now look like this:

              
Code
Object PlaffieSpecialArrow
    ; *** ART Parameters ***
    Draw = W3DScriptedModelDraw ModuleTag_Draw
        DefaultModelConditionState        
            Model = RULegolas_AROW
            ParticleSysBone NONE FaramirArrowTrail
        End

        IdleAnimationState
            Animation                            = RULegolas_AROW
                AnimationName                = RULegolas_AROW.RULegolas_AROW
                AnimationMode                = LOOP
            End
        End
    End

    ; *** AUDIO Parameters ***

    ; ***DESIGN parameters ***
    EditorSorting         = SYSTEM

    ArmorSet
        Armor = NoArmor
    End

    VisionRange = 0.0

    ; *** ENGINEERING Parameters ***
    KindOf = PROJECTILE NO_COLLIDE HIDE_IF_FOGGED SCARY
    Body = ActiveBody ModuleTag_02
        MaxHealth             = 100.0
    End

    ;Behavior = DestroyDie ModuleTag_03

    ;    nothing
    ;End

    Behavior = SlowDeathBehavior ModuleTag_03
        SinkDelay = 0
        DestructionDelay = 250
    End
        
    Behavior = BezierProjectileBehavior ModuleTag_04
        ; To tweak a Bezier path
        DetonateCallsKill            = Yes
        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)
        GroundHitFX                    = FX_WoundingArrowHit
        CurveFlattenMinDist            = 100.0
    End

    Behavior = FXListDie ModuleTag_07
        DeathTypes = ALL
        DeathFX = FX_GandalfPreAttackBlast ;This allows you to see the wop fx at the destruction of the arrow. Without this block there is no fx.
    End

    Behavior = FireWeaponWhenDeadBehavior ModuleTag_07Weapon
        StartsActive = Yes ;No need to give an upgrade to let this happen.
        DeathWeapon = GandalfWordOfPower ; This tells what weapon must be fired, in this spell Word of Power.
    End

    Geometry = Sphere
    GeometryIsSmall = Yes
    GeometryMajorRadius = 0.8
End


That's it for the Arrow object, next we will look at the Weapon.ini.

Weapon.ini

So now again we scroll all the way down, but now we paste this:

              
Code
;------------------------------------------------------------------------------

Weapon PlaffieSpecialArrow ; Arrow name has been changed so the game does not confuse it with Faramir's wound arrow.
    AttackRange                = FARAMIR_WOUNDING_ARROW_RANGE
    LeechRangeWeapon            = Yes
    WeaponSpeed                = 321                 ; dist/sec
    MinWeaponSpeed            = 241
    MaxWeaponSpeed            = 481            ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
    FireFX                = FX_FaramirWoundingArrow
    ScaleWeaponSpeed            = Yes ; Used for lob weapons, scales speed proportional to range
    HitPercentage            = 100         ;When this weapon is used it will hit exactly 75% of the time.
    ScatterRadius            = 0.0         ;When this weapon misses it can randomly miss by as much as this distance.
    DelayBetweenShots            = 15000                                    ; time between shots, msec
    PreAttackDelay            = 1                                        ; we want isntant
    PreAttackType            = PER_POSITION
    FiringDuration            = 1                                        ; Duration of the archer firing shot is 500ms.
    ClipSize                = 1
    AutoReloadsClip            = Yes
    AutoReloadWhenIdle        = 1    
    ClipReloadTime            = Min:FARAMIR_BOW_RELOADTIME_MIN Max:FARAMIR_BOW_RELOADTIME_MAX
    AntiAirborneVehicle        = Yes
    AntiAirborneMonster        = Yes
    PreferredTargetBone        = B_LLLID ; Likes to shoot things in their left eye.
    ProjectileNugget                                        ; A Nugget that creates an Object and sends it to the target with a Warhead
        ProjectileTemplateName    = PlaffieSpecialArrow ; References the arrow object we just created.
        WarheadTemplateName    = PlaffieSpecialArrowWarhead ; References the warhead that actually gives damage.
    End
End

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

Weapon PlaffieSpecialArrowWarhead ; The name of the arrow's warhead has been changed so the game does not confuse it with Faramir's arrow warhead.

    ProjectileCollidesWith = ALLIES 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 = FARAMIR_WOUNDING_ARROW_DAMAGE
        DamageScalar = 10% NONE +STRUCTURE +MordorCatapult +IsengardBallista +GondorTrebuchet +GondorTrebuchetWall
        DamageScalar = 300% NONE +MordorFellBeast +MordorWitchKingOnFellBeast +GondorGwaihir
        DamageScalar = 150% NONE +MordorMountainTroll +MordorCaveTroll +MordorDrummerTroll
        DamageScalar = 200% NONE +RohanTreeBerd +RohanEntFir +RohanEntBirch +RohanEntFir_Summoned +RohanEntBirch_Summoned
        Radius = 0.0    ; HitStoredTarget means we hurt the person we launched at. And nobody else. So a miss hurts nobody.
        DelayTime = 0
        DamageType = HERO
        DamageFXType = GOOD_ARROW_PIERCE
        DeathType = NORMAL
    End
; ;
    DamageNugget ; A basic Nugget that just does damage
        Damage = FARAMIR_WOUNDING_ARROW_DAMAGE
        Radius = 0.0    ; HitStoredTarget means we hurt the person we launched at. And nobody else. So a miss hurts nobody.
        DelayTime = 0
        DamageType = CAVALRY
        DamageFXType = REFLECTED ; ;
        DeathType = EXPLODED
        SpecialObjectFilter    = NONE +HERO -MONSTER
    End

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

End


I have commented what I have edited from the original Faramir Wound Arrow. Next we will open the 'Your Hero'.ini.

'Your Hero'.ini
Scroll the special power section and paste this:

              
Code
    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_UnpauseWoundArrow
        SpecialPowerTemplate        = SpecialAbilityWoundArrow
        TriggeredBy                    = (Fill in the upgrade that activates the special power here, for more info on this check preceding tutorials.)
    End
    Behavior = SpecialPowerModule ModuleTag_WoundArrow
        SpecialPowerTemplate        = SpecialAbilityWoundArrow
        UpdateModuleStartsAttack    = Yes
    InitiateSound                = FaramirRangerVoiceWoundingArrow
    StartsPaused                = Yes
    End
    Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_WoundArrowUpdate
        SpecialPowerTemplate        = SpecialAbilityWoundArrow
        SkipContinue                = Yes
        UnpackTime                    = 2000
        PreparationTime                = 1
        PersistentPrepTime            = 1000
        PackTime                    = 1
        AwardXPForTriggering        = 0
        StartAbilityRange            = #SUBTRACT( FARAMIR_WOUNDING_ARROW_RANGE 25 )
        ApproachRequiresLOS            = Yes
        SpecialWeapon                = PlaffieSpecialArrow ; References to the weapon we made earlier.
        WhichSpecialWeapon            = 1
    End
    Behavior = AutoAbilityBehavior ModuleTag_WoundArrowAutoAbility
        SpecialAbility                = SpecialAbilityWoundArrow
        MaxScanRange                = #SUBTRACT( FARAMIR_WOUNDING_ARROW_RANGE 25 )
        Query                        = 1 ALL ENEMIES -STRUCTURE
    End


I have commented what I have edited. Remember that problems may occure if the hero already has Wounding Arrow as a power. Now you only have to add Command_SpecialAbilityWoundArrow to the hero's commandset.

That's all for this tutorial, if you uncover a mistake in this tutorial or fool around further you can always contact me for help.

Links / Downloads

 HitsAdded
Throwing Knife, Premade (Credit Required)1359August 19, 2009 - 2:17
Weapons Tutorial, by Ridder Geel1605May 6, 2009 - 2:11

Comments

Display order: Newest first | Page: 1, 2

clank234 - Tuesday November 16, 2010 - 12:41

I gave a 5
1) A lot off effort just to help others which i love to see a lot.
2) Can i hav some help with Summon Balrog, when i try to play it crashes and the upgrade.ini isnt right

Ridder Blauw - Monday August 23, 2010 - 6:05

That means the thing that is filled in at Attackrange in the weapon is wrong.

Or the macro there doesnt exsist or the characters filled in are wrong.

SkillModLord - Friday August 20, 2010 - 0:02

Weapon.ini

That part where you combine woundarrow with Word of Power goes wrong.

When I put the piece of code you written there in my weapon.ini and correct it as you said, I try to start up the game and it says that attacktange in the file weapon.ini isnt good. I try to put other command first under the wounding arrow but then the the same bug appears with the new command first :S

Shininku - Sunday September 13, 2009 - 18:53

This was pretty awesome guide and it helped me to fix up my powers. But I think I need help. I've set up my hero so that he can summon a BlackRider (Ringwraith w/e) at level 10. When my character gets to level 10, Blackrider icon lights up like it's usable. But when I click it, nothing happens. I don't get the little summoning area thing. What'd I do wrong?

Ridder Blauw - Friday September 11, 2009 - 10:02

Yes.

drogoth232 - Wednesday September 9, 2009 - 14:07

In the coding part. Will sam have the throwing anims?

Ridder Blauw - Wednesday August 19, 2009 - 8:34

That's modeling and coding. ;)

--------

Added a Two Part tutorial to continue the Editing Projectile Spells tutorial, New Projectile Spells! ;):);)

Spartan184 - Wednesday June 24, 2009 - 18:09

I tryed adding Summon Balrog to Saruman and it crashed its for bfme1.
Nevermind Fixed it. Thanks a lot UR THE BEST!!!
For the Gimli thing for instead of haveing a axe he has a Spear can we change the weopen like say sarumans staff or something?

Ridder Blauw - Sunday May 10, 2009 - 22:26

The code calls them dozers in the code block DOZER_CONSTRUCT don't they?

--------

Didn't get at first why you brought it up, so would you forgive me.
And thanks.

Prolong - Sunday May 10, 2009 - 19:57

DOZERs are Builder/Porters

Go to top

 

"One site to rule them all, one site to find them,
one site to host them all, and on the network bind them."

 
16:56:00