Jump to content


Goldo

Member Since 27 Aug 2011
Offline Last Active Jan 09 2022 08:42 PM

Topics I've Started

[Bug] Good Campaign Grey Havens

05 October 2020 - 12:57 PM

The evil attack waves land on the beach and then just sit there. They do not attack unless provoked, while in the vanilla they would move towards the Havens and attack anything in their path.


How to add assets to the Age of the Ring?

30 September 2020 - 11:16 AM

I am working on a submod for the BFME 2 campaign skirmish maps. I want to add dialogue to Bofur for the good Erebor campaign, but I am at a loss when it comes to adding new assets. My old asset builder only worked if I renamed "compiled textures" to "textures" before I run it and then I would rename "compiled textures" back. But AotR already has both "compiled textures" and "textures" . So what do I do? I can't seem to be able to find a new asset builder for the job.


Misty Mountains: Goblin Spearmen?

28 September 2020 - 10:47 PM

We clearly see some Moria Goblins wielding short spears in the Fellowship and I was wondering if there is any chance that they are added in a future release?

I understand that a spammable spear unit might cause imbalances so you could either have them recruited from an upgraded goblin cave OR you could simply give regular Moria screechers a spear upgrade (kinda like the Dunedain rangers). The upgrade is purchased from an upgraded cave and does not really turn the goblin screechers into proper spearmen, it just gives them a damage/reach or trample resistance bonus.

What do you think?

Minor problem with RenX

07 September 2020 - 03:24 PM

Usually when pressing the right click button on RenX it opens a menu with options. This was the case until yesterday, but it no longer works. Now nothing happens when I click it. Any ideas?


Problem with new horde

07 September 2020 - 01:39 PM

After succeeding with adding a new goblin spearmen unit, I thought I'd add a new miner unit for the Dwarves that could be produced from the mine shaft. Problem is this time, the unit does not come out in a horde but breaks up into individual soldiers as soon as it spawns. I take it this is a problem with my hordes.ini and not the fact that I use the mine shaft as their spawning building? Anyway here is the code. I pretty much just copied the Guardian entry:

;//------------------------------------------------------------------------------
Object DwarvenMinerHorde

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

	Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
	    DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER EMOTION_TERROR EMOTION_LOOK_TO_SKY SELECTED
		DefaultModelConditionState
			Model = None ;InvisHrdeTmp5x2
		End

		ModelConditionState = HORDE_EMPTY
			Model = None
		End		
		
		ModelConditionState = WORLD_BUILDER
			Model = HordeMarkEUDFG
		End		
	End
	
	Side = Dwarves
	EditorSorting = UNIT
	EmotionRange = 240
	DisplayName = OBJECT:HordeDwarvenMiner
	DisplayNameStrategic = CONTROLBAR:LW_Unit_DwarvenMinerHorde
	DescriptionStrategic = CONTROLBAR:LW_ToolTip_DwarvenMinerHorde
		
	WeaponSet
		Conditions = None 
		Weapon = PRIMARY    NormalMeleeHordeRangefinder
	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"

	UnitSpecificSounds
		VoiceDesperateAttack  = GondorSoldierVoiceDesperateCharge 
	End

	BuildCost = DWARVEN_GUARDIAN_BUILDCOST
	BuildTime = 1    
	VisionRange = DWARVEN_GUARDIAN_HORDE_VISION_RANGE
	ShroudClearingRange = DWARVEN_GUARDIAN_SHROUD_RANGE
	VisionSide = 50%
	VisionRear = 25%
	
	MaxVisionBonusPercent = 300%
	VisionBonusTestRadius = 200
	VisionBonusPercentPerFoot = 1.0%
	CommandPoints = 60 ;;,;; 70		; originally 60
	
	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 = 1 
	
	CrushOnlyWhileCharging = YES ; // the guardian is only supposed to crush during his special charge ability
	
	MinCrushVelocityPercent = 50% ; Has to be moving at least xx% of full speed
	CrushDecelerationPercent = 90% ; Lose xx% max velocity when crushing -- thus they only crush 1 row of infantry
	
	CrushKnockback = 40  ; how hard we knock back crushed units.
	CrushZFactor = 1.0  ; How much we knock upwards.

    TransportSlotCount = TRANSPORTSLOTCOUNT_SMALL_HORDE
	KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE MELEE_HORDE NOTIFY_OF_PREATTACK ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND ;;UNATTACKABLE 
	
	ThreatLevel = DWARVEN_GUARDIAN_HORDE_THREAT
	ThreatBreakdown DwarvenGuardianHorde_DetailedThreat
		AIKindOf = INFANTRY
	End
	
	Body = ImmortalBody ModuleTag_ImmortalBody
		MaxHealth = 1
	End
	
	#include "..\..\..\includes\CaptureBuilding.inc"
	
	Behavior = StancesBehavior ModuleTag_StancesBehavior
        StanceTemplate = FighterHorde
    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_Infantry
	End

	Behavior = HordeContain ModuleTag_HordeContain
		FrontAngle = 270
		FlankedDelay =  GENERAL_UNIT_FLANKED_DELAY ;,; 2000
		ObjectStatusOfContained			= 
		InitialPayload				= DwarvenMiner 10  	;15
		Slots					= 10   			;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	= DwarvenBanner							;// types of units that are allowed as banner carriers
		BannerCarrierPosition	= UnitType:DwarvenMiner	Pos:X:70.0 Y:0.0		;// (DEFAULT) position of banner carrier
		
		RankInfo = RankNumber:1 UnitType:DwarvenMiner 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:DwarvenMiner 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:DwarvenMiner 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
		
		
		;// Positions for 5
		
		RanksToReleaseWhenAttacking		= 1 2 ;;,;; 1 
		
		MeleeAttackLeashDistance		= 50 ;;,;; 25	;// 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

	Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
		GravityMult = 1.0
	End
	
	Behavior = CommandButtonHuntUpdate ModuleTag_CommandButtonHuntUpdate
	End
  
	Behavior = HordeNotifyTargetsOfImminentProbableCrushingUpdate ModuleTag_NotifyCrushScan
		ScanWidth = 60.0 ; A little less than the width of the horde (which is 2 * 35 = 70)
	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		=	INFANTRY_FEAR_SCAN_RADIUS

		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
		AddEmotion			=   	CheerForAboutToCrush_Base
	End	
  
	LocomotorSet
		Locomotor     = NormalChargeMeleeHordeLocomotor
		Condition     = SET_NORMAL
		Speed         = NORMAL_FOOT_SLOW_HORDE_SPEED
	End
	
	LocomotorSet
		Locomotor     = ScaredMeleeHordeLocomotor
		Condition     = SET_SCARED
		Speed         = NORMAL_FOOT_SLOW_HORDE_SPEED
	End
	
	Behavior = ProductionUpdate ProductionUpdateModuleTag
		GiveNoXP = Yes
	End
	
	Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate
		SkirmishAIOnly = Yes
		StuffToPickUp = NONE +CRATE
		ScanRange = 200
		ScanIntervalSeconds = 0.5
	End

	;;; NEW DWARVEN CHARGE ABILITY ;;;
	Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ChargeUnpause
		SpecialPowerTemplate      	= SpecialAbilityDwarvenCharge
		TriggeredBy			= Upgrade_ObjectLevel2
	End
	
  	Behavior = SpecialPowerModule ModuleTag_ChargeStarter                      
		SpecialPowerTemplate      	= SpecialAbilityDwarvenCharge
		UpdateModuleStartsAttack  	= Yes
		StartsPaused			= Yes
	End
	#include "..\..\..\includes\DwarvenChargeUpdate.inc"
		
	CommandSet = DwarvenMinerHordeCommandSet

	;,; 2.02 upgrade tiers: all tier-specific upgrade simply trigger the old one
	Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerBlades
		TriggeredBy = PERSONAL_FORGED_BLADES_TIERS_LIST
		AttributeModifier = Modifier_DwarvenForgedBlades
	End
	Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerArmor
		TriggeredBy = PERSONAL_HEAVY_ARMOR_TIERS_UPGRADE_LIST
		AttributeModifier = Modifier_DwarvenMithrilMail
	End
	Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerTierBlades
		TriggeredBy = Upgrade_DwarvenForgedBlades
		AttributeModifier = Modifier_TieredBlades
	End
	Behavior = AttributeModifierUpgrade ModuleTag_UpgradeTriggerTierArmor
		TriggeredBy = Upgrade_DwarvenMithrilMail
		AttributeModifier = Modifier_TieredArmor
	End

; ; (;;,;;)
	Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeBladesCommandSet
		TriggeredBy		= Upgrade_DwarvenForgedBlades
		ConflictsWith	= Upgrade_DwarvenSiegeHammer
		CommandSet		= DwarvenGuardianHordeBladesCommandSet
	End
	
	/////////////////////
	// AISpecialPowers
	/////////////////////
	
	Behavior = AISpecialPowerUpdate DwarvenGuardianHordeCaptureBuildingAI
		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	

	Behavior = AISpecialPowerUpdate DwarfGuardianCharge
		CommandButtonName = Command_DwarvenGuardianChargeAttack
		SpecialPowerAIType = AI_SPECIAL_POWER_CHARGE
	End

	
	Geometry = BOX
	GeometryMajorRadius = 30.0
	GeometryMinorRadius = 50.0
	GeometryHeight = 20.0
	GeometryIsSmall = No
	
	
	; *** AUTO RESOLVE DATA *** 
	AutoResolveUnitType = AutoResolveUnit_Soldier
	AutoResolveCombatChain = AutoResolve_SoldierCombatChain
	
	AutoResolveBody = AutoResolve_DwarvenGuardianHordeBody
	
	AutoResolveArmor
		RequiredUpgrades = Upgrade_DwarvenMithrilMail
		Armor = AutoResolve_DwarvenGuardianHeavyArmor
	End

	AutoResolveArmor
		ExcludedUpgrades = Upgrade_DwarvenMithrilMail
		Armor = AutoResolve_DwarvenGuardianArmor
	End

	AutoResolveWeapon
		RequiredUpgrades = Upgrade_DwarvenForgedBlades
		Weapon = AutoResolve_DwarvenGuardianUpgradedWeapon
	End

	AutoResolveWeapon
		ExcludedUpgrades = Upgrade_DwarvenForgedBlades
		Weapon = AutoResolve_DwarvenGuardianWeapon
	End
	
	WorldMapArmoryUpgradesAllowed = Upgrade_DwarvenBasicTraining Upgrade_DwarvenForgedBlades Upgrade_DwarvenMithrilMail
End

;