Jump to content
Sign in to follow this  
Madin

A couple of behaviour module questions

Recommended Posts

In the 'ActiveBody' module, there is a 'DamageCreation' element. I would like to know if this element is still usable (I understand that it was used for creating catapult rock hit-bits in BFME).

I think if this still works that some interesting things could be done with it.

 

AIUPdate module

What does the 'StandGround' attribute do? (Does this work with, or overrule the 'HOLDGROUND' stance?)

What is the 'HoldGroundCloseRangeDistance' mean? (Hold ground until the unit gets this close?, is this similar to hold ground stance?, does it overrule it?)

The 'SpecialContactPoints' attribute. I cannot fully remember what this does. I think that it has something to do with the 'Label' attribute in the geometries contact point, but I am not sure.

 

Thanks for any help!

Edited by Madin

Share this post


Link to post

DamageCreation: Yes that's exactly that. The models of structures were split into a few parts specifically named and saved, I don't know if it's still supported - I think so - because of all the work it needs to set it up.

StandGround: dunno, maybe in earlier iterations something against fear or suppression.

HoldGroundCloseRangeDistance: afaik this was for triggering the CLOSE_RANGE condition in the WeaponSet. As TW uses WeaponSetUpdate instead (dunno if WeaponSet even works now) this is probably pointless.

SpecialContactPoints: Yes it's connected to the label attribute. Points in this list are not targeted by other units and reserved for stuff like special powers.

  • Upvote 1

Share this post


Link to post

DamageCreation: Yes that's exactly that. The models of structures were split into a few parts specifically named and saved, I don't know if it's still supported - I think so - because of all the work it needs to set it up.

 

Megumi aswered a similar post like this from me in the old forums a while ago. Shame its gone now. She explained pretty well how it worked there.

The basis of it was...iiirc... that you had to split up yout model in to 4 parts, link and orient the meshes to 4 specific bones. from the damagecreation module you would reference those meshes or bones (can't remember wich), the game engine would take into account what side got hit and if a sertain amount of damage happenend you could get a crumbling effect of that specific side, thus emulation directional damage.

 

taken from a bfme building:

 

MaxHealthDamaged = 600; GONDOR_KEEP_HEALTH_DAMAGED; value is

2000
MaxHealthReallyDamaged = 300; GONDOR_KEEP_HEALTH_REALLY_DAMAGED; value
is 1000
DamageCreationList = OCL_BuildingDamageList01 CATAPULT_ROCK
DamageCreationList = OCL_GBBtlTwrSD2_Chunk1 CATAPULT_ROCK
FRONT_DESTROYED
DamageCreationList = OCL_GBBtlTwrSD2_Chunk2 CATAPULT_ROCK
RIGHT_DESTROYED
DamageCreationList = OCL_GBBtlTwrSD2_Chunk3 CATAPULT_ROCK
BACK_DESTROYED
DamageCreationList = OCL_GBBtlTwrSD2_Chunk4 CATAPULT_ROCK
LEFT_DESTROYED
 

maybe a possible use in Tw would be:

 

 

<DamageCreationlist
  ObjectCreationList="OCL_frontside rubble"
  TriggerFX="FX_Throw_some_smoke_and_debry_front"
   DestroyedSide="FRONT_DESTROYED" />

<DamageCreationlist
  ObjectCreationList="OCL_leftside rubble"
  TriggerFX="FX_Throw_some_smoke_and_debry_left"
   DestroyedSide="LEFT_DESTROYED" />
 

i didnt test that yet back then.

So not sure if it works at all in TW

Edited by Ravendark

Share this post


Link to post

A few more questions:

Does anyone know what the 'AllowBannerSpawnUpgrade' module does? (Something do do with re-spawning?)

 

Does anyone know what the 'AnnounceBirthAndDeathBehavior' module does? It seems that it might have been used for a few heroes in BFME, but I am unsure of what it does (or did).

 

Is the 'AreaRestrictSpecialPower' to do with single player structures that prevent a super weapon from firing? or does this do something else? Also what does the 'RestrictionType' attribute refer to (it is only a 1, or 2).

Also there is a 'AreaName' attribute that is a string type input, I do not understand this either!

 

'AssaultTransportAIUpdate' Does this work any more? (apparently it used a 'DEPLOY' damage type in Generals, which no longer exists).

 

Thanks for any help!

Edited by Madin

Share this post


Link to post

i looked into the special power restriction a while back aswell.

 

it seems to come in 2 modules.

The one you mentioned and

 

<xs:complexType name="RestrictSpecialPowerBehaviorModuleData">
        <xs:complexContent>
            <xs:extension base="BehaviorModuleData">
                <xs:sequence>
                    <xs:element name="DependentObjectRadius" type="SageReal" minOccurs="1" maxOccurs="unbounded" />
                </xs:sequence>
        <xs:attribute name="RestrictionType" type="SpecialPowerRestrictionType" />
                <xs:attribute name="DependentObject" type="GameObjectWeakRef" />
                <xs:attribute name="ConsiderSpecialPowerRadius" type="SageBool" default="true" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
 

i assumed that the above one was used in the sarajevo mission. My assumption is that you add this code to the building that has the specialpower trigger in it, and it will block the specialpower from firing near the dependent object.

 

As for RestrictionType in both modules ...i think it works together with the

 

<xs:attribute name="RestrictionType" type="SpecialPowerRestrictionType" default="UNRESTRICTED" />
 

found in the specialpowertemplate. I assume that if you use a

 

SPECIALPOWER_RESTRICTION_1 or SPECIALPOWER_RESTRICTION_2

you could define up to 2 specialpowers to be restricted from a single trigger object?

 

The area name thing...that has me baffled abit aswell...maybe its related to worldbuilder areas? As im unsure on how to setup/declare areas ingame anyother way.

Share this post


Link to post

The code goes into the blocking object, in the mission that's Temple Prime. The DependentObjects are the objects around the map needed for the restriction to work (the 3 buildings on the campaign map).

 

AreaName indeed does refer to areas set up in world builder.

 

AllowBannerSpawnUpgrade need to look it up again, don't want to say anything that's crap (I'm on laptop right now).

AnnounceBirthAndDeathBehavior in BFME was for displaying a message to the player in the military caption box when a hero finished building or died.

  • Upvote 1

Share this post


Link to post

Some further questions

'AssistedTargetingUpdate' Does this work? I never modded Zero Hour, so I am unsure how to use this (in terms of how to set the weapons up etc).

 

'AttackTargetSpecialPower' How is the use of this module any different to a standard 'SpecialPower' + 'WeaponFireSpecialAbilityUpdate' combination?

 

'AutoFindHealingUpdate' I guess this no longer works? I was wondering if it could be used to get infantr squads to use the Armory's healing.

 

Thanks for any information!

Edited by Madin

Share this post


Link to post

I never got AssistedTargetingUpdate to work, though last time I tested that stuff it was 2007 when I was working on Tower Defense, so I might have overlooked something.

 

AttackTargetSpecialPower: This is unused in BFME and TW and I don't have the Generals ini here, I could do a guess where it was used but I'll skip that now.

 

AutoFindHealingUpdate: Iirc this never really worked. I think it's from Generals so units come closer to the Propaganda Tower or Medical range, but even back then I never really noticed it.

  • Upvote 1

Share this post


Link to post

AssistedTargetingUpdate' Does this work? I never modded Zero Hour, so I am unsure how to use this (in terms of how to set the weapons up etc).

In Gen/ZH

 

the patriot would have :

 

 

Behavior = AssistedTargetingUpdate ModuleTag_07
    AssistingClipSize = 4                       ; How many shots to make when asked by someone of my kind who has a RequestAssistRange weapon
    AssistingWeaponSlot = SECONDARY             ; And the weapon to use.  Should have huge range and no natural clip.
    LaserFromAssisted = PatriotBinaryDataStream ; Stream to draw from the requestor to me
    LaserToTarget = PatriotBinaryDataStream     ; Stream to draw from me to the target
  End 

in its engineering section(gens version of behavior).

 

it would have 3 weaponslots

 

WeaponSet
    Conditions          = None
    Weapon              = PRIMARY     PatriotMissileWeapon
    Weapon              = SECONDARY   PatriotMissileAssistWeapon
    Weapon              = TERTIARY    PatriotMissileWeaponAir
    AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_AI FROM_SCRIPT
    AutoChooseSources   = SECONDARY   NONE
    AutoChooseSources   = TERTIARY    FROM_PLAYER FROM_AI FROM_SCRIPT  
    PreferredAgainst    = PRIMARY     VEHICLE INFANTRY
    PreferredAgainst    = SECONDARY   BALLISTIC_MISSILE AIRCRAFT
    PreferredAgainst    = TERTIARY    BALLISTIC_MISSILE AIRCRAFT
    ShareWeaponReloadTime = Yes
  End
 

the tricky part in converting it to TW coding would be the autochoose part...because it basicly tells the scondary (assist weapon) not to fire on anything enless its triggered by the update module.

I don't think anything like that exists/works in TW anymore....you might be able to get arround that by using the prefer_most_damage attribute in autoaquire(iirc thats what its called) and having the secondary weapon set to verry low "primary' damage (you could do a firewhen dead weapon in the actual projectile to compensate for damage loss or such thing).

 

Then you need to add the

 

RequestAssistRange=""
 

to the weapon of the PRIMARY weapon (not the assisting weapon).

 

If the module still works..it should do the assist fire thing.

 

if i would do a quick and dirty copy to the gdi golumcannon for example:

 

 

<WeaponSetUpdate
                id="ModuleTag_WeaponSetUpdate">
                <WeaponSlotTurret
                    ID="1"
                    AllowInterleavedFiring="false"
                    InterleavedStyle="INTERLEAVE_FIRST_AVAILABLE"
                    WeaponChoiceCriteria="PREFER_MOST_DAMAGE">
                    <Weapon
                        Ordering="PRIMARY_WEAPON"
                        Template="GDIGolemCannon" />
                   <Weapon
                        Ordering="SECONDARY_WEAPON"
                        Template="GDIGolemCannonAssist" />
                    <!-- dummy weapon left in to preserve saved games.  -->
                    <Weapon
                        Ordering="PRIMARY_WEAPON"
                        Template="GDIGolemCannonRailgun"
                        ObjectStatus="WEAPON_UPGRADED_01" />
                    <TurretSettings
                        TurretTurnRate="290"
                        TurretPitchRate="100"
                        AllowsPitch="true"
                        MinimumPitch="-10d"
                        PitchHeight="90%"
                        MinIdleScanTime="1.0s"
                        MaxIdleScanTime="5.0s"
                        MinIdleScanAngle="0.0"
                        MaxIdleScanAngle="90.0">
                        <TurretAITargetChooserData />
                    </TurretSettings>
                </WeaponSlotTurret>
            </WeaponSetUpdate>
 

 

 

<WeaponTemplate
        id="GDIGolemCannon"
        Name="GDIGolemCannon"
        AttackRange="350.0"

        RequestAssistRange="200"

        MinTargetPitch="-15d"  
        MaxTargetPitch="15d"
        WeaponSpeed="1000"
        FireFX="FX_GDI_CommandPostGolemCannonFire"
        WeaponRecoil="0d"
        RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"
        ClipSize="1"  
        ShotsPerBarrel="1"
        ProjectileCollidesWith  = "ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"
        CanFireWhileMoving="true">
        <FiringDuration MinSeconds="0.3s" MaxSeconds="0.3s" />
        <ClipReloadTime MinSeconds="2.3s" MaxSeconds="2.3s" />
        <Nuggets>
            <ProjectileNugget
                WarheadTemplate="GDIGolemCannonWarhead"
                ProjectileTemplate="FXTankShell"
            >
            </ProjectileNugget>
            <SuppressionNugget
                Radius="50.0"
                Suppression="50"
                DurationSeconds="2s"
            />
        </Nuggets>
        <ScatterRadiusVsType
    Radius="25.0">
            <Filter
                Rule="NONE"
                Include="INFANTRY" />
        </ScatterRadiusVsType>
    </WeaponTemplate>

<WeaponTemplate
        id="GDIGolemCannonAssist"
        Name="GDIGolemCannonAssist"
        AttackRange="600.0"             
        MinTargetPitch="-15d"  
        MaxTargetPitch="15d"
        WeaponSpeed="1000"
        FireFX="FX_GDI_CommandPostGolemCannonFire"
        WeaponRecoil="0d"
        RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"
        ClipSize="1"  
        ShotsPerBarrel="1"
        ProjectileCollidesWith  = "ALLIES ENEMIES NEUTRAL STRUCTURES WALLS"
        CanFireWhileMoving="true">
        <FiringDuration MinSeconds="0.3s" MaxSeconds="0.3s" />
        <ClipReloadTime MinSeconds="2.3s" MaxSeconds="2.3s" />
        <Nuggets>
            <ProjectileNugget
                WarheadTemplate="GDIGolemCannonWarhead"
                ProjectileTemplate="FXTankShell"
            >
            </ProjectileNugget>
            <SuppressionNugget
                Radius="50.0"
                Suppression="50"
                DurationSeconds="2s"
            />
        </Nuggets>
        <ScatterRadiusVsType
    Radius="25.0">
            <Filter
                Rule="NONE"
                Include="INFANTRY" />
        </ScatterRadiusVsType>
    </WeaponTemplate>
 

 

in the gameobject of the golumcannon:

<AssistedTargetingUpdate
  AssistingClipSize="4"
  AssistingWeaponSlot="SECONDARY_WEAPON"
  LaserFromAssisted="" /** not sure if these need to be set at this point, they are basicly w3d stream/laser draws with a sertain texture in gen/zh
  LaserToTarget=""     /** used the same draw as the above in gen/zh
/> 

then verry importantly, because EA didnt define or removed this part:

 

add the following line the the gameobject.xsd schematic:

 

in the behavior section:

 

 

<xs:element name="AssistedTargetingUpdate" type="AssistedTargetingUpdateModuleData" />
 

 

 

if you feel like trying this out....let me know if it still works.

Edited by Ravendark
  • Upvote 1

Share this post


Link to post

Thanks to both of you for the explanations!

 

Now about the 'AutoAbility' module. I know that the right click ability on the buttons does not exist in C&C3, but from BFME information that I was reading, it was possible to have the 'AutoAbility' start active (so no right click was needed). One way that this was used was to have the AI able to use the the special abilities with a lot more control than the standard 'AISpecialPowerUpdate' module ( http://www.the3rdage.net/item-235?apage=308#page ).

 

There is a 'StartsActive' attribute in C&C3, and also the 'LogicCommand' button has a 'AUTO_ABILITY_TRIGGERED' option, but I still cannot get this to work, but the thing is, I never started modding until C&C3, so I have no experience in using the 'AutoAbility' module. Could someone maybe fully confirm that it either works or does not work? I am thinking that I probably do not understand how to use the module (I edited the Orca's Senor pod special ability button to have the 'AUTO_ABILITY_TRIGGERED' option, and then added an 'AutoAbility module that scanned for enemy vehicles has a trigger).

 

Thanks for any clarification!

Share this post


Link to post

In theory that should all still work, the only thing im unsertain about is how to trigger upgrades for AI only (like allfaction upgrades or InitialUpgrades) because he seems to use that for enabling disabling the ai command button/ai commandset.

But if i understood what i saw in your Tib history mod, you alrdy did something like that with your NOD SSM Launcher? if i remember correctly it switched payloads depending on ai dificulty (on a side note i would love to know how you did AI based upgrades). So if you can get a ai upgrade to work:

 

The rest should basicly still work the same more or less. Except...his command button seems to be combination of the specialability module and a buttonpower template.....also i dont think the autoability option still exists in either of those.

And it might be a good question if AUTO_ABILITY_TRIGGERED works the same as autoability="yes" ?

Share this post


Link to post

There is a good chance the module is broken. TW is forked from on an BFME II alpha which iirc was forked from a BFME I beta, and might not had this feature done (same with a lot of other stuff like the resurrection stuff and terrain resources).

As no one made it work yet it's very probably broken. It might also be that the Query was set up wrong.

Share this post


Link to post

But if I understood what I saw in your Tib history mod, you already did something like that with your NOD SSM Launcher? if I remember correctly it switched payloads depending on ai difficulty (on a side note I would love to know how you did AI based upgrades).

 

You sort of started to answer it yourself. The AI indeed gets a number of 'OBJECT' upgrades (that you can view in the Upgrade.xml), one for each difficulty level of both single and multiplayer.

Has with the BFME, you can manually add the brutal AI upgrades, so you can also make use of them.

From here someone with your code ability can probably come up with numerous ways to use this knowledge.

 

For me I use this code:

<ModelConditionUpgrade id="ModuleTag_AIUpgrades" Permanent="true" AddConditionFlags="USER_75">
 <TriggeredBy>Upgrade_EasyAISinglePlayer</TriggeredBy>
 <TriggeredBy>Upgrade_MediumAISinglePlayer</TriggeredBy>
 <TriggeredBy>Upgrade_HardAISinglePlayer</TriggeredBy>
 <TriggeredBy>Upgrade_BrutalAISinglePlayer</TriggeredBy>
 <TriggeredBy>Upgrade_EasyAIMultiPlayer</TriggeredBy>
 <TriggeredBy>Upgrade_MediumAIMultiPlayer</TriggeredBy>
 <TriggeredBy>Upgrade_HardAIMultiPlayer</TriggeredBy>
 <TriggeredBy>Upgrade_BrutalAIMultiPlayer</TriggeredBy>
 </ModelConditionUpgrade>

in the 'BaseVehicle.xml' so I can generate something based on the upgrades that LUA code can 'see' ( I use 'xai:joinAction' attribute in individual 'GameObject files if I want to adjust the code at an object level).

 

Before I get into that, in case you are not already aware (you probably are), if what you want the AI to use an 'OBJECT' upgrade on is a 'STRUCTURE', then all you have to do is use a 'PowerUpgrade' module that contains the upgrade that you want the AI to use. With this module the AI will purchase the upgrade, and it has the benefit of obeying the game dependency rules of the upgrades code (like the factions power plants do).

Be warned that if you have a choice of more than one 'OBJECT' upgrade for a structure (like my Obelisk in the Tiberian history mod), the AI will almost always chose whatever the first upgrade that is mentioned in the 'PowerUpgrade' module.

 

Anyway, back to the main topic.

My LUA scrip events has a model condition event that looks for the above model condition and which I call:

            <ModelConditionEvent Name="AddUpgradeAI">
			<Conditions>+USER_75</Conditions>
		</ModelConditionEvent>

For the SSM which you mentioned, I am also using the 'SpecialEnemySense' module (mentioned in the BFME article above), which actually works! (sort of, the 'SpecialEnemyFilter' does not work exactly like a regular object filter).

<SpecialEnemySenseUpdate id="ModuleTag_SpecialEnemySenseUpdate" ScanRange="1000" ScanInterval="15">
 <SpecialEnemyFilter Rule="NONE" Relationship="ENEMIES" Include="STRUCTURE"/>
 </SpecialEnemySenseUpdate>

Has you can see it is scanning for structures, if it detects structures then it throws up the 'SPECIAL_ENEMY_NEAR' model condition, which of course can be used by LUA.

 

So by default the SSM is armed with the chemical warhead, and if an enemy structure is detected within the scan range, then LUA swaps the warhead to the Napalm version.

All the while the code only works if the 'USER_75' model condition is present, which means that the code is only usable by the AI!

Check it out:

            <ModelConditionEvent Name="OnEnemyNearWhileIdleAI">
                  <Conditions>+SPECIAL_ENEMY_NEAR +USER_75 -USING_WEAPON_A</Conditions>
            </ModelConditionEvent>

            <ModelConditionEvent Name="OnEnemyNotNearWhileIdleAI">
                  <Conditions>-SPECIAL_ENEMY_NEAR +USER_75 -USING_WEAPON_A</Conditions>
            </ModelConditionEvent>

Note that the code makes sure that it can only switch if the weapon is not in use.

 

		<EventHandler EventName="OnEnemyNearWhileIdleAI"	ScriptFunctionName="OnEnemyVehicleNear" DebugSingleStep="false"/>
		<EventHandler EventName="OnEnemyNotNearWhileIdleAI"	ScriptFunctionName="OnEnemyVehicleNotNear" DebugSingleStep="false"/>

Next LUA:

function OnNODSSMCreated(self)
	-- Napalm load by default.
	ObjectGrantUpgrade( self, "Upgrade_NapalmWeapon" )
end

function OnEnemyVehicleNear(self)
	if ObjectHasUpgrade( self, "Upgrade_Veterancy_HEROIC" ) == 0 then
		ObjectGrantUpgrade( self, "Upgrade_NapalmWeapon" )	
	end
end

function OnEnemyVehicleNotNear(self)
	if ObjectHasUpgrade( self, "Upgrade_Veterancy_HEROIC" ) == 0 then
		ObjectGrantUpgrade( self, "Upgrade_ChemicalWeapon" )	
	end
end

You can also see that it checks to make sure the unit is not 'HEROIC'. When the unit is heroic, additional code removes both napalm and chemical upgrades, to make way for the nuclear warhead.

 

Another simple example is the Tiberian history Mammoth.

I wanted the AI to only upgrade some of the Mammoths with sonic grenades, and also to obey the game dependency (unlocked with by GDISpaceCommandUplink) and to wait a few seconds (to not force it into a players face that the AI is cheating and being handed their upgrades). So using the AI code has a base, I made sure that the GDISpaceCommandUplink had its own 'PLAYER' upgrade that it got on build completion using 'GrantUpgradeCreate'.

 

I gave the Mammoth this code:

<ModelConditionUpgrade id="ModuleTag_DelayedAIUpgrade" AddConditionFlags="USER_74" AddTempConditionFlag="USER_73" TempConditionTime="8.0s">
 <TriggeredBy>Upgrade_GDISpaceCommandUplink</TriggeredBy>
 </ModelConditionUpgrade>

This is where the time delay is added.

 

Then in 'ScripEvents':

            <ModelConditionEvent Name="DelayedTierIVUpgradeAI">
			<Conditions>+USER_75 +USER_74 -USER_73</Conditions>
		</ModelConditionEvent>
    <EventList Name="GDISonicMammothFunctions" Inherit="BaseScriptFunctions">
        <EventHandler EventName="DelayedTierIVUpgradeAI"	ScriptFunctionName="UgradeGDISonicMammothAI" DebugSingleStep="false"/>
    </EventList>

And finally LUA:

function UgradeGDISonicMammothAI(self)
        local num =     GetRandomNumber()
        if num <= 0.5 then
        ObjectGrantUpgrade( self, "Upgrade_SonicGrenades" )
        end
end

So basically a 50\50 chance of getting the upgrade.

 

These are just some basic examples, and I am an extremely poor coder, a better coder could come up with a lot better code. For example the issue with my code is that the AI is getting their upgrades for free, and there is never any visible indication that the AI is in the process of getting an upgrade via the upgrade progress bar (unlike using the power module).

 

If you want any further explanations then just say!

Edited by Madin

Share this post


Link to post

Tx Madin!

 

Also you might try a dospecialpower instead of objectgrantupgrade....you should be able to deduct credits and display a progresbar with that, then have your specialpower trigger the upgrade into sonic grenades. This would/could mimic a purchased upgrade.

 

 

function UgradeGDISonicMammothAI(self)
        local num =     GetRandomNumber()
        if num <= 0.5 then
        ObjectDoSpecialPower( self, "SpecialPowerDispatch_SonicGrenades" )
        end
end
 

 

<GiveOrRestoreUpgradeSpecialPower
        id="ModuleTag_GiveUpgrade_SonicGrenades"
        SpecialPowerTemplate="SpecialPowerDispatch_SonicGrenades"
        UpgradeToGive="Upgrade_SonicGrenades"
    />
 

 

<SpecialPowerTemplate
        id="SpecialPowerDispatch_SonicGrenades"
        TargetType="NONE"
        Money="-1000" >
    <GameDependency
        ForbiddenModelConditions="User_5" /** in example user_5 is a upgraded mammoth so you dont want the SP to trigger again
    />
</SpecialPowerTemplate>
 

for the progress bar

<SpecialAbilityUpdate
                id="SpecialPower_ShowProgressBar"
                SpecialPowerTemplate="SpecialPowerDispatch_SonicGrenades"
                PreparationTime="5s"
                Options="SHOW_PREPARATION_PROGRESS"
                StartAbilityRange="9999"
                />

You prob could also prevent the specialpower from triggering again by doing a modification to your lua like:

 

 

function UgradeGDISonicMammothAI(self)
        local num =     GetRandomNumber()
        if num <= 0.5 AND
        if ObjectHasUpgrade(self, "Upgrade_SonicGrenades") == 0
        then
        ObjectDoSpecialPower( self, "SpecialPowerDispatch_SonicGrenades" )
        end
end
 
Edited by Ravendark

Share this post


Link to post

That could be interesting, although there are benefits to free upgrades!

Share this post


Link to post

Some more module questions!

 

What does the 'AffectsWholePlayer' attribute in the 'AutoHealBehavior' module mean (and do).

 

Does anyone know if the 'AutoPickUpUpdate' still works? I was wondering if it could be used to get an APC to pick up infantry.

 

What elements of the 'BannerCarrierUpdate' still work? (if any). I have read that it is bugged. What was the 'MorphCondition' used for in BFME? it sounds very interesting!

 

Thanks for any insight given!

 

 

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×