Jump to content
Egozi44

Is it possible to make two units to merge?

Recommended Posts

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 by Egozi44

Share this post


Link to post

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

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

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

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 by Ravendark

Share this post


Link to post

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

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

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 by Egozi44

Share this post


Link to post

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 by Egozi44

Share this post


Link to post

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

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

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

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

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

You do not need to destroy the user manually as the replace self does that already.

Share this post


Link to post

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

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 by Egozi44

Share this post


Link to post

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 by Ravendark

Share this post


Link to post

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

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

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 by Egozi44

Share this post


Link to post

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 by Ravendark

Share this post


Link to post

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

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

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 by Egozi44

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×