Best Answer King Arveleg, 26 July 2019 - 09:42 AM
Added Experience levels, now Basic Training works.
Go to the full postBest Answer King Arveleg, 26 July 2019 - 09:42 AM
Added Experience levels, now Basic Training works.
Go to the full postPosted 23 July 2019 - 05:23 PM
Hi,
I need some help restoring Rohan Archers to MotW. I managed to get the peasants to work fine, but I'm having trouble with the archers. The problem is getting the Bombard/Volley ability and Heavy Armor Upgrade to work.
I can click on Bombard and order the Archers to fire, but they do nothing.
As for the heavy armor, as soon as I buy the upgrade from the blacksmith, the purchase button disappears from the palantir. Basic training and fire arrows work fine.
Here's the code for Archer horde:
;//////////////////////////////////////////////////////////////////////////////// Object RohanArcherHorde ;YeomanArcher ; This is required for garrisoned objects - please put in all objects. ButtonImage = UPInn_RohanArcherButton SelectPortrait = UPInn_RohanArcher Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR DefaultModelConditionState Model = None ;InvisHrdeTmp5x2 End ModelConditionState = HORDE_EMPTY Model = None End ModelConditionState = WORLD_BUILDER Model = HordeMarkRUYeo End End Side = Men EditorSorting = UNIT EmotionRange = 240 DisplayName = OBJECT:HordeYeomanArcher DisplayNameStrategic = CONTROLBAR:LW_Unit_RohanArcherHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_RohanArcherHorde WeaponSet Conditions = None Weapon = PRIMARY GoodArcherMissileHordeRangefinder Weapon = TERTIARY GoodArcherMissileHordeRangefinderBombard AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT ; Not AI. End CommandSet = RohanArcherHordeCommandSet ; *** AUDIO Parameters *** ; Note: Don't put voice parameters here -- they will be ignored. Voice play requests ; are always passed through to members #include "..\..\..\includes\StandardHordeEvaEvents.inc" BuildCost = INN_UNIT_BUILDCOST_ELVEN ;,; ROHAN_PEASANT_BUILDCOST BuildTime = GONDOR_ARCHER_BUILDTIME VisionRange = GONDOR_ARCHER_HORDE_VISION_RANGE ShroudClearingRange = GONDOR_ARCHER_HORDE_SHROUD_RANGE VisionSide = 50% VisionRear = 25% MaxVisionBonusPercent = 300% VisionBonusTestRadius = 200 VisionBonusPercentPerFoot = 1% CommandPoints = 45 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 = 0 //What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrusherLevel = 0 UseCrushAttack = No ;Archer hordes cannot crush or Bombard will not work TransportSlotCount = TRANSPORTSLOTCOUNT_SMALL_HORDE KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE ARCHER ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND// UNATTACKABLE ;KindOf = SELECTABLE CAN_ATTACK INFANTRY HORDE ARCHER ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND// UNATTACKABLE ThreatLevel = GONDOR_ARCHER_HORDE_THREAT ThreatBreakdown GondorArcherHorde_DetailedThreat AIKindOf = ARCHER End Body = ImmortalBody ModuleTag_ImmortalBody MaxHealth = 1 End #include "..\..\..\includes\CaptureBuilding.inc" Behavior = StancesBehavior ModuleTag_StancesBehavior StanceTemplate = ArcherHorde End Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 MaxCowerTime = 5000 MinCowerTime = 3000 CanAttackWhileContained = Yes ; Can fire out of garrisoned building AILuaEventsList = InfantryFunctions AttackPriority = AttackPriority_Archer End Behavior = HordeContain ModuleTag_HordeContain FrontAngle = 270 FlankedDelay = 2000 ObjectStatusOfContained = InitialPayload = RohanArcher GOOD_MEN_GIANT_HORDE_SIZE Slots = 15 PassengerFilter = NONE +INFANTRY ShowPips = No ThisFormationIsTheMainFormation = Yes //Used to determine which armorset to use (and anything else we want!) RandomOffset=X:0 Y:0 MeleeBehavior = Amoeba End // Banner Carrier info BannerCarriersAllowed = RohanBanner // types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:RohanArcher Pos:X:70.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:RohanArcher Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:50 Y:40 Position:X:50 Y:-40 RankInfo = RankNumber:2 UnitType:RohanArcher Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:30 Y:40 Leader 1 3 Position:X:30 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:RohanArcher Position:X:10 Y:0 Leader 2 0 Position:X:10 Y:20 Leader 2 1 Position:X:10 Y:-20 Leader 2 2 Position:X:10 Y:40 Leader 2 3 Position:X:10 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 2 3 ; Example of Eva event for horde death ;EvaEventLastMemberDeath = ArchersDie ; Play this Eva event when the last member dies 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 Behavior = EmotionTrackerUpdate Module_EmotionTracker TauntAndPointDistance = INFANTRY_TAUNT_POINT_RADIUS // max distance to taunted/pointed objet TauntAndPointUpdateDelay = 1000 // how often scan (milliseconds) TauntAndPointExcluded = NONE AfraidOf = EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = ARCHER_FEAR_SCAN_RADIUS AddEmotion = Terror_Base //OVERRIDE //StartFXList = FX_GondorArcherTerror //End AddEmotion = Doom_Base //OVERRIDE //StartFXList = FX_GondorArcherDoom //End AddEmotion = BraceForBeingCrushed_Base AddEmotion = UncontrollableFear_Base //OVERRIDE //StartFXList = FX_GondorArcherFear //End AddEmotion = FearIdle_Base //OVERRIDE //StartFXList = FX_GondorArcherCower //End AddEmotion = FearBusy_Base //OVERRIDE //StartFXList = FX_GondorArcherCower //End AddEmotion = Point_Base //OVERRIDE //Duration = 4000 //StartFXList = FX_GondorArcherPoint //End AddEmotion = Taunt_Base //OVERRIDE //AttributeModifier = GondorFighterTaunt //End AddEmotion = CheerIdle_Base AddEmotion = CheerBusy_Base AddEmotion = HeroCheerIdle_Base AddEmotion = HeroCheerBusy_Base AddEmotion = Alert_Base End LocomotorSet Locomotor = NormalRangedHordeLocomotor Condition = SET_NORMAL Speed = NORMAL_GOOD_INFANTRY_HORDE_SPEED End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_BasicTraining TriggeredBy = Upgrade_GondorBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality TriggeredBy = Upgrade_GondorFireArrows End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_GondorHeavyArmor End Geometry = BOX GeometryMajorRadius = 20.0 GeometryMinorRadius = 20.0 GeometryHeight = 20.0 GeometryIsSmall = No End
And the Commandset:
CommandSet RohanArcherHordeCommandSet 1 = Command_ToggleStance 2 = Command_ArcherBombard 3 = Command_PurchaseUpgradeGondorFireArrows 4 = Command_PurchaseUpgradeGondorHeavyArmor 5 = Command_PurchaseUpgradeGondorBasicTraining 12 = Command_CaptureBuilding 13 = Command_AttackMove 14 = Command_Stop 16 = Command_SetStanceBattle 17 = Command_SetStanceAggressive 18 = Command_SetStanceHoldGround End
Also the banner carriers of Rohan infantry carry Dwarven banners like Men of Dale. Are the Rohan banners still around or were they replaced with Dwarven ones since Men of Dale use Rohan modules?
Finally, I'd like to change Arnor fighter and archer modules to those used in Bfme 1, are they still around in Rotwk or do I have to make new textures?
Edited by King Arveleg, 26 July 2019 - 07:34 AM.
Posted 25 July 2019 - 07:54 AM
you will need to edit the RohanArcher object itself to see if the Heavy Armor code is correct and to add the bombard weapon (compare with GondorArcher object)
Still not working.
I made a copy of GondorArcher and GondorArcherHorde, renamed them, changed skin and made a new commandset and commandbutton. Bombard works fine now, but heavy armor still not working, button isn't visible. Bannercarrier is also not working.
Edited by King Arveleg, 25 July 2019 - 07:58 AM.
Posted 25 July 2019 - 03:40 PM
did you made sure that rohan blacksmith has the same upgrades "Upgrade_RohanBasicTraining...etc" because they have to be the same with the unit
I want the unit to get GondorBasicTraining and GondorHeavyArmor, I'm only restoring Rohan units (Peasants and Archers), no buildings.
Posted 25 July 2019 - 04:06 PM
Here's the Code for my Rohan Archer Horde:
//------------------------------------------------------------------------------ Object CalenardhonArcherHorde // This is required for garrisoned objects - please put in all objects. ButtonImage = UPInn_RohanArcherButton ;,; BDArcheryRange_MenofDale SelectPortrait = UPInn_RohanArcher ;,; UPDwarven_MenofDale Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = EMOTION_TAUNTING EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR EMOTION_LOOK_TO_SKY DefaultModelConditionState Model = None //InvisHrdeTmp5x2 End ModelConditionState = HORDE_EMPTY Model = None End ModelConditionState = WORLD_BUILDER Model = HordeMarkGUArc End End Side = Men EditorSorting = UNIT EmotionRange = 240 DisplayName = OBJECT:HordeCalenardhonArcher DisplayNameStrategic = CONTROLBAR:LW_Unit_CalenardhonArcherHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_CalenardhonArcherHorde WeaponSet Conditions = None Weapon = PRIMARY GoodArcherMissileHordeRangefinder Weapon = TERTIARY GoodArcherMissileHordeRangefinderBombard AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT ; Not AI. End // *** AUDIO Parameters *** // Note: Don't put voice parameters here -- they will be ignored. Voice play requests // are always passed through to members #include "..\..\..\includes\StandardHordeEvaEvents.inc" BuildCost = INN_UNIT_BUILDCOST_ELVEN ;,; ROHAN_PEASANT_BUILDCOST BuildTime = ROHAN_YEOMAN_BUILDTIME VisionRange = GONDOR_ARCHER_HORDE_VISION_RANGE ShroudClearingRange = GONDOR_ARCHER_HORDE_SHROUD_RANGE VisionSide = 50% VisionRear = 25% MaxVisionBonusPercent = 300% VisionBonusTestRadius = 200 VisionBonusPercentPerFoot = 1% CommandPoints = 45 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 = 0 //What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrusherLevel = 0 UseCrushAttack = No ;Archer hordes cannot crush or Bombard will not work TransportSlotCount = TRANSPORTSLOTCOUNT_SMALL_HORDE KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE ARCHER ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND// UNATTACKABLE ;KindOf = SELECTABLE CAN_ATTACK INFANTRY HORDE ARCHER ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND// UNATTACKABLE ThreatLevel = GONDOR_ARCHER_HORDE_THREAT ThreatBreakdown GondorArcherHorde_DetailedThreat AIKindOf = ARCHER End CommandSet = CalenardhonArcherHordeCommandSet Body = ImmortalBody ModuleTag_ImmortalBody MaxHealth = 1 End #include "..\..\..\includes\CaptureBuilding.inc" Behavior = StancesBehavior ModuleTag_StancesBehavior StanceTemplate = ArcherHorde End Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 MaxCowerTime = 5000 MinCowerTime = 3000 CanAttackWhileContained = Yes // Can fire out of garrisoned building AILuaEventsList = InfantryFunctions AttackPriority = AttackPriority_Archer End Behavior = HordeContain ModuleTag_HordeContain FrontAngle = 270 FlankedDelay = 2000 ObjectStatusOfContained = InitialPayload = CalenardhonArcher GOOD_MEN_GIANT_HORDE_SIZE Slots = 15 PassengerFilter = NONE +INFANTRY ShowPips = No ThisFormationIsTheMainFormation = Yes //Used to determine which armorset to use (and anything else we want!) RandomOffset=X:0 Y:0 MeleeBehavior = Amoeba End // Banner Carrier info BannerCarriersAllowed = RohanBanner // types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:CalenardhonArcher Pos:X:70.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:CalenardhonArcher Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:50 Y:40 Position:X:50 Y:-40 RankInfo = RankNumber:2 UnitType:CalenardhonArcher Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:30 Y:40 Leader 1 3 Position:X:30 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:CalenardhonArcher Position:X:10 Y:0 Leader 2 0 Position:X:10 Y:20 Leader 2 1 Position:X:10 Y:-20 Leader 2 2 Position:X:10 Y:40 Leader 2 3 Position:X:10 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 2 3 MeleeAttackLeashDistance = 1 //How far the hordes can move from the center of the horde when melee attacking. BackUpMinDelayTime = 1 //The minimum amount of time to delay before backing up BackUpMaxDelayTime = 3000 //The maximum amount of time to delay before backing up BackUpMinDistance = 1 //The minimum number of cells to backup BackUpMaxDistance = 3 //The maximum number of cells to backup BackupPercentage = 80% //The amount of chance that a unit will back up. End ;,; 2.02 upgrade tiers: all tier-specific upgrade simply trigger the old one Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerArmor TriggeredBy = PERSONAL_HEAVY_ARMOR_TIERS_UPGRADE_LIST AttributeModifier = Modifier_GondorHeavyArmor End Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerTierArmor TriggeredBy = Upgrade_GondorHeavyArmor AttributeModifier = Modifier_TieredArmor End Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior GravityMult = 1.0 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 = EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = ARCHER_FEAR_SCAN_RADIUS AddEmotion = Terror_Base //OVERRIDE //StartFXList = FX_GondorArcherTerror //End AddEmotion = Doom_Base //OVERRIDE //StartFXList = FX_GondorArcherDoom //End AddEmotion = BraceForBeingCrushed_Base AddEmotion = UncontrollableFear_Base //OVERRIDE //StartFXList = FX_GondorArcherFear //End AddEmotion = FearIdle_Base //OVERRIDE //StartFXList = FX_GondorArcherCower //End AddEmotion = FearBusy_Base //OVERRIDE //StartFXList = FX_GondorArcherCower //End AddEmotion = Point_Base //OVERRIDE //Duration = 4000 //StartFXList = FX_GondorArcherPoint //End AddEmotion = Taunt_Base //OVERRIDE //AttributeModifier = GondorFighterTaunt //End AddEmotion = CheerIdle_Base AddEmotion = CheerBusy_Base AddEmotion = HeroCheerIdle_Base AddEmotion = HeroCheerBusy_Base AddEmotion = Alert_Base End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_BasicTraining TriggeredBy = Upgrade_GondorBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality TriggeredBy = Upgrade_GondorFireArrows End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_GondorHeavyArmor End Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate SkirmishAIOnly = Yes StuffToPickUp = NONE +CRATE ScanRange = 200 ScanIntervalSeconds = 0.5 End LocomotorSet Locomotor = NormalRangedHordeLocomotor Condition = SET_NORMAL Speed = NORMAL_FOOT_MED_HORDE_SPEED ; RotWK originally NORMAL_FOOT_SLOW_HORDE_SPEED End ///////////////////// // AISpecialPowers ///////////////////// Behavior = AISpecialPowerUpdate GondorArcherHordeCaptureBuildingAI CommandButtonName = Command_CaptureBuilding SpecialPowerAIType = AI_SPECIAL_POWER_CAPTURE_BUILDING End 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 Geometry = BOX GeometryMajorRadius = 30.0 GeometryMinorRadius = 45.0 GeometryHeight = 20.0 GeometryIsSmall = No // *** AUTO RESOLVE DATA *** AutoResolveUnitType = AutoResolveUnit_Archer AutoResolveCombatChain = AutoResolve_ArcherCombatChain AutoResolveBody = AutoResolve_GondorArcherHordeBody AutoResolveArmor RequiredUpgrades = Upgrade_GondorHeavyArmor Armor = AutoResolve_GondorArcherHeavyArmor End AutoResolveArmor ExcludedUpgrades = Upgrade_GondorHeavyArmor Armor = AutoResolve_GondorArcherArmor End AutoResolveWeapon RequiredUpgrades = Upgrade_GondorFireArrows Weapon = AutoResolve_GondorArcherUpgradedWeapon End AutoResolveWeapon ExcludedUpgrades = Upgrade_GondorFireArrows Weapon = AutoResolve_GondorArcherWeapon End WorldMapArmoryUpgradesAllowed = Upgrade_GondorBasicTraining Upgrade_GondorFireArrows Upgrade_GondorHeavyArmor End
And Rohan Archer:
//------------------------------------------------------------------------------ Object CalenardhonArcher // *** ART Parameters *** UpgradeCameo1 = Upgrade_GondorFireArrows ;SelectPortrait = SP_Gondor_Swordman SelectPortrait = UPInn_RohanArcher ;,; UPRohan_YeomanArcher ButtonImage = UPInn_RohanArcherButton ;,; BRArcheryRange_YeomanArchers Draw = W3DHordeModelDraw ModuleTag_01 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 ParticlesAttachedToAnimatedBones = yes // --------- With Bow ------------ DefaultModelConditionState Model = RUArcher_SKN Skeleton = GUArcher_SKL WeaponLaunchBone = PRIMARY ARROW WeaponLaunchBone = TERTIARY ARROW End // --------- With Bow Upgrade ------------ ModelConditionState = WEAPONSET_PLAYER_UPGRADE Model = RUArcher_SKN Skeleton = GUArcher_SKL WeaponLaunchBone = PRIMARY ARROW // ParticleSysBone = FireArowTip arrowFire FollowBone:Yes // ParticleSysBone = FireArowTip arrowFire FollowBone:Yes WeaponLaunchBone = TERTIARY ARROW End //----------------- IdleAnimationState StateName = STATE_Idle Animation = IdleA AnimationName = GUArcher_IDLA AnimationPriority = 6 AnimationSpeedFactorRange = 0.7 1.3 End //*** Repeat IDLA because animation priorities will not choose same animation twice so it can alternate between first two mostly. Animation = IdleA AnimationName = GUArcher_IDLA AnimationPriority = 6 AnimationSpeedFactorRange = 0.7 1.3 End Animation = IdleH AnimationName = GUArcher_IDLH AnimationPriority = 1 AnimationSpeedFactorRange = 0.7 1.3 AnimationBlendTime = 8 End Animation = IdleI AnimationName = GUArcher_IDLI AnimationPriority = 1 AnimationSpeedFactorRange = 0.7 1.3 AnimationBlendTime = 8 End Animation = IdleJ AnimationName = GUArcher_IDLJ AnimationPriority = 1 AnimationSpeedFactorRange = 0.7 1.3 AnimationBlendTime = 8 End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_Selected_To_Idle") end EndScript End AnimationState = THROWN_PROJECTILE Animation = FLYA AnimationName = GUArcher_FLYA AnimationMode = LOOP End End AnimationState = PASSENGER FREEFALL Animation = FLLA AnimationName = GUArcher_FLLA AnimationMode = LOOP End End AnimationState = FREEFALL Animation = Flying_1 AnimationName = GUARCHER_FLYA AnimationMode = LOOP AnimationSpeedFactorRange = 0.35 0.35 //Very slow AnimationBlendTime = 10 //Very slow End End // --- stunned anims AnimationState = STUNNED_FLAILING Animation = StunFlail AnimationName = GUArcher_FLYA AnimationMode = LOOP AnimationSpeedFactorRange = 0.4 0.6 End Flags = RANDOMSTART End AnimationState = DYING BURNINGDEATH Animation AnimationName = GUArcher_DIEA AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = GUArcher_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = GUArcher_DIED AnimationMode = ONCE AnimationBlendTime = 10 End End AnimationState = DYING SPLATTED Animation = Fire AnimationName = GUArcher_LNDA AnimationMode = ONCE AnimationSpeedFactorRange = 0.7 1.3 End EnteringStateFX = FX_SoldierHitGround End AnimationState = DYING AFLAME Animation = Fire AnimationName = GUArcher_MFDA AnimationSpeedFactorRange = 0.9 1.1 End End AnimationState = DYING Animation = Die1 AnimationName = GUArcher_DIEA AnimationMode = ONCE AnimationSpeedFactorRange = 0.7 1.3 End Animation = Die2 AnimationName = GUArcher_DIEB AnimationMode = ONCE AnimationSpeedFactorRange = 0.7 1.3 End End AnimationState = BURNINGDEATH Animation AnimationName = GUArcher_MFDA AnimationMode = LOOP Distance = 50 End End AnimationState = PARALYZED Animation AnimationName = GUArcher_IDLA AnimationMode = LOOP End End AnimationState = STUNNED_STANDING_UP Animation = GTPA AnimationName = GUArcher_GTPA AnimationMode = ONCE AnimationSpeedFactorRange = 0.7 1.1 End End AnimationState = STUNNED Animation = StunFlail AnimationName = GUArcher_LNDA AnimationMode = ONCE End EnteringStateFX = FX_SoldierHitGround End AnimationState = EMOTION_UNCONTROLLABLY_AFRAID ShareAnimation = Yes Animation = FERA AnimationName = GUArcher_FERA AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERB AnimationName = GUArcher_FERB AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERC AnimationName = GUArcher_FERC AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERD AnimationName = GUArcher_FERD AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Flags = RANDOMSTART End AnimationState = FIRING_OR_PREATTACK_B Animation = BowPunchWhenClose AnimationName = GUArcher_ATKD AnimationMode = ONCE UseWeaponTiming = Yes End End //--------------------------------------------------- //New style firing AnimationState = PREATTACK_A StateName = STATE_PreFiring Animation = ReadyToDrawn AnimationName = GUArcher_ATKF1 AnimationMode = ONCE // UseWeaponTiming = Yes // UseWeaponTiming plus random weapon field equals desync. Leaving as warning AnimationBlendTime = 10 End End AnimationState = FIRING_OR_RELOADING_A StateName = STATE_Firing Animation = LooseReloadDraw AnimationName = GUArcher_ATKF2 AnimationMode = ONCE // UseWeaponTiming = Yes // UseWeaponTiming plus random weapon field equals desync. Leaving as warning AnimationSpeedFactorRange = 1.2 1.3 // Therefore, this is all you get. A slight speed up so that the animation can always finish before any possible random value Design sets the range for AnimationBlendTime = 0 End Flags = START_FRAME_FIRST End AnimationState = PREATTACK_C StateName = STATE_PreFiring Animation = ReadyToDrawn AnimationName = GUArcher_ATKF1 AnimationMode = ONCE // UseWeaponTiming = Yes // UseWeaponTiming plus random weapon field equals desync. Leaving as warning AnimationBlendTime = 10 End End AnimationState = FIRING_OR_RELOADING_C StateName = STATE_Firing Animation = LooseReloadDraw AnimationName = GUArcher_ATKF2 AnimationMode = ONCE // UseWeaponTiming = Yes // UseWeaponTiming plus random weapon field equals desync. Leaving as warning AnimationSpeedFactorRange = 1.2 1.3 // Therefore, this is all you get. A slight speed up so that the animation can always finish before any possible random value Design sets the range for AnimationBlendTime = 0 End Flags = START_FRAME_FIRST End //End New style firing //--------------------------------------------------- AnimationState = MOVING WANDER ShareAnimation = Yes Animation = Wander1 AnimationName = GUArcher_WLKA End Animation = Wander2 AnimationName = GUArcher_WLKB //20 End Flags = RANDOMSTART End AnimationState = MOVING EMOTION_LOOK_TO_SKY ShareAnimation = Yes Animation = TerrorFromTheSky AnimationName = GUArcher_RUNC AnimationMode = LOOP End End AnimationState = MOVING BACKING_UP ShareAnimation = Yes Animation = BackingUp AnimationName = GUArcher_BAKA AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = ATTACKING MOVING ShareAnimation = Yes Animation = Move2 AnimationName = GUArcher_RUNB Distance = 28 End Flags = RANDOMSTART End AnimationState = MOVING ShareAnimation = Yes Animation = Move1 AnimationName = GUArcher_RUNA Distance = 28 End Flags = RANDOMSTART End AnimationState = RAISING_FLAG Animation = CHRA AnimationName = GUArcher_CHRA AnimationMode = Once AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRB AnimationName = GUArcher_CHRB AnimationMode = Once AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRA AnimationName = GUArcher_CHRC AnimationMode = Once AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE End AnimationState = CONTINUOUS_FIRE_MEAN StateName = STATE_Coasting Animation = HangFrameWhileCoasting AnimationName = GUArcher_ATKF2 AnimationMode = MANUAL End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Firing" then CurDrawableAllowToContinue() return end EndScript End AnimationState = CONTINUOUS_FIRE_SLOW StateName = STATE_Idle Animation = PutAwayArrow AnimationName = GUArcher_ATKF3 AnimationMode = ONCE End End //------------ HIT REACTION ----------------------------------------------------- // --------- Click and Hit Reactions ------------ ; AnimationState = HIT_REACTION ; Animation = Hit_Level_1_a ; AnimationName = GUArcher_HITA ; AnimationMode = ONCE ; End ; End //------------ EMOTIONS --------------------------------------------------------- //======= AFRAID AnimationState = EMOTION_AFRAID ShareAnimation = Yes Animation = FERA AnimationName = GUArcher_FERA AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERB AnimationName = GUArcher_FERB AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERC AnimationName = GUArcher_FERC AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Animation = FERD AnimationName = GUArcher_FERD AnimationMode = LOOP AnimationSpeedFactorRange = 0.7 1.3 End Flags = RANDOMSTART End //======= CELEBRATING AnimationState = EMOTION_CELEBRATING Animation = CHRB AnimationName = GUArcher_CHRB AnimationMode = Once AnimationBlendTime = 15 AnimationPriority = 2 End Animation = SLTA AnimationName = GUArcher_SLTA AnimationMode = Once AnimationBlendTime = 15 AnimationPriority = 2 End Animation = CHRA AnimationName = GUArcher_CHRA AnimationMode = Once AnimationBlendTime = 15 AnimationPriority = 1//Use least often of cheers (Eugene) End Flags = RESTART_ANIM_WHEN_COMPLETE End //======== TAUNTING AnimationState = EMOTION_TAUNTING Animation = Taunting2 AnimationName = GUArcher_IDLE AnimationMode = ONCE AnimationBlendTime = 15 End Animation = Taunting3 AnimationName = GUArcher_IDLF AnimationMode = ONCE AnimationBlendTime = 15 End Animation = Taunting4 AnimationName = GUArcher_IDLG AnimationMode = ONCE AnimationBlendTime = 15 End Flags = RESTART_ANIM_WHEN_COMPLETE End //======== POINTING AnimationState = EMOTION_POINTING ShareAnimation = Yes Animation = pointing AnimationName = GUArcher_PNTA AnimationPriority = 2 AnimationSpeedFactorRange = 0.9 1.1 AnimationMode = LOOP End End //======= ALERT AnimationState = EMOTION_ALERT Animation = Ready AnimationName = GUArcher_IDLA AnimationMode = LOOP AnimationPriority = 3 AnimationBlendTime = 15 End Animation = Ready AnimationName = GUArcher_IDLA AnimationMode = LOOP AnimationPriority = 3 AnimationBlendTime = 15 End Animation = Point AnimationName = GUArcher_PNTA AnimationMode = LOOP AnimationPriority = 1 AnimationBlendTime = 15 End End //----------------- SELECTED -------------------------------------------- AnimationState = SELECTED ShareAnimation = Yes StateName = STATE_Selected Animation = ATNB AnimationName = GUArcher_ATNB AnimationMode = LOOP AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLA AnimationName = GUArcher_IDLA AnimationPriority = 10 AnimationSpeedFactorRange = 0.7 1.3 End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_Idle_to_Selected") end if CurDrawableModelcondition("ATTACKING") then return "IDLA" else return "ATNB" end EndScript End //----------------- Transitions ------------------------------------------------------ TransitionState = TRANS_Idle_to_Selected Animation = ATNA AnimationName = GUArcher_ATNA AnimationMode = ONCE AnimationSpeedFactorRange = 0.8 1.2 AnimationPriority = 8 End Animation = SLTA AnimationName = GUArcher_SLTA AnimationMode = ONCE AnimationSpeedFactorRange = 1.0 1.5 AnimationPriority = 1 End End TransitionState = TRANS_Selected_To_Idle Animation = ATNC AnimationName = GUArcher_ATNC AnimationMode = ONCE AnimationSpeedFactorRange = 0.5 2.0 End End End // ***DESIGN parameters *** Side = Men EditorSorting = UNIT ThreatLevel = 1.0 ThingClass = HORDE_UNIT CommandPoints = 3 BountyValue = ROHAN_YEOMAN_BOUNTY_VALUE TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT WeaponSet Conditions = None Weapon = PRIMARY GondorArcherBow Weapon = TERTIARY GondorArcherBowBombard AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT ; Not from AI. End WeaponSet Conditions = CLOSE_RANGE CONTESTING_BUILDING Weapon = PRIMARY GondorArcherBow Weapon = SECONDARY GondorArcherBowMelee Weapon = TERTIARY GondorArcherBowBombard OnlyAgainst = PRIMARY STRUCTURE AutoChooseSources = TERTIARY FROM_PLAYER FROM_SCRIPT ; Not from AI. End ArmorSet Conditions = None Armor = ArcherArmor //GondorArcherArmor DamageFX = NormalDamageFX End ArmorSet Conditions = PLAYER_UPGRADE Armor = ArcherHeavyArmor //GondorArcherHeavyArmor DamageFX = NormalDamageFX End VisionRange = GONDOR_ARCHER_VISION_RANGE VisionSide = 35% VisionRear = 25% ShroudClearingRange = SHROUD_CLEAR_STANDARD DisplayName = OBJECT:RohanArcher CrushableLevel = 0 //What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrushRevengeWeapon = RangedInfantryCrushRevenge CommandSet = CalenardhonArcherCommandSet ; *** AUDIO Parameters ***; ;VoiceAmbushed = YeomanArcherVoiceAmbushed OBSOLETE VOICE VoiceAttack = YeomanArcherVoiceAttack VoiceAttackAir = YeomanArcherVoiceAttack VoiceAttackCharge = YeomanArcherVoiceAttackCharge VoiceAttackStructure = YeomanArcherVoiceAttackBuilding VoiceAttackMachine = YeomanArcherVoiceAttack VoiceCreated = YeomanArcherVoiceSalute VoiceFullyCreated = YeomanArcherVoiceSalute VoiceMove = YeomanArcherVoiceMove VoiceMoveToCamp = YeomanArcherVoiceMoveCamp VoiceMoveWhileAttacking = YeomanArcherVoiceDisengage VoiceRetreatToCastle = YeomanArcherVoiceRetreat VoicePriority = 45 VoiceSelect = YeomanArcherVoiceSelectMS VoiceSelectBattle = YeomanArcherVoiceSelectBattle VoiceEnterStateAttack = YeomanArcherVoiceEnterStateAttack VoiceEnterStateAttackCharge = YeomanArcherVoiceEnterStateAttackCharge VoiceEnterStateAttackStructure = YeomanArcherVoiceEnterStateAttackBuilding VoiceEnterStateAttackMachine = YeomanArcherVoiceEnterStateAttackBuilding VoiceEnterStateMove = YeomanArcherVoiceEnterStateMove VoiceEnterStateMoveToCamp = YeomanArcherVoiceEnterStateMoveCamp VoiceEnterStateMoveWhileAttacking = YeomanArcherVoiceEnterStateDisengage VoiceEnterStateRetreatToCastle = YeomanArcherVoiceEnterStateRetreat VoiceGuard = YeomanArcherVoiceMove SoundImpact = ImpactHorse UnitSpecificSounds VoiceGarrison = YeomanArcherVoiceGarrison End CrowdResponseKey = GoodMen #include "..\includes\StandardUnitEvaEvents.inc" ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo ModelCondition = Required:RAISING_FLAG Excluded:DYING ENGAGED Sound:EmotionMenGoodCompilationBFME1and2VoxTauntSinglesLoop End ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800 AnimationSound = Sound:BodyFallGeneric1 Animation:GUArcher_SKL.GUArcher_DIEA Frames:40 AnimationSound = Sound:BodyFallGeneric1 Animation:GUArcher_SKL.GUArcher_DIEB Frames:19 //AnimationSound = Sound:BodyFallGeneric1 Animation:GUArcher_SKL.GUArcher_DIED Frames:53 AnimationSound = Sound:BodyFallGeneric1 Animation:GUArcher_SKL.GUArcher_LNDA Frames:1 AnimationSound = Sound:BodyFallGenericNoArmor Animation:GUArcher_SKL.GUArcher_LNDA Frames:14 End // *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ATTACK_NEEDS_LINE_OF_SIGHT ARCHER GRAB_AND_DROP //GRAB_AND_KILL ;KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ARCHER GRAB_AND_DROP //GRAB_AND_KILL Body = ActiveBody ModuleTag_02 CheerRadius = EMOTION_CHEER_RADIUS MaxHealth = ROHAN_YEOMAN_HEALTH ;BALANCE Archer Health MaxHealthDamaged = ROHAN_YEOMAN_HEALTH_DAMAGED ;RecoveryTime = ROHAN_YEOMAN_HEALTH_RECOVERY_TIME BurningDeathBehavior = Yes BurningDeathFX = FX_InfantryBurningFlame End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS StopChaseDistance = 642 CanAttackWhileContained = Yes AILuaEventsList = GondorArcherFunctions // temp, Archers not afraid of trolls MinCowerTime = 8000 MaxCowerTime = 10000 AttackPriority = AttackPriority_Archer BurningDeathTime = BURNINGDEATH_DURATION_INFANTRY End LocomotorSet Locomotor = HumanLocomotor Condition = SET_NORMAL Speed = NORMAL_FOOT_MED_MEMBER_SPEED End LocomotorSet Locomotor = HumanWanderLocomotor Condition = SET_WANDER Speed = NORMAL_FOOT_MED_MEMBER_SPEED End LocomotorSet Locomotor = BurningDeathLocomotorInfantry Condition = SET_BURNINGDEATH Speed = BURNINGDEATH_WANDERSPEED_INFANTRY End Behavior = PhysicsBehavior ModuleTag_04 GravityMult = 1.0 End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL -FADED SinkDelay = 3000 SinkRate = 0.600 // in Dist/Sec DestructionDelay = 12000 Sound = INITIAL HumanVoiceDie// GondorArcherVoiceDie End Behavior = SlowDeathBehavior ModuleTag_FadeDeath DeathTypes = NONE +FADED SinkDelay = 3000 SinkRate = 0.600 // in Dist/Sec DestructionDelay = 12000 Sound = INITIAL SpellGenericUnsummonFasterMS End Behavior = SquishCollide ModuleTag_06 //nothing End // CalenardhonArcher Behavior = HordeMemberCollide ModuleTag_HMC //nothing End Behavior = BezierProjectileBehavior ModuleTag_07 // Module starts asleep, and wakes up when thrown. // To tweak a Bezier path 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 = ArmorUpgrade ModuleTag_ArmorUpgrade TriggeredBy = Upgrade_GondorHeavyArmor End // Switch arrows being displayed. Behavior = SubObjectsUpgrade ModuleTag_FireArrowSwapUpgrade TriggeredBy = Upgrade_GondorFireArrows ShowSubObjects = FireArowTip End Behavior = SubObjectsUpgrade ModuleTag_HeavyArmorUpgrade TriggeredBy = Upgrade_GondorHeavyArmor UpgradeTexture = RUArcher.tga 0 RUArcherHA.tga UpgradeTexture = RUArcher_M.tga 0 RUArcherHA.tga ShowSubObjects = ARMOR RecolorHouse = Yes ExcludeSubobjects = FireArowTip End // Fire arrow upgrade Behavior = WeaponSetUpgrade ModuleTag_FireArrowParticlesAndLegalityUpgrade TriggeredBy = Upgrade_GondorFireArrows End // Tie into LargeGroupAudio system Behavior = LargeGroupAudioUpdate ModuleTag_LGAU Key = Humanoid_Male Man Man_Male Unit Infantry Gondor_Archer End Behavior = DualWeaponBehavior ModuleTag_09 SwitchWeaponOnCloseRangeDistance = 40 End ; Behavior = HitReactionBehavior HitReactionBehaviorModuleTag ; HitReactionLifeTimer1 = 1993 //level 1 (light damage) hit reaction animations in ms ; HitReactionLifeTimer2 = 1993 //level 2 (medium damage) hit reaction animations in ms ; HitReactionLifeTimer3 = 1993 //level 3 (heavy damage) hit reaction animations in ms ; HitReactionThreshold1 = 0.0 //level 1 (light damage) threshold trigger ; HitReactionThreshold2 = 25.0 //level 2 (medium damage) threshold trigger ; HitReactionThreshold3 = 50.0 //level 3 (heavy damage) threshold trigger ; FastHitsResetReaction = No //If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets) ; End Geometry = CYLINDER GeometryMajorRadius = 8.0 GeometryMinorRadius = 8.0 GeometryHeight = 19.2 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 19 // ShadowSizeY = 19 // ShadowTexture = ShadowI // End
These are edited copies of GondorArcher and GondorArcherHorde.
Bombard and FireArrows work fine.
BasicTraining isn't working, no banner carrier spawns when I purchase the upgrade, and HeavyArmor button disappears after I purchase the upgrade from the blacksmith. So I need help with that, please.
Edited by King Arveleg, 26 July 2019 - 07:32 AM.
Posted 26 July 2019 - 07:11 AM
I changed the commandset to GondorArcherHordeCommandSet, now HeavyArmor works.
BasicTraining isn't working, no banner carrier spawns. Any ideas?
Posted 26 July 2019 - 09:42 AM Best Answer
Added Experience levels, now Basic Training works.
Posted 27 July 2019 - 01:56 AM
create a new commandset for your rohan achers
something like:
0 members, 0 guests, 0 anonymous users