Modding Questions
#21
Posted 28 September 2009 - 04:54 PM
#22
Posted 28 September 2009 - 05:38 PM
Basically I've decided to try and give each faction in RJ a unique ring hero, my brother suggested giving Angmar a great troll. So I figured I would try and add a troll that was large and would have a blue mist coming from it. Perhaps considering it either King of the Trolls or a troll spirit or something.
#23
Posted 28 September 2009 - 08:33 PM
;//------------------------------------------------------------------------------
;// based on Wild Half-Troll Marauder
Object KingofTrolls
;// *** ART Parameters ***
;// This is required for garrisoned objects - please put in all objects.
ButtonImage = KUSnowTrollIcon
SelectPortrait = KUSnowTrollPortrait
DescriptionStrategic = CONTROLBAR:LW_ToolTip_KingofTrolls
Draw = W3DHordeModelDraw ModuleTag_01
OkToChangeModelColor = No
StaticModelLODMode = Yes
;// specify options for static LODs
LodOptions = LOW
AllowMultipleModels = RJ_ALLOW_MULTIPLE_MODELS_LOW
MaxRandomTextures = RJ_MAX_RANDOM_TEXTURES_LOW
MaxRandomAnimations = RJ_MAX_RANDOM_ANIMATIONS_LOW
MaxAnimFrameDelta = RJ_MAX_ANIM_FRAME_DELTA_LOW
End
LodOptions = MEDIUM
AllowMultipleModels = RJ_ALLOW_MULTIPLE_MODELS_MED
MaxRandomTextures = RJ_MAX_RANDOM_TEXTURES_MED
MaxRandomAnimations = RJ_MAX_RANDOM_ANIMATIONS_MED
MaxAnimFrameDelta = RJ_MAX_ANIM_FRAME_DELTA_MED
End
LodOptions = HIGH
AllowMultipleModels = RJ_ALLOW_MULTIPLE_MODELS_HIGH
MaxRandomTextures = RJ_MAX_RANDOM_TEXTURES_HIGH
MaxRandomAnimations = RJ_MAX_RANDOM_ANIMATIONS_HIGH
MaxAnimFrameDelta = RJ_MAX_ANIM_FRAME_DELTA_HIGH
End
DefaultModelConditionState
Model = KUSnTroll_SKN
Skeleton = KUSnTroll_SKL
WeaponLaunchBone = PRIMARY Firepoint
;Model = HordeMarkIUPik ;MuCavTroll_SKN
ParticleSysBone = None SoWolf_Ambient_fog01
ParticleSysBone = None SoWolf_Ambient_Embers01
ParticleSysBone = "Bip L Finger2" SoWolf_Ambient_fog FollowBone:YES ;"BIP L HAND"
ParticleSysBone = "Bip L Finger2" SoWolf_Ambient_Embers FollowBone:YES
ParticleSysBone = "Bip R Finger2" SoWolf_Ambient_fog FollowBone:YES ;"BIP R HAND"
ParticleSysBone = "Bip R Finger2" SoWolf_Ambient_Embers FollowBone:YES
End
ModelConditionState = COMING_OUT_OF_FACTORY
Model = KUSnTroll_SKN
End
IdleAnimationState
StateName = Bored
Animation = IDLA
AnimationName = KUSnTroll_IDLB
AnimationMode = ONCE
AnimationBlendTime = 15
AnimationPriority = 10
End
Animation = IDLA
AnimationName = KUSnTroll_IDLC
AnimationMode = ONCE
AnimationBlendTime = 15
AnimationPriority = 1
End
Flags = RANDOMSTART
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Planted" then CurDrawableSetTransitionAnimState("Trans_Down_To_Up") return end
// if Prev == "Selected" or Prev == "Trans_Down_To_Up" then CurDrawableSetTransitionAnimState("TRANS_SB_Normal") end
EndScript
End
AnimationState = PASSENGER
Animation = Grabbed
AnimationName = KUSnTroll_FLYA
AnimationMode = LOOP
End
End
AnimationState = FREEFALL
StateName = STATE_Falling
Animation = Falling
AnimationName = KUSnTroll_FLYA
AnimationMode = LOOP
AnimationBlendTime = 10
End
End
;--------------------normal animations---------------------------
; --- stunned anims --- ;
AnimationState = STUNNED_FLAILING
Animation = Flying_1
AnimationName = KUSnTroll_FLYA
AnimationMode = LOOP
End
Flags = MAINTAIN_FRAME_ACROSS_STATES2
End
AnimationState = DYING SPLATTED
Animation = Splat
AnimationName = KUSnTroll_LNDA
AnimationMode = ONCE
End
End
; --- death anims --- ;
AnimationState = DYING AFLAME
Animation = Flaming_Death
AnimationName = KUSnTroll_RUNA
AnimationMode = ONCE
End
End
AnimationState = DYING
Animation = Dying_2
AnimationName = KUSnTroll_DIEA
AnimationMode = ONCE
End
End
; AnimationState = DYING
; Animation = Dying_2
; AnimationName = KUSnTroll_SKL.KUSnTroll_DTHA
; AnimationMode = ONCE
; End
; Animation = Dying_2
; AnimationName = KUSnTroll_SKL.KUSnTroll_DTHB
; AnimationMode = ONCE
; End
; End
AnimationState = STUNNED_STANDING_UP
Animation = Standing_Back_Up
AnimationName = KUSnTroll_GTPA
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
End
AnimationState = STUNNED
StateName = STATE_Stunned
Animation = Splattered_On_Ground
AnimationName = KUSnTroll_LNDA
AnimationMode = ONCE
End
End
AnimationState = BURNINGDEATH
Animation
AnimationName = KUSnTroll_MFDA
AnimationMode = LOOP
Distance = 120
End
End
AnimationState = PARALYZED
Animation
AnimationName = KUSnTroll_IDLA
AnimationMode = LOOP
End
End
AnimationState = COMING_OUT_OF_FACTORY
Animation = Being_Built
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
AnimationBlendTime = 0
End
End
; AnimationState = MOVING FIRING_OR_PREATTACK_A
; Animation = TrotAndFire
; AnimationName = KUSnTroll_SKL.KUSnTroll_ATRA
; AnimationMode = LOOP
; End
; Flags = RANDOMSTART
; ;ParticleSysBone = None InfantryDustTrails
; End
AnimationState = MOVING BACKING_UP
Animation = Moving_Back
AnimationName = KUSnTroll_BAKA
AnimationMode = LOOP
End
End
AnimationState = MOVING EMOTION_AFRAID
Animation = Moving_1
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
End
Flags = MAINTAIN_FRAME_ACROSS_STATES
ParticleSysBone = None InfantryDustTrails
End
AnimationState = MOVING EMOTION_ALERT
Animation = Moving_1
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
End
Flags = MAINTAIN_FRAME_ACROSS_STATES
ParticleSysBone = None InfantryDustTrails
End
AnimationState = MOVING ATTACKING
Animation = Moving_1
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
End
Flags = MAINTAIN_FRAME_ACROSS_STATES
ParticleSysBone = None InfantryDustTrails
End
AnimationState = MOVING ENGAGED
Animation = Moving_1
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
End
Flags = MAINTAIN_FRAME_ACROSS_STATES
ParticleSysBone = None InfantryDustTrails
End
AnimationState = MOVING
Flags = RANDOMSTART
Animation = Moving_1
AnimationName = KUSnTroll_RUNA
AnimationMode = LOOP
End
ParticleSysBone = None InfantryDustTrails
End
; --- Attacking --- ;
AnimationState = FIRING_OR_PREATTACK_A
Animation
AnimationName = KUSnTroll_ATKA
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation
AnimationName = KUSnTroll_ATKB
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation
AnimationName = KUSnTroll_ATKC
AnimationMode = ONCE
UseWeaponTiming = Yes
End
End
; --- emotions --- ;
AnimationState = WAR_CHANT
Animation = Chant
AnimationName = KUSnTroll_IDLA
AnimationMode = LOOP
End
End
AnimationState = EMOTION_AFRAID
Animation = FERA
AnimationName = KUSnTroll_FERA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = EMOTION_CELEBRATING
Animation = CHRA
AnimationName = KUSnTroll_CHRA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = EMOTION_TAUNTING
Animation
AnimationName = KUSnTroll_TNTA
AnimationMode = LOOP
End
Animation
AnimationName = KUSnTroll_SKL.KUSnTroll_TNTB
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = EMOTION_POINTING
Animation = Pointing1
AnimationName = KUSnTroll_CHRA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = EMOTION_ALERT
Animation = ALERT
AnimationName = KUSnTroll_IDLA
AnimationMode = LOOP
End
Flags = RESTART_ANIM_WHEN_COMPLETE MAINTAIN_FRAME_ACROSS_STATES2
; BeginScript
; Prev = CurDrawablePrevAnimationState()
; if Prev == "PikeDown" then CurDrawableSetTransitionAnimState("Trans_Down_To_Up") return end
; EndScript
End
; AnimationState = ATTACKING
; Animation = ALERT
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLE
; AnimationMode = LOOP
; End
; Flags = RESTART_ANIM_WHEN_COMPLETE MAINTAIN_FRAME_ACROSS_STATES2
; BeginScript
; Prev = CurDrawablePrevAnimationState()
; if Prev == "PikeDown" then CurDrawableSetTransitionAnimState("Trans_Down_To_Up") return end
; EndScript
; End
; AnimationState = ENGAGED
; Animation = ALERT
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLE
; AnimationMode = LOOP
; End
; Flags = RESTART_ANIM_WHEN_COMPLETE MAINTAIN_FRAME_ACROSS_STATES2
; BeginScript
; Prev = CurDrawablePrevAnimationState()
; if Prev == "PikeDown" then CurDrawableSetTransitionAnimState("Trans_Down_To_Up") return end
; EndScript
; End
; AnimationState = JUST_BUILT
; Animation = Being_Built
; AnimationName = KUSnTroll_SKL.KUSnTroll_BLDA
; AnimationMode = ONCE
; AnimationBlendTime = 0
; End
; End
AnimationState = RAISING_FLAG
Animation = CHRA
AnimationName = KUSnTroll_CHRA
AnimationMode = LOOP
End
End
AnimationState = SELECTED
Animation = Selected_Loop
AnimationName = KUSnTroll_ATNB
AnimationMode = LOOP
AnimationBlendTime = 10
End
StateName = Selected
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Planted" then CurDrawableSetTransitionAnimState("Trans_Down_To_Up") return end
if Prev == "Bored" then CurDrawableSetTransitionAnimState("TRANS_BS_Normal") end
EndScript
Flags = RESTART_ANIM_WHEN_COMPLETE
End
; --- transition states --- ;
TransitionState = Trans_Down_To_Up
Animation = Transition
AnimationName = KUSnTroll_PLTC
AnimationMode = ONCE
End
End
TransitionState = Trans_Up_To_Down
Animation = Transition
AnimationName = KUSnTroll_PLTA
AnimationMode = ONCE
End
End
; TransitionState = TRANS_MovingToDown_Alt
; Animation = Transition
; AnimationName = KUSnTroll_SKL.KUSnTroll_PLTC
; AnimationMode = ONCE
; End
; End
; TransitionState = TRANS_SR_Normal
; Animation = Transition
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLF
; AnimationMode = ONCE
; End
; End
; TransitionState = TRANS_RS_Normal
; Animation = Transition
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLF
; AnimationMode = ONCE_BACKWARDS
; End
; Flags = START_FRAME_LAST
; End
TransitionState = TRANS_BS_Normal
Animation = Transition
AnimationName = KUSnTroll_ATNA
AnimationMode = ONCE
AnimationBlendTime = 20
AnimationMustCompleteBlend = yes
End
End
TransitionState = TRANS_SB_Normal
Animation = Transition
AnimationName = KUSnTroll_IDLA
AnimationMode = ONCE
AnimationBlendTime = 10
AnimationMustCompleteBlend = yes
End
End
; TransitionState = TRANS_BR_Normal
; Animation = Transition
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLF
; AnimationMode = ONCE
; End
; End
; TransitionState = TRANS_RB_Normal
; Animation = Transition
; AnimationName = KUSnTroll_SKL.KUSnTroll_IDLF
; AnimationMode = ONCE_BACKWARDS
; End
; Flags = START_FRAME_LAST
; End
TransitionState = TRANS_SR_Alt
End
TransitionState = TRANS_RS_Alt
End
TransitionState = TRANS_BS_Alt
End
TransitionState = TRANS_SB_Alt
End
TransitionState = TRANS_BR_Alt
End
TransitionState = TRANS_RB_Alt
End
End ;Draw
#include "..\..\..\includes\StunDrawModuleLarge.inc"
; ***DESIGN parameters ***
Side = Angmar
EditorSorting = UNIT
ThreatLevel = 1.0
ThingClass = CHARACTER_UNIT
CommandPoints = 1
TransportSlotCount = RJ_TRANSPORTSLOTCOUNT_UNIT
Scale = 2.0
WeaponSet
Conditions = None
Weapon = PRIMARY RogashWarMace ;AngmarSnowTrollPick ;BALANCE Wild Marauder Weapon
End
ArmorSet
Conditions = None
Armor = ToughHeroArmor
DamageFX = NormalDamageFX
End
ArmorSet
Conditions = PLAYER_UPGRADE
Armor = ToughHeroArmor ;SnowTrollHeavyArmor
DamageFX = NormalDamageFX
End
; This is required so that the build phase lasts as long as the anim.
BuildFadeInOnCreateTime = 0 ; 2.0 ;temporarily set to 0
ShroudClearingRange = RJ_ANGMAR_SNOWTROLL_SHROUD_RANGE
VisionRange = RJ_ANGMAR_SNOWTROLL_VISION_RANGE
VisionSide = 35%
VisionRear = 25%
MaxVisionBonusPercent = 300%
VisionBonusTestRadius = 200
VisionBonusPercentPerFoot = 0.5%
BountyValue = RJ_ANGMAR_ROGASH_BOUNTY_VALUE
DisplayName = OBJECT:KingofTrolls
RecruitText = CONTROLBAR:KingofTrolls
ReviveText = CONTROLBAR:KingofTrollsRevive
Hotkey = CONTROLBAR:KingofTrollsHotkey
CrushableLevel = 3 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 2
CrushWeapon = SnowTrollCrush
MinCrushVelocityPercent = 50% ; Has to be moving at at least 35% of full speed.
CrushDecelerationPercent = 20% ; Lose 20 percent of max velocity when crushing.
CrushKnockback = 40;
CrushZFactor = 1.3;
CommandSet = KingofTrolls ;AngmarSnowTrollCommandSet
; *** AUDIO Parameters ***;
VoiceAttack = TrollVoiceAttack
VoiceAttackCharge = TrollVoiceAttack
VoiceAttackMachine = TrollVoiceAttack
VoiceAttackStructure = TrollVoiceAttack
VoiceCreated = TrollVoiceAttack
VoiceFullyCreated = TrollVoiceAttack
VoiceGuard = TrollVoiceMove
VoiceMove = TrollVoiceMove
VoiceMoveToCamp = TrollVoiceMove
VoiceMoveWhileAttacking = TrollVoiceMove
VoicePriority = 19
VoiceSelect = TrollVoiceSelect
VoiceSelectBattle = TrollVoiceSelect
SoundImpact = ImpactHorse ;TrollDie
UnitSpecificSounds
VoiceEnterUnitEvilMenTransportShip = TrollVoiceMove
VoiceEnterUnitMordorMumakil = TrollVoiceMove
VoiceEnterUnitSlaughterHouse = TrollVoiceMove
VoiceGarrison = TrollVoiceMove
VoiceInitiateCaptureBuilding = TrollVoiceMove
End
CrowdResponseKey = Uruk
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:BodyFallOrc Animation:KUSnTroll_DIEA Frames:72
AnimationSound = Sound:BodyFallOrc Animation:KUSnTroll_LNDA Frames:7
; AnimationSound = Sound:BodyFallOrc Animation:WUMaraud_SKL.WUMaraud_DIEC Frames:56
; AnimationSound = Sound:BodyFallOrc Animation:WUMaraud_SKL.WUMaraud_DTHA Frames:23
; AnimationSound = Sound:BodyFallOrc Animation:WUMaraud_SKL.WUMaraud_DTHB Frames:34
; AnimationSound = Sound:BodyFallOrc Animation:WUMaraud_SKL.WUMaraud_LNDD Frames:2
End
ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo
ModelCondition = Required:EMOTION_CELEBRATING Excluded:DYING ENGAGED Sound:EmotionMarauderCompilationVoxCheerSinglesLoop ;MOVING ATTACKING
ModelCondition = Required:EMOTION_TAUNTING Excluded:DYING ENGAGED Sound:EmotionMarauderCompilationVoxTauntSinglesLoop ;MOVING ATTACKING
ModelCondition = Required:RAISING_FLAG Excluded:DYING ENGAGED Sound:EmotionMarauderCompilationVoxTauntSinglesLoop
End
#include "..\..\..\includes\StandardUnitEvaEvents.inc"
;EvaEventDieOwner = GroupPikemanDie ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
;For deaths you can respawn from, use the DeathFX
Behavior = LargeGroupAudioUpdate ModuleTag_LGAU ;Tie into LargeGroupAudio system
Key = Marauder
End
; *** ENGINEERING Parameters ***
Body = RespawnBody ModuleTag_RespawnBody
CheerRadius = RJ_EMOTION_CHEER_RADIUS
MaxHealth = RJ_ROGASH_HEALTH
PermanentlyKilledByFilter = NONE
DodgePercent = 80%
End
Behavior = RespawnUpdate ModuleTag_RespawnUpdate
DeathAnim = DYING ;Model condition to play when killed-to-respawn
DeathFX = FX_AngmarRogashDieToRespawn ;FXList to play when killed-to-respawn
DeathAnimationTime = 300 ;4100 ;How long DeathAnim will take.
InitialSpawnFX = FX_RogashInitialSpawn
RespawnAnim = LEVELED ;Animation to play when respawning.
RespawnFX = FX_AngmarRogashRespawn ;FXList to play when respawning.
RespawnAnimationTime = 2000 ;Time it takes for respawn to play.
AutoRespawnAtObjectFilter = NONE +CASTLE_KEEP ;Respawn at this location -- and at it's exit production point if possible.
ButtonImage = HIRogash_res
;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
RespawnRules = AutoSpawn:No Cost:1500 Time:60000 Health:100% ;DEFAULT VALUES
RespawnEntry = Level:2 Cost:1500 Time:60000 ; Change from 1.07 ; ;50% cost, 1x buildtime ;For other levels, only override what is different.
RespawnEntry = Level:3 Cost:1500 Time:60000 ; Change from 1.07
RespawnEntry = Level:4 Cost:1500 Time:60000 ; Change from 1.07
RespawnEntry = Level:5 Cost:1950 Time:120000 ; Change from 1.07 ; ;65% cost, 2x buildtime
RespawnEntry = Level:6 Cost:1950 Time:120000 ; Change from 1.07
RespawnEntry = Level:7 Cost:1950 Time:120000 ; Change from 1.07
RespawnEntry = Level:8 Cost:2400 Time:180000 ; Change from 1.07 ; ;80% cost, 3x buildtime
RespawnEntry = Level:9 Cost:2400 Time:180000 ; Change from 1.07
RespawnEntry = Level:10 Cost:2400 Time:180000 ; Change from 1.07
End
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS SCARY PATH_THROUGH_INFANTRY SCORE THROWN_OBJECT HERO ARMY_SUMMARY ATTACK_NEEDS_LINE_OF_SIGHT HEAVY_MELEE_HITTER ; MONSTER - RJ removed
Body = PorcupineFormationBodyModule ModuleTag_porcupineFormation
CheerRadius = RJ_EMOTION_CHEER_RADIUS
MaxHealth = RJ_ROGASH_HEALTH ;RJ_ANGMAR_SNOWTROLL_HEALTH ;BALANCE Isengard Pikeman Health
;MaxHealthDamaged = RJ_ANGMAR_SNOWTROLL_HEALTH_DAMAGED
RecoveryTime = RJ_WILD_MARAUDER_HEALTH_RECOVERY_TIME
BurningDeathBehavior = Yes
BurningDeathFX = FX_InfantryBurningFlame
End
Behavior = EmotionTrackerUpdate Module_EmotionTracker
AddEmotion = Terror_Base
AddEmotion = Doom_Base
AddEmotion = BraceForBeingCrushed_Base
AddEmotion = UncontrollableFear_Base
// 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 = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
AILuaEventsList = IsengardFighterFunctions
MoodAttackCheckRate = 500
HoldGroundCloseRangeDistance = 80
AttackPriority = AttackPriority_Spearman
BurningDeathTime = RJ_BURNINGDEATH_DURATION_INFANTRY
End
LocomotorSet
Locomotor = HumanSpecialChargeLocomotor
Condition = SET_NORMAL
Speed = RJ_NORMAL_MOUNTED_SLOW_MEMBER_SPEED
End
; LocomotorSet
; Locomotor = HumanLocomotor
; Condition = SET_NORMAL
; Speed = RJ_NORMAL_WILD_PIKEMEN_MEMBER_SPEED
; End
LocomotorSet
Locomotor = BurningDeathLocomotorInfantry
Condition = SET_BURNINGDEATH
Speed = 75
End
Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
ShockStunnedTimeLow = 1400 ;msec
ShockStunnedTimeHigh = 2400 ;msec
ShockStandingTime = 2133 ;msec
End
; Doesn't work. We are a melee horde now. So we are just gonna have one weapon
; Behavior = AimWeaponBehavior AimWeaponModuleTag
; AimHighThreshold = 0.15
; End
;--------------------------------SPECIAL ABILITIES--------------------------------------------------
;;;; DARK LORD'S LAMENT SPECIAL ABILITY ;;;;;;;;--------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_Lament
SpecialPowerTemplate = SpecialAbilityDarkLordsLament
TriggeredBy = Upgrade_ObjectLevel10
End
Behavior = SpecialPowerModule ModuleTag_LamentStarter
SpecialPowerTemplate = SpecialAbilityDarkLordsLament
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = BalrogRoar
End
Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_LamentWeaponFireUpdate
SpecialPowerTemplate = SpecialAbilityDarkLordsLament
SpecialWeapon = AngmarDarkLordsLamentWeapon
WhichSpecialWeapon = 2 ; Corresponds to SPECIAL_WEAPON_THREE
StartAbilityRange = 10.0
SkipContinue = Yes
UnpackTime = 1000 ; Trigger on frame 60 (of 100)
PackTime = 2000 ; Remaining 40 frames (of 100)
MustFinishAbility = Yes
End
;----------------------------CHILL SOUL-------------------------------------------------------------------------------------------------------------
Behavior = FireWeaponUpdate ModuleTag_WeaponFiring
FireWeaponNugget
WeaponName = ChillSoulRadiusWeapon
Offset = X:0 Y:0 Z:0
FireDelay = 0
OneShot = No
End
End
;----------------------------------------------------------------------------------------------------------------------------------------
;//--- NEW CHARGE ABILITY ---
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_Charge
SpecialPowerTemplate = SpecialAbilityAngmarCharge
TriggeredBy = Upgrade_ObjectLevel2
End
Behavior = SpecialPowerModule ModuleTag_ChargeStarter
SpecialPowerTemplate = SpecialAbilityAngmarCharge
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
InitiateSound = MarauderVoiceEnterStateAttackCharge
End
#include "..\..\..\includes\AngmarChargeUpdate.inc"
Behavior = SlowDeathBehavior ModuleTag_05
DeathTypes = ALL -KNOCKBACK
SinkDelay = 3000
SinkRate = 4.0 ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL MarauderVoxDieMS
End
Behavior = SquishCollide ModuleTag_06
;nothing
End
Behavior = SlowDeathBehavior ModuleTag_07
; Same as normal death, but no sound (sound already played by SoundImpact = ... )
DeathTypes = NONE +KNOCKBACK
SinkDelay = 3000
SinkRate = 0.40 ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL MarauderVoxDieMS
End
Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
FirstHeight = 24 ;Height of Bezier control points above highest intervening terrain
SecondHeight = 24
FirstPercentIndent = 30% ;Percentage of shot distance control points are placed
SecondPercentIndent = 70%
TumbleRandomly = Yes
CrushStyle = Yes ;I don't detonate, I just hit
DieOnImpact = Yes
BounceCount = 1 ;When I hit the ground, I'll arc again
BounceDistance = 40 ;this far
BounceFirstHeight = 24 ;Height of Bezier control points above highest intervening terrain
BounceSecondHeight = 24
BounceFirstPercentIndent = 20% ;Percentage of shot distance control points are placed
BounceSecondPercentIndent = 80%
GroundHitFX = FX_ThrownRockGroundHit
GroundBounceFX = FX_ThrownRockBounceHit
End
Behavior = HordeMemberCollide ModuleTag_HMC
;nothing
End
;Doesn't work. We are a melee horde now. So we are just gonna have one weapon
;Behavior = DualWeaponBehavior ModuleTag_09
; SwitchWeaponOnCloseRangeDistance = 40
;End
Geometry = CYLINDER
GeometryMajorRadius = 10.0
GeometryMinorRadius = 10.0
GeometryHeight = 30
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 21;
ShadowSizeY = 21;
ShadowTexture = ShadowI;
End
;--------------------------------------------------------------------------------------------------------------------------------------------------
;
; These child objects are used in the cave troll lair.
;
ChildObject SnowTroll_Slaved AngmarSnowTroll
Side = Neutral
EvaEnemyObjectSightedEvent = CaveTrollCreepSighted ; Special event for cave trolls showing up. Helps distinguish the real enemies from random creeps
EvaEnemyObjectSightedAfterRespawnEvent = CaveTrollCreepSighted ; Event to run after the Cave Troll Lair is respawned. WARNING: This INI field only works for "SlavedUpdate.UseSlaverAsControlForEvaObjectSightedEvents = Yes" units
; Should be the same as AngmarSnowTroll except with CREEP.
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS CAVALRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT GRAB_AND_DROP ATTACK_NEEDS_LINE_OF_SIGHT TROLL HORDE_MONSTER CREEP
VisionRange = RJ_CREEP_VISION
DisplayName = OBJECT:GenericSnowTroll
BuildCost = 1;RJ_MORDOR_TROLL_BUILDCOST
BuildTime = 1;RJ_MORDOR_TROLL_BUILDTIME
Behavior = SlavedUpdate ModuleTag_Slave
GuardMaxRange = 250
GuardWanderRange = 80
UseSlaverAsControlForEvaObjectSightedEvents = Yes
End
// Different AIUpdateInterface so it can have different AILuaEventsList
//Behavior = AIUpdateInterface ModuleTag_03
// AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
// AILuaEventsList = CreepTrollFunctions // special version of TrollFunctions that does not start with a rock
// RampageTime = 4470
// AttackPriority = AttackPriority_Cavalry
//End
End
#24
Posted 28 September 2009 - 11:23 PM
He has the correct re-spawn module not Active body module ?
Not sure if the porcupine one should be there
Edited by JUS_SAURON, 28 September 2009 - 11:27 PM.
#25
Posted 28 September 2009 - 11:28 PM
I posted my code above I think I did everything right but obviously i've overlooked something
#26
Posted 28 September 2009 - 11:34 PM
Ive not seen the porcupineformation on a HERO before , I'm searching BFME2 Files tho ...Sorry I'd not know the difference between the latter. The troll works fine up until he dies then he runs about so yeah his experience levels are same as the Witch King. Its only when he dies he just runs on the spot.
I posted my code above I think I did everything right but obviously i've overlooked something
That may be hampering the codes as it contains MaxHEATH =
Which may conflict with the other Respawn body codes
so comment ;;; the porcupine ones and Test
He works fine meaning he can level up and have an EXP RING GLOW thingy when selected ??
#27
Posted 29 September 2009 - 01:17 AM
What do you mean by the EXP RING GLOW? I always test on low graphics so not sure if thats what I am missing. He does level up yes and gains his abilities accordingly.
You don't know the name of the nazguls that were once included in this game? They were a horde of about 6 nazgul that moved together with a black glow coming from them. If you know what I mean do you also know where I can find the ini that controls these units?
EDIT: I think I found what I was looking for "MordorBlackRiderHorde" including in the mordorhordes.ini - I tried adding these as a buildable hero the icon shows up in the fortress however when build nothing appears. Does anyone know how to add in these black riders as a hero unit?
Edited by Black Dragon, 29 September 2009 - 01:22 AM.
#28
Posted 29 September 2009 - 10:48 PM
When you select a unit or a horde , the circle Decal thing that is also selectedWhat do you mean by the EXP RING GLOW? I always test on low graphics so not sure if thats what I am missing. He does level up yes and gains his abilities accordingly.
It looks red / Blue etc ....
I call it the Experience Ring Glow Thingy
as a unit gets it once it has exp codes
You are playing ROTWK right , A mod of this which has a Blackrider Horde ...
In bfme2 there were Blackrider heroes in Mordor
I suggest you play the unmodified game and see which ones you want
as you will have both BFME2 and ROTWK
Ive not seen a Blackrider Horde tho ..they were always single Heroes
#29
Posted 01 October 2009 - 12:37 PM
-The Black Rider horde was added in Rise of the Witch King, the units would build and roam around as a group of 5-6 with black fog coming off them. It may have been a patch which added this feature but it was definitely added. I will look into this to restore these units (I have a cool idea for them)
-I have another question, could anyone tell me what these values do? I searched the forums but its so hard to find relevant information:
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 2
CrushWeapon = RogashCrush
MinCrushVelocityPercent = 100% ; Has to be moving at at least % of full speed.
CrushDecelerationPercent = 100% ; Lose percent of max velocity when crushing.
;
CrushKnockback = 40;
CrushZFactor = 1.0;
I made a new troll hero and its crushing things too easily I would like to tone down the damage. Would the damage be controlled by RogashCrush in the weapon.ini?
#30
Posted 01 October 2009 - 12:45 PM
#31
Posted 01 October 2009 - 09:02 PM
The command button/set are established the icon appears in-game and does activate with the sfx I want. At present (with the code I will post) its set as the Nazgul screech but with the FX of Boromir's horn. So to avoid confusion its screech with a different effect. The ability seems to activiate fine, everything from the sfx to the visual FX plays but there doesn't appear to be any effect for using this ability. Here are my codes:
UNIT.INI
; Fury --------------------------------------------------------------------------------------------------------------------- Behavior = UnpauseSpecialPowerUpgrade ModuleTag_EntFuryUnpause SpecialPowerTemplate = SpecialAbilityScreech;SpecialAbilityEntRoar;SpecialAbilityScreech TriggeredBy = Upgrade_ObjectLevel10 ObeyRechageOnTrigger = Yes End Behavior = SpecialPowerModule ModuleTag_EntFuryStart SpecialPowerTemplate = SpecialAbilityScreech;SpecialAbilityEntRoar;SpecialAbilityScreech UpdateModuleStartsAttack = Yes TriggerFX = FX_BoromirHorn;FX_FearBlast StartsPaused = No End Behavior = SpecialAbilityUpdate ModuleTag_EntFuryUpdate SpecialPowerTemplate = SpecialAbilityScreech;SpecialAbilityEntRoar;SpecialAbilityScreech AwardXPForTriggering = 0 TriggerSound = SpellEntsSummonRoar EffectRange = 200 UnpackTime = 1000 PreparationTime = 1 PackTime = 7000 End ;Behavior = SquishCollide ModuleTag_Squish ;End
COMMANDBUTTON.INI
CommandButton Command_SpecialAbilityEntRoar;added by shawn Command = SPECIAL_POWER SpecialPower = SpecialAbilityScreech;SpecialAbilityEntRoar;SpecialAbilityScreech TextLabel = CONTROLBAR:Screech ButtonImage = HITreebeard;HSNazgulScreech ButtonBorderType = ACTION DescriptLabel = CONTROLBAR:TooltipScreechWitchKing InPalantir = Yes AutoAbility = Yes PresetRange = 150 End
Please can someone help me out here? I don't get what I've done wrong
#32
Posted 01 October 2009 - 09:33 PM
StartsPaused = Noshould be...
StartsPaused = YesI think
#33
Posted 01 October 2009 - 10:05 PM
I'm confused
#34
Posted 01 October 2009 - 10:11 PM
#35
Posted 01 October 2009 - 10:18 PM
#36
Posted 01 October 2009 - 10:31 PM
#37
Posted 01 October 2009 - 10:44 PM
I have done this with a unit of mine before :
This is my patented Ring -Wraith Stare Weapon
It uses a weapon Template that is button activated
It then fires a weapon with a Terror /Fear module
;;; FIRE BALL SPECIAL POWER ;;;
Behavior = SpecialPowerModule ModuleTag_FireballStarter
SpecialPowerTemplate = SpecialAbilitySarumanFireball_TOWER
UpdateModuleStartsAttack = Yes
StartsPaused = No
;InitiateSound = SauronVoiceMoveMS
End
Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_FireballUpdate
SpecialPowerTemplate = SpecialAbilitySarumanFireball_TOWER
;WhichSpecialWeapon = 1
SkipContinue = Yes
UnpackTime = 800
PreparationTime = 1
PersistentPrepTime = 1000
PackTime = 100
AwardXPForTriggering = 0
StartAbilityRange = RING_WRAITH_DEATH_STARE_RANGE
MustFinishAbility = Yes
SpecialWeapon = RingWraith_Death_Stare
End
Behavior = AutoAbilityBehavior ModuleTag_FirBallAutoAbility
SpecialAbility = SpecialAbilitySarumanFireball_TOWER
MaxScanRange = #SUBTRACT( RING_WRAITH_DEATH_STARE_RANGE 25 )
Query = 1 ALL ENEMIES -STRUCTURE NOT_CREEP -NeutralGollum -NeutralGollum_RingHero -NeutralGollum_RingStealer
End
The weapon :
//------------------------------------------------------------------------------
Weapon RingWraith_Death_Stare
AttackRange = RING_WRAITH_DEATH_STARE_RANGE
HitPercentage = 100 //When this weapon is used it will hit exactly 50% of the time.
PreAttackDelay = 1000 //prep time for the unit/structure to fire.
PreAttackType = PER_SHOT //Do the delay each time we attack a new target
FiringDuration = MORDOR_GATEWATCHEREXPANSION_FIRINGDURATION //Duration of the archer firing shot is 500ms.
AcceptableAimDelta = 180.0 //We want to be able to shoot all round, as we cant move.
DelayBetweenShots = 5000
FireFX = FX_NAZGUL_SCREECH
EmotionWeaponNugget
EmotionType = TERROR
Radius = 50
Duration = MORDOR_GATEWATCHEREXPANSION_FEAR_DURATION
SpecialObjectFilter = ALL ENEMIES
End
;There were more stuff but I edited - JUS_SAURON
End
You will probably need a specialpowertemplate
;------------------------------------------------------------------------------
SpecialPower SpecialAbilitySarumanFireball_TOWER
Enum = SPECIAL_SARUMAN_FIRE_BALL
ReloadTime = TOWER_BOLT_RELOAD_TIME
;InitiateAtLocationSound = SarumanFireball
End
Here is the commandbutton ..but you can make your own images etc
CommandButton Command_UNIT_FEAR
Command = SPECIAL_POWER
SpecialPower = SpecialAbilitySarumanFireball_TOWER
Options = NEED_TARGET_ENEMY_OBJECT NEED_TARGET_ALLY_OBJECT NEED_TARGET_NEUTRAL_OBJECT ; CONTEXTMODE_COMMAND
TextLabel = OBJECT:RINGWRAITH_DEATH_STARE
ButtonImage = HSSauronTerribleFury
ButtonBorderType = ACTION
DescriptLabel = OBJECT:STATUE_TIP ;OBJECT:WK_BOLT10_TIP
; UnitSpecificSound =
CursorName = EvilAbilityObj
InvalidCursorName = GenericInvalid
InPalantir = Yes
; Radial = Yes
AutoAbility = Yes
PresetRange = 200.0
End
That should get you going ...
Edited by JUS_SAURON, 01 October 2009 - 10:59 PM.
#38
Posted 01 October 2009 - 10:53 PM
Out of curiosity why must the screen ability be re-done? I did initially make my own screech that included:
1) Its own commandbutton.ini section
2) Power section within the unit.ini
Thanks again
#39
Posted 01 October 2009 - 11:02 PM
Thanks for the help, just to clarify your ability you posted JUS "fires" a weapon (a projectile) that causes the fear effect. Would this work if I just wanted to click a button that initiated the fear effect itself? So instead of firing a projectile upon clicking the button it would initiate? Or is your way of doing it a workaround?
Out of curiosity why must the screen ability be re-done? I did initially make my own screech that included:
1) Its own commandbutton.ini section
2) Power section within the unit.ini
Thanks again
No projectile here
Works EXACTLY like Nazguls Screech
You click the button and units run away ,the button is auto-active too
Why Sauron's Screen won't work - what Ridder Said plus this way is easier ( for me )
FYI : A Projectile Type weapon has Projectilewarhead etc in it ...not this one
Edited by JUS_SAURON, 01 October 2009 - 11:03 PM.
#40
Posted 01 October 2009 - 11:06 PM