Главная » Статьи » Моддинг » Коддинг » Добавление отряда пауков Мордору в BFME1

Добавление отряда пауков Мордору в BFME1

 

Необходимые программы: Битва за Средиземье, FinalBig (или любой другой .big-редактор)

 

1. Создание юнита MordorSpider

Для начала, переходим по пути data\ini\object\evilfaction\evilfactionunits.ini, где находятся иники отдельных юнитов "злых" фракций, и в конец файла вставляем следующий код:

Код
;-----------------------------------------------------------------
Object MordorSpider
    ; *** ART Parameters ***
    
    ButtonImage = UPNeutral_Shelob
    SelectPortrait = UPNeutral_Shelob
    
    Draw = W3DHordeModelDraw ModuleTag_01

 

        DefaultModelConditionState
            Model               = MUGntSpdr_SKN
            Skeleton            = MUGntSpdr_SKL
        End
        
        WadingParticleSys = EntRipples

        OkToChangeModelColor = Yes        
        
        StaticModelLODMode = Yes
        ; specify options for static LODs
        LodOptions    = LOW
            AllowMultipleModels        =    ALLOW_MULTIPLE_MODELS_LOW
            MaxRandomTextures        =    MAX_RANDOM_TEXTURES_LOW
            MaxRandomAnimations        =    MAX_RANDOM_ANIMATIONS_LOW
            MaxAnimFrameDelta        =    MAX_ANIM_FRAME_DELTA_LOW
        End
        
        LodOptions    = MEDIUM
            AllowMultipleModels        =    ALLOW_MULTIPLE_MODELS_MED
            MaxRandomTextures        =    MAX_RANDOM_TEXTURES_MED
            MaxRandomAnimations        =    MAX_RANDOM_ANIMATIONS_MED
            MaxAnimFrameDelta        =    MAX_ANIM_FRAME_DELTA_MED
        End
        
        LodOptions    = HIGH
            AllowMultipleModels        =    ALLOW_MULTIPLE_MODELS_HIGH
            MaxRandomTextures        =    MAX_RANDOM_TEXTURES_HIGH
            MaxRandomAnimations        =    MAX_RANDOM_ANIMATIONS_HIGH
            MaxAnimFrameDelta        =    MAX_ANIM_FRAME_DELTA_HIGH
        End        

        IdleAnimationState
            Animation           = IDLA
                AnimationName    = MUGntSpdr_IDLA
                AnimationMode    = ONCE
            End
            Flags               = RANDOMSTART
        End

        AnimationState            = DYING
            Animation           = DIEA
                AnimationName    = MUGntSpdr_DIEA
                AnimationMode    = ONCE
            End
        End
        
        AnimationState            =  FIRING_OR_PREATTACK_A
            Animation                        = ATKA
                AnimationName                = MUGntSpdr_ATKA
                AnimationMode                = ONCE
                AnimationSpeedFactorRange    = 0.8 1.25
            End
        End

        AnimationState            = TURN_LEFT
            StateName            = Turn
            Animation            = Walk
                AnimationName    = MUGntSpdr_TRNL
                AnimationMode    = LOOP
            End
        End
        
        AnimationState            = TURN_RIGHT
            StateName            = Turn
            Animation            = Walk
                AnimationName    = MUGntSpdr_TRNR
                AnimationMode    = LOOP
            End
        End
        
        AnimationState            = MOVING
            Animation            = RUNA
                AnimationName    = MUGntSpdr_RUNA
                AnimationMode    = LOOP
            End
        End

        AnimationState            = MOVING BACKING_UP
            Animation           = BAKA
                AnimationName    = MUGntSpdr_BAKA
                AnimationMode    = LOOP
            End
            Flags               = RANDOMSTART
        End
        
        AnimationState            = STUNNED_FLAILING
            Animation           = StunFlail
                AnimationName    = MUGntSpdr_FLYA
                AnimationMode    = LOOP
            End
            Flags               = RANDOMSTART
        End
        
        AnimationState            = STUNNED
            Animation            = Stun
                AnimationName    = MUGntSpdr_LNDA
                AnimationMode    = ONCE
            End
        End
        
        AnimationState            = STUNNED_STANDING_UP
            Animation           = Stun
                AnimationName    = MUGntSpdr_GTPA
                AnimationMode    = ONCE
            End
        End
        
        AnimationState            = HIT_REACTION HIT_LEVEL_1
            Animation            = Hit_Level_1_a
                AnimationName    = MUGntSpdr_HITA
                AnimationMode    = ONCE
            End
        End
        
        AnimationState            = SELECTED
            Animation            = Selected
                AnimationName    = MUGntSpdr_ATNA
                AnimationMode    = ONCE
            End
        End
                
    End
    
    ; ***DESIGN parameters ***
    Side                = Mordor
    EditorSorting        = UNIT
    ThreatLevel            = 1.0
      VisionRange = VISION_STANDARD_HORSE
      ShroudClearingRange = SHROUD_CLEAR_STANDARD
    BountyValue = ISENGARD_WARGRIDER_BOUNTY_VALUE    
    DisplayName            = OBJECT:Spider
    CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
    
    CommandSet = GenericCommandSet
    CommandPoints = 4    

    WeaponSet
        Conditions            = None
        Weapon                = PRIMARY    MinorSpiderMandibles
        AutoChooseSources    = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
    End

    ArmorSet
        Conditions      = None
        Armor           = MinorSpiderArmor
        DamageFX        = NormalDamageFX
    End


    ; *** AUDIO Parameters ***;

    VoiceAmbushed        = SpiderVoxHurt        ;ShelobVoiceDie
    VoiceAttack            = ShelobVoiceAttack
    VoiceGuard            = ShelobVoiceMove
    VoiceAttackCharge        = ShelobVoiceAttack
    VoiceAttackMachine    = ShelobVoiceAttack
    VoiceAttackStructure    = ShelobVoiceAttack
    VoiceCreated        = ShelobVoiceSelect
    VoiceFear            = SpiderVoxHurt
    VoiceFullyCreated     = ShelobVoiceSelect
    VoiceMove            = ShelobVoiceMove
    VoiceMoveToCamp        = ShelobVoiceMove
    VoiceMoveWhileAttacking    = ShelobVoiceMove
    VoicePriority        = 50
    VoiceRetreatToCastle    = ShelobVoiceDie
    VoiceSelect            = ShelobVoiceSelect
    VoiceSelectBattle     = ShelobVoiceSelect

    SoundAmbient        = SpiderFoleyAmbientLoop
    SoundAmbient2        = SpiderVoxSinglesLoop
    SoundImpact            = ImpactHorse
    SoundMoveLoop        = SpiderMoveLoop

    ;UnitSpecificSounds
    ;End

    ;EvaEventDamagedOwner = UnitUnderAttack        ;Eva event to trigger when unit is damaged


    ; *** ENGINEERING Parameters ***

    RadarPriority    = UNIT
    ThingClass      = CAVALRY_UNIT    
    KindOf            = PRELOAD CAVALRY ENVIRONMENT SCORE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT SELECTABLE
    
    Body = ActiveBody ModuleTag_Body
        MaxHealth = 200
        MaxHealthDamaged = 75
    End    
    
    Behavior = AIUpdateInterface ModuleTag_03
        AutoAcquireEnemiesWhenIdle    = Yes ATTACK_BUILDINGS
        MoodAttackCheckRate            = 500
        AILuaEventsList                = ShelobFunctions
        MaxCowerTime                = 7500
        MinCowerTime                = 5000
    End
    
    Behavior = EmotionTrackerUpdate    Module_EmotionTracker
        AddEmotion    =    Terror_Base
        AddEmotion    =    OVERRIDE UncontrollableFear_Base_Evil
            Duration            =    7000    
        End
        AddEmotion    =    Alert_Base
    End

    LocomotorSet
        Locomotor     = ShelobLocomotor
        Condition     = SET_NORMAL
        Speed         = 50
    End
    
    Behavior = PhysicsBehavior ModuleTag_04
        GravityMult = 1.0
    End
    
    Behavior = SlowDeathBehavior ModuleTag_05
        DeathTypes            = ALL
        SinkDelay            = 3000
        SinkRate            = 6.5     ; in Dist/Sec
        DestructionDelay        = 8000
        FX                = INITIAL FX_SmallSpiderDie
        Sound                = INITIAL SpiderVoxDie        ;ShelobVoiceDie
    End
    
    Behavior = HordeMemberCollide ModuleTag_HMC
        ;nothing
    End    
    
    Behavior = SquishCollide ModuleTag_06
        ;nothing
    End
    
;
    Behavior = AutoHealBehavior ModuleTag_WargHealing
        StartsActive = Yes
        HealingAmount = 4
        HealingDelay = 1500
        StartHealingDelay = 22000
        HealOnlyIfNotInCombat = Yes
    End    
    
    Geometry            = CYLINDER
    GeometryMajorRadius = 10.0
    GeometryMinorRadius = 10.0
    GeometryHeight        = 30.0
    GeometryIsSmall        = No

    Shadow = SHADOW_DECAL ;SHADOW_VOLUME
    ShadowSizeX = 22
    ShadowSizeY = 18
    ShadowOffsetX = -1
    ShadowTexture = ShadowSpider2    ;ShadowI
End


ChildObject MordorSpiderBanner MordorSpider
    Scale = 1.2
    Behavior = BannerCarrierUpdate BannerCarrierUpdateModuleTag
        IdleSpawnRate            = 10000                            ; spawn a new member every n seconds when idle (in miliseconds)
        MeleeFreeUnitSpawnTime        = 20000                            ; n miliseconds units must not have been fighting to be able to spawn units when idle (in miliseconds)
        DiedRespawnTime            = 10000                            ; how much time must pass after Banner Carrier dies before horde can spawn another
        MeleeFreeBannerReSpawnTime    = 20000                            ; how much time since horde has been fighting before a new Banner Carrier can be respawned
        
        BannerMorphFX        = FX_BannerCarrierMorph                    ; name of particle FX to use when the BannerCarrier morphs into the dest unit type
        UnitSpawnFX            = FX_BannerCarrierSpawnUnit                ; name of particle FX to use when the BannerCarrier spawns a new unit
    End
End

Этим действием мы добавили одиночный объект - паука (MordorSpider). За основу я взял пауков из оригинала - MinorSpider (data\ini\object\neutral\giantspider.ini), - и немного откорректировал нужные параметры:

  • изменил тип блока отрисовки на W3DHordeModelDraw (больше подходит для юнитов в отряде, чем W3DScriptedModelDraw);
  • добавил иконку (ButtonImage) и портрет (SelectPortrait)
    [в оригинале у обычных пауков нет своих артов, поэтому используются арты Шелоб];
  • указал дефолтной фракцией Мордор (Side = Mordor);
  • прописал ShroudClearingRange (отвечает за дальность рассеивания тумана войны) и BountyValue (сколько опыта/денег капает врагу от убийства этого юнита);
  • добавил CommandSet со значением GenericCommandSet (дефолтный коммандсет без абилок);
  • установил количество занимаемых командных очков на уровне 4 единиц (CommandPoints = 4);
  • в KindOf заменил MONSTER на CAVALRY (условно юнит относится к кавалерийскому типу);
  • поднял шкалу здоровья со 100 до 200 единиц (MaxHealth = 200);
  • добавил блок HordeMemberCollide (требуется для юнитов в отряде);
  • напоследок, дал паукам автолечение (AutoHealBehavior).

Помимо непосредственно MordorSpider в вышеуказанном куске кода можно также заметить MordorSpiderBanner - как можно догадаться, это знаменосец для отряда пауков. Представлен он в виде ChildObject (дочернего объекта) основного объекта MordorSpider.

Баннер имеет лишь два отличия от родительского объекта:

  • наличие блока BannerCarrierUpdate, который отвечает за респаун погибших в отряде воинов;
  • увеличенный размер (Scale = 1.2) для визуальной дифференциации с основным отрядом.

 

2. Создание отряда MordorSpiderHorde, состоящего из юнитов MordorSpider

Итак, идём дальше. Теперь добавляем уже отряд пауков. Переходим в data\ini\object\hordes\evilfactionhordes.ini и в конец файла вставляем этот кусок:

Код
;////////////////////////////////////////////////////////////////////////////////
Object MordorSpiderHorde

 

      ; This is required for garrisoned objects - please put in all objects.
    ButtonImage = UPNeutral_Shelob
    SelectPortrait = UPNeutral_Shelob

    Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
        DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR EMOTION_LOOK_TO_SKY
        DefaultModelConditionState
            Model = None ;InvisHrdeTmp5x1
        End
        ModelConditionState = HORDE_EMPTY
            Model = None
        End        
        ModelConditionState = WORLD_BUILDER
            Model = HordeMarkIUWar
        End
    End
    
    Side = Mordor
    EditorSorting = UNIT
    EmotionRange = 240
    DisplayName = OBJECT:Spider
    
    WeaponSet
        Conditions = None
        Weapon        = PRIMARY    NormalMeleeHordeRangefinder        ; Spear
    End


    ; *** AUDIO Parameters ***;
    ; Note: Don't put voice parameters here -- they will be ignored. Voice play requests
    ; are always passed through to members


    BuildCost = 660            
    BuildTime = 40            
      VisionRange = VISION_STANDARD_HORSE
      ShroudClearingRange = SHROUD_CLEAR_STANDARD        
    CommandPoints = 20
    
    CommandSet = GenericCommandSet
          
    FormationWidth = 2 ; Width it occupies in formations. Current choices are 1 or 2.
    FormationDepth = 1 ; Depth it occupies in formations. Current choices are 1 or 2.
    
    CrushableLevel = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
    CrusherLevel = 0 ;What can I crush?: 0 = small animals, 1 = infantry, 2 = trees, 3 = vehicles
        
    TransportSlotCount = 1
    KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAVALRY HORDE MELEE_HORDE ARMY_SUMMARY ;UNATTACKABLE
    
    Body = ImmortalBody ModuleTag_ImmortalBody
        MaxHealth = 1
    End
    
    Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate
        AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
        MoodAttackCheckRate        = 500
        MaxCowerTime                =    5000
        MinCowerTime                =    3000
        AttackPriority                = AttackPriority_Cavalry
    End

    Behavior = EmotionTrackerUpdate    Module_EmotionTracker
        TauntAndPointDistance        =    INFANTRY_TAUNT_POINT_RADIUS        ; max distance to taunted/pointed objet
        TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
        TauntAndPointExcluded        =    NONE
        AfraidOf            =    NONE +RohanOathbreakerHordeSmall +GondorGwaihir +RohanTreeBerd +RohanEntFir +RohanEntAsh +RohanEntBirch +MordorFellBeast +MordorWitchKingOnFellBeast +MordorBalrog +MordorCaveTroll +MordorMountainTroll +MordorDrummerTroll +MordorMumakil ;Must be SCARY kindof as well.
        AlwaysAfraidOf                =    NONE +MordorBalrog +RohanOathbreaker; +MordorWitchKing +MordorWitchKingOnFellBeast
        PointAt                =    NONE +GondorGwaihir
        HeroScanDistance        =    150
        FearScanDistance        =    CAVALRY_FEAR_SCAN_RADIUS ;250

        AddEmotion    =    Terror_Base
        AddEmotion    =    Doom_Base
        AddEmotion    =    UncontrollableFear_Base_Evil
        AddEmotion    =    FearIdle_Base
        AddEmotion    =    FearBusy_Base
        AddEmotion    =    Point_Base
        AddEmotion    =    Taunt_Base    
        AddEmotion    =    CheerIdle_Base
        AddEmotion    =    CheerBusy_Base
        AddEmotion    =    HeroCheerIdle_Base
        AddEmotion    =    HeroCheerBusy_Base
        AddEmotion    =    Alert_Base
    End    

    Behavior = HorseHordeContain ModuleTag_HordeContain
        ObjectStatusOfContained =
        InitialPayload = MordorSpider 5
        Slots = 5
        PassengerFilter = NONE +CAVALRY +MordorSpiderBanner
        ShowPips = No
        RandomOffset = X:15 Y:4
        
        ; Banner Carrier info        
        BannerCarriersAllowed    = MordorSpiderBanner                                        ; types of units that are allowed as banner carriers
        BannerCarrierPosition    = UnitType:MordorSpider    Pos:X:40.0 Y:0.0        ; (DEFAULT) position of banner carrier
        
        RankInfo = RankNumber:1 UnitType:MordorSpider Position:X:0 Y:0        Position:X:30 Y:20        Position:X:30 Y:-20        Position:X:-30 Y:-20        Position:X:-30 Y:20

        ThisFormationIsTheMainFormation = Yes    ;Used to determine which armorset to use (and anything else we want!)
                
        RanksToReleaseWhenAttacking = 1
        MeleeAttackLeashDistance = 25; How far the hordes can move from the center of the horde when melee attacking.        
    End

    Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
        GravityMult = 1.0
    End
    
    LocomotorSet
        Locomotor     = ShelobLocomotor
        Condition     = SET_NORMAL
        Speed         = 50
    End

    Behavior = ProductionUpdate ProductionUpdateModuleTag
        GiveNoXP = Yes
    End
    
    Geometry = BOX
    GeometryMajorRadius = 12.0
    GeometryMinorRadius = 24.0
    GeometryHeight = 20.0
    GeometryIsSmall = No
End

За основу кода отряда пауков я брал код отряда варгов Изенгарда, подробно описывать изменения на этот раз не буду - если интересно, можете взять оригинальный отряд варгов и сравнить с этим отрядом пауков.

 

3. Создание кнопки строительства и её добавление в яму орков

Далее открываем директорию data\ini\commandbutton.ini, и также в самый низ прописываем это:

Код
CommandButton Command_ConstructMordorSpiderHorde
    Command                = UNIT_BUILD
    Object                = MordorSpiderHorde
    NeededUpgrade       = Upgrade_StructureLevel2
    Options                = CANCELABLE
    TextLabel            = OBJECT:Spider
    ButtonImage            = UPNeutral_Shelob
    ButtonBorderType    = BUILD ; Identifier for the User as to what kind of button this is
    DescriptLabel        = CONTROLBAR:ToolTipBuildRohanRohirrimArcherHorde
    Radial                = Yes
    InPalantir               = Yes
    ShowProductionCount    = Yes
End

Вкратце пройдусь по нужным нам строкам и их значениям из этого блока:

  • в Object указываем объект постройки (найма); в нашем случае это MordorSpiderHorde, который мы создавали на втором шаге;
  • параметр NeededUpgrade нужен для того чтобы разрешить использовать Button только после активации нужного апгрейда. В нашем варианте это нужно для того чтобы пауков можно было нанять только со 2-го уровня ямы орков (на втором уровне яма получает апгрейд Upgrade_StructureLevel2; прописывается этот грейд в data\ini\experiencelevels.ini, т.е. искать подобную информацию следует там);
  • TextLabel и DescriptLabel: название и описание кнопки соответственно. Поскольку в оригинале не предусмотрены текстовые строки (text string) для отряда пауков, я подобрал более-менее подходящие из тех, что есть.
    Конечно, существует возможность прописать свой текст. Как это сделать, смотрите здесь.
  • ButtonImage - иконка. Та же иконка UPNeutral_Shelob, которую мы прописывали для юнита и отряда.

 

Теперь переходим в data\ini\commandset.ini, где ищем MordorOrcPitCommandSet (для вызова поиска, если что, используем комбинацию клавиш Ctrl+F). После того как нашли искомый блок, заменяем его на обновленный:

Код
CommandSet MordorOrcPitCommandSet
  1 = Command_ConstructMordorOrcFighterHorde
  2 = Command_ConstructMordorOrcArcherHorde
  3 = Command_ConstructMordorSpiderHorde
  4 = Command_PurchaseTechnologyMordorFireArrows
  5 = Command_PurchaseTechnologyMordorBasicTraining
  6    = Command_Sell
End

Как можно догадаться, по сравнению с оригиналом была просто добавлена строчка с кнопкой Command_ConstructMordorSpiderHorde (которую мы только что прописывали в commandbutton.ini, да-да!).

 

4. Внесение созданных объектов MordorSpider, MordorSpiderBanner и MordorSpiderHorde в листы опыта (ExperienceLevels)

Последнее, что осталось, - прописать созданные на первом и втором этапе объекты в data\ini\experiencelevels.ini, чтобы оные объекты могли получать опыт и, соответственно, повышать уровни.

Заходим в data\ini\experiencelevels.ini и ищем (Ctrl+F) там EvilEliteLevel1. После того как перешли к искомому, видим череду блоков от EvilEliteLevel1 до EvilEliteLevel10. Как можно понять, это и есть 10 уровней, в которые нам надо прописать наши объекты. Делается это очень просто: в каждый блок от EvilEliteLevel1 до EvilEliteLevel10 в строку TargetNames надо добавить три наименования: MordorSpider, MordorSpiderBanner и MordorSpiderHorde.

Таким образом, после прописывания нужных объектов, строки TargetNames будут выглядеть так:

Код
TargetNames = MordorSpider MordorSpiderBanner MordorSpiderHorde IsengardWargRider  IsengardWargRiderHorde IsengardWargRiderHordeLineFormation  MordorEasterling MordorEasterlingHorde MordorEasterlingPorcupineHorde IsengardUrukCrossbow  IsengardUrukCrossbowHorde IsengardUrukCrossbowHordeWedgeFormation  IsengardCrossbowPikemanComboHorde IsengardFighterCrossbowComboHorde

 


На этом всё, после проделанных действий у Мордора в яме орков второго уровня можно нанимать отряд пауков за 660 золотых, который будет строиться 40 секунд.


Категория: Коддинг | Добавил: SauronGreat (30.05.2019)
Просмотров: 81 | Теги: кодинг, Мордор, добавление, BfME1, шелоб, Пауки, ini.big, FinalBIG, юнита | Рейтинг: 5.0/1

Комментарии (0):
avatar