Egozi44 28 Posted August 18, 2015 (edited) Well with Ravendark MIA I thought I will ask more questions meanwhile 1. Is it possible to make two units to merge and spawn other unit using something similar to the buzzer's ability? 2. When I try to add new cursor icon (not the cursor in the cursor folder... I meant to the Support power cursors) to KW via WED it just stay invisible, but if I use already existing one for SP they worked (I've noticed that the GDI commando may be coded because the cursor also became invisible when I try to change it to any other cursors) 3. I want to make C&C4 unit's turrets to move, can I make them moved with edit the xml and the w3x or I also need 3Ds max for it?also what I need to edit? (A friend of mine done it without much issue but he MIA) 4. I added a unit that is sort of half inf and half vehicle, how can I make it dies when the NOD's clocking field is being used on it? I tried adding : <FireWeaponUpdate id="ModuleTag_Fireweapon"> <FireWeaponNugget WeaponName="NodNuclearTransportNuke3" Firedelay="0.1s" OneShot="true"/> <RequiresUpgrade>Upgrade_CloakingFieldInvisibility</RequiresUpgrade> </FireWeaponUpdate> <FireWeaponUpgrade id="0xF2GFB9DFBE"> <TriggeredBy>Upgrade_CloakingFieldInvisibility</TriggeredBy> </FireWeaponUpgrade> But it didn't worked Thanks for whoever help Edited August 19, 2015 by Egozi44 Share this post Link to post
Lauren 78 Posted August 19, 2015 1. Rather look at the Avatar's ability to grab an upgrade. But instead of just improving itself via that upgrade have it replace itself with the new object. 3. You have to check which one exactly is the turret pivot in the skeleton (W3DHierarchy) and use this as the name for the turret in the draw. Also it might be that the barrel/muzzle pivots have "broken" name which you have to fix first (like the juggernaught). 4. The cloaking field upgrade only applies to units of type VEHICLE or HUGE_VEHICLE. I'd suggest editing the CloakingFieldKillInfantryWeaponWarhead adding a second damage nugget that does enough damage to kill your unit and have the SpecialObjectFilter to only include that. Share this post Link to post
Egozi44 28 Posted August 19, 2015 1. How can I make it replace itself? also it two units that mix into one, won't it cause bugs that make the other unit to say alive with the right timing? 2. Will be gald if you could help me with 2 : / 3. Thanks will try it, did the juggernaught have any broken name that cause it bugs with the cannon as well? (never saw any bugs with it) 4. I thought about it too... but usually when I apply filter something always goes wrong, can you give me example? Share this post Link to post
Prodigy 3 Posted August 19, 2015 3. I think she is talking about my cnc4 juggernaut, not the ingame one. it had broken names for its turrets, thats why it couldnt use all three barrels while firing. I added the weapon bones to the damaged condition as well in order to make it work. Share this post Link to post
Ravendark 46 Posted August 19, 2015 (edited) Well with Ravendark MIA I thought I will ask more questions meanwhile Not MIA, just busy IRL 1. the avatar uses a chained specialpower wich basicly means that first he fires a weapon to paralyze and destroy the unit he targets, secondly he uses a upgrade specialpower to trigger an upgrade <SpecialPowerDispatchSpecialPower id="ModuleTag_AvatarCommandeerDispatch" SpecialPowerTemplate="SpecialPower_AvatarCommandeerDispatch" RequireAllPowersToFunction="false" AttributeModifierAffectsSelf="true"> <SpecialPower SpecialPowerTemplate="SpecialPower_AvatarInvisibility" /> <SpecialPower SpecialPowerTemplate="SpecialPower_AvatarCommandeerDestroyStealthTank" /> </SpecialPowerDispatchSpecialPower> <SpecialPower id="SpecialPower_AvatarCommandeerDestroyStealthTank" SpecialPowerTemplate="SpecialPower_AvatarCommandeerDestroyStealthTank" AttributeModifierAffectsSelf="true" UpdateModuleStartsAttack="true" /> <WeaponFireSpecialAbilityUpdate id="SpecialPower_AvatarCommandeerDestroyStealthTankUpdate" SpecialPowerTemplate="SpecialPower_AvatarCommandeerDestroyStealthTank" SpecialWeapon="NODAvatarCommandeerWeapon" UnpackTime="0s" PackTime="0s" StartAbilityRange="15.0" BusyForDuration="2.7s" WhichSpecialWeapon="1" /> <GiveOrRestoreUpgradeSpecialPower id="SpecialPower_AvatarInvisibilityUpdate" SpecialPowerTemplate="SpecialPower_AvatarInvisibility" UpgradeToGive="Upgrade_AvatarInvisibility" /> <SpecialPower id="SpecialPower_AvatarInvisibility" SpecialPowerTemplate="SpecialPower_AvatarInvisibility" /> the idea is to basicly fire multiple specialpowers with one click, the first targets your merge unit and the second kills the merge unit and triggers a upgrade if you couple this together with the mcv deploy logic you could replace into a new unit : <ReplaceSelfUpgrade id="ModuleTag_ReplaceSelf" NewObjectUnpackTime="5.0s" DisabledDuringUnpack="false" CheckBuildAssistant="true"> <TriggeredBy>Upgrade_UnPack</TriggeredBy> <ReplacementTemplate>NODConstructionYard</ReplacementTemplate> </ReplaceSelfUpgrade> another way to go about all this might be to just use the GARRISON modelcondition + hordegarrison module...you let your first unit be garrisonable by your second unit, and use the GARRISONED modelstat to display a merged unit Another way would be the MOUNTED code if that still worked(BFME merged rider and horse that way iirc). 2. as far as i know specialpower cursors are hardcoded (not including targetdecal cursors)...iirc you cant create new cursors, you change existing ones but not add new ones....iirc. 3. like megumi/prodigy said 4. CloakingFieldKillInfantryWeapon this is the weapon that actually kills the infantry its fired from a specialability in the ops-center, the warhead in the weapon acts as filter CloakingFieldKillInfantryWeaponWarhead <WeaponTemplate id="CloakingFieldKillInfantryWeaponWarhead" Name="CloakingFieldKillInfantryWeaponWarhead" RadiusDamageAffects="ALLIES ENEMIES NEUTRALS" AttackRange="50000.0" WeaponSpeed="9999.0" AntiMask="ANTI_GROUND ANTI_AIRBORNE_INFANTRY" > <Nuggets> <DamageNugget Damage="500" Radius="=$CLOAKING_FIELD_RADIUS" DamageType="UNRESISTABLE" DeathType="NORMAL"> <SpecialObjectFilter Rule="NONE" Include="INFANTRY" Exclude="VEHICLE HUGE_VEHICLE AIRCRAFT"/> <DamageScalarDetails Scalar= "25%"> <Filter Rule="NONE"> <IncludeThing>GDIZoneTrooper</IncludeThing> <IncludeThing>GDICommando</IncludeThing> <IncludeThing>AlienMastermind</IncludeThing> <IncludeThing>AlienShockTrooper</IncludeThing> <IncludeThing>NODCommando</IncludeThing> <IncludeThing>NODBlackhand</IncludeThing> </Filter> </DamageScalarDetails> </DamageNugget> </Nuggets> </WeaponTemplate> add something like the following to it: <DamageNugget Damage="500" Radius="=$CLOAKING_FIELD_RADIUS" DamageType="UNRESISTABLE" DeathType="NORMAL"> <SpecialObjectFilter Rule="NONE" Exclude="INFANTRY AIRCRAFT"> <IncludeThing>mynewunit</IncludeThing> </SpecialObjectFilter> <DamageScalarDetails Scalar= "1000%"> <Filter Rule="NONE"> <IncludeThing>mynewunit</IncludeThing> </Filter> </DamageScalarDetails> </DamageNugget> Edited August 19, 2015 by Ravendark Share this post Link to post
Egozi44 28 Posted August 20, 2015 3. I think she is talking about my cnc4 juggernaut, not the ingame one. it had broken names for its turrets, thats why it couldnt use all three barrels while firing. I added the weapon bones to the damaged condition as well in order to make it work. I see xD didn't knew she helped you with it Also Ravendark WB 1. I don't really sure I know how to use the GARRISONED or the MOUNT model conditions but it sure sound way easier than the avater Also won't the avater method will have random bugs? Like.. in the avater case it can't use it's ability on another avater But in my units case they supposed to merge with the same kind of unit like themselves Won't it be issue if I tell both to do the ability on one another and it cause them to double spawn the new unit? The unit btw is viscroid I tried to make them merge into adult viscroid just like they done it in TS 2. I see... I recall that biber showed in the old forum how he made it work but it may just was TW... don't remeber 3. I see xD 4.will try it Do I need to add another damagenugget after the current one? (Don't sure if it possible) because I will ruin the SP if I just replace it with what you told me Share this post Link to post
Ravendark 46 Posted August 20, 2015 if a object has another object inside it will get the GARRISONED status (think along side the fireports and player flags etc that appear on buildings when you garrison troops inside), while thr object inside gets the INSIDE_GARRISOn modelstate. You can use those 2 modelconditionstates to chance the gamemodel. The avatar thing...well its probably the better way to do it (there might be some issues with the garrison thing and basicly im not sure if 2 same gameobjects with a garrison code can enter eachother), the avatar thing is practicly bug free tbh if coded properly...and to prevent one avatar from targeting the other while that one is doing the merge, you can use object status and check for flags in the fireweapon specialpowers iirc. But before trying to code something like that, a quick question: If you are visceroids...am i assuming correctly you use them to wander about the map and they are the ones spawned from dead infantry, basicly they are neutral critter like behavior units? in that case it might be alot harder to achieve what you want because you cant control the viceroids if im correct? Might be just easier to give the viceroids a fireweaponupdate that only targets other viceroids in a small radius...the fire weapon basicly kills both viceroids and makes one of the killed spawn a bigger one. You can add new cursor animations for certain ui cursors..like attack, move etc, but basicly you are more or less replacing existing templates...you cant add fully new cursors for fully new abilities iirc. You can change the c4 animated cursor, not create a whole new ability+cursor iirc. abilities like the beamcannon charge and c4 etc are hardcoded to use certain cursors. Add the damage nugget, dont replace/override Share this post Link to post
Egozi44 28 Posted August 21, 2015 (edited) 1. Well sound like the avatar's ability is the safe bet, but with all what you said it sound complicated, noob like me need example (in the object status and check for flags at least, I will check the Avatar ability later) 1.5 aside from the wild visceroids I made tamed visceroids in my mod, they can be train from the mutant hovel and can be controlled (see here http://www.moddb.com/mods/kanes-wrath-unofficial-patch-104/images/the-mutant-hovel#imagebox ) the idea you gave to wild visceroids sound nice though but I don't sure I know how to do it, 3. I see, I mostly wanted the un-animated ones, I wanted to add c&c4 cursor texture for a second ability, but I guess if it coded it impossible 4. I added it and got error from WED, that what I done <?xml version="1.0" encoding="utf-8"?> <AssetDeclaration xmlns="uri:ea.com:eala:asset"> <WeaponTemplate id="CloakingFieldKillInfantryWeaponWarhead" Name="CloakingFieldKillInfantryWeaponWarhead" AttackRange="50000" WeaponSpeed="9999" AntiMask="ANTI_GROUND ANTI_AIRBORNE_INFANTRY"> <Nuggets> <DamageNugget Damage="500" Radius="100" DamageType="UNRESISTABLE"> <SpecialObjectFilter Include="INFANTRY" Exclude="AIRCRAFT HUGE_VEHICLE VEHICLE" /> <DamageScalarDetails Scalar="25%"> <Filter> <IncludeThing>GDIZoneTrooper</IncludeThing> <IncludeThing>GDICommando</IncludeThing> <IncludeThing>AlienMastermind</IncludeThing> <IncludeThing>AlienShockTrooper</IncludeThing> <IncludeThing>NODCommando</IncludeThing> <IncludeThing>NODBlackHand</IncludeThing> </Filter> </DamageScalarDetails> </DamageNugget> <DamageNugget Damage="500" Radius="=$CLOAKING_FIELD_RADIUS" DamageType="UNRESISTABLE" DeathType="NORMAL"> <SpecialObjectFilter Rule="NONE" Exclude="INFANTRY AIRCRAFT"> <IncludeThing>ViscriodMother</IncludeThing> </SpecialObjectFilter> <DamageScalarDetails Scalar= "1000%"> <Filter Rule="NONE"> <IncludeThing>ViscriodMother</IncludeThing> </Filter> </DamageScalarDetails> </DamageNugget> </Nuggets> </WeaponTemplate> </AssetDeclaration> Adding two DamageNugget make WED give me error, and I don't want to replace the current one.... What I need to do to put them together? Edited August 21, 2015 by Egozi44 Share this post Link to post
Egozi44 28 Posted August 22, 2015 (edited) Oh yea, the unit I was talking about in 3 (the one I try move it's cannons) is GDI_Commader Mastadon, The xmls seem to have most stuff but I don't sure what missing there Edit After looking on the mammoth xml I added this <WeaponSlotHierarchicalTurret ParentID="1" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM" ID="3"> <Weapon IsPlayerUpgradePermanent="False" ObjectStatus="" Upgrade="" Template="GDIMammothTankRocketPods" Ordering="SECONDARY_WEAPON"/> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="99.99999d" MaxDeflectionClockwise="20d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" ControlledWeaponSlots="" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotHierarchicalTurret> <WeaponSlotHierarchicalTurret ParentID="1" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM" ID="4"> <Weapon IsPlayerUpgradePermanent="False" ObjectStatus="" Upgrade="" Template="GDIMammothTankRocketPods" Ordering="SECONDARY_WEAPON"/> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="20d" MaxDeflectionClockwise="99.99999d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" ControlledWeaponSlots="" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotHierarchicalTurret> instead of the older turrets nothing happenes... it may be that it still lacking something like the barrel/muzzle Edited August 22, 2015 by Egozi44 Share this post Link to post
Ravendark 46 Posted August 22, 2015 the problem with the dmg nuggets could be in the one i posted, it uses a =$cloakingfieldradius wich work in TW, iirc WED doesnt handle references like that (yet) hence why Include and inherits arent used in WED so far. Try changing that to just a number like 100 or so. Share this post Link to post
Prodigy 3 Posted August 22, 2015 3. I took a look inside the files of gdi_commando's mastodon, the names of the weapons are broken, you have to correct the pivot names in the Skeleton (SKL.w3x) with notepad first and add them to the gameobject.xml (if you didnt already) Share this post Link to post
Ravendark 46 Posted August 22, 2015 A side note: You are talking about a upgrade/tech system for enabling sertain mutants on moddb. I would try something like this: Give your hovel the tib silo code: <DistributedMoney id="ModuleTag_DistributedMoney" Capacity="2000" OnDieSpawnPercentage="25" /> + fs_money_storage as kindof. Capacity="2000" -> this can basicly be used to dettermin the speed you get the mutants....the bigger you make this the longer you need to fill up on tiberium between stages. Then you can use the follwoing modelconditions to trigger a upgrade: MONEY_STORED_AMOUNT_1 25% full -> triggers Upgrade_Enable_Viceroids MONEY_STORED_AMOUNT_2 50% full -> triggers Upgrade_Enable_Maurauders MONEY_STORED_AMOUNT_3 75% full -> triggers Upgrade_Enable_ScrapBus MONEY_STORED_AMOUNT_4 100% full -> triggers Upgrade_Enable_IronBack you create some lua: Function Grant_Hovel_V(self) If ObjectTestModelCondition(Self, "MONEY_STORED_AMOUNT_1") ==1 Then GrantUpgrade(Self, "Upgrade_Enable_Viceroids") End End Function Grant_Hovel_V_M(self) If ObjectTestModelCondition(Self, "MONEY_STORED_AMOUNT_2") ==1 Then ObjectGrantUpgrade(Self, "Upgrade_Enable_Viceroids") ObjectGrantUpgrade(Self, "Upgrade_Enable_Maurauders") End End Function Grant_Hovel_V_M_S(self) If ObjectTestModelCondition(Self, "MONEY_STORED_AMOUNT_3") ==1 Then ObjectGrantUpgrade(Self, "Upgrade_Enable_Viceroids") ObjectGrantUpgrade(Self, "Upgrade_Enable_Maurauders") ObjectGrantUpgrade(Self, "Upgrade_Enable_ScrapBus") End End Function Grant_Hovel_V_M_S_I(self) If ObjectTestModelCondition(Self, "MONEY_STORED_AMOUNT_4") ==1 Then ObjectGrantUpgrade(Self, "Upgrade_Enable_Viceroids") ObjectGrantUpgrade(Self, "Upgrade_Enable_Maurauders") ObjectGrantUpgrade(Self, "Upgrade_Enable_ScrapBus") ObjectGrantUpgrade(Self, "Upgrade_Enable_IronBack") End End in your ScriptedEvents.xml add the following: <EventList Name="Mutant_Hovel_EventsList" > <EventHandler EventName="OnDamaged" ScriptFunctionName="Grant_Hovel_V" DebugSingleStep="false"/> <EventHandler EventName="OnDamaged" ScriptFunctionName="Grant_Hovel_V_M" DebugSingleStep="false"/> <EventHandler EventName="OnDamaged" ScriptFunctionName="Grant_Hovel_V_M_S" DebugSingleStep="false"/> <EventHandler EventName="OnDamaged" ScriptFunctionName="Grant_Hovel_V_M_S_I" DebugSingleStep="false"/> </EventList> then to your hovel gameobject add the following to its ai update: <AI> <AIUpdate id="ModuleTag_AIUpdate" AILuaEventsList="Mutant_Hovel_EventsList"></AIUpdate> </AI> and in your mutant units you add respectively: <GameDependency> <NeededUpgrade>Upgrade_Enable_Viceroids</NeededUpgrade> </GameDependency> and you do a gamedepedency like that for the maurauders, bus and ironback. then you add a dummy weapon to the hovel that will evaluate the lua: <FireWeaponUpdate id="ModuleTag_Hovel_EvaluationWeapon"> <FireWeaponNugget WeaponName="Hovel_EvaluationWeapon" FireDelay="2.0s" /> </FireWeaponUpdate> the weapon <WeaponTemplate id="Hovel_EvaluationWeapon" Name="Hovel_EvaluationWeapon" > <Nuggets> <DamageNugget Damage="1" Radius="1" DamageType="GUN" > </DamageNugget> <DamageNugget Damage="1" Radius="1" DamageType="HEALING" > </DamageNugget> </Nuggets> </WeaponTemplate> in theory this should work and give your hovel its mutants aviable depending on the amount of tiberium you stored. wich seems fitting for mutants. The lua could use a look over by Megumi or anyone with a better eye for it then me. Just a thought on how i would try to do the dependancy for mutants. Share this post Link to post
Egozi44 28 Posted August 23, 2015 Umm that look interesting and fix the mutant's style, the issue is that I can't touch the official maps hovel so that why I gave up My original teach up idea was: to add two button like RA3 style make the TIER2 button to build invisiable unit that can't be killed/seletected/iused and called... you guessed right TIER2, (it actually based on something we pm each other around half year ago) and then add dependency to each of the units who need TIER2, and Tier3 will go the same way the issue was that as long as the game object is not building the units will still be left with grey button, but the dependency was archived (since the units stop asked for Teir2 anymore) but since Tier2 was a unit they didn't count it... werid guess it the engine rules That way I could simply add it to the hovel commandset which I can change rather than use the gameobject Share this post Link to post
Egozi44 28 Posted August 23, 2015 Ok 4. worked, the clocking field now kill adult viscriod Now back to 1 Where I should start? taking the avatar ability and tweak it to work with one unit and make new Upgrade_UnPack so it will spawn new unit right? How can I make it to destory the user (as it destory the other unit already) at the same time? and where I need to add the flags so it won't happen twice? thanks Share this post Link to post
Lauren 78 Posted August 23, 2015 You do not need to destroy the user manually as the replace self does that already. Share this post Link to post
Ravendark 46 Posted August 23, 2015 you can use the following to set and remove a status in the specialabilities <xs:attribute name="SetObjectStatusOnTrigger" type="ObjectStatusBitFlags" /><xs:attribute name="ClearObjectStatusOnExit" type="ObjectStatusBitFlags" /> -> you wont really need this one because you replace/destroy both units anyway the idea i guess is to use it something like: <SpecialAbilityUpdate id="ModuleTag_CommandeerGetIntoRangeStealthUpdate" SpecialPowerTemplate="SpecialPower_AvatarCommandeerGetInRangeStealth" UnpackTime="0s" PackTime="0s" StartAbilityRange="15.0" SetObjectStatusOnTrigger="you can either create a new statusbit or use a existing one here" -> you might be able to skip this as it probably will autoset the status to USING_ABILITY Options="CHECK_SPECIALPOWER_REQUIREMENTS_DURING_UPDATE" ChainedButton="Command_AvatarCommandeerParalyzeStealthTank" /> <SpecialPowerTemplate id="SpecialPower_AvatarCommandeerGetInRangeStealth" TargetType="OBJECT" Flags="NEEDS_OBJECT_FILTER TARGET_NEEDS_OBJECT_STATUS" DisallowedTargetObjectStatus="CLONED USER_PARALYZED INSIDE_GARRISON" -> you would add USING_ABILITY here WaypointModeTerminal="false"> <ObjectFilter Rule="NONE"> <IncludeThing>NODStealthTank</IncludeThing> </ObjectFilter> <GameDependency> <ForbiddenUpgrade>Upgrade_AvatarInvisibility</ForbiddenUpgrade> </GameDependency> </SpecialPowerTemplate> The avatar uses the paralyze code section to prevent double firing the specialability, you might be able to try it with that aswell altho it could have timing issues. Share this post Link to post
Egozi44 28 Posted August 25, 2015 (edited) Thank, will see what I can do I have question in regard to 2. Thanks to Prodigy help we were able to get both of the mastodon rocket launchers bones and made them move the issue is that they don't look at the thing they shooting at I gave them the mammoth WeaponSlotHierarchicalTurret thing <WeaponSlotHierarchicalTurret AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM" ID="4" ParentID="1"> <Weapon ObjectStatus="" IsPlayerUpgradePermanent="False" Upgrade="" Template="GDIMammothTankRocketPods" Ordering="SECONDARY_WEAPON"/> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="20d" MaxDeflectionClockwise="99.99999d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" ControlledWeaponSlots="" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"><TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/></TurretSettings> So what left? is it another missing bone? and if yes then what? the TurretPitch or the TurretNameKey ? (we may put the wrong one in one of them, but one thing is sure that the turrets are shoot From the right place, and moving on idle, but when they suppose to look on the target they need to shoot at the just fire without look on it ) Edited August 25, 2015 by Egozi44 Share this post Link to post
Ravendark 46 Posted August 25, 2015 (edited) 1. Code wise make sure you have defined the weapon id's and slot in the scripted model draw: <ModelConditionState ParseCondStateType="PARSE_DEFAULT" RetainSubObjects="true"> <Model Name="mastadonstuff.xml" /> <WeaponFireFXBone WeaponSlotID="4" WeaponSlotType="PRIMARY_WEAPON" BoneName="Mastadonfirefxbone" /> <WeaponLaunchBone WeaponSlotID="4" WeaponSlotType="PRIMARY_WEAPON" BoneName="MastadonLaunchbone" /> <Turret TurretNameKey="Turret04" TurretID="4" /> ................... 2. if you have complex mode setups and animation/model states...it might be best to put turrets like that in a separate draw, as their is a chance that bone animations could interfere with other bone logic. I had the same issue ones with a early wolverine model i made...its gun arms where basicly hierachy turrets with its torso being the center turret, due to animations of walking and standing idle etc it would not always use the currect fire bones. By dividing the mech into 3 parts you and link them up in their own draw section you seperate animation timing issues like that. 3.also post the weapon code itself of the turrets, could be there is something in that overides the fire angle making it not need ed for the turret to turn at all. Edited August 25, 2015 by Ravendark Share this post Link to post
Ravendark 46 Posted August 25, 2015 something just popped into my head: I just googled that ugly piece of wasted graphic EA called that Mastodon: http://vignette3.wikia.nocookie.net/cnc/images/b/bc/Mastodon_CC4_DevRend1.jpg/revision/latest?cb=20091206222854 It doesnt use a hierachical turret setup..it has those dumb assmounted rocket launchers and that oversized shockwave launcher iirc? Those should be coded as normal individual turret setups....disregard all the above advice and try setting them up as NORMAL turrets not hierachical. Share this post Link to post
Egozi44 28 Posted August 25, 2015 And how I change them to normal? I have idea, let me post the whole xml since I also have another animation issue I want people to look at, but first let focus on the cannons, save it in note and tell me if you see anything that may make them function wrong <?xml version="1.0" encoding="utf-8"?> <AssetDeclaration xmlns="uri:ea.com:eala:asset"> <GameObject id="GDIMastadon" inheritFrom="BaseVehicle" SelectPortrait="Portrait_Mastodon" ButtonImage="Portrait_Mastodon" Side="SteelTalons" EditorSorting="UNIT" TransportSlotCount="1" BuildCost="5000" BuildTime="50" ThreatLevel="10" BuildFadeInOnCreateTimeSeconds="0.25s" HealthBoxScale="1.5" HealthBoxHeightOffset="10" CommandSet="GDIMastadonCommandSet" CommandPoints="100" ShockwaveResistance="100" ReinvisibilityDelay="7s" KindOf="SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS PRELOAD SCORE ATTACK_NEEDS_LINE_OF_SIGHT LARGE_RECTANGLE_PATHFIND VEHICLE UNIQUE_UNIT CAN_BE_FAVORITE_UNIT METAUNIT CAN_SHOOT_OVER_WALLS USE_STRICT_PATHING" RadarPriority="UNIT" ProductionQueueType="VEHICLE" UnitCategory="VEHICLE" WeaponCategory="CANNON" VoicePriority="250" EditorName="SteelTalonsMastadon" Description="Desc:GDIMastadon" TypeDescription="Type:GDIMastadon" MaxSimultaneousOfType="1"> <DisplayName xai:joinAction="Replace" xmlns:xai="uri:ea.com:eala:asset:instance">Name:GDIMastadon</DisplayName> <GameDependency> <RequiredObject>SteelTalonsTechCenter</RequiredObject> </GameDependency> <ArmorSet Armor="GDIMARVArmor" DamageFX="VehicleDamageFX" /> <LocomotorSet Locomotor="GDIMastadonLocomotor" Condition="NORMAL" Speed="55.0" /> <SkirmishAIInformation UnitBuilderStandardCombatUnit="true" /> <Draws> <ScriptedModelDraw id="ModuleTag_Draw" ExtraPublicBone="BONE_CONTACT_POINT_01 BONE_CONTACT_POINT_02 BONE_CONTACT_POINT_03 BONE_CONTACT_POINT_04 BONE_CONTACT_POINT_05 BONE_CONTACT_POINT_06 BONE_CONTACT_POINT_07 BONE_CONTACT_POINT_08 BONE_CONTACT_POINT_09 BONE_CONTACT_POINT_10 BONE_CONTACT_POINT_11 BONE_CONTACT_POINT_12" OkToChangeModelColor="true"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="W3DContainer:GUVehicleL_SKN" /> <WeaponFireFXBone WeaponSlotID="1" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXWEAPON_" /> <WeaponLaunchBone WeaponSlotID="1" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXWEAPON_" /> <!-- <WeaponFireFXBone WeaponSlotID="2" WeaponSlotType="PRIMARY_WEAPON" BoneName="f8af8c94" /> <WeaponLaunchBone WeaponSlotID="2" WeaponSlotType="PRIMARY_WEAPON" BoneName="f8af8c94" /> --> <WeaponFireFXBone WeaponSlotID="3" WeaponSlotType="SECONDARY_WEAPON" BoneName="Rocket_L" /> <WeaponLaunchBone WeaponSlotID="3" WeaponSlotType="SECONDARY_WEAPON" BoneName="Rocket_L" /> <WeaponFireFXBone WeaponSlotID="4" WeaponSlotType="SECONDARY_WEAPON" BoneName="Rocket_R" /> <WeaponLaunchBone WeaponSlotID="4" WeaponSlotType="SECONDARY_WEAPON" BoneName="Rocket_R" /> <Turret TurretNameKey="b_turret01" TurretPitch="d8262510" TurretID="1" /> <Turret TurretNameKey="Turret_L" TurretPitch="Pitch_L" TurretID="3" /> <Turret TurretNameKey="581EBBEB" TurretPitch="D8262510" TurretID="4" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="FORMATION_PREVIEW"> <Model Name="W3DContainer:GUMARV_FP" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DAMAGED USER_6"> <Model Name="W3DContainer:GUVehicleL_SKN" /> <Texture Original="GUVehicleL" New="GUVehicleL" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="REALLYDAMAGED USER_6"> <Model Name="W3DContainer:GUVehicleL_SKN" /> <Texture Original="GUVehicleL" New="GUVehicleL_D" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING USER_6"> <Model Name="W3DContainer:GUVehicleL_DIEA" /> <Texture Original="GUVehicleL" New="GUVehicleL_D" /> <ParticleSysBone BoneName="chassis" FXParticleSystemTemplate="GDIDebrisSmallFire" FollowBone="true" /> <ParticleSysBone BoneName="Chassis" FXParticleSystemTemplate="GDIDebrisSmallFireDistortion" FollowBone="true" /> <ParticleSysBone BoneName="chassis" FXParticleSystemTemplate="GDIDebrisSmallSmoke" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallFire" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallFireDistortion" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallSmoke" FollowBone="true" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DAMAGED"> <Model Name="W3DContainer:GUVehicleL_SKN" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="REALLYDAMAGED"> <Model Name="W3DContainer:GUVehicleL_SKN" /> <Texture Original="GUVehicleL" New="GUVehicleL_D" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Model Name="W3DContainer:GUVehicleL_DIEA" /> <ParticleSysBone BoneName="chassis" FXParticleSystemTemplate="GDIDebrisSmallFire" FollowBone="true" /> <ParticleSysBone BoneName="chassis" FXParticleSystemTemplate="GDIDebrisSmallFireDistortion" FollowBone="true" /> <ParticleSysBone BoneName="chassis" FXParticleSystemTemplate="GDIDebrisSmallSmoke" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallFire" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallFireDistortion" FollowBone="true" /> <ParticleSysBone BoneName="b_turret01" FXParticleSystemTemplate="GDIDebrisSmallSmoke" FollowBone="true" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="USER_6"> <Model Name="W3DContainer:GUVehicleL_SKN" /> <Texture Original="GUVehicleL" New="GUVehicleL" /> </ModelConditionState> <AnimationState ParseCondStateType="PARSE_DEFAULT" Flags="RANDOMSTART" StateName="STATE_bored"> <Animation AnimationName="GUVehicleL_BIDA" AnimationMode="LOOP" AnimationBlendTime="15" /> <Script> Prev = CurDrawablePrevAnimationState() if Prev == "STATE_SelectedPose" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="COMING_OUT_OF_FACTORY" StateName="STATE_built"> <Animation AnimationName="GUVehicleL_BLDA" AnimationBlendTime="0" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Animation AnimationName="GUVehicleL_DIEA" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="AFFECTED_BY_EMP"> <Animation AnimationName="GUVehicleL_BIDA" AnimationMode="MANUAL" AnimationBlendTime="15" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <!-- being fixed by engineer from being a husk --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="USER_5" StateName="STATE_Getup"> <Animation AnimationName="GUVehicleL_GTPA" AnimationBlendTime="0" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="TURN_LEFT_HIGH_SPEED" Flags="MAINTAIN_FRAME_ACROSS_STATES"> <Animation AnimationName="GUVehicleL_TRNLW" AnimationMode="LOOP" Distance="45" /> <FXEvent Frame="1" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <FXEvent Frame="25" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="TURN_RIGHT_HIGH_SPEED" Flags="MAINTAIN_FRAME_ACROSS_STATES"> <Animation AnimationName="GUVehicleL_TRNRW" AnimationMode="LOOP" Distance="45" /> <FXEvent Frame="1" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <FXEvent Frame="25" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="TURN_LEFT"> <Animation AnimationName="GUVehicleL_TRNL" AnimationMode="LOOP" /> <FXEvent Frame="0" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <FXEvent Frame="20" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="TURN_RIGHT"> <Animation AnimationName="GUVehicleL_TRNR" AnimationMode="LOOP" /> <FXEvent Frame="0" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <FXEvent Frame="20" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="MOVING" Flags="MAINTAIN_FRAME_ACROSS_STATES"> <Animation AnimationName="GUVehicleL_MOVA" AnimationMode="LOOP" Distance="146" AnimationSpeedFactorMin="0.8" AnimationSpeedFactorMax="1.0" AnimationBlendTime="15" /> <FXEvent Frame="1" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <FXEvent Frame="25" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <Script> Prev = CurDrawablePrevAnimationState() if Prev == "STATE_built" then CurDrawableSetTransitionAnimState("TRANS_built") end CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="MOVING HEALTH_PERCENT_25" Flags="MAINTAIN_FRAME_ACROSS_STATES"> <Animation AnimationName="GUVehicleL_MOVD" AnimationMode="LOOP" Distance="146" AnimationSpeedFactorMin="0.8" AnimationSpeedFactorMax="1.0" AnimationBlendTime="15" /> <FXEvent Frame="1" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTL" /> <FXEvent Frame="25" FireWhenSkipped="true" Effect="FX_GDIJuggernaughtFootprint" Bone="B_FOOTR" /> <Script> Prev = CurDrawablePrevAnimationState() if Prev == "STATE_built" then CurDrawableSetTransitionAnimState("TRANS_built") end CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="ATTACKING"> <Animation AnimationName="GUVEhicleL_ATKA" AnimationMode="LOOP" AnimationBlendTime="15" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <!-- SELECTED --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="SELECTED" StateName="STATE_SelectedPose"> <Animation AnimationName="GUVehicleL_AIDA" AnimationMode="LOOP" AnimationBlendTime="15" /> <Script> Prev = CurDrawablePrevAnimationState() if Prev == "STATE_bored" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <!-- TRANSITIONS --> <AnimationState ParseCondStateType="PARSE_TRANSITION" StateName="TRANS_IdleToSelected"> <Animation AnimationName="GUVehicleL_BATA" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <AnimationState ParseCondStateType="PARSE_TRANSITION" StateName="TRANS_SelectedToIdle"> <Animation AnimationName="GUVehicleL_ABTA" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> <!-- Transitions --> <AnimationState ParseCondStateType="PARSE_TRANSITION" StateName="TRANS_built"> <Animation AnimationName="GUVehicleL_BLDA" AnimationBlendTime="0" AnimationMode="ONCE" /> <Script> CurDrawableShowSubObject("GUN_UPGRADE") </Script> </AnimationState> </ScriptedModelDraw> <SpotlightDraw id="ModuleTag_Spotlight" AttachToBoneInAnotherModule="Zt_Spine2" RefreshTime="2.0s" SweepTime="1.0s"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="W3DContainer:FXspotlight" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="FORMATION_PREVIEW"> <Model Name="" /> </ModelConditionState> </SpotlightDraw> <LaserDraw id="ModuleTag_LaserDistort" UseDistortionShader="true" Texture1_UTile="1" Texture1_VTile=".5" Texture1_UScrollRate="0" Texture1_VScrollRate=".2" Texture1_NumFrames="1" Texture1_FrameRate="30" Texture2_UTile="1" Texture2_VTile=".01" Texture2_UScrollRate="0" Texture2_VScrollRate="1" Texture2_NumFrames="1" Texture2_FrameRate="1" LaserWidth="50"> <FXShader ShaderName="Laser.fx" TechniqueIndex="0"> <Constants> <Texture Name="Texture1"> <Value>FXRailGunCoreDistortion</Value> </Texture> <Texture Name="Texture2"> <Value>FXRailGunCoreMask</Value> </Texture> </Constants> </FXShader> </LaserDraw> </Draws> <Behaviors> <FireWeaponUpdate id="ModuleTag_Fireweapon"> <FireWeaponNugget OneShot="true" Firedelay="0.1s" WeaponName="NodNuclearTransportNuke4"/> </FireWeaponUpdate> <ProductionUpdate id="ProductionUpdateModuleTag" GiveNoXP="true"/> <HordeTransportContain id="0x9DC593B0" Slots="4" KillPassengersOnDeath="True" AllowNeutralInside="False" AllowEnemiesInside="False" AllowOwnPlayerInsideOverride="True" ObjectStatusOfContained="CAN_ATTACK UNSELECTABLE ENCLOSED" ExitSound="AudioEvent:VehicleExit" EnterSound="AudioEvent:VehicleEnter" ContainMax="4"><PassengerFilter Include="INFANTRY" Rule="ANY"/> <DieMuxData DeathTypes="ALL"/> <PassengerData BonePrefix="BONE_CONTACT_POINT_"> <Filter Include="INFANTRY"/></PassengerData> <MemberTemplateStatusInfo ObjectStatus="CAN_SPOT_FOR_BOMBARD" ThingTemplate="GDISniperSquad"/> </HordeTransportContain> <AttributeModifierPoolUpdate id="DefaultAttributeModifierPoolUpdate"/> <SquishCollide id ="DefaultSquishCollide"/> <FireWeaponWhenDead id="ModuleTag_CatalystDeathWeapon" InitiallyActive="true" DeathWeapon="CatalystInfantryDeathWeapon" ContinueToBezierDestination="false"> <DieMuxData DeathTypes="CATALYST" /> </FireWeaponWhenDead> <!--Heroic level units auto healing--> <AutoHealBehavior id="Upgrade_HeroicHeal" InitiallyActive="false" HealOnlyIfNotInCombat="false" HealOnlyIfNotUnderAttack="false" StartHealingDelay="1s" HealingAmount="100" HealingDelay=".5s"> <TriggeredBy>Upgrade_Veterancy_HEROIC</TriggeredBy> </AutoHealBehavior> <AttributeModifierUpgrade id="ModuleTag_AttributeModifierUpgradeMUCSpeed" AttributeModifier="Modifier_MultifunctionUpgradeCenterSpeed"> <TriggeredBy>Upgrade_MultifunctionUpgradeCenterSpeed</TriggeredBy> </AttributeModifierUpgrade> <AttributeModifierUpgrade id="ModuleTag_AttributeModifierUpgradeMUCDamage" AttributeModifier="Modifier_MultifunctionUpgradeCenterDamage"> <TriggeredBy>Upgrade_MultifunctionUpgradeCenterDamage</TriggeredBy> </AttributeModifierUpgrade> <AttributeModifierUpgrade id="ModuleTag_AttributeModifierUpgradeMUCArmor" AttributeModifier="Modifier_MultifunctionUpgradeCenterArmor"> <TriggeredBy>Upgrade_MultifunctionUpgradeCenterArmor</TriggeredBy> </AttributeModifierUpgrade> <StancesBehavior id="ModuleTag_Stance" StanceTemplate="Generic" /> <StatusBitsUpgrade id="0x21DB4E8C" StatusToSet="RIDER2"> <TriggeredBy>Everyone_Faction</TriggeredBy> </StatusBitsUpgrade> <LevelUpUpgrade id="ModuleTag_LevelUpUpgrade_Veteran" LevelCap="4" LevelsToGain="1"> <TriggeredBy>Upgrade_ProductionVeterancy_VETERAN</TriggeredBy> </LevelUpUpgrade> <LevelUpUpgrade id="ModuleTag_LevelUpUpgrade_Elite" LevelCap="4" LevelsToGain="2"> <TriggeredBy>Upgrade_ProductionVeterancy_ELITE</TriggeredBy> </LevelUpUpgrade> <LevelUpUpgrade id="ModuleTag_LevelUpUpgrade_Heroic" LevelCap="4" LevelsToGain="3"> <TriggeredBy>Upgrade_ProductionVeterancy_HEROIC</TriggeredBy> </LevelUpUpgrade> <InvisibilityUpdate id="3BD7F2F5" Options="" UpdatePeriod="0.5s" BroadcastRange="0" OpacityMin="100%"> <InvisibilityNugget ForbiddenConditions="PREATTACK_A FIRING_A FIRING_OR_PREATTACK_A RELOADING_A PREATTACK_B FIRING_B FIRING_OR_PREATTACK_B RELOADING_B PREATTACK_C FIRING_C FIRING_OR_PREATTACK_C RELOADING_C USING_WEAPON_A USING_WEAPON_B USING_WEAPON_C" ForbiddenConditionExceptions="" ForbiddenWeaponSets="" ForbiddenStatus="IS_FIRING_WEAPON USING_ABILITY IS_AIMING_WEAPON SPECIAL_ABILITY_PACKING_UNPACKING_OR_USING" CamouflageLevel="0" InvisibilityType="INVALID" Options="" EnteringStealthFX="" LeavingStealthFX="" HintDetectableStates="IS_ATTACKING" NoStealthForAttackWindow="0s" /> <RequiresUpgrade>Upgrade_CloakingFieldInvisibility</RequiresUpgrade> </InvisibilityUpdate> <!-- Cloaking Field --> <InvisibilityUpdate id="ModuleTag_Invisibility" UpdatePeriod="0.5s"> <InvisibilityNugget ForbiddenStatus="" HintDetectableStates="" /> <RequiresUpgrade>Upgrade_CloakingFieldInvisibility</RequiresUpgrade> </InvisibilityUpdate> <StealthUpgrade id="ModuleTag_InvisibilityTrigger"> <TriggeredBy>Upgrade_CloakingFieldInvisibility</TriggeredBy> </StealthUpgrade> <TemporarilyDefectUpdate id="ModuleTag_TemporarilyDefect" DefectionFrameCount="300" /> <WeaponSetUpdate id="ModuleTag_WeaponSetUpdate"> <WeaponSlotTurret ID="1" InterleavedStyle="INTERLEAVE_FIRST_AVAILABLE" WeaponChoiceCriteria="PREFER_MOST_DAMAGE" AllowInterleavedFiring="False"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMastadonCannon" Upgrade="" ObjectStatus="" IsPlayerUpgradePermanent="False" /> <TurretSettings TurretTurnRate="60" TurretPitchRate="20" MinimumPitch="-15d" PitchHeight="50%" ControlledWeaponSlots="" MinIdleScanTime="1s" MaxIdleScanTime="5s" MinIdleScanAngle="0" MaxIdleScanAngle="90" MaxDeflectionClockwise="120d" MaxDeflectionAntiClockwise="120d" NaturalTurretAngle="0d" AllowsPitch="True" RecenterWhenOutOfTurnRange="True"> <TurretAITargetChooserData IdleScanDelay="0.8s" ReacquireDelay="5s" StartupDelay="0s" SympathyRange="25" CheckVisionRange="False" CanPickDynamicTargets="True" RotateToTargetWhenAiming="True" CanAutoAcquireNonAutoAcquirable="False" TargetingCompareList="DefaultTurretTargetingCompareList" ActiveWhenPerformingSpecialAbility="False" CanAcquireDynamicIfAssignedOutOfRange="True" CanPickTargetsOutOfTurretAngle="False" /> </TurretSettings> </WeaponSlotTurret> <!-- <WeaponSlotHardpoint ID="1" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMastadonCannon" /> </WeaponSlotHardpoint> <WeaponSlotHardpoint ID="2" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMastadonCannon" /> </WeaponSlotHardpoint> --> <WeaponSlotHierarchicalTurret ParentID="1" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM" ID="3"> <Weapon IsPlayerUpgradePermanent="False" ObjectStatus="" Upgrade="" Template="GDIMammothTankRocketPods" Ordering="SECONDARY_WEAPON"/> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="99.99999d" MaxDeflectionClockwise="20d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" ControlledWeaponSlots="" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotHierarchicalTurret> <WeaponSlotHierarchicalTurret ParentID="1" AllowInterleavedFiring="true" InterleavedStyle="INTERLEAVE_RANDOM" ID="4"> <Weapon IsPlayerUpgradePermanent="False" ObjectStatus="" Upgrade="" Template="GDIMammothTankRocketPods" Ordering="SECONDARY_WEAPON"/> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="20d" MaxDeflectionClockwise="99.99999d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" ControlledWeaponSlots="" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotHierarchicalTurret> </WeaponSetUpdate> <LaserState id="ModuleTag_LaserState" LaserId="1" /> <Physics id="ModuleTag_Physics" /> <CreateObjectDie id="ModuleTag_CreateObjectDie" CreationList=""> <DieMuxData DeathTypes="ALL" /> </CreateObjectDie> <DestroyDie id="ModuleTag_Die"> <DieMuxData DeathTypes="ALL" /> </DestroyDie> <FXListBehavior id="ModuleTag_FXList"> <DieMuxData DeathTypes="ALL" /> <Event Index="onDeath" FX="FX_AwesomeXplosion" /> </FXListBehavior> <SlowDeath id="ModuleTag_Death" DestructionDelay="15s" SinkRate="1.5" SinkDelay="5s"> <OCL Type="INITIAL"> <OCL>OCL_GDIMARVDebris</OCL> </OCL> <DieMuxData DeathTypes="ALL" DeathTypesForbidden="TOPPLED"/> <Sound Type="INITIAL" List="Mastodon_VoiceDie"/> </SlowDeath> <StatusBitsUpgrade id="ModuleTag_VeterancyUpgrade" StatusToSet="WEAPON_UPGRADED_01"> <TriggeredBy>Upgrade_Veterancy_HEROIC</TriggeredBy> </StatusBitsUpgrade> </Behaviors> <AI> <AIUpdate id="ModuleTag_AI" AILuaEventsList="GDIMARVFunctions" AutoAcquireEnemiesWhenIdle="YES"> <UnitAITargetChooserData TargetingCompareList="DefaultTargetingCompareList" RotateToTargetWhenAiming="False" CanPickDynamicTargets="False" SympathyRange="100"/> </AIUpdate> </AI> <Body> <ActiveBody id="ModuleTag_Body" MaxHealth="22500" /> </Body> <ClientBehaviors> <AnimationSoundClientBehavior id="ModuleTag_ASCB"> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_TRNL" Frame="25 50 75 100 125 150" /> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_TRNR" Frame="25 50 75 100 125 150" /> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_TRNLW" Frame="25 50 75 100 125 150" /> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_TRNRW" Frame="25 50 75 100 125 150" /> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_MOVA" Frame="25 50 75 100 125 150" /> <Sound Sound="AudioEvent:Mastodon_Footstep" Animation="GUVehicleL_MOVD" Frame="25 50 75 100 125 150" /> <Sound Frame="22 44" Animation="GUVehicleL_ABTA" Sound="AudioEvent:Mastodon_SelectedToIdle_ABTA"/> <Sound Frame="16 31" Animation="GUVehicleL_BATA" Sound="AudioEvent:Mastodon_SelectedToIdle_BATA"/> <Sound Frame="16 31" Animation="GUVehicleL_BLDA" Sound="AudioEvent:Mastodon_COMING_OUT_OF_FACTORY"/> </AnimationSoundClientBehavior> </ClientBehaviors> <ModelConditionAudioLoopClientBehavior id="0x7B291969"> <ModelConditionSound Sound="AudioEvent:GDI_RailgunAccelerator_EnergyStripeLoop" RequiredFlags="USING_WEAPON_C"/> </ModelConditionAudioLoopClientBehavior> <Geometry IsSmall="false"> <Shape Type= "BOX" MajorRadius = "29.6026" MinorRadius = "17.0185" Height = "17.9773" ContactPointGeneration="VEHICLE"> <Offset x = "-18.3624" y = "0.0492744" z = "32.9796" /> </Shape> <Shape Type= "BOX" MajorRadius = "21.2712" MinorRadius = "8.8983" Height = "17.2881" ContactPointGeneration="VEHICLE"> <Offset x = "26.1552" y = "-29.3933" z = "0.0" /> </Shape> <Shape Type= "BOX" MajorRadius = "21.7525" MinorRadius = "8.56917" Height = "17.378" ContactPointGeneration="VEHICLE"> <Offset x = "25.4914" y = "29.1596" z = "9.53674e-007" /> </Shape> <Shape Type= "BOX" MajorRadius = "21.0169" MinorRadius = "20.2542" Height = "20.678" ContactPointGeneration="VEHICLE"> <Offset x = "23.934" y = "0.00376129" z = "-9.53674e-007" /> </Shape> <Shape Type= "BOX" MajorRadius = "30.3217" MinorRadius = "19.8949" Height = "32.9622" ContactPointGeneration="VEHICLE"> <Offset x = "-28.5169" y = "-0.0588036" z = "9.53674e-007" /> </Shape> <Shape Type= "BOX" MajorRadius = "26.8461" MinorRadius = "11.865" Height = "24.6888" ContactPointGeneration="VEHICLE"> <Offset x = "-26.0001" y = "-32.2981" z = "0.0" /> </Shape> <Shape Type= "BOX" MajorRadius = "26.2468" MinorRadius = "11.3856" Height = "24.9285" ContactPointGeneration="VEHICLE"> <Offset x = "-25.8802" y = "31.7012" z = "0.0" /> </Shape> </Geometry> <AudioArrayVoice> <AudioEntry Sound="AudioEvent:ALL_Mastodon_VoiceAttack" AudioType="voiceAttack" /> <AudioEntry AudioType="voiceCreated" Sound="Multisound:ALL_Mastodon_VoiceCreateMS"/> <AudioEntry Sound="AudioEvent:ALL_Mastodon_VoiceMove" AudioType="voiceMove" /> <AudioEntry AudioType="voiceGuard" Sound="AudioEvent:ALL_Mastodon_VoiceMove"/> <AudioEntry Sound="AudioEvent:ALL_Mastodon_VoiceMoveAttack" AudioType="voiceAttackAfterMoving" /> <AudioEntry Sound="AudioEvent:ALL_Mastodon_VoiceRetreat" AudioType="voiceRetreatToCastle" /> <AudioEntry Sound="Multisound:Mastodon_VoiceSelectMS" AudioType="voiceSelect" /> <AudioEntry Sound="Multisound:Mastodon_VoiceSelectBattleMS" AudioType="voiceSelectBattle" /> </AudioArrayVoice> <AudioArraySound> <AudioEntry Sound="AudioEvent:VehicleCrush" AudioType="soundCrushing" /> <AudioEntry AudioType="soundMoveStart" Sound="Multisound:Mastodon_MoveStartMS"/> <AudioEntry AudioType="soundAmbient" Sound="AudioEvent:Mastodon_IdleLoop"/> <AudioEntry AudioType="soundMoveLoop" Sound="AudioEvent:Mastodon_Land_MoveLoop"/> </AudioArraySound> <EvaEvents EvaEventDieOwner="UnitLost" EvaEventProductionStarted="UnitConstructionStarted" EvaEventDamagedOwner="UnitUnderAttack" EvaEventDamagedFromShroudedSourceOwner="UnitUnderAttackFromShroudedUnit" EvaEventDamagedByFireOwner="GenericUnitBeingBurned" EvaEventAmbushed="UnitAmbushed" EvaEventSecondDamageFarFromFirstScanRange="600" EvaEventSecondDamageFarFromFirstTimeoutMS="31000" EvaEnemyObjectSightedEvent="GenericEnemyUnitSighted" EvaEventDetectedEnemy="EnemyStealthUnitDiscovered" EvaEventAvailableForProduction="NewConstructionOptions" EvaEventBuildOnHold="BuildOnHold" EvaEventBuildCancelled="BuildCancelled" EvaEventPromotedOwner="UnitPromoted" /> <VisionInfo ShroudClearingRange="400" VisionRange="350"/> <CrusherInfo CrushKnockback="0" CrushZFactor="1" MinCrushVelocityPercent="1%" CrushDecelerationPercent="0%" CrushWeapon="" CrushRevengeWeapon="" CrusherLevel="4" CrushableLevel="4" MountedCrusherLevel="255" MountedCrushableLevel="255" CrushEqualLevelProps="False" UseCrushAttack="True" CrushOnlyWhileCharging="False" CrushAllies="False" /> </GameObject> </AssetDeclaration> Share this post Link to post
Egozi44 28 Posted August 25, 2015 (edited) The other animation issue I have with him is: a. the TRANS_SelectedToIdle animation (GUVehicleL_ABTA) most of the time work too fast and skip really fast to the Idle animation where the mastadon sit, if you select and unselect it fast, or if unit pass in front of him while the mastadon walking he will just sit while he suppose to first Wait a bit when he standing and move the legs little by little till he sit, is there any way to Force the mastadon to not skip it and show the full animation? could it be issue with the GUVehicleL_ABTA file? b. will be hard to explain without show a video.... The mastadon cannon seem to randomlly change to the upgerade cannon state when it being damage, since the script look alright and I couldn't pinpoint the issue I just made it show the upgrade state all the time, but when I look at the middle part of the cannon it seem as if the skin change back and forward from the upgrade and unupgrade cannon but only in the middle part and only when the cannon moving, I can live with that issue but if there's a way to fix the annoy script let me know... that mastadon sure came with ton of random bugs : / Edited August 25, 2015 by Egozi44 Share this post Link to post
Ravendark 46 Posted August 25, 2015 (edited) in alot of the animations and transition states you tell it to show the upgraded mesh CurDrawableShowSubObject("GUN_UPGRADE") its not a bug.....its being told on purpose to show the upgraded gun. Remove all those lines about showing the damn upgrade might do the trick. Use the subobjectupgrade module instead. <SubObjectsUpgrade id="ModuleTag_ShowGUN_UPGRADE" ShowSubObjects="GUN_UPGRADE"> <TriggeredBy>Upgrade_GUN_UPGRADE</TriggeredBy> </SubObjectsUpgrade> Do it something like that. Also make it hide the GUN_UPGRADE through lua OnCreate. All by all i dont understand why the GUN_UPGRADE is even an issue as i havent spotted a upgrade anywhere in the code for the actuall gun....its just some left over TT junk it seems. for the turrets: <WeaponSetUpdate id="ModuleTag_WeaponSetUpdate"> <WeaponSlotTurret ID="1" AllowInterleavedFiring="false" InterleavedStyle="INTERLEAVE_FIRST_AVAILABLE" WeaponChoiceCriteria="PREFER_MOST_DAMAGE"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMastadonCannon" /> <TurretSettings TurretTurnRate="60" TurretPitchRate="20" MinimumPitch="-15d" PitchHeight="50%" MinIdleScanTime="1s" MaxIdleScanTime="5s" MinIdleScanAngle="0" MaxIdleScanAngle="90" MaxDeflectionClockwise="120d" MaxDeflectionAntiClockwise="120d" AllowsPitch="True" RecenterWhenOutOfTurnRange="True"> <TurretAITargetChooserData IdleScanDelay="0.8s" ReacquireDelay="5s" StartupDelay="0s" SympathyRange="25" CheckVisionRange="False" CanPickDynamicTargets="True" RotateToTargetWhenAiming="True" CanAutoAcquireNonAutoAcquirable="False" TargetingCompareList="DefaultTurretTargetingCompareList" ActiveWhenPerformingSpecialAbility="False" CanAcquireDynamicIfAssignedOutOfRange="True" CanPickTargetsOutOfTurretAngle="False" /> </TurretSettings> </WeaponSlotTurret> <WeaponSlotTurret ID="3" AllowInterleavedFiring="false" InterleavedStyle="INTERLEAVE_FIRST_AVAILABLE" WeaponChoiceCriteria="PREFER_MOST_DAMAGE"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMammothTankRocketPods" /> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="100d" MaxDeflectionClockwise="20d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotTurret> <WeaponSlotTurret ID="4" AllowInterleavedFiring="false" InterleavedStyle="INTERLEAVE_FIRST_AVAILABLE" WeaponChoiceCriteria="PREFER_MOST_DAMAGE"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIMammothTankRocketPods" /> <TurretSettings RecenterWhenOutOfTurnRange="True" AllowsPitch="False" NaturalTurretAngle="0d" MaxDeflectionAntiClockwise="20d" MaxDeflectionClockwise="100d" MaxIdleScanAngle="90" MinIdleScanAngle="0" MaxIdleScanTime="5s" MinIdleScanTime="1s" PitchHeight="50%" MinimumPitch="0d" TurretPitchRate="0" TurretTurnRate="60"> <TurretAITargetChooserData CanPickTargetsOutOfTurretAngle="False" CanAcquireDynamicIfAssignedOutOfRange="True" ActiveWhenPerformingSpecialAbility="False" TargetingCompareList="DefaultTurretTargetingCompareList" CanAutoAcquireNonAutoAcquirable="False" RotateToTargetWhenAiming="True" CanPickDynamicTargets="True" CheckVisionRange="False" SympathyRange="25" StartupDelay="0s" ReacquireDelay="5s" IdleScanDelay="0.8s"/> </TurretSettings> </WeaponSlotTurret> </WeaponSetUpdate> Edited August 25, 2015 by Ravendark Share this post Link to post
Ravendark 46 Posted August 25, 2015 if the animations are to fast add a AnimationSpeedFactor to it to increase/decrease the speed of the animation <AnimationState ParseCondStateType="PARSE_TRANSITION" StateName="TRANS_SelectedToIdle"> <Animation AnimationName="GUVehicleL_ABTA" AnimationMode="ONCE" AnimationSpeedFactorMin="1.0" /** play with these numbers to get the desired effect **/ AnimationSpeedFactorMax="1.1" /> /** play with these numbers to get the desired effect **/ </AnimationState> Share this post Link to post
Ravendark 46 Posted August 25, 2015 that mastadon sure came with ton of random bugs : / That is because who ever exported that model from TT never bothered optimising it fully for TW/KW, atleast not the public models they make aviable. Alot of those exported models need a shader, animation and even rigging overhaul alot of the times. If you would ask several of the people who actually use them (successfuly/effeciently?) in their mods, they would tell you it took them more time then its probably worth. As i dont think its possible at this point to extract TT xmls it also means they need to be created from the ground up, given you can copy/past some sections from similar TW/kw units there is still a trial and error testing phase to see what works. Share this post Link to post
Egozi44 28 Posted August 25, 2015 (edited) I think you didn't got me with the gun upgrade, the gun was set to HideSubObject but in random situations that mostly related to being damage the gun upgrade suddenly was triggered despite that the script didn't allow it So I change all of it to ShowSubObject The one who add the upgrade option add it so that people will decide if they want to add upgrade for it or just decide what cannons models they want to use (the upgrade ones are bigger) Also the mastodon didn't came with any lua script in it's files, do I need to add his script to KW lua? and how? About the animations I will give it a go but it really more about force it Not to skip the animation than to slow it down Will try the turrets and report And as you said there's not a lot of complete xmls and models out there : / most of the people who made complete ones also changed the look of the mastodon or just made their own Edited August 25, 2015 by Egozi44 Share this post Link to post