Salut Tom,
Bonne initiative, mais il faudrait peut être faire un commandbutton "Command_MorgothDragonToggleMounted" pour aller avec ton commandset.
Bon sinon, le code de l’arbre elfique se trouve dans object/civilian/civilianbuildings et s’appelle
Object LothlorienTreeHouse2.
Pour changer l’apparence d’un bâtiment par un autre, il faut remplacer le Draw de l’existant par celui du nouveau: compare les codes pour comprendre plus facilement (regarde ce qui est désactivé et ce qui change dans celui que je te mets).
Comme tu es d’accord pour te baser sur l’Arnor, on remplace les écuries par l’arbre, donc ce qui suit est à mettre à la place du code de arnorstable.ini.
- Spoiler:
;------------------------------------------------------------------------------
;Arnor Stable
Object ArnorStable
Scale 0.65
SelectPortrait = BPCTreehouseFlet
; *** ART Parameters ***
Draw = W3DScriptedModelDraw ModuleTag_Draw
OkToChangeModelColor = Yes
StaticModelLODMode = yes
UseStandardModelNames = Yes
WallBoundsMesh = P1
;RampMesh1 = P1
DefaultModelConditionState
Model = LBTREEHOUSE2
End
AlphaCameraFadeOuterRadius = 300
AlphaCameraFadeInnerRadius = 150
AlphaCameraAtInnerRadius = 10%
;// Animation state for build placement cursor
;AnimationState = BUILD_PLACEMENT_CURSOR
;BeginScript
;CurDrawableHideSubObject("WINDOW_N01")
;CurDrawableHideSubObject("WINDOW_F01")
;CurDrawableHideSubObject("WINDOW_G01")
;CurDrawableHideSubObject("V1")
;CurDrawableHideSubObject("V2")
;CurDrawableHideSubObject("V2FLAG")
;EndScript
;End
;// Animation state for phantom structure
;AnimationState = PHANTOM_STRUCTURE
;BeginScript
;CurDrawableHideSubObject("WINDOW_N01")
;CurDrawableHideSubObject("WINDOW_F01")
;CurDrawableHideSubObject("WINDOW_G01")
;CurDrawableHideSubObject("V1")
;CurDrawableHideSubObject("V2")
;CurDrawableHideSubObject("V2FLAG")
;EndScript
;End
;IdleAnimationState
;StateName = STATE_Idle
;Animation = IdleA
; AnimationName = GBStable_SKL.GBStable_IDLA
; AnimationMode = ONCE
; AnimationPriority = 10
; AnimationSpeedFactorRange = 0.5 0.5
;End
;Flags = RESTART_ANIM_WHEN_COMPLETE
;End
;-- building being constructed
ModelConditionState = AWAITING_CONSTRUCTION SNOW
Model = LBTREEHOUSE2
;Texture = GBStable.tga GBStable_snow.tga
;Texture = GBVet.tga GBVet_snow.tga
End
ModelConditionState = AWAITING_CONSTRUCTION
Model = LBTREEHOUSE2
; ;ParticleSysBone = NONE BuildingDoughnutCloud
End
;AnimationState = AWAITING_CONSTRUCTION
;Animation = GBStable_A
; AnimationName = GBStable_ASKL.GBStable_ABLD
;AnimationMode = MANUAL
; End
; Flags = START_FRAME_FIRST
;End
ModelConditionState = ACTIVELY_BEING_CONSTRUCTED PARTIALLY_CONSTRUCTED SNOW
Model = LBTREEHOUSE2
;Texture = GBStable.tga GBStable_snow.tga
;Texture = GBVet.tga GBVet_snow.tga
End
ModelConditionState = ACTIVELY_BEING_CONSTRUCTED PARTIALLY_CONSTRUCTED
Model = LBTREEHOUSE2
;ParticleSysBone = DUSTBONE BuildingContructDust
End;
;AnimationState = ACTIVELY_BEING_CONSTRUCTED PARTIALLY_CONSTRUCTED
;Animation = GBStable_A
;AnimationName = GBStable_ASKL.GBStable_ABLD
;AnimationMode = MANUAL
; End
;Flags = START_FRAME_FIRST
;StateName = BeingConstructed
;BeginScript
;CurDrawablePlaySound("GondorBarracksBeginConstruction")
;CurDrawableHideSubObjectPermanently("V1")
;CurDrawableHideSubObjectPermanently("V2")
;EndScript
;End
;--damaged building
ModelConditionState = DAMAGED
Model = LBTREEHOUSE2_D1
ParticleSysBone FX_bone01 FireBuildingLarge
ParticleSysBone FX_bone01 SmokeBuildingLarge
End
AnimationState = DAMAGED
EnteringStateFX = FX_BuildingDamaged
End
ModelConditionState = REALLYDAMAGED
Model = LBTREEHOUSE2_D2
ParticleSysBone FX_bone01 TreehouseLeaves
ParticleSysBone FX_bone02 TreehouseDebris
ParticleSysBone FX_bone03 FireBuildingLarge
ParticleSysBone FX_bone03 SmokeBuildingLarge
End
AnimationState = REALLYDAMAGED
EnteringStateFX = FX_BuildingReallyDamaged
Animation = RubbleAnimation
AnimationName = LBTREEHOUSE2_D2.LBTREEHOUSE2_D2
AnimationMode = ONCE
End
End
ModelConditionState = COLLAPSING
Model = LBTREEHOUSE2_D3
ParticleSysBone FX_bone01 TreehouseDebris
ParticleSysBone FX_bone02 TreehouseDust
ParticleSysBone FX_bone02 TreehouseDebris
ParticleSysBone FX_bone02 TreehouseDust
ParticleSysBone FX_bone02 FireBuildingLarge
ParticleSysBone FX_bone02 SmokeBuildingLarge
ParticleSysBone FX_bone03 TreehouseLeaves
End
AnimationState = COLLAPSING
Animation = RubbleAnimation
AnimationName = LBTREEHOUSE2_D3.LBTREEHOUSE2_D3
AnimationMode = ONCE
End
EnteringStateFX = FX_BuildingSinkSound
End
ModelConditionState = RUBBLE
Model = LBTREEHOUSE2_D3
End
AnimationState = RUBBLE
Animation = RubbleAnimation
AnimationName = LBTREEHOUSE2_D3.LBTREEHOUSE2_D3
AnimationMode = ONCE
End
Flags = START_FRAME_LAST
End
ModelConditionState = POST_RUBBLE
Model = NONE
End
AnimationState = POST_RUBBLE
End
ModelConditionState = POST_COLLAPSE
Model = None
ParticleSysBone NONE SmokeBuildingMediumRubble
End
AnimationState = POST_COLLAPSE
ParticleSysBone NONE SmokeBuildingMediumRubble
End
End
;ModelConditionState = SNOW
;Model = LBTREEHOUSE2
;Texture = GBStable.tga GBStable_snow.tga
;Texture = GBVet.tga GBVet_snow.tga
;End
; End
;Draw = W3DFloorDraw ModuleTag_DrawFloor
;StaticModelLODMode = Yes ; THIS NEEDS TO BE COMMENTED OUT WHEN ENGINEERING ENABLES LOD'S IN THE FLOOR DRAW
; ModelName = GBStable_Bib
; WeatherTexture = SNOWY GBStableT_snow.tga
;HideIfModelConditions = AWAITING_CONSTRUCTION
;HideIfModelConditions = PARTIALLY_CONSTRUCTED
; End
Draw = W3DScriptedModelDraw ModuleTag_Draw_HCBanner
OkToChangeModelColor = Yes
DefaultModelConditionState
Model = GBHCStable
End
MultiPlayerOnly = Yes
End
PlacementViewAngle = -45
; ***DESIGN parameters ***
DisplayName = OBJECT:ArnorStable1
Description = OBJECT:ArnorStablesDescription1
Side = Arnor
EditorSorting = STRUCTURE
ThreatLevel = 1.0
CommandSet = ArnorStablesCommandSet
BuildCost = GONDOR_STABLES_BUILDCOST
BuildTime = GONDOR_STABLES_BUILDTIME
BountyValue = GONDOR_STABLES_BOUNTY_VALUE
VisionRange = 160.0 ; Shroud clearing distance
ShroudClearingRange = GONDOR_STABLES_SHROUD_CLEAR
ArmorSet
Conditions = None
Armor = FortressArmor
;DamageFX = StructureDamageFXNoShake
End
; *** AUDIO Parameters ***
#include "..\..\..\Includes\StandardBuildingEvaEvents.inc"
VoiceSelect = ElfFortressSelect
SoundAmbient = WaterFountain1AmbientLoop
SoundAmbientDamaged = BuildingDamageFireMediumLoop
SoundAmbientReallyDamaged = BuildingDamageFireLargeLoop
SoundOnDamaged = BuildingLightDamageWood
SoundOnReallyDamaged = BuildingHeavyDamageWood
VoiceSelectUnderConstruction = BuildingGoodVoiceSelectUnderConstruction
VoiceFullyCreated = EVA:StablesComplete
UnitSpecificSounds
UnderConstruction = BuildingConstructionLoop ; Built first time
; UnderRepairFromDamage = NoSound ; Repaired No animation on the building, so don't bother playing sound
UnderRepairFromRubble = BuildingConstructionLoop ; Repaired from completely destroyed (not used???)
End
; *** ENGINEERING Parameters ***
RadarPriority = STRUCTURE
KindOf = PRELOAD STRUCTURE SELECTABLE IMMOBILE SCORE NEED_BASE_FOUNDATION FS_FACTORY MP_COUNT_FOR_VICTORY AUTO_RALLYPOINT
Behavior = GettingBuiltBehavior GetBuiltBehaviorTag
WorkerName = GondorWorkerNoSelect
SpawnTimer = DEFAULT_STRUCTURE_HEALDELAY
End
Body = StructureBody ModuleTag_05
MaxHealth = 8000.0
MaxHealthDamaged = GONDOR_STABLES_HEALTH_DAMAGED
MaxHealthReallyDamaged = GONDOR_STABLES_HEALTH_REALLY_DAMAGED
DamageCreationList = OCL_BuildingDamageList01 CATAPULT_ROCK
DamageCreationList = OCL_GBStable_Chunk1 CATAPULT_ROCK FRONT_DESTROYED
DamageCreationList = OCL_GBStable_Chunk2 CATAPULT_ROCK RIGHT_DESTROYED
DamageCreationList = OCL_GBStable_Chunk3 CATAPULT_ROCK BACK_DESTROYED
DamageCreationList = OCL_GBStable_Chunk4 CATAPULT_ROCK LEFT_DESTROYED
End
WeaponSet
Weapon = PRIMARY ElvenBattleTowerBowmaisonelrond
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
Behavior = AIUpdateInterface ModuleTag_AI
AutoAcquireEnemiesWhenIdle = Yes
MoodAttackCheckRate = 250
End
Flammability ; should be after the 'Body' statement
Fuel = MEN_STABLE_FIRE_FUEL
MaxBurnRate = MEN_STABLE_FIRE_MAX_BURN_RATE
Decay = MEN_STABLE_FIRE_DECAY
Resistance = MEN_STABLE_FIRE_RESISTANCE
End
Behavior = RefundDie ModuleTag_refund
UpgradeRequired = Upgrade_MarketplaceUpgradeDefiance
BuildingRequired = ANY +ArnorMarketPlace
RefundPercent = 50%
End
Behavior = BuildingBehavior BuildingModuleTag
NightWindowName = WINDOW_N01
FireWindowName = WINDOW_F01
GlowWindowName = WINDOW_G01
; FireName = FIRE01
End
Behavior = ProductionUpdate ProductionUpdateModuleTag
GiveNoXP = Yes
End
Behavior = QueueProductionExitUpdate QueueProductionModuleTag
PlacementViewAngle = -45
UnitCreatePoint = X:-32.0 Y:-16.0 Z:0.0
NaturalRallyPoint = X:40.0 Y:-90.0 Z:0.0
ExitDelay = 0
End
Behavior = StructureCollapseUpdate ModuleTag_06
MinCollapseDelay = 000
MaxCollapseDelay = 000
CollapseDamping = .5
MaxShudder = 0.6
MinBurstDelay = 250
MaxBurstDelay = 800
BigBurstFrequency = 4
FXList = INITIAL FX_StructureMediumCollapse
FXList = ALMOST_FINAL FX_StructureAlmostCollapse
DestroyObjectWhenDone = Yes
CollapseHeight = 136
End
Behavior = TerrainResourceBehavior ModuleTag_NewMoneyDeadSpot
Radius = 50 ; How far we try to claim ground
MaxIncome = 0 ; If we were to get all we wanted, how much we would earn. Linear slope to 0 at 0% claim
IncomeInterval = 999999 ; How often (in msec) we give that much money
HighPriority = Yes ; A high priority claim gets to pretend it was there first.
Visible = No ;// Don't show decal when a resource building is selected.
End
Behavior = SubObjectsUpgrade ModuleTag_HideAll
TriggeredBy = Upgrade_StructureLevel1
HideSubObjects = V1 V2 V2FLAG V1_PIECE* V2_PIECE*
End
Behavior = SubObjectsUpgrade ModuleTag_ShowWalls
TriggeredBy = Upgrade_ArnorStableLevel2
ShowSubObjects = V1 V1_PIECE*
HideSubObjects = V2 V2FLAG V2_PIECE*
End
Behavior = SubObjectsUpgrade ModuleTag_ShowFlagsAndTower
TriggeredBy = Upgrade_ArnorStableLevel3
ShowSubObjects = V1 V2 V2FLAG V1_PIECE* V2_PIECE*
End
Behavior = GeometryUpgrade Geom_ModuleTag_HideAll
TriggeredBy = Upgrade_StructureLevel1
ShowGeometry = Geom_Orig
HideGeometry = Geom_V1 Geom_V2
End
Behavior = GeometryUpgrade Geom_ModuleTag_ShowWalls
TriggeredBy = Upgrade_ArnorStableLevel2
ShowGeometry = Geom_Orig Geom_V1
HideGeometry = Geom_V2
End
Behavior = GeometryUpgrade Geom_ModuleTag_ShowFlagsAndTower
TriggeredBy = Upgrade_ArnorStableLevel3
ShowGeometry = Geom_Orig Geom_V1 Geom_V2
End
Behavior = CommandSetUpgrade ModueTag_StableLevel2CommandSet
TriggeredBy = Upgrade_ArnorStableLevel2
ConflictsWith = Upgrade_ArnorStableLevel3
CommandSet = ArnorStablesCommandSetLevel2
End
Behavior = CommandSetUpgrade ModueTag_StableLevel3CommandSet
TriggeredBy = Upgrade_ArnorStableLevel3
CommandSet = ArnorStablesCommandSetLevel3
End
Behavior = LevelUpUpgrade ModuleTag_StableLevel2
TriggeredBy = Upgrade_ArnorStableLevel2
LevelsToGain = 1
LevelCap = 3
End
Behavior = LevelUpUpgrade ModuleTag_StableLevel3
TriggeredBy = Upgrade_ArnorStableLevel3
LevelsToGain = 1
LevelCap = 3
End
Geometry = BOX
GeometryName = Geom_Orig
GeometryMajorRadius = 30.0
GeometryMinorRadius = 55.5
GeometryHeight = 60.0
GeometryOffset = X:-20 Y:0 Z:0
AdditionalGeometry = CYLINDER
GeometryName = Geom_V1
GeometryMajorRadius = 55.0
GeometryMinorRadius = 55.0
GeometryHeight = 20.0
GeometryOffset = X:0 Y:0 Z:0
AdditionalGeometry = BOX
GeometryName = Geom_V2
GeometryMajorRadius = 15.0
GeometryMinorRadius = 15.0
GeometryHeight = 100.0
GeometryOffset = X:-28 Y:0 Z:0
GeometryIsSmall = No
Shadow = SHADOW_VOLUME
BuildCompletion = PLACED_BY_PLAYER
GeometryContactPoint = X:-60 Y:73 Z:0 Repair
GeometryContactPoint = X:-66 Y:-74 Z:0 Repair
GeometryContactPoint = X:5.576 Y:44.987 Z:0
GeometryContactPoint = X:-38.348 Y:-42.113 Z:0
GeometryContactPoint = X:-28.448 Y:-0.003 Z:75.14 Swoop
End
Dans, le code, "Scale 0.65" sert à diminuer la taille de l'arbre (tu peux enlever si tu veux, mais ça va faire très grand...).
Il y a aussi des upgrades que tu peux supprimer.
L’antre des spectres, c’est barrowwightlair.ini (dans le dossier neutral)
- Tu copies son code, que tu colles dans arnorbarracks.ini par exemple.
- Tu conserves juste le nom et le commandset d’origine:
Object ArnorBarracks
CommandSet = ArnorBarracksCommandSet
- Et tu enlève ce module:
Behavior = CommandSetUpgrade ModueTag_GoblinCommandSet
TriggeredBy = Upgrade_AngmarFaction Upgrade_IsengardFaction Upgrade_MordorFaction Upgrade_WildFaction Upgrade_MenFaction Upgrade_ElfFaction Upgrade_DwarfFaction Upgrade_ArnorFaction
CommandSet = NeutralBarrowWightCommandSet
CustomAnimAndDuration = AnimState:USER_2 AnimTime:0
End
Les Hordes:
- Tu vas copier-coller (à la fin de arnorhordes.ini) tous les codes des unités que tu veux mettre dans tes bâtiments:
Noldor (NoldorWarriorHorde dans elvenhordes.ini)
Zélote (DwarvenZerkerHorde dans dwarvenhordes.ini)
Chevaliers de Dol Amroth (GondorKnightsofDolHorde dans menhordes.ini)
L’armée des Morts (RohanOathbreakerHorde dans menhordes.ini)
La cavalerie des Morts (RohanOathbreakersCavalryHorde dans angmarhordes.ini je crois)
Les sorciers (AngmarNecromancerHorde dans angmarhordes.ini)
Pour les spectres, tu as juste à mettre le bouton de construction dans le commandset de ton bâtiment:
Command_ConstructBarrowWightFromDefectedLair
(N’oublie pas de renommer les "object" copiés)
- Après ça, tu crées des nouveaux commandbutton que tu reporteras dans le commandset de ton bâtiment (pense à enlever l’upgrade de la ligne option ou la ligne NeededUpgrade)
Pour info dans le code de tes hordes,
- La ligne: MaxSimultaneousOfType= 3,
détermine le nombre de pelotons que tu peux avoir en même temps.
Tu peux augmenter ce nombre ou supprimer cette ligne.
- Pour augmenter le nombre d’unité, il faut aller dans le module:
Behavior = HordeContain ModuleTag_HordeContain
La ligne: RankInfo = RankNumber:1 représente le nombre d’unité de la première ligne
Il y a souvent une ligne RankInfo = RankNumber:2 qui est désactivée, et bien il te suffit de l’activer…
Si elle n'est pas présente, tu la crées en te basant sur la première.
Slots = le nombre d’emplacement pour les unités
Si tu ajoutes une ligne d’unités, il faut doubler le nombre de slot
RanksToReleaseWhenAttacking = 1 2 (le 2 permet à la deuxième ligne d’unités d’attaquer)
En ce qui concerne la tour de Minas Morgul, lorsqu’on adapte son Draw sur la forteresse, elle ne touche pas le sol…(sur la carte, on voit bien qu’elle est légèrement en hauteur).
J’ai jamais eu à pallier à cela, de ce fait, je ne sais pas comment l’enfoncer dans le sol.
Pour avoir la solution, il faut demander à Cdd, lui, il saura.