Nazgûls "Special Extended Edition"
#642
Posted 06 September 2008 - 03:05 AM
Anyway, next little issue... Added Dwarven Miners tonight, and as far as I can see I've done everything the way I used to, but when they spawn from the mines, they form a chunk of what looks like a single unit, instead of line up like the Warriors (Guardians) that I based them on. When I select them, the ARE individual units too, despite that the CommandButton is connected to the horde? I can't think of anything I missed, and this isn't exactly the first time I add a unit/battalion either, so I'm confused? (again)
Edited by Nazgûl, 06 September 2008 - 12:29 PM.
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#644
Posted 06 September 2008 - 12:31 PM
EDIT: Wow, a new weird discovery... no wonder the Miners don't work - the Guardiands don't work either I haven't really been playing with Dwarves since I got the last WiP from Sûl, and I guess something happened in that version that Sul forgot to finish/fix... =s
Edited by Nazgûl, 06 September 2008 - 01:00 PM.
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#646
Posted 06 September 2008 - 01:03 PM
Horde: As aparently the Guardians have the same error (won't line up as a battalion either) ^ I'll post that code first
;//------------------------------------------------------------------------------ Object DwarvenGuardianHorde ; This is required for garrisoned objects - please put in all objects. ButtonImage = WOR_Guardian SelectPortrait = UPDwarvenGuardian Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = USER_8 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:HordeDwarvenGuardian DisplayNameStrategic = CONTROLBAR:LW_Unit_DwarvenGuardianHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_DwarvenGuardianHorde 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 = M_DWARVEN_GUARDIAN_BUILDCOST BuildTime = M_DWARVEN_GUARDIAN_BUILDTIME VisionRange = M_DWARVEN_GUARDIAN_HORDE_VISION_RANGE ShroudClearingRange = M_DWARVEN_GUARDIAN_SHROUD_RANGE VisionSide = 50% VisionRear = 25% ; MaxVisionBonusPercent = 300% ; VisionBonusTestRadius = 200 ; VisionBonusPercentPerFoot = 1.0% CommandPoints = 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 = M_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 = M_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 = 2000 ObjectStatusOfContained = InitialPayload = DwarvenGuardian 15 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 = DwarvenGuardianBanner;DwarvenBanner ;// types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:DwarvenGuardian Pos:X:40.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:DwarvenGuardian Position:X:20 Y:0 Position:X:20 Y:20 Position:X:20 Y:-20 Position:X:20 Y:40 Position:X:20 Y:-40 RankInfo = RankNumber:2 UnitType:DwarvenGuardian Position:X:0 Y:0 Leader 1 0 Position:X:0 Y:20 Leader 1 1 Position:X:0 Y:-20 Leader 1 2 Position:X:0 Y:40 Leader 1 3 Position:X:0 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:DwarvenGuardian Position:X:-20 Y:0 Leader 2 0 Position:X:-20 Y:20 Leader 2 1 Position:X:-20 Y:-20 Leader 2 2 Position:X:-20 Y:40 Leader 2 3 Position:X:-20 Y:-40 Leader 2 4 ; BannerCarrierPosition = UnitType:DwarvenGuardian Pos:X:70.0 Y:0.0 ;// (DEFAULT) position of banner carrier ; RankInfo = RankNumber:1 UnitType:DwarvenGuardian 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:DwarvenGuardian 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:DwarvenGuardian 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 3;Modified by Sûlherokhh (was '1') 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 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 = M_INFANTRY_TAUNT_POINT_RADIUS ; max distance to taunted/pointed objet TauntAndPointUpdateDelay = 1000 ; how often scan (milliseconds) TauntAndPointExcluded = NONE AfraidOf = M_EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = M_EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = M_EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = M_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 = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End LocomotorSet Locomotor = ScaredMeleeHordeLocomotor Condition = SET_SCARED Speed = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_CreateLevelUpUpgrade TriggeredBy = Upgrade_DwarvenBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality1 TriggeredBy = Upgrade_DwarvenSiegeHammer End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_DwarvenForgedBlades End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality3 TriggeredBy = Upgrade_DwarvenMithrilMail 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" Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior SpecialAbility = SpecialAbilityDwarvenCharge MaxScanRange = 140 Query = 1 ALL ENEMIES -STRUCTURE End CommandSet = DwarvenGuardianHordeCommandSet Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeBladesCommandSet TriggeredBy = Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenSiegeHammer CommandSet = DwarvenGuardianHordeBladesCommandSet_SEE End ;; Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeSiegeCommandSet TriggeredBy = Upgrade_DwarvenSiegeHammer ConflictsWith = Upgrade_DwarvenForgedBlades CommandSet = DwarvenGuardianHordeSiegeCommandSet_SEE End ///////////////////// // AISpecialPowers ///////////////////// #include "..\..\..\..\includes\Battlestance_SEE.inc" Behavior = AISpecialPowerUpdate DwarfGuardianCharge CommandButtonName = Command_DwarvenGuardianChargeAttack SpecialPowerAIType = AI_SPECIAL_POWER_CHARGE End Geometry = BOX GeometryMajorRadius = 30.0 GeometryMinorRadius = 45.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
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#647
Posted 06 September 2008 - 11:16 PM
The Guardians work again. I had to remove the Horde code for the DwarvenMiners and put it into the DwarvenMiner unit ini instead. That made the Guardians work as normal again. So aparently, there was some kind of conflict there. Now, my next step was to rename the DwarvenMiners into DwarvenMiners_SEE since there is another unit in the Obsolete.ini that is called the same (that I renamed to DwarvenMiner_OBSOLETE). So I changed it's name back and renamed my miner unit, in both the unit ini and the horde ini off course. But the darn miners STILL won't line up as a battalion/horde, but as single individual units? Maaan, what's going on?
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#648
Posted 06 September 2008 - 11:53 PM
Some progress...
The Guardians work again. I had to remove the Horde code for the DwarvenMiners and put it into the DwarvenMiner unit ini instead. That made the Guardians work as normal again. So aparently, there was some kind of conflict there. Now, my next step was to rename the DwarvenMiners into DwarvenMiners_SEE since there is another unit in the Obsolete.ini that is called the same (that I renamed to DwarvenMiner_OBSOLETE). So I changed it's name back and renamed my miner unit, in both the unit ini and the horde ini off course. But the darn miners STILL won't line up as a battalion/horde, but as single individual units? Maaan, what's going on?
-Perchance the DwarvenMiners horde code you was using was also the horde code used for the Guardians, I know a lot of those sort of scripts are linked across many different units in the game and altering one alters them all... maybe the code could only be used to horde a single in-game unit and couldn't be repeated to other units, so adding it to the Miners took it away from the Guardians?
Also, naming them is good and all for the gameplay, but it isn't going to affect the way they line up. I have two questions for you: 1) why do they have to line up and 2) why can't they just be... single units, like Orc labourer things? I can't imagine Dwarven Miners lining up really but being more disordered in their approach to battle...
DWARVES! GRAB YOUR SHOVELS AND LINE UP! LINE UP I SAY! NOW, GET INTO DEFENCE FORMATION AND HOLD FAST AGAINST THOSE WARGS! I WILL MAKE A SIEGE ARMY OUT OF YOU YET!
The point of the matter is that the Dwarven Miners are a worker essentially, and not a siege unit or raiding party, so grouping them into a rank isn't really needed and perhaps isn't something you should wear yourself out over?
Just my little two cents... helps get you nearer to your dollar!
Edit: as an add-on to the above... you know how at the moment you build them and they come out as the group and then can only be selected individually? Now I personally think that that would work really well. You can order them to move as a unit but they fight alone, you know? It just works with their nature as workers and not as warriors.
As to why the Miners don't work with all the commandsets etc of the Guardians is because maybe you can't duplicate the script of the Guardians into something that doesn't essentially work in the same way as them? (eg different upgrades and unit orders etc?)
If someone can tell me where I can find the scripts for the Miners and the Guardians I'll take a look at them for you and SEE what I can do for you.
Edited by Dr.Kirk, 07 September 2008 - 12:02 AM.
Aperture Science. We do what we must, because we can.
#649
Posted 07 September 2008 - 12:18 AM
This could have been any unit really, but it happened to be Miners. Anyway.. the fact is that using other unit inis and horde inis is nothing unusual. That's how I've been modding for ages. I take a unit that is very similar to the unit I'm gonna code/make (which is depending on what bone/anims the model is rigged to). In this case, the miners are rigged to Guardian bones, so I used Guardian INI and Horde, and duplicated them, and changed names of the objects. That's how I've always done stuff like this
However, this time, the horde refuses to work... and I fail to see why? :(
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#650
Posted 07 September 2008 - 12:26 AM
Uhm well... lol, with you being my new backup Coder and all, you should know one thing This is not about wether the Minders should be individual units or not, it's about why the game won't accept them as a horde when I coded them that way
This could have been any unit really, but it happened to be Miners. Anyway.. the fact is that using other unit inis and horde inis is nothing unusual. That's how I've been modding for ages. I take a unit that is very similar to the unit I'm gonna code/make (which is depending on what bone/anims the model is rigged to). In this case, the miners are rigged to Guardian bones, so I used Guardian INI and Horde, and duplicated them, and changed names of the objects. That's how I've always done stuff like this
However, this time, the horde refuses to work... and I fail to see why? :(
Ah... thank you, that explenation made much more sense to me.
Scrap everything I said earlier then.
Right... so, the problem is in the hording... maybe it's got the same problem as a map in Worldbuilder, you can program a skybox into it but can only see it if you decide to play at a certain point on the map... perhaps the problem is simply that you've asked them to group in one area of code but in it's back-up code (what the game checks additionally to check whether or not a written command is valid) you've left it as something else that conflicts with this order or action, and perhaps the game's only answer is to group them first and then make them single selects afterwards...
I'll get back to you on this one.
-Dr.Kirk
Aperture Science. We do what we must, because we can.
#651
Posted 07 September 2008 - 12:32 AM
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#653
Posted 07 September 2008 - 11:13 AM
I'll post the INI's later though, as I have to go and attend to my visiting friends
Thanks, CU later =)
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#654
Posted 08 September 2008 - 09:54 PM
Here we go:
Dwarven Miner unit & horde INI:
Object DwarvenMiner_SEE ; *** ART Parameters *** SelectPortrait = UPDwarvenGuardian ButtonImage = WOR_Guardian Draw = W3DHordeModelDraw ModuleTag_01 OkToChangeModelColor = Yes StaticModelLODMode = Yes ; specify options for static LODs LodOptions = LOW AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_LOW MaxRandomTextures = M_MAX_RANDOM_TEXTURES_LOW MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_LOW MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_LOW End LodOptions = MEDIUM AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_MED MaxRandomTextures = M_MAX_RANDOM_TEXTURES_MED MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_MED MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_MED End LodOptions = HIGH AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_HIGH MaxRandomTextures = M_MAX_RANDOM_TEXTURES_HIGH MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_HIGH MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_HIGH End WadingParticleSys = WaterRipplesTrail ; used when the unit is wading in shallow water.;;================ MODELS ================================================================= DefaultModelConditionState Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End ModelConditionState WEAPONSET_PLAYER_UPGRADE Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End ModelConditionState = USER_4 ; This state is used in cinematics to get the old style armor Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End;;=============== ANIMATIONS ===============================================================;;======= FALLING & FLYING AnimationState = PASSENGER Animation = Grabbed AnimationName = EUDwarfGua_LEPB ; Don't have real flailing anim, needs to be replaced AnimationMode = LOOP End End AnimationState = THROWN_PROJECTILE Animation = FlyA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP End Animation = FlyB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP End Animation = FlyC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = FREEFALL Animation = FallingA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP AnimationBlendTime = 10 End Animation = FallingB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP AnimationBlendTime = 10 End Animation = FallingC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP AnimationBlendTime = 10 End End AnimationState = STUNNED_FLAILING Animation = FlyA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Animation = FlyB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Animation = FlyC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Flags = RANDOMSTART End AnimationState = DYING BURNINGDEATH Animation AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE AnimationBlendTime = 10 End ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End AnimationState = DYING SPLATTED Animation = Splatted_On_Ground AnimationName = EUDwarfGua_LNDA AnimationMode = ONCE End EnteringStateFX = FX_HumanBodyGroundHit_SEE ;FX_OrcHitGround End AnimationState = DYING AFLAME Animation AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE AnimationBlendTime = 10 End ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End AnimationState = DYING DEATH_2 ; fading out. Animation AnimationName = EUDwarfGua_IDLB AnimationMode = LOOP End End AnimationState = DYING Animation = DIEB AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE End Animation = DIEB AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE End Animation = DIEC AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE End End AnimationState = PARALYZED Animation AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP End End AnimationState = BURNINGDEATH Animation AnimationName = EUDwarfGua_MFDA AnimationMode = LOOP Distance = 50 End Flags = RANDOMSTART ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End;;======= LANDING & STANDING AnimationState = STUNNED_STANDING_UP Animation = GTPA AnimationName = EUDwarfGua_GTPA AnimationMode = ONCE AnimationSpeedFactorRange = 1.5 1.5 End End AnimationState = STUNNED Animation = Slatted_On_Ground AnimationName = EUDwarfGua_LNDA AnimationMode = ONCE End EnteringStateFX = FX_OrcHitGround End AnimationState = MOVING FIRING_OR_PREATTACK_A ShareAnimation = Yes Animation = RunAndFireA AnimationName = EUDwarfGua_ATRA AnimationMode = LOOP End Animation = RunAndFireB AnimationName = EUDwarfGua_ATRB AnimationMode = LOOP End Animation = RunAndFireC AnimationName = EUDwarfGua_ATRC AnimationMode = LOOP End Flags = RANDOMSTART End ;;====== TERROR AnimationState = MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY ;@@@KM Add distance Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNB AnimationMode = LOOP End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING EMOTION_TERROR ;@@@KM Add distance Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNA AnimationMode = ONCE End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNB AnimationMode = ONCE End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNC AnimationMode = ONCE End Flags = RESTART_ANIM_WHEN_COMPLETE End ;;======= BACK UP AnimationState = MOVING BACKING_UP ;@@@KM Add distance Animation = BAKA AnimationName = EUDwarfGua_BAKA AnimationMode = LOOP End Animation = BAKB AnimationName = EUDwarfGua_BAKB AnimationMode = LOOP End Animation = BAKC AnimationName = EUDwarfGua_BAKC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING ATTACKING ShareAnimation = Yes; Animation = RUNA AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP Distance = 25 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING CHARGING ShareAnimation = Yes; Animation = RUNB AnimationName = EUDwarfGua_RUNB AnimationMode = LOOP Distance = 30 ;AnimationSpeedFactorRange = 0.5 0.5 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING ;@@@KM - Add Distance ShareAnimation = Yes; Animation = RUNB AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP Distance = 30 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End;;======= UNCONTROLLABLY AFRAID ; This is before Attacking so it overrides it. Normal fear is below so you don't go to little-fear in between swings. AnimationState = EMOTION_UNCONTROLLABLY_AFRAID Animation = FERA AnimationName = EUDwarfGua_FERA AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERB AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERC AnimationMode = LOOP End Flags = RANDOMSTART End;;---------------------- ATTACKING ---------------------------------------------------------------- AnimationState = FIRING_OR_PREATTACK_A Animation = ATK1 AnimationName = EUDwarfGua_ATKA AnimationMode = ONCE UseWeaponTiming = Yes End Animation = ATK2 AnimationName = EUDwarfGua_ATKB AnimationMode = ONCE UseWeaponTiming = Yes End Animation = ATK3 AnimationName = EUDwarfGua_ATKC AnimationMode = ONCE UseWeaponTiming = Yes End ;ParticleSysBone = None MeleeDust End;;----------------- HIT REACTIONS -------------------------------------------------------------------------; AnimationState = HIT_REACTION; Animation = HITA; AnimationName = EUDwarfGua_HITA; AnimationMode = ONCE; End; End;;----------------- EMOTIONS ----------------------------------------------------------------;;======= APPREHENSIVE AnimationState = EMOTION_ALERT EMOTION_AFRAID Animation = APPA AnimationName = GUManMocap_APPA AnimationMode = ONCE End Animation = APPB AnimationName = GUManMocap_APPB AnimationMode = ONCE End Flags = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE End ;;======= AFRAID AnimationState = EMOTION_AFRAID Animation = FERA AnimationName = EUDwarfGua_FERA AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERB AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = ATTACKING Animation = ALERT_1 AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP End End;;======== POINTING AnimationState = EMOTION_POINTING Animation = Pointing1B AnimationName = EUDwarfGua_PNTB AnimationMode = LOOP End Animation = Pointing1C AnimationName = EUDwarfGua_PNTC AnimationMode = LOOP End Flags = RANDOMSTART End;;======= TAUNTING AnimationState = EMOTION_TAUNTING Animation = Taunting1A AnimationName = EUDwarfGua_TNTA AnimationMode = LOOP End Animation = Taunting1B AnimationName = EUDwarfGua_TNTB AnimationMode = LOOP End Animation = Taunting1C AnimationName = EUDwarfGua_TNTC AnimationMode = LOOP End Flags = RANDOMSTART End;;======= CELEBRATING AnimationState = EMOTION_CELEBRATING Animation = CHRA AnimationName = EUDwarfGua_CHRA AnimationMode = LOOP End Animation = Taunting1B AnimationName = EUDwarfGua_CHRB AnimationMode = LOOP End Animation = Taunting1C AnimationName = EUDwarfGua_CHRC AnimationMode = LOOP End Flags = RANDOMSTART End ;;----------------- ALERT STATE --------------------------------------------------------------------------- AnimationState = EMOTION_ALERT Animation = ALERT_1 AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP;ONCE AnimationPriority = 10 End Flags = RESTART_ANIM_WHEN_COMPLETE ; acts like an idle animation & keeps running the animations. End AnimationState = RAISING_FLAG Animation = Taunting1A AnimationName = EUDwarfGua_CHRA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = Taunting1B AnimationName = EUDwarfGua_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = Taunting1C AnimationName = EUDwarfGua_CHRC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE End;;----------------- SELECTED STATES ----------------------------------------------------------------------- AnimationState = SELECTED StateName = STATE_Selected Animation = ATNB AnimationName = EUDwarfGua_ATNB AnimationMode = LOOP End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end if CurDrawableModelcondition("ATTACKING") then return "IDLA" else return "ATNA" end EndScript BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end EndScript End ;;----------------- IDLE STATES --------------------------------------------------------------------------- AnimationState = WEAPONSET_PLAYER_UPGRADE StateName = STATE_Idle Animation = IDLB AnimationName = EUDwarfGua_IDLB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLC AnimationName = EUDwarfGua_IDLC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLD AnimationName = EUDwarfGua_IDLD AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRA AnimationName = EUDwarfGua_CHRA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRB AnimationName = EUDwarfGua_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End AnimationState = USER_3 StateName = STATE_User_3 Animation = GUARD_STANCE AnimationName = GUManMocap_IDLA AnimationMode = LOOP End End IdleAnimationState ;AllowRepeatInRandomPick = no ;Flags = RANDOMSTART StateName = STATE_Idle Animation = IDLA AnimationName = EUDwarfGua_IDLA ;default idle AnimationMode = ONCE AnimationPriority = 100 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLB AnimationName = EUDwarfGua_IDLB ;figet idle, similar to IDLA, should be used sparingly AnimationMode = ONCE AnimationPriority = 10 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLC AnimationName = EUDwarfGua_IDLC ;bored idle --similar to IDLD but longer AnimationMode = ONCE AnimationPriority = 5 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLD AnimationName = EUDwarfGua_IDLD ;bored idle --similar to IDLC but shorter AnimationMode = ONCE AnimationPriority = 7 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End;;--------------- TRANSITIONS --------------------------------------------------------------------------- TransitionState = TRANS_IdleToSelected Animation = ATNA AnimationName = EUDwarfGua_ATNA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End TransitionState = TRANS_SelectedToIdle Animation = ATNC AnimationName = EUDwarfGua_ATNC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End End #include "..\..\..\includes\StunDrawModuleSmall.inc" ;// ***DESIGN parameters *** Side = Dwarves EditorSorting = UNIT ThreatLevel = 1.0 ThingClass = HORDE_UNIT CommandPoints = 4 BountyValue = M_DWARVEN_MINER_BOUNTY_VALUE ;EmotionRange = 240 ;// Make sure this value is greater than the fear distribution range. TransportSlotCount = M_TRANSPORTSLOTCOUNT_UNIT ;;; WEAPON SETS ;;; WeaponSet Conditions = None Weapon = PRIMARY DwarvenGuardianAxe AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY DwarvenGuardianSiegeHammer_SEE AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End ; WeaponSet ; Conditions = WEAPONSET_TOGGLE_1 ; Weapon = PRIMARY DwarvenGuardianAxe ; Weapon = SECONDARY DwarvenBatteringRam ; OnlyAgainst = SECONDARY MINE ; End ;;; ARMOR SETS ;;; ArmorSet Conditions = None Armor = DwarvenAxeThrowerArmor DamageFX = NormalDamageFX End ArmorSet Conditions = PLAYER_UPGRADE Armor = DwarvenAxeThrowerHeavyArmor DamageFX = NormalDamageFX End VisionRange = M_VISION_STANDARD_MELEE_HORDEMEMBER ;M_DWARVEN_GUARDIAN_VISION_RANGE VisionSide = 35% VisionRear = 25% ; VisionBonusPercentPerFoot = 1.0% ;------------ Modified by Sûlherokhh (was 2%) ; MaxVisionBonusPercent = 300% ; VisionBonusTestRadius = 200 ShroudClearingRange = M_SHROUD_CLEAR_STANDARD DisplayName = OBJECT:DwarvenMiner CrushableLevel = 0 ;//What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrusherLevel = 1 CrushWeapon = GuardianCrush 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. CrushRevengeWeapon = BasicInfantryCrushRevenge CommandSet = DwarvenMinerCommandSet ;//--- AUDIO Parameters --- ;VoiceAmbushed = DwarfGuardianVoiceAmbushed VoiceAttack = DwarfGuardianVoiceAttack VoiceAttackCharge = DwarfGuardianVoiceAttackCharge VoiceAttackMachine = DwarfGuardianVoiceAttack VoiceAttackStructure = DwarfGuardianVoiceAttackBuilding VoiceCreated = DwarfGuardianVoiceSalute VoiceFullyCreated = DwarfGuardianVoiceSalute VoiceGuard = DwarfGuardianVoiceMove VoiceMove = DwarfGuardianVoiceMove VoiceMoveToCamp = DwarfGuardianVoiceMoveCamp VoiceMoveWhileAttacking = DwarfGuardianVoiceDisengage VoicePriority = 47 VoiceRetreatToCastle = DwarfGuardianVoiceRetreat VoiceSelect = DwarfGuardianVoiceSelectMS VoiceSelectBattle = DwarfGuardianVoiceSelectBattle VoiceEnterStateAttack = DwarfGuardianVoiceEnterStateAttack VoiceEnterStateAttackCharge = DwarfGuardianVoiceEnterStateAttackCharge VoiceEnterStateAttackMachine = DwarfGuardianVoiceEnterStateAttackBuilding VoiceEnterStateAttackStructure = DwarfGuardianVoiceEnterStateAttackBuilding VoiceEnterStateMove = DwarfGuardianVoiceEnterStateMove VoiceEnterStateMoveToCamp = DwarfGuardianVoiceEnterStateMoveCamp VoiceEnterStateMoveWhileAttacking = DwarfGuardianVoiceEnterStateDisengage VoiceEnterStateRetreatToCastle = DwarfGuardianVoiceEnterStateRetreat SoundImpact = ImpactHorse UnitSpecificSounds VoiceGarrison = DwarfGuardianVoiceMoveGarrison VoiceEnterUnitElvenTransportShip = DwarfGuardianVoiceMoveShip VoiceInitiateCaptureBuilding = DwarfGuardianVoiceCaptureBuilding ;VoiceEnterStateInitiateCaptureBuilding = End #include "..\..\..\includes\StandardUnitEvaEvents.inc" CrowdResponseKey = Dwarf Behavior = LargeGroupAudioUpdate ModuleTag_LGAU Key = Humanoid_Male Dwarf Dwarf_Male Dwarf_Guardian End ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo ModelCondition = Required:EMOTION_CELEBRATING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxCheerSinglesLoop ;MOVING ATTACKING ModelCondition = Required:EMOTION_POINTING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop ;MOVING ATTACKING ModelCondition = Required:EMOTION_TAUNTING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop ;MOVING ATTACKING ModelCondition = Required:RAISING_FLAG Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop End ; Change selection sounds based on upgrades ClientBehavior = UpgradeSoundSelectorClientBehavior ModuleTag_UpgradeSoundSelector SoundUpgrade = Upgrade_DwarvenSiegeHammer ; EVERYTHING on this line must be present ;ExcludedUpgrades = Upgrade_OpenGarrison Upgrade_TrebuchetTurret ; NOTHING on this line can be present VoiceAttack = DwarfGuardianVoiceAttackHammer VoiceAttack = DwarfGuardianVoiceEnterStateAttackHammer End End ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800; AnimationSound = Sound: TauntHumanHitShield Animation:GUMAArms_SKL.GUManMocap_IDLC Frames: 17 27 AnimationSound = Sound:BodyFallOrc Animation:EUDWARFGUA_SKL.EUDWARFGUA_LNDA Frames:4; AnimationSound = Sound:AxeDropSoundHere! Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEA Frames:8 ;axe falls AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEA Frames:45; AnimationSound = Sound:AxeDropSoundHere! Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEB Frames:8 ;axe falls AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEB Frames:28 AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEC Frames:45 End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ATTACK_NEEDS_LINE_OF_SIGHT NOTIFY_OF_PREATTACK GRAB_AND_DROP Body = ActiveBody ModuleTag_02 CheerRadius = M_EMOTION_CHEER_RADIUS MaxHealth = M_DWARVEN_MINER_HEALTH MaxHealthDamaged = M_DWARVEN_MINER_HEALTH_DAMAGED BurningDeathBehavior = Yes BurningDeathFX = FX_InfantryBurningFlame End ;//-----UPGRADES------ ;--Weapon-- Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTagGuardian TriggeredBy = Upgrade_DwarvenSiegeHammer ; ;Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenForgedBlades ; ; End ; Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTagGuardian ; TriggeredBy = Upgrade_DwarvenForgedBlades ; End Behavior = SubObjectsUpgrade ForgedBlade_UpgradeGuardian TriggeredBy = Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenSiegeHammer ; ; ShowSubObjects = Forged_Blade End ;--Siege Hammer Behavior = SubObjectsUpgrade SiegeHammer_UpgradeGuardian TriggeredBy = Upgrade_DwarvenSiegeHammer ConflictsWith = Upgrade_DwarvenForgedBlades ; ; HideSubObjects = axe shield ShowSubObjects = hammer1 End ;--Armor-- Behavior = ArmorUpgrade ArmorUpgradeModuleTagGuardian TriggeredBy = Upgrade_DwarvenMithrilMail ArmorSetFlag = PLAYER_UPGRADE ;KillArmorUpgrade = Yes ;This cancels any previous armor upgrade. End Behavior = SubObjectsUpgrade Armor_UpgradeGuardian TriggeredBy = Upgrade_DwarvenMithrilMail UpgradeTexture = EUDwarfMin.tga 0 EUDwarfMin_HA.tga RecolorHouse = Yes ExcludeSubobjects = Forged_Blade End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 AILuaEventsList = DwarvenMinerFunctions MinCowerTime = 3000 MaxCowerTime = 5000 AttackPriority = AttackPriority_Cavalry BurningDeathTime = M_BURNINGDEATH_DURATION_INFANTRY End LocomotorSet Locomotor = HumanSpecialChargeLocomotor Condition = SET_NORMAL Speed = M_NORMAL_GOOD_INFANTRY_MEMBER_SPEED End LocomotorSet Locomotor = BurningDeathLocomotorInfantry Condition = SET_BURNINGDEATH Speed = M_BURNINGDEATH_WANDERSPEED_INFANTRY End Behavior = PhysicsBehavior ModuleTag_04 GravityMult = 1.0 ShockStunnedTimeLow = 1400 ;msec ShockStunnedTimeHigh = 2400 ;msec ShockStandingTime = 666 ;msec End Behavior = FlammableUpdate ModuleTag_BurningDeathPromotor AflameDuration = M_TROOP_AFLAME_DURATION // If I catch fire, I'll burn for this long... AflameDamageAmount = M_TROOP_AFLAME_DAMAGE_AMOUNT // taking this much damage... AflameDamageDelay = M_TROOP_AFLAME_DAMAGE_DELAY // this often. FlameDamageLimit = M_TROOP_FLAME_DAMAGE_LIMIT FlameDamageExpiration = M_TROOP_FLAME_DAMAGE_EXPIRATION End Behavior = AttributeModifierUpgrade ModuleTag_AMU TriggeredBy = Upgrade_GondorFighterFearless AttributeModifier = FearlessForever End Behavior = AttributeModifierUpgrade ModuleTag_SHU TriggeredBy = Upgrade_DwarvenSiegeHammer AttributeModifier = DwarvenSiegeHammer End Behavior = SquishCollide ModuleTag_06 ;//nothing End Behavior = HordeMemberCollide ModuleTag_HMC ;//nothing End ; Behavior = HitReactionBehavior HitReactionBehaviorModuleTag; HitReactionLifeTimer1 = 2500 ; level 1 (light damage) hit reaction animations in ms; HitReactionLifeTimer2 = 2500 ; level 2 (medium damage) hit reaction animations in ms; HitReactionLifeTimer3 = 2500 ; level 3 (heavy damage) hit reaction animations in ms; HitReactionThreshold1 = 5.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 = Yes If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets); End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL -KNOCKBACK -FADED -NORMAL SinkDelay = 3000 SinkRate = 0.90 ; in Dist/Sec DestructionDelay = 15000 Sound = INITIAL DwarfGenericVoiceDie End Behavior = SlowDeathBehavior ModuleTag_07 ;// Same as normal death, but no sound (sound already played by SoundImpact = ... ) DeathTypes = NONE +KNOCKBACK SinkDelay = 3000 SinkRate = 0.60 ; in Dist/Sec DestructionDelay = 10000 End Behavior = SlowDeathBehavior ModuleTag_FadeDeath DeathTypes = NONE +FADED FadeDelay = 0 FadeTime = 5000 DestructionDelay = 5000 DeathFlags = DEATH_2; FX = INITIAL FX_UnSummonElvenAllies Sound = INITIAL SpellGenericUnsummonMS End #include "..\..\..\..\includes\GiantBirdDroppingHumanBody_SEE.inc" ;//--- NEW DWARVEN CHARGE ABILITY --- Behavior = SpecialPowerModule ModuleTag_ChargeStarter SpecialPowerTemplate = SpecialAbilityDwarvenCharge UpdateModuleStartsAttack = Yes InitiateSound = DwarfGuardianBullRushMS End #include "..\..\..\includes\DwarvenChargeUpdate.inc" Behavior = CommandSetUpgrade ModuleTag_commandGuardian TriggeredBy = Upgrade_DwarvenForgedBlades Upgrade_DwarvenSiegeHammer RequiresAllTriggers = Yes CommandSet = DwarvenGuardianHordeToggleCommandSet End Geometry = CYLINDER GeometryMajorRadius = 5.6 GeometryMinorRadius = 5.6 GeometryHeight = 16.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 19; ShadowSizeY = 19; ShadowTexture = ShadowI;End;-------------------------------------Object DwarvenMinerHorde_SEE ; This is required for garrisoned objects - please put in all objects. ButtonImage = WOR_Guardian SelectPortrait = UPDwarvenGuardian Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = USER_8 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_DwarvenGuardianHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_DwarvenGuardianHorde ;----------------------------------------- ;Prerequisites ;Object = DwarvenWorkPit ;End;----------------------------------------- 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 = M_DWARVEN_MINER_BUILDCOST BuildTime = M_DWARVEN_MINER_BUILDTIME VisionRange = M_DWARVEN_MINER_HORDE_VISION_RANGE ShroudClearingRange = M_DWARVEN_MINER_SHROUD_RANGE VisionSide = 50% VisionRear = 25% ; MaxVisionBonusPercent = 300% ; VisionBonusTestRadius = 200 ; VisionBonusPercentPerFoot = 1.0% CommandPoints = 30 //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 = M_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 = M_DWARVEN_MINER_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 = 2000 ObjectStatusOfContained = InitialPayload = DwarvenMiner_SEE 15 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 = DwarvenGuardianBanner ;DwarvenBanner ;// types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:DwarvenGuardian Pos:X:40.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:DwarvenMiner_SEE Position:X:20 Y:0 Position:X:20 Y:20 Position:X:20 Y:-20 Position:X:20 Y:40 Position:X:20 Y:-40 RankInfo = RankNumber:2 UnitType:DwarvenMiner_SEE Position:X:0 Y:0 Leader 1 0 Position:X:0 Y:20 Leader 1 1 Position:X:0 Y:-20 Leader 1 2 Position:X:0 Y:40 Leader 1 3 Position:X:0 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:DwarvenMiner_SEE Position:X:-20 Y:0 Leader 2 0 Position:X:-20 Y:20 Leader 2 1 Position:X:-20 Y:-20 Leader 2 2 Position:X:-20 Y:40 Leader 2 3 Position:X:-20 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 2 3 ;Modified by Sûlherokhh (was '1') 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 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 = M_INFANTRY_TAUNT_POINT_RADIUS ; max distance to taunted/pointed objet TauntAndPointUpdateDelay = 1000 ; how often scan (milliseconds) TauntAndPointExcluded = NONE AfraidOf = M_EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = M_EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = M_EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = M_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 = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End LocomotorSet Locomotor = ScaredMeleeHordeLocomotor Condition = SET_SCARED Speed = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_CreateLevelUpUpgrade TriggeredBy = Upgrade_DwarvenBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality1 TriggeredBy = Upgrade_DwarvenSiegeHammer End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_DwarvenForgedBlades End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality3 TriggeredBy = Upgrade_DwarvenMithrilMail 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" Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior SpecialAbility = SpecialAbilityDwarvenCharge MaxScanRange = 140 Query = 1 ALL ENEMIES -STRUCTURE End CommandSet = DwarvenMinerHordeCommandSet Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeBladesCommandSet TriggeredBy = Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenSiegeHammer CommandSet = DwarvenGuardianHordeBladesCommandSet_SEE End; ; Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeSiegeCommandSet TriggeredBy = Upgrade_DwarvenSiegeHammer ConflictsWith = Upgrade_DwarvenForgedBlades CommandSet = DwarvenGuardianHordeSiegeCommandSet_SEE End ///////////////////// // AISpecialPowers ///////////////////// #include "..\..\..\..\includes\Battlestance_SEE.inc" Behavior = AISpecialPowerUpdate DwarfGuardianCharge CommandButtonName = Command_DwarvenGuardianChargeAttack SpecialPowerAIType = AI_SPECIAL_POWER_CHARGE End Geometry = BOX GeometryMajorRadius = 30.0 GeometryMinorRadius = 45.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_DwarvenMithrilMailEnd
I can't see any problems here?
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#655
Posted 10 September 2008 - 11:39 PM
The only lead I have was that the Miner horde code made the Guardians have the exact same error ^
But even though I moved the Miner horde code from Dwarven horde ini into the unit INI, the Miners still refuse to work, and still look like this (meaning the LUA for the tools won't work either):
Edited by Nazgûl, 10 September 2008 - 11:40 PM.
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#656
Posted 11 September 2008 - 02:47 AM
#657
Posted 11 September 2008 - 01:50 PM
XML
<EventList Name="DwarvenMinerFunctions" Inherit="InfantryFunctions"> <EventHandler EventName="OnCreated" ScriptFunctionName="OnDwarvenMinerCreated" DebugSingleStep="false"/> </EventList>
LUA
function OnDwarvenMinerCreated(self) --They will be barely randomly, and they have 5 skins....20 possibilities ObjectHideSubObjectPermanently( self, "SHOVEL", true ) ObjectHideSubObjectPermanently( self, "PICKAXE", true ) local arms = GetRandomNumber() if arms <= 0.50 then ObjectHideSubObjectPermanently( self, "SHOVEL", false ) else ObjectHideSubObjectPermanently( self, "PICKAXE", false ) end end
And like seen in this thread earlier, the Miner Horde code was in DwarvenHordes.INI. When it was placed there, it somehow corrupted/got mixed/interfered with the Guardian horde code, and made the Guardians look like that too - meaning all clumped together into a single pile of units. When I removed the Miner horde code from the DwarvenHordes.INI, the Guardians worked as usual again.
But the Miners won't, as you can see =/ I thought it might be a conflict with the Obsolete DwarvenMiner unit, so I renamed the new miner to DwarvenMiner_SEE. Same with the Horde! It still didn't help. God I hate modding sometimes... this has slowed me down for a whole week.
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#658
Posted 11 September 2008 - 01:51 PM
I know this, the horde is absolutely fine. It's something to do with the command button / unit.
Nazgul, can you post the command button entry (and re-post the full code, for some reason it's really screwed and really hard to read on mine).
But yeah, if it's the same problem, I <think> I know the answer
#659
Posted 11 September 2008 - 03:16 PM
Here's the CommandButton:
[codeCommandButton Command_ConstructDwarvenMinerHorde
Command = UNIT_BUILD
Object = DwarvenMinerHorde_SEE
Options = CANCELABLE
TextLabel = CONTROLBAR:ConstructDwarvenMinerHorde
ButtonImage = BDHallofWarriors_DwarvenGuardian
ButtonBorderType = BUILD
DescriptLabel = CONTROLBAR:ToolTipBuildDwarvenMinerHorde
Radial = Yes
InPalantir = Yes
ShowProductionCount = Yes
End][/code]
And here's the full non-boxed code for the Miners:
(It's pretty much a copy of Guardians, but with new models and new macros)
Object DwarvenMiner_SEE ; *** ART Parameters *** SelectPortrait = UPDwarvenGuardian ButtonImage = WOR_Guardian Draw = W3DHordeModelDraw ModuleTag_01 OkToChangeModelColor = Yes StaticModelLODMode = Yes ; specify options for static LODs LodOptions = LOW AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_LOW MaxRandomTextures = M_MAX_RANDOM_TEXTURES_LOW MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_LOW MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_LOW End LodOptions = MEDIUM AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_MED MaxRandomTextures = M_MAX_RANDOM_TEXTURES_MED MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_MED MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_MED End LodOptions = HIGH AllowMultipleModels = M_ALLOW_MULTIPLE_MODELS_HIGH MaxRandomTextures = M_MAX_RANDOM_TEXTURES_HIGH MaxRandomAnimations = M_MAX_RANDOM_ANIMATIONS_HIGH MaxAnimFrameDelta = M_MAX_ANIM_FRAME_DELTA_HIGH End WadingParticleSys = WaterRipplesTrail ; used when the unit is wading in shallow water. ;;================ MODELS ================================================================= DefaultModelConditionState Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End ModelConditionState WEAPONSET_PLAYER_UPGRADE Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End ModelConditionState = USER_4 ; This state is used in cinematics to get the old style armor Model = eudwminer //EUDwarfGua_SKN Skeleton = EUDwarfGua_SKL End ;;=============== ANIMATIONS =============================================================== ;;======= FALLING & FLYING AnimationState = PASSENGER Animation = Grabbed AnimationName = EUDwarfGua_LEPB; Don't have real flailing anim, needs to be replaced AnimationMode = LOOP End End AnimationState = THROWN_PROJECTILE Animation = FlyA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP End Animation = FlyB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP End Animation = FlyC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = FREEFALL Animation = FallingA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP AnimationBlendTime = 10 End Animation = FallingB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP AnimationBlendTime = 10 End Animation = FallingC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP AnimationBlendTime = 10 End End AnimationState = STUNNED_FLAILING Animation = FlyA AnimationName = EUDwarfGua_FLYA AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Animation = FlyB AnimationName = EUDwarfGua_FLYB AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Animation = FlyC AnimationName = EUDwarfGua_FLYC AnimationMode = LOOP AnimationSpeedFactorRange = 0.3 0.5 End Flags = RANDOMSTART End AnimationState = DYING BURNINGDEATH Animation AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE AnimationBlendTime = 10 End ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End AnimationState = DYING SPLATTED Animation = Splatted_On_Ground AnimationName = EUDwarfGua_LNDA AnimationMode = ONCE End EnteringStateFX = FX_HumanBodyGroundHit_SEE;FX_OrcHitGround End AnimationState = DYING AFLAME Animation AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE AnimationBlendTime = 10 End ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End AnimationState = DYING DEATH_2 ; fading out. Animation AnimationName = EUDwarfGua_IDLB AnimationMode = LOOP End End AnimationState = DYING Animation = DIEB AnimationName = EUDwarfGua_DIEA AnimationMode = ONCE End Animation = DIEB AnimationName = EUDwarfGua_DIEB AnimationMode = ONCE End Animation = DIEC AnimationName = EUDwarfGua_DIEC AnimationMode = ONCE End End AnimationState = PARALYZED Animation AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP End End AnimationState = BURNINGDEATH Animation AnimationName = EUDwarfGua_MFDA AnimationMode = LOOP Distance = 50 End Flags = RANDOMSTART ParticleSysBone = BAT_HEAD FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = BAT_HEAD FireSmall FollowBone:yes ParticleSysBone = B_SPINE1 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE1 FireSmall FollowBone:yes ParticleSysBone = B_SPINE2 FireBuildingLargeSmoke FollowBone:yes ParticleSysBone = B_SPINE2 FireSmall FollowBone:yes End ;;======= LANDING & STANDING AnimationState = STUNNED_STANDING_UP Animation = GTPA AnimationName = EUDwarfGua_GTPA AnimationMode = ONCE AnimationSpeedFactorRange = 1.5 1.5 End End AnimationState = STUNNED Animation = Slatted_On_Ground AnimationName = EUDwarfGua_LNDA AnimationMode = ONCE End EnteringStateFX = FX_OrcHitGround End AnimationState = MOVING FIRING_OR_PREATTACK_A ShareAnimation = Yes Animation = RunAndFireA AnimationName = EUDwarfGua_ATRA AnimationMode = LOOP End Animation = RunAndFireB AnimationName = EUDwarfGua_ATRB AnimationMode = LOOP End Animation = RunAndFireC AnimationName = EUDwarfGua_ATRC AnimationMode = LOOP End Flags = RANDOMSTART End ;;====== TERROR AnimationState = MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY ;@@@KM Add distance Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNB AnimationMode = LOOP End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING EMOTION_TERROR ;@@@KM Add distance Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNA AnimationMode = ONCE End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNB AnimationMode = ONCE End Animation = TerrorFromTheSky AnimationName = EUDwarfGua_RUNC AnimationMode = ONCE End Flags = RESTART_ANIM_WHEN_COMPLETE End ;;======= BACK UP AnimationState = MOVING BACKING_UP ;@@@KM Add distance Animation = BAKA AnimationName = EUDwarfGua_BAKA AnimationMode = LOOP End Animation = BAKB AnimationName = EUDwarfGua_BAKB AnimationMode = LOOP End Animation = BAKC AnimationName = EUDwarfGua_BAKC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING ATTACKING ShareAnimation = Yes; Animation = RUNA AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP Distance = 25 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING CHARGING ShareAnimation = Yes; Animation = RUNB AnimationName = EUDwarfGua_RUNB AnimationMode = LOOP Distance = 30 ;AnimationSpeedFactorRange = 0.5 0.5 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING ;@@@KM - Add Distance ShareAnimation = Yes; Animation = RUNB AnimationName = EUDwarfGua_RUNA AnimationMode = LOOP Distance = 30 End Flags = RANDOMSTART ;ParticleSysBone = None InfantryDustTrails End ;;======= UNCONTROLLABLY AFRAID ; This is before Attacking so it overrides it. Normal fear is below so you don't go to little-fear in between swings. AnimationState = EMOTION_UNCONTROLLABLY_AFRAID Animation = FERA AnimationName = EUDwarfGua_FERA AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERB AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERC AnimationMode = LOOP End Flags = RANDOMSTART End ;;---------------------- ATTACKING ---------------------------------------------------------------- AnimationState = FIRING_OR_PREATTACK_A Animation = ATK1 AnimationName = EUDwarfGua_ATKA AnimationMode = ONCE UseWeaponTiming = Yes End Animation = ATK2 AnimationName = EUDwarfGua_ATKB AnimationMode = ONCE UseWeaponTiming = Yes End Animation = ATK3 AnimationName = EUDwarfGua_ATKC AnimationMode = ONCE UseWeaponTiming = Yes End ;ParticleSysBone = None MeleeDust End ;;----------------- HIT REACTIONS ------------------------------------------------------------------------- ; AnimationState = HIT_REACTION ; Animation = HITA ; AnimationName = EUDwarfGua_HITA ; AnimationMode = ONCE ; End ; End ;;----------------- EMOTIONS ---------------------------------------------------------------- ;;======= APPREHENSIVE AnimationState = EMOTION_ALERT EMOTION_AFRAID Animation = APPA AnimationName = GUManMocap_APPA AnimationMode = ONCE End Animation = APPB AnimationName = GUManMocap_APPB AnimationMode = ONCE End Flags = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE End ;;======= AFRAID AnimationState = EMOTION_AFRAID Animation = FERA AnimationName = EUDwarfGua_FERA AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERB AnimationMode = LOOP End Animation = FERA AnimationName = EUDwarfGua_FERC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = ATTACKING Animation = ALERT_1 AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP End End ;;======== POINTING AnimationState = EMOTION_POINTING Animation = Pointing1B AnimationName = EUDwarfGua_PNTB AnimationMode = LOOP End Animation = Pointing1C AnimationName = EUDwarfGua_PNTC AnimationMode = LOOP End Flags = RANDOMSTART End ;;======= TAUNTING AnimationState = EMOTION_TAUNTING Animation = Taunting1A AnimationName = EUDwarfGua_TNTA AnimationMode = LOOP End Animation = Taunting1B AnimationName = EUDwarfGua_TNTB AnimationMode = LOOP End Animation = Taunting1C AnimationName = EUDwarfGua_TNTC AnimationMode = LOOP End Flags = RANDOMSTART End ;;======= CELEBRATING AnimationState = EMOTION_CELEBRATING Animation = CHRA AnimationName = EUDwarfGua_CHRA AnimationMode = LOOP End Animation = Taunting1B AnimationName = EUDwarfGua_CHRB AnimationMode = LOOP End Animation = Taunting1C AnimationName = EUDwarfGua_CHRC AnimationMode = LOOP End Flags = RANDOMSTART End ;;----------------- ALERT STATE --------------------------------------------------------------------------- AnimationState = EMOTION_ALERT Animation = ALERT_1 AnimationName = EUDwarfGua_IDLA AnimationMode = LOOP;ONCE AnimationPriority = 10 End Flags = RESTART_ANIM_WHEN_COMPLETE; acts like an idle animation & keeps running the animations. End AnimationState = RAISING_FLAG Animation = Taunting1A AnimationName = EUDwarfGua_CHRA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = Taunting1B AnimationName = EUDwarfGua_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = Taunting1C AnimationName = EUDwarfGua_CHRC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE End ;;----------------- SELECTED STATES ----------------------------------------------------------------------- AnimationState = SELECTED StateName = STATE_Selected Animation = ATNB AnimationName = EUDwarfGua_ATNB AnimationMode = LOOP End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end if CurDrawableModelcondition("ATTACKING") then return "IDLA" else return "ATNA" end EndScript BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end EndScript End ;;----------------- IDLE STATES --------------------------------------------------------------------------- AnimationState = WEAPONSET_PLAYER_UPGRADE StateName = STATE_Idle Animation = IDLB AnimationName = EUDwarfGua_IDLB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLC AnimationName = EUDwarfGua_IDLC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLD AnimationName = EUDwarfGua_IDLD AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRA AnimationName = EUDwarfGua_CHRA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRB AnimationName = EUDwarfGua_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End AnimationState = USER_3 StateName = STATE_User_3 Animation = GUARD_STANCE AnimationName = GUManMocap_IDLA AnimationMode = LOOP End End IdleAnimationState ;AllowRepeatInRandomPick = no ;Flags = RANDOMSTART StateName = STATE_Idle Animation = IDLA AnimationName = EUDwarfGua_IDLA;default idle AnimationMode = ONCE AnimationPriority = 100 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLB AnimationName = EUDwarfGua_IDLB;figet idle, similar to IDLA, should be used sparingly AnimationMode = ONCE AnimationPriority = 10 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLC AnimationName = EUDwarfGua_IDLC;bored idle --similar to IDLD but longer AnimationMode = ONCE AnimationPriority = 5 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLD AnimationName = EUDwarfGua_IDLD;bored idle --similar to IDLC but shorter AnimationMode = ONCE AnimationPriority = 7 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End ;;--------------- TRANSITIONS --------------------------------------------------------------------------- TransitionState = TRANS_IdleToSelected Animation = ATNA AnimationName = EUDwarfGua_ATNA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End TransitionState = TRANS_SelectedToIdle Animation = ATNC AnimationName = EUDwarfGua_ATNC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End End #include "..\..\..\includes\StunDrawModuleSmall.inc" ;// ***DESIGN parameters *** Side = Dwarves EditorSorting = UNIT ThreatLevel = 1.0 ThingClass = HORDE_UNIT CommandPoints = 4 BountyValue = M_DWARVEN_MINER_BOUNTY_VALUE ;EmotionRange = 240;// Make sure this value is greater than the fear distribution range. TransportSlotCount = M_TRANSPORTSLOTCOUNT_UNIT ;;; WEAPON SETS;;; WeaponSet Conditions = None Weapon = PRIMARY DwarvenGuardianAxe AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY DwarvenGuardianSiegeHammer_SEE AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End ; WeaponSet ; Conditions = WEAPONSET_TOGGLE_1 ; Weapon = PRIMARY DwarvenGuardianAxe ; Weapon = SECONDARY DwarvenBatteringRam ; OnlyAgainst = SECONDARY MINE ; End ;;; ARMOR SETS;;; ArmorSet Conditions = None Armor = DwarvenAxeThrowerArmor DamageFX = NormalDamageFX End ArmorSet Conditions = PLAYER_UPGRADE Armor = DwarvenAxeThrowerHeavyArmor DamageFX = NormalDamageFX End VisionRange = M_VISION_STANDARD_MELEE_HORDEMEMBER;M_DWARVEN_GUARDIAN_VISION_RANGE VisionSide = 35% VisionRear = 25% ; VisionBonusPercentPerFoot = 1.0% ;------------ Modified by Sûlherokhh (was 2%) ; MaxVisionBonusPercent = 300% ; VisionBonusTestRadius = 200 ShroudClearingRange = M_SHROUD_CLEAR_STANDARD DisplayName = OBJECT:DwarvenMiner CrushableLevel = 0 ;//What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrusherLevel = 1 CrushWeapon = GuardianCrush 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. CrushRevengeWeapon = BasicInfantryCrushRevenge CommandSet = DwarvenMinerCommandSet ;//--- AUDIO Parameters --- ;VoiceAmbushed = DwarfGuardianVoiceAmbushed VoiceAttack = DwarfGuardianVoiceAttack VoiceAttackCharge = DwarfGuardianVoiceAttackCharge VoiceAttackMachine = DwarfGuardianVoiceAttack VoiceAttackStructure = DwarfGuardianVoiceAttackBuilding VoiceCreated = DwarfGuardianVoiceSalute VoiceFullyCreated = DwarfGuardianVoiceSalute VoiceGuard = DwarfGuardianVoiceMove VoiceMove = DwarfGuardianVoiceMove VoiceMoveToCamp = DwarfGuardianVoiceMoveCamp VoiceMoveWhileAttacking = DwarfGuardianVoiceDisengage VoicePriority = 47 VoiceRetreatToCastle = DwarfGuardianVoiceRetreat VoiceSelect = DwarfGuardianVoiceSelectMS VoiceSelectBattle = DwarfGuardianVoiceSelectBattle VoiceEnterStateAttack = DwarfGuardianVoiceEnterStateAttack VoiceEnterStateAttackCharge = DwarfGuardianVoiceEnterStateAttackCharge VoiceEnterStateAttackMachine = DwarfGuardianVoiceEnterStateAttackBuilding VoiceEnterStateAttackStructure = DwarfGuardianVoiceEnterStateAttackBuilding VoiceEnterStateMove = DwarfGuardianVoiceEnterStateMove VoiceEnterStateMoveToCamp = DwarfGuardianVoiceEnterStateMoveCamp VoiceEnterStateMoveWhileAttacking = DwarfGuardianVoiceEnterStateDisengage VoiceEnterStateRetreatToCastle = DwarfGuardianVoiceEnterStateRetreat SoundImpact = ImpactHorse UnitSpecificSounds VoiceGarrison = DwarfGuardianVoiceMoveGarrison VoiceEnterUnitElvenTransportShip = DwarfGuardianVoiceMoveShip VoiceInitiateCaptureBuilding = DwarfGuardianVoiceCaptureBuilding ;VoiceEnterStateInitiateCaptureBuilding = End #include "..\..\..\includes\StandardUnitEvaEvents.inc" CrowdResponseKey = Dwarf Behavior = LargeGroupAudioUpdate ModuleTag_LGAU Key = Humanoid_Male Dwarf Dwarf_Male Dwarf_Guardian End ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo ModelCondition = Required:EMOTION_CELEBRATING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxCheerSinglesLoop;MOVING ATTACKING ModelCondition = Required:EMOTION_POINTING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop;MOVING ATTACKING ModelCondition = Required:EMOTION_TAUNTING Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop;MOVING ATTACKING ModelCondition = Required:RAISING_FLAG Excluded:DYING ENGAGED Sound:EmotionDwarfCompilationVoxTauntSinglesLoop End ; Change selection sounds based on upgrades ClientBehavior = UpgradeSoundSelectorClientBehavior ModuleTag_UpgradeSoundSelector SoundUpgrade = Upgrade_DwarvenSiegeHammer ; EVERYTHING on this line must be present ;ExcludedUpgrades = Upgrade_OpenGarrison Upgrade_TrebuchetTurret ; NOTHING on this line can be present VoiceAttack = DwarfGuardianVoiceAttackHammer VoiceAttack = DwarfGuardianVoiceEnterStateAttackHammer End End ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800 ; AnimationSound = Sound: TauntHumanHitShield Animation:GUMAArms_SKL.GUManMocap_IDLC Frames: 17 27 AnimationSound = Sound:BodyFallOrc Animation:EUDWARFGUA_SKL.EUDWARFGUA_LNDA Frames:4 ; AnimationSound = Sound:AxeDropSoundHere! Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEA Frames:8 ;axe falls AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEA Frames:45 ; AnimationSound = Sound:AxeDropSoundHere! Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEB Frames:8 ;axe falls AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEB Frames:28 AnimationSound = Sound:BodyFallGeneric2 Animation:EUDWARFGUA_SKL.EUDWARFGUA_DIEC Frames:45 End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ATTACK_NEEDS_LINE_OF_SIGHT NOTIFY_OF_PREATTACK GRAB_AND_DROP Body = ActiveBody ModuleTag_02 CheerRadius = M_EMOTION_CHEER_RADIUS MaxHealth = M_DWARVEN_MINER_HEALTH MaxHealthDamaged = M_DWARVEN_MINER_HEALTH_DAMAGED BurningDeathBehavior = Yes BurningDeathFX = FX_InfantryBurningFlame End ;//-----UPGRADES------ ;--Weapon-- Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTagGuardian TriggeredBy = Upgrade_DwarvenSiegeHammer;;Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenForgedBlades;; End ; Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTagGuardian ; TriggeredBy = Upgrade_DwarvenForgedBlades ; End Behavior = SubObjectsUpgrade ForgedBlade_UpgradeGuardian TriggeredBy = Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenSiegeHammer;; ShowSubObjects = Forged_Blade End ;--Siege Hammer Behavior = SubObjectsUpgrade SiegeHammer_UpgradeGuardian TriggeredBy = Upgrade_DwarvenSiegeHammer ConflictsWith = Upgrade_DwarvenForgedBlades;; HideSubObjects = axe shield ShowSubObjects = hammer1 End ;--Armor-- Behavior = ArmorUpgrade ArmorUpgradeModuleTagGuardian TriggeredBy = Upgrade_DwarvenMithrilMail ArmorSetFlag = PLAYER_UPGRADE ;KillArmorUpgrade = Yes;This cancels any previous armor upgrade. End Behavior = SubObjectsUpgrade Armor_UpgradeGuardian TriggeredBy = Upgrade_DwarvenMithrilMail UpgradeTexture = EUDwarfMin.tga 0 EUDwarfMin_HA.tga RecolorHouse = Yes ExcludeSubobjects = Forged_Blade End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 AILuaEventsList = DwarvenMinerFunctions MinCowerTime = 3000 MaxCowerTime = 5000 AttackPriority = AttackPriority_Cavalry BurningDeathTime = M_BURNINGDEATH_DURATION_INFANTRY End LocomotorSet Locomotor = HumanSpecialChargeLocomotor Condition = SET_NORMAL Speed = M_NORMAL_GOOD_INFANTRY_MEMBER_SPEED End LocomotorSet Locomotor = BurningDeathLocomotorInfantry Condition = SET_BURNINGDEATH Speed = M_BURNINGDEATH_WANDERSPEED_INFANTRY End Behavior = PhysicsBehavior ModuleTag_04 GravityMult = 1.0 ShockStunnedTimeLow = 1400;msec ShockStunnedTimeHigh = 2400;msec ShockStandingTime = 666;msec End Behavior = FlammableUpdate ModuleTag_BurningDeathPromotor AflameDuration = M_TROOP_AFLAME_DURATION // If I catch fire, I'll burn for this long... AflameDamageAmount = M_TROOP_AFLAME_DAMAGE_AMOUNT // taking this much damage... AflameDamageDelay = M_TROOP_AFLAME_DAMAGE_DELAY // this often. FlameDamageLimit = M_TROOP_FLAME_DAMAGE_LIMIT FlameDamageExpiration = M_TROOP_FLAME_DAMAGE_EXPIRATION End Behavior = AttributeModifierUpgrade ModuleTag_AMU TriggeredBy = Upgrade_GondorFighterFearless AttributeModifier = FearlessForever End Behavior = AttributeModifierUpgrade ModuleTag_SHU TriggeredBy = Upgrade_DwarvenSiegeHammer AttributeModifier = DwarvenSiegeHammer End Behavior = SquishCollide ModuleTag_06 ;//nothing End Behavior = HordeMemberCollide ModuleTag_HMC ;//nothing End ; Behavior = HitReactionBehavior HitReactionBehaviorModuleTag ; HitReactionLifeTimer1 = 2500; level 1 (light damage) hit reaction animations in ms ; HitReactionLifeTimer2 = 2500; level 2 (medium damage) hit reaction animations in ms ; HitReactionLifeTimer3 = 2500; level 3 (heavy damage) hit reaction animations in ms ; HitReactionThreshold1 = 5.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 = Yes If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets) ; End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL -KNOCKBACK -FADED -NORMAL SinkDelay = 3000 SinkRate = 0.90 ; in Dist/Sec DestructionDelay = 15000 Sound = INITIAL DwarfGenericVoiceDie End Behavior = SlowDeathBehavior ModuleTag_07 ;// Same as normal death, but no sound (sound already played by SoundImpact = ... ) DeathTypes = NONE +KNOCKBACK SinkDelay = 3000 SinkRate = 0.60 ; in Dist/Sec DestructionDelay = 10000 End Behavior = SlowDeathBehavior ModuleTag_FadeDeath DeathTypes = NONE +FADED FadeDelay = 0 FadeTime = 5000 DestructionDelay = 5000 DeathFlags = DEATH_2 ; FX = INITIAL FX_UnSummonElvenAllies Sound = INITIAL SpellGenericUnsummonMS End #include "..\..\..\..\includes\GiantBirdDroppingHumanBody_SEE.inc" ;//--- NEW DWARVEN CHARGE ABILITY --- Behavior = SpecialPowerModule ModuleTag_ChargeStarter SpecialPowerTemplate = SpecialAbilityDwarvenCharge UpdateModuleStartsAttack = Yes InitiateSound = DwarfGuardianBullRushMS End #include "..\..\..\includes\DwarvenChargeUpdate.inc" Behavior = CommandSetUpgrade ModuleTag_commandGuardian TriggeredBy = Upgrade_DwarvenForgedBlades Upgrade_DwarvenSiegeHammer RequiresAllTriggers = Yes CommandSet = DwarvenGuardianHordeToggleCommandSet End Geometry = CYLINDER GeometryMajorRadius = 5.6 GeometryMinorRadius = 5.6 GeometryHeight = 16.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 19; ShadowSizeY = 19; ShadowTexture = ShadowI; End ;------------------------------------- Object DwarvenMinerHorde_SEE ; This is required for garrisoned objects - please put in all objects. ButtonImage = WOR_Guardian SelectPortrait = UPDwarvenGuardian Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = USER_8 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_DwarvenGuardianHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_DwarvenGuardianHorde ;----------------------------------------- ;Prerequisites ;Object = DwarvenWorkPit ;End ;----------------------------------------- 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 = M_DWARVEN_MINER_BUILDCOST BuildTime = M_DWARVEN_MINER_BUILDTIME VisionRange = M_DWARVEN_MINER_HORDE_VISION_RANGE ShroudClearingRange = M_DWARVEN_MINER_SHROUD_RANGE VisionSide = 50% VisionRear = 25% ; MaxVisionBonusPercent = 300% ; VisionBonusTestRadius = 200 ; VisionBonusPercentPerFoot = 1.0% CommandPoints = 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 = M_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 = M_DWARVEN_MINER_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 = 2000 ObjectStatusOfContained = InitialPayload = DwarvenMiner_SEE 15 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 = DwarvenGuardianBanner;DwarvenBanner ;// types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:DwarvenGuardian Pos:X:40.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:DwarvenMiner_SEE Position:X:20 Y:0 Position:X:20 Y:20 Position:X:20 Y:-20 Position:X:20 Y:40 Position:X:20 Y:-40 RankInfo = RankNumber:2 UnitType:DwarvenMiner_SEE Position:X:0 Y:0 Leader 1 0 Position:X:0 Y:20 Leader 1 1 Position:X:0 Y:-20 Leader 1 2 Position:X:0 Y:40 Leader 1 3 Position:X:0 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:DwarvenMiner_SEE Position:X:-20 Y:0 Leader 2 0 Position:X:-20 Y:20 Leader 2 1 Position:X:-20 Y:-20 Leader 2 2 Position:X:-20 Y:40 Leader 2 3 Position:X:-20 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 2 3;Modified by Sûlherokhh (was '1') 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 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 = M_INFANTRY_TAUNT_POINT_RADIUS ; max distance to taunted/pointed objet TauntAndPointUpdateDelay = 1000 ; how often scan (milliseconds) TauntAndPointExcluded = NONE AfraidOf = M_EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = M_EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = M_EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = M_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 = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End LocomotorSet Locomotor = ScaredMeleeHordeLocomotor Condition = SET_SCARED Speed = M_NORMAL_GOOD_INFANTRY_HORDE_SPEED End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_CreateLevelUpUpgrade TriggeredBy = Upgrade_DwarvenBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality1 TriggeredBy = Upgrade_DwarvenSiegeHammer End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_DwarvenForgedBlades End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality3 TriggeredBy = Upgrade_DwarvenMithrilMail 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" Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior SpecialAbility = SpecialAbilityDwarvenCharge MaxScanRange = 140 Query = 1 ALL ENEMIES -STRUCTURE End CommandSet = DwarvenMinerHordeCommandSet Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeBladesCommandSet TriggeredBy = Upgrade_DwarvenForgedBlades ConflictsWith = Upgrade_DwarvenSiegeHammer CommandSet = DwarvenGuardianHordeBladesCommandSet_SEE End ;; Behavior = CommandSetUpgrade ModuleTag_DwarvenGuardianHordeSiegeCommandSet TriggeredBy = Upgrade_DwarvenSiegeHammer ConflictsWith = Upgrade_DwarvenForgedBlades CommandSet = DwarvenGuardianHordeSiegeCommandSet_SEE End ///////////////////// // AISpecialPowers ///////////////////// #include "..\..\..\..\includes\Battlestance_SEE.inc" Behavior = AISpecialPowerUpdate DwarfGuardianCharge CommandButtonName = Command_DwarvenGuardianChargeAttack SpecialPowerAIType = AI_SPECIAL_POWER_CHARGE End Geometry = BOX GeometryMajorRadius = 30.0 GeometryMinorRadius = 45.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
// C}{riZ
"Do not come between the Nazgûl and his mod!"
----------------------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>> I S.E.E. YOU! <<<<<<<<<<<<<<<<<<<<<<<
----------------------------------------------------------------------------------------------------
#660
Posted 12 September 2008 - 01:59 PM
So far everything looks alright.. but then again I haven't slept in 96 hours (insomnia) so I could be wrong.
Try this though, as i've seen the engine be really really funny before.
Do one or both of these
A) Change DwarvenMiner. Because it's already in the obselete.ini file, that could be blocking it
B) Remove _SSE and just make it SSE or name it something altogether.
I could be wrong, but they are just off the top of my head thoughts because i've seen it go weird before.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users