Нам понадобится программа FinalBig 0.4.
Нужные нам файлы - ini.big, data1.big (оба находятся в папке игры, для BFME I файл просто data.big).
Итак, для начала объясню принцип действия:
При определенных повреждениях здоровья (указывается определенное значение HP), Боромир переходит в состояние аффекта "angry" (кодовое название разрабов).
При этом используется уникальное оружие (у тролля RAMPAGE) и анимация.
Первым действием пропишем скрипты:
В файле data.big проходим по адресу
data\scripts\scriptevents.xml
Вбиваем в поиск (Ctrl+F) это:
BoromirFunctions
Видим следующее:
<EventList Name="BoromirFunctions" Inherit="BaseScriptFunctions">
<!-- This contains events specific to Boromir -->
<EventHandler EventName="UsingSpecialOne" ScriptFunctionName="RadiateUncontrollableFear" DebugSingleStep="false"/>
</EventList>
Вставляем строку:
<EventHandler EventName="ReallyDamaged" ScriptFunctionName="GoIntoRampage" DebugSingleStep="false"/>
Следующим образом:
<EventList Name="BoromirFunctions" Inherit="BaseScriptFunctions">
<!-- This contains events specific to Boromir -->
<EventHandler EventName="UsingSpecialOne" ScriptFunctionName="RadiateUncontrollableFear" DebugSingleStep="false"/>
<EventHandler EventName="ReallyDamaged" ScriptFunctionName="GoIntoRampage" DebugSingleStep="false"/>
</EventList>
(Перевожу: при реальных повреждениях включается скрипт "GoIntoRampage". А, собственно, этот скрипт устанавливает условие (Condition) WEAPONSET_RAMPAGE).
Боромиру в иник (data>ini>object>goodfaction>units>men>boromir.ini)
Дописываем оружие:
WeaponSet
Conditions = RAMPAGE
Weapon = PRIMARY BoromirLastSword
;AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
И следующие параметры:
;/////// LAST STAND ABILITY //////////////////////////////////
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_LastStand
SpecialPowerTemplate = SpecialAbilityLastStand
TriggeredBy = Upgrade_BoromirLastStand
EndBehavior = SpecialPowerModule ModuleTag_LastStandUpdate
SpecialPowerTemplate = SpecialAbilityLastStand
UpdateModuleStartsAttack = No
StartsPaused = Yes
End
;//////////////////////////////////////////////////////////////////
Блок RespawnBody заменяем на этот:
Body = DelayedDeathBody ModuleTag_DelayedDeathBody ;DelayedDeath is a variation of RespawnBody
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = BOROMIR_HEALTH
MaxHealthReallyDamaged = 100
DelayedDeathTime = 16000 ; Amount of time spent still fighting after being killed
DelayedDeathPrerequisiteUpgrade = Upgrade_BoromirLastStand
InvulnerableFX = FX_BoromirLastStand
PermanentlyKilledByFilter = NONE ;Who kills me permanently?
DodgePercent = HERO_DODGE_PERCENT
End
И добавляем в блок "AIUpdateInterface" эту строку:
RampageTime = 10000
И в анимацию добавляем это:
AnimationState = WEAPONSET_RAMPAGE DYING SPLATTED
Animation
AnimationName = GUBoromir_SKL.GUBoromir_SPCE
AnimationMode = ONCE
End
EndAnimationState = WEAPONSET_RAMPAGE DYING AFLAME
Animation
AnimationName = GUBoromir_SKL.GUBoromir_SPCE
AnimationMode = ONCE
End
EndAnimationState = WEAPONSET_RAMPAGE DYING
Animation
AnimationName = GUBoromir_SKL.GUBoromir_SPCE
AnimationMode = ONCE
End
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED FIRING_OR_PREATTACK_A WEAPONSTATE_CLOSE_RANGE
StateName = LastStandAttacking
Animation = SPCB
AnimationName = GUBoromir_SKL.GUBoromir_SPCB
AnimationMode = ONCE
End
Animation = SPCC
AnimationName = GUBoromir_SKL.GUBoromir_SPCC
AnimationMode = ONCE
End
FXEvent = Frame:25 Name: FX_BladeMasterHitOrient
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED FIRING_OR_PREATTACK_A
StateName = LastStandAttacking
Animation = SPCB
AnimationName = GUBoromir_SKL.GUBoromir_SPCB
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation = SPCC
AnimationName = GUBoromir_SKL.GUBoromir_SPCC
AnimationMode = ONCE
UseWeaponTiming = Yes
EndFXEvent = Frame:25 Name: FX_BladeMasterHitOrient
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED ATTACKING
StateName = LastStand
Animation = ALERT_1
AnimationName = GUBoromir_SKL.GUBoromir_SPCA
AnimationMode = LOOP ;ONCE
End
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED LEVELED ; This state clears itself in 3 seconds
StateName = LastStand
Animation = LevelUp
AnimationName = GUBoromir_SKL.GUBoromir_SPCA
AnimationMode = ONCE
End
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED SELECTED
StateName = LastStand
Animation = ATNB
AnimationName = GUBoromir_SKL.GUBoromir_SPCA
AnimationMode = LOOP
End
EndAnimationState = WEAPONSET_RAMPAGE DAMAGED
StateName = LastStand
Animation = LastStand
AnimationName = GUBoromir_SKL.GUBoromir_SPCA
AnimationMode = LOOP
End
End
Затем двигаемся в data>ini>experiencelevels.ini, находим там GondorBoromir и на желаемый уровень (на нём и будет активироваться способность) добавляем строку:
Upgrades = Upgrade_BoromirLastStand
Далее проходим по адресу data>ini>specialpower.ini, и вставляем туда это:
;------------------------------------------------------------------------------
SpecialPower SpecialAbilityLastStand
Enum = SPECIAL_FAKE_LEADERSHIP_BUTTON
ReloadTime = 1 ; in milliseconds
;PalantirMovie = PalantirAlert_RohanReinforcements
End
И, наконец, в data>ini>weapon.ini:
Weapon BoromirLastSword
AttackRange = #MULTIPLY( STANDARD_MELEE_ATTACK_RANGE 3 )
FireFX = FX_GondorSwordHit
RadiusDamageAffects = ENEMIES NEUTRALS
DelayBetweenShots = 500
ClipSize = 0
ClipReloadTime = 1000
IgnoreLinearFirstTarget = Yes
LinearTarget = X: 0.0 Y: 0.0 T:0
LinearTarget = X: 15.0 Y: 0.0 T:10
LinearTarget = X:-15.0 Y: 0.0 T:10
LinearTarget = X: 11.0 Y: 11.0 T:10
LinearTarget = X:-11.0 Y: 11.0 T:10
LinearTarget = X: 14.0 Y: -5.0 T:10
LinearTarget = X:-14.0 Y: -5.0 T:10
LinearTarget = X: 11.0 Y: 11.0 T:10
LinearTarget = X:-11.0 Y: 11.0 T:10DamageNugget
Damage = 450
Radius = 15.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
DamageSpeed = 500.0
EndMetaImpactNugget
ShockWaveAmount = 40.0
ShockWaveArc = 90.0
ShockWaveRadius = 20.0
ShockWaveTaperOff = 1.0
ShockWaveZMult = 1.200
ShockWaveSpeed = 500.0
End
End
И на нужный уровень вписываем апгрэйд.
В завершении, можно склепать липовую абилку, чтобы была информация о этой способности в игре.