Nun habe ich das Problem
"Diese Einheit kann dieses Upgrade nicht benutzen"
Hier meine Upgrade.ini einträge:
Upgrade Upgrade_TechnologyNoldorArrow
DisplayName = UPGRADE:NoldorArrowUpgrade
Type = PLAYER
BuildCost = ANGMAR_TECH_ICE_ARROWS_BUILDCOST
BuildTime = ANGMAR_TECH_ICE_ARROWS_BUILDTIME
SkirmishAIHeuristic = AI_UPGRADEHEURISTIC_IMPORTANT
ResearchCompleteEvaEvent = UpgradeFlameArrowsReady
End
Upgrade Upgrade_NoldorArrowUnit
DisplayName = UPGRADE:NoldorArrowUpgrade
Tooltip = TOOLTIP:NoldorArrowUpgradeUnit
Type = OBJECT
BuildCost = 400 ;GONDOR_PERSONAL_FIRE_ARROWS_BUILDCOST
BuildTime = GONDOR_PERSONAL_FIRE_ARROWS_BUILDTIME
ResearchSound = UpgradeSilverThornArrows
RequiredObjectFilter = NONE +EregionForge
StrategicIcon = AptStrategicUnitUpgradeArrow
End
Command Button:
CommandButton Command_UpgradeNoldorPfeilUpgradeSchmiede
Command = PLAYER_UPGRADE
Options = OK_FOR_MULTI_SELECT CANCELABLE
Upgrade = Upgrade_TechnologyNoldorArrow
TextLabel = UPGRADE:NoldorArrowUpgrade
ButtonImage = KUTIceArrowUpgradeIcon
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipPurchaseUpgradeRingVilya
Radial = Yes
;InPalantir = Yes
End
CommandButton Command_UpgradeNoldorPfeilUpgradeUnit
Command = OBJECT_UPGRADE
Options = NEED_UPGRADE OK_FOR_MULTI_SELECT CANCELABLE
Upgrade = Upgrade_NoldorArrowUnit
NeededUpgrade = Upgrade_TechnologyNoldorArrow
TextLabel = UPGRADE:NoldorArrowUpgrade
ButtonImage = KUTIceArrowUpgradeIcon
ButtonBorderType = UPGRADE
DescriptLabel = TOOLTIP:NoldorArrowUpgradeUnit
InPalantir = Yes
LacksPrerequisiteLabel = TOOLTIP:NoldorArrowUpgradeUnit
End
Weapon.ini
Weapon NoldorStandartBow ; BALANCE Lorien Archer weapon
AttackRange = 380
RangeBonusMinHeight = EDAIN_ARCHER_RANGEBONUS_MINHEIGHT
RangeBonus = EDAIN_ARCHER_RANGEBONUS
RangeBonusPerFoot = EDAIN_ARCHER_RANGEBONUS_PERFOOT ;#MULTIPLY( 380 .003 )
WeaponSpeed = 450 ; dist/sec
MinWeaponSpeed = 321
MaxWeaponSpeed = 481 ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
FireFX = FX_RohanArcherBowWeapon
ScaleWeaponSpeed = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage = 100 ;When this weapon is used it will hit exactly 50% of the time.
ScatterRadius = 16.0 ;When this weapon misses it can randomly miss by as much as this distance.
AcceptableAimDelta = 20 ; prevent twitchy reaiming in horde on horde
DelayBetweenShots = 0
PreAttackDelay = ROHAN_ELVENWARRIOR_BOW_PREATTACKDELAY
;PreAttackRandomAmount = 200
PreAttackType = PER_POSITION
FiringDuration = 0
OverrideVoiceAttackSound = ElvenWarriorVoiceAttackBow
OverrideVoiceEnterStateAttackSound = ElvenWarriorVoiceEnterStateAttackBow
;OverrideVoiceAttackAirSound = ElvenWarriorVoiceAttackBow
;OverrideVoiceAttackStructureSound = ElvenWarriorVoiceAttackBow
;OverrideVoiceAttackMachineSound = ElvenWarriorVoiceAttackBow
ClipSize = 1
AutoReloadsClip = Yes
AutoReloadWhenIdle = 1
ClipReloadTime = Min:LEGOLAS_RELOADTIME_MIN Max:LEGOLAS_RELOADTIME_MAX
ContinuousFireOne = 0
ContinuousFireCoast = LEGOLAS_RELOADTIME_MAX
AntiAirborneVehicle = Yes
AntiAirborneMonster = Yes
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 = GaladhrimLorienBowWarhead
ForbiddenUpgradeNames = Upgrade_NoldorArrowUnit
End
ProjectileNugget ; Fire arrow available from fire arrow upgrade
ProjectileTemplateName = NoldorWhitedornProjectile
WarheadTemplateName = NoldorBowWhitedornWarhead
RequiredUpgradeNames = Upgrade_NoldorArrowUnit
End
End
Desweiteren wenn mein Gwaihir den Ring aufnimmt und etwas angreifen soll
etc. fliegt er immer höher aber kommt nicht zum angriff
Der Code:
;-----------------------------------------------------------------------------
;
; Gwaihir.ini
;
;-----------------------------------------------------------------------------
Object NoldorGwaihir
ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
Scale = 1.3
; *** ART Parameters ***
SelectPortrait = HPGwahir
ButtonImage = HIGwahir
Draw = W3DScriptedModelDraw ModuleTag_01
OkToChangeModelColor = Yes
StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
ExtraPublicBone = B_Passenger
DefaultModelConditionState
Model = GUGwaihir_SKN
Skeleton = GUGwaihir_SKL
End
IdleAnimationState
StateName = Idle
Animation = FlyB
AnimationName = GUGwaihir_HVRA
AnimationMode = LOOP
AnimationBlendTime = 10
End
End
AnimationState STUNNED SPECIAL_DAMAGED
StateName = STUNNED
Animation = HitB
AnimationName = GUGwaihir_HITB
AnimationMode = ONCE
AnimationBlendTime = 6
End
End
AnimationState STUNNED
Animation = HitB
AnimationName = GUGwaihir_HITA
AnimationMode = ONCE
AnimationBlendTime = 6
End
End
AnimationState = BACKING_UP
StateName = backup
Animation = FlyB
AnimationName = GUGwaihir_FLYB
AnimationMode = LOOP
AnimationBlendTime = 9
End
End
AnimationState = DIVING
StateName = Diving
Animation = DiveA
AnimationName = GUGwaihir_DIVA
AnimationMode = LOOP
AnimationBlendTime = 9
End
End
AnimationState = ABOUT_TO_HIT ; clawing
StateName = Claw
Animation = Claw
AnimationName = GUGwaihir_ATKB
AnimationMode = LOOP
AnimationBlendTime = 9
End
End
;--- HARD FLAPPING ------------------------
AnimationState = CLIMBING
StateName = Climbing
Animation = FlyB(climb)
AnimationName = GUGwaihir_FLYB
AnimationMode = LOOP
AnimationBlendTime = 9
AnimationSpeedFactorRange = 1.5 1.55
End
End
AnimationState = FREEFALL
StateName = Freefall
Animation = Freefall(ilde)
AnimationName = GUGwaihir_IDLA
AnimationMode = LOOP
AnimationBlendTime = 9
AnimationSpeedFactorRange = 0.7 0.75
End
End
AnimationState = MOVING
StateName = Moving
Animation = FLYA
AnimationName = GUGwaihir_FLYA
AnimationMode = LOOP
AnimationBlendTime = 12
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("Trans_Begin_Moving") return end
EndScript
End
TransitionState = Trans_Begin_Moving
Animation = Transition
AnimationName = GUGwaihir_HVRC
AnimationMode = ONCE
AnimationBlendTime = 4
End
End
TransitionState = Trans_Dying
Animation = Transition
AnimationName = GUGwaihir_DIED
AnimationMode = ONCE
AnimationBlendTime = 9
End
End
AnimationState = DYING DEATH_1
StateName = DYING
Animation = DyingA
AnimationName = GUGwaihir_DIEE
AnimationMode = LOOP
AnimationBlendTime = 9
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("Trans_Dying") return end
if Prev == "Moving" then CurDrawableSetTransitionAnimState("Trans_Dying") return end
EndScript
End
AnimationState = DYING DEATH_2
StateName = DYING
Animation = DyingA
AnimationName = GUGwaihir_HVRA
AnimationMode = LOOP
AnimationBlendTime = 9
End
End
End
; ***DESIGN parameters ***
Side = Noldor
EditorSorting = UNIT
ThreatLevel = GWAIHIR_THREAT_LEVEL
ThingClass = LARGE_MONSTER
TransportSlotCount = TRANSPORTSLOTCOUNT_MONSTER
WeaponSet
Conditions = None
Weapon = PRIMARY EagleGrabAttack
PreferredAgainst = PRIMARY INFANTRY THROWN_OBJECT CAVALRY
Weapon = SECONDARY EagleClawAttack
OnlyAgainst = SECONDARY MONSTER
Weapon = TERTIARY EaglePlowAttack
PreferredAgainst = TERTIARY STRUCTURE MACHINE HORDE
Weapon = QUATERNARY EagleClawWyrmAttack
PreferredAgainst = QUATERNARY CLEANUP_HAZARD ; Used as a user defined kindof, only the wyrm uses it.
End
ArmorSet
Conditions = None
Armor = EagleArmor
DamageFX = GwaihirDamageFX
End
VisionRange = VISION_FLIER
ShroudClearingRange = SHROUD_CLEAR_FLIER
BountyValue = GONDOR_GWAIHIR_BOUNTY_VALUE
DisplayName = OBJECT:NoldorGwaihir
;//DisplayMeleeDamage = EAGLE_PLOW_DAMAGE_INNER
CrusherLevel = 3 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
RamPower = 30;
RamZMult = 0.5;
BuildCost = 1800
BuildTime = 30
CommandSet = GwaihirCommandSet_Submod
CommandPoints = 40
; *** AUDIO Parameters ***;
VoiceAttack = EagleVoiceAttack
VoiceMove = EagleVoiceMove
VoicePriority = 60
VoiceSelect = EagleVoiceSelect
VoiceGuard = EagleVoiceMove
SoundAmbient = EagleAmbienceVoice
SoundImpact = ImpactHorse
;UnitSpecificSounds
;End
#include "..\..\..\includes\StandardUnitEvaEvents.inc"
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYA Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYB Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYC Frames: 2 63
;AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYC Frames: 4 34
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HVRA Frames: 4
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HVRC Frames: 4
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HITA Frames: 0
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HITB Frames: 0
AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_HITA Frames: 1
AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_HITB Frames: 1
AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_DIED Frames: 1
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_ATKB Frames: 0
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_GRBB Frames: 0
AnimationSound = Sound: EagleAttack Animation:GUGwaihir_SKL.GUGWAIHIR_ATKB Frames: 1
AnimationSound = Sound: EagleAttack Animation:GUGwaihir_SKL.GUGWAIHIR_GRBB Frames: 1
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_DIED Frames: 0
AnimationSound = Sound: TrollBodyfall Animation:GUGwaihir_SKL.GUGWAIHIR_DIEF Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_DIEF Frames: 0
End
; Tie into LargeGroupAudio system
; No, we never do anything with this unit
;Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
; Key = Eagle Unit Flyer
;End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD HERO SELECTABLE CAN_CAST_REFLECTIONS TRANSPORT SCORE NO_FREEWILL_ENTER MONSTER SCARY CANNOT_RETALIATE
Body = ActiveBody ModuleTag_02
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = 5000 ;BALANCE Gwaihir Health
; MaxHealthDamaged = 500
; RecoveryTime = 5000
HealingBuffFx = None
End
Behavior = AutoHealBehavior ModuleTag_GwaihirHealing
StartsActive = Yes
HealingAmount = HERO_HEAL_AMOUNT
HealingDelay = 1000
StartHealingDelay = 15000
HealOnlyIfNotInCombat = Yes
End
Behavior = GiantBirdAIUpdate ModuleTag_GiantBirdAI
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
MoodAttackCheckRate = 500
AILuaEventsList = GwaihirFunctions
FollowThroughDistance = 160
FollowThroughCheckStep = 50
FollowThroughGradient = 1.0
GrabTossTimeTrigger = 3.0
GrabTossHeightTrigger = 80.0
TossFX = FX_DiebyFalling
SpecialContactPoints = Swoop
AttackPriority = AttackPriority_Eagle
End
Behavior = ModelConditionUpgrade ModuleTag_All_FactionUpgrade
TriggeredBy = Upgrade_AllFactionUpgrade
AddConditionFlags = USER_3
Permanent = Yes
End
LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_NORMAL
Speed = 108
End
LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_SUPERSONIC
Speed = 124
End
LocomotorSet
Locomotor = FellBeastLocomotor ; BALANCE Gwaihir
Condition = SET_WANDER
Speed = 88
End
Behavior = PhysicsBehavior ModuleTag_04
End
Behavior = NotifyTargetsOfImminentProbableCrushingUpdate ModuleTag_NotifyCrushScan
End
Behavior = TransportContain TransportContainModuleTag
ObjectStatusOfContained = UNSELECTABLE UNATTACKABLE
PassengerFilter = ANY +INFANTRY +HULK +CAVALRY +GRAB_AND_DROP -HERO -PORTER
Slots = 1
ShowPips = No
CanGrabStructure = Yes
AllowEnemiesInside = Yes
AllowNeutralInside = Yes
AllowAlliesInside = No
DamagePercentToUnits = 100%
KillPassengersOnDeath = Yes
PassengerBonePrefix = PassengerBone:B_Passenger KindOf:GRAB_AND_DROP
GrabWeapon = FellbeastGrabWeapon ; fire this weapon when eagle grabs a victim
FireGrabWeaponOnVictim = No
ReleaseSnappyness = 0.05 ; 1.0 is very snappy, 0.0 is very loose
End
Behavior = SquishCollide ModuleTag_06
;nothing
End
Behavior = SlowDeathBehavior ModuleTag_SlowDeath
DeathTypes = ALL -FADED
DestructionDelay = 1000
ShadowWhenDead = No
FX = INITIAL FX_GwaihirDeath
Sound = INITIAL EagleVoiceDie
DeathFlags = DEATH_1
End
Behavior = SlowDeathBehavior ModuleTag_FadeDeath
DeathTypes = NONE +FADED
FadeDelay = 0
FadeTime = 2500
DestructionDelay = 2500
;Sound = INITIAL EagleVoiceDie
DeathFlags = DEATH_2
End
Behavior = DualWeaponBehavior ModuleTag_10
SwitchWeaponOnCloseRangeDistance = 24
End
Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = Hero
End
; -----------------------------------------------------------
; Fähigkeit der Ring Vilya
; -----------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_VilyaEnabler
SpecialPowerTemplate = SpecialAbilityVilya
TriggeredBy = Upgrade_Level_3
End
Behavior = SpecialPowerModule ModuleTag_ArrowWindStarter
SpecialPowerTemplate = SpecialAbilityVilya
UpdateModuleStartsAttack = No
StartsPaused = Yes
End
Behavior = ArrowStormUpdate ModuleTag_VilyaUpdate
SpecialPowerTemplate = SpecialAbilityVilya
StartAbilityRange = 320.0
UnpackTime = 1000 ;1000
PreparationTime = 800
PersistentPrepTime = 600
PackTime = 1200 ;1200
UnpackingVariation = 1
ParalyzeDurationWhenCompleted = 600
ParalyzeDurationWhenAborted = 800
ApproachRequiresLOS = Yes
AwardXPForTriggering = 0
;Specific to ArrowStorm
WeaponTemplate = GilGaladVilya
TargetRadius = 550
ShotsPerTarget = 4
ShotsPerBurst = 4
MaxShots = 4
CanShootEmptyGround = Yes
End
Behavior = HordeTransportContain ModuleTag_12
ObjectStatusOfContained = UNSELECTABLE UNATTACKABLE CAN_ATTACK
;PassengersTestCollisionHeight = 80
Slots = 4
EnterSound = GarrisonEnter
ExitSound = GarrisonExit
DamagePercentToUnits = 0%
PassengerFilter = NONE +MordorHaradrimArcherHordeOnMumakil
AllowOwnPlayerInsideOverride = Yes ; Normally, the Allies check encompasses OwnPlayer. but we reeeeally only want our own guys.
AllowAlliesInside = No
AllowEnemiesInside = No
AllowNeutralInside = No
ExitDelay = 0
NumberOfExitPaths = 2 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
ForceOrientationContainer = No ; otherwise contained units can't orient themselves towards their targets...
PassengerBonePrefix = PassengerBone:DockAction KindOf:HERO
PassengerBonePrefix = PassengerBone:B_BANNER KindOf:BANNER
PassengerBonePrefix = PassengerBone:B_CARGO0 KindOf:INFANTRY
ShowPips = No
EjectPassengersOnDeath = Yes
FadeFilter = ALL
FadePassengerOnEnter = Yes
EnterFadeTime = 6000
FadePassengerOnExit = Yes
ExitFadeTime = 1000
InitialPayload = NoldorGilGaladsSoldaten 1
End
Behavior = HordeTransportContainDamage ModeleTag_HordeTransportContainDamage
End
;///////////////////
; AISpecialPowers
;///////////////////
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceBattle
CommandButtonName = Command_SetStanceBattle
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEBATTLE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceAggressive
CommandButtonName = Command_SetStanceAggressive
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEAGGRESSIVE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeHoldGround
CommandButtonName = Command_SetStanceHoldGround
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEHOLDGROUND
End
FormationPreviewDecal
Texture = FPflyingUnitDecal
Width = 128
Height = 128
End
Geometry = CYLINDER
GeometryMajorRadius = 30.0
GeometryMinorRadius = 30.0
GeometryHeight = 16.0
GeometryIsSmall = No
HealthBoxScale = 3.0
HealthBoxHeightOffset = 25.0
Shadow = SHADOW_VOLUME_NON_SELF_3 // volumetric shadow that doesn't cast onto all objects using SHADOW_VOLUME_NON_SELF_3
ShadowSunAngle = 89 // clamp the angle so shadow casts straight down.
End