Jump to content

Lauren

Community Leader
  • Content count

    729
  • Joined

  • Last visited

Everything posted by Lauren

  1. Lauren

    Throwback Thursday for 2nd April

    Actually it would rather be a Oliphant/Mumakil Tank Also EA sadly only released the Art source, so back in the day I took the time to create the xml close to the BFME xml and added the sounds: http://thundermods.net/intern/Lilith/Mumakil/Mumakil.rar http://thundermods.net/intern/Lilith/Mumakil/sounds.rar (@Sonic can you mirror these if you want? Someone told me the thundermods server will probably be offline soon).
  2. Lauren

    Wrathed Patcher

    I don't know when I'll finish WE2 so it's still a very cool thing ^^
  3. 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.
  4. The problem is more that people throw all their weapons into the primary slot. If you use secondary/tertiary etc correctly it basically works as it does in Generals.
  5. The Mantis has no real voice, as with Scrin units it's just gibberish. Thus the files are not in global_[language] but in global_common. WrathEd cannot load the Reckoner because it uses a class which I messed up. You can fix the gamedefinition and it will load. (Can't remember where the error was)
  6. There actually is a state which is owner only (and decals can be owner only anyway). I remember way back when Golan was doing his own mod where he had an MSA that basically shot markers at enemy units in range. Iirc the Stealth Tank uses it to display the distortion to the owner. Also you can use 3d marker by having the w3d camera aligned.
  7. <xs:simpleType name="ShadowType"> <xs:restriction base="xs:string"> <xs:enumeration value="NONE" /> -No shadow <xs:enumeration value="DECAL" /> -Simple texture, subtractive iirc <xs:enumeration value="VOLUME" /> -Shadow generated by engine, calculated by geometry <xs:enumeration value="ALPHA_DECAL" /> -texture with transparency <xs:enumeration value="ADDITIVE_DECAL" /> -texture that is "added" to what is beneath (ground rgb + texture rgb) <xs:enumeration value="ALPHA_DECAL_DYNAMIC" /> -don't remember <xs:enumeration value="ADDITIVE_DECAL_DYNAMIC" /> -see above <xs:enumeration value="MERGE_DECAL" /> -texture1 & texture2 (bool op) <xs:enumeration value="VOLUME_OR_DECAL" /> -iirc scales depending on fps, goes to decal when fps decrease to save power <xs:enumeration value="TIBERIUM_ROOT" /> -uses special shader iirc </xs:restriction> </xs:simpleType> <xs:complexType name="ShadowInfo"> <xs:sequence></xs:sequence> <xs:attribute name="Type" type="ShadowType" /> <xs:attribute name="Texture" type="TextureRef" /> <xs:attribute name="AdditionalTexture" type="TextureRef" /> -merge and I think tiberium roots <xs:attribute name="SizeX" type="SageReal" default="0.0" /> <xs:attribute name="SizeY" type="SageReal" default="0.0" /> <xs:attribute name="OffsetX" type="SageReal" default="0.0" /> <xs:attribute name="OffsetY" type="SageReal" default="0.0" /> <xs:attribute name="OpacityStart" type="SageReal" default="0" /> -decals can have a pulsating effect, so this is the start alpha value <xs:attribute name="OpacityFadeInTime" type="Time" default="0s" /> -the time it iterates from start to peak <xs:attribute name="OpacityPeak" type="SageReal" default="1" /> -peak alpha value <xs:attribute name="OpacityFadeOutTime" type="Time" default="0s" /> -the time it iterates from peak to end <xs:attribute name="OpacityEnd" type="SageReal" default="0" /> -end value, usually same as start value <xs:attribute name="MaxHeight" type="SageReal" default="20" /> -the object should be at most this value above the ground to draw a decal, if higher the decal is not drawn <xs:attribute name="OverrideLODVisibility" type="SageBool" default="false" /> <xs:attribute name="UseHouseColor" type="SageBool" default="false" /> <xs:attribute name="IsRotatingWithObject" type="SageBool" default="true" /> <xs:attribute name="LocalPlayerOnly" type="SageBool" default="false" /> <xs:attribute name="SunAngle" type="SageReal" default="0.0" /> -dunno, maybe what you said, maybe an override for map settings </xs:complexType> <xs:complexType name="RadiusDecalTemplate"> <xs:sequence> <xs:element name="Color" type="Color4" minOccurs="0" maxOccurs="1" /> - </xs:sequence> <xs:attribute name="Texture" type="TextureRef" /> <xs:attribute name="Texture2" type="TextureRef" /> <xs:attribute name="Style" type="ShadowType" /> <xs:attribute name="OpacityMin" type="Percentage" default="1.0" /> <xs:attribute name="OpacityMax" type="Percentage" default="1.0" /> <xs:attribute name="OpacityThrobTime" type="SageReal" default="1000" /> -yes, basically same behavior as above, you just cannot set a different end value <xs:attribute name="RotationsPerMinute" type="SageReal" default="0.0" /> <xs:attribute name="OnlyVisibleToOwningPlayer" type="SageBool" default="false" /> <xs:attribute name="MaxRadius" type="SageReal" default="0.0" /> <xs:attribute name="MinRadius" type="SageReal" default="0.0" /> <xs:attribute name="MaxSelectedUnits" type="SageUnsignedInt" default="0.0" /> <xs:attribute name="SpiralAcceleration" type="SageReal" default="0.0" /> -as there is rotation per minute this is probably to accelerate that, didn't test it </xs:complexType> btw: http://www.moddb.com/mods/tiberian-sun-rising
  8. I don't know of any of these instances where a sequence is disregarded. I believe you're confusing it with xs:choice inside a sequence. As the xml validation thing also isn't made by EA it wouldn't be their fault anyway (they use the built-in .net framework stuff). Interesting I can post here but not in some other forums. @Raven read pm.
  9. Might be able by using the Generic Event thing in lua (if you get the right event) and then specifically let it use ObjectDoSpecialPower(self, "SpecialPowerReturnToProducer") function OnAircraftGenericEvent(self, data) local str = tostring(data) if str == "something" then ObjectDoSpecialPower(self, "SpecialPowerReturnToProducer") end end
  10. You can always use something like if ObjectTestModelCondition(self, "MY_MODEL_CONDITION") then ObjectDispatchEvent(self, other, "YesWeCan") endorif ObjectTestObjectStatus(self, "MY_OBJECT_STATUS") then ObjectDispatchEvent(self, other, "YesWeCan") endAnd no, the handshake is done after the build. Usual build rules apply.Maybe add a timeout via LifetimeUpdate and trigger a refund or spawn. Your dummy idea can also work. Also as GameDependency also works with ModelCondition and ObjectStatus you can give the airfields an AttributeModifierAura update in which it radiates an AttributeModifier which gives the comm centers a specific condition/status.
  11. okay basically like this: <Events> <!-- ... --> <ScriptedEvent Name="CanBuildAircraft" /> <ScriptedEvent Name="YesWeCan" /> </Events> <EventList Name="DummyFunctions"> <EventHandler EventName="OnCreated" ScriptFunctionName="OnDummyCreated" DebugSingleStep="false" /> <EventHAndler EventName="YesWeCan" ScriptFunctionName=OnDummyYesWeCanEventReceived" DebugSingleStep="false" /> </EventList> <EventList Name="AirfieldFunctions"> <EventHandler EventName="CanBuildAircraft" ScriptFunctionName="OnAirfieldCanBuildAircraftEventReceived" DebugSingleStep="false" /> </EventList> function OnDummyCreated(self) ObjectBroadcastEventToAllies(self, "CanBuildAircraft", 99999) end function OnAirfieldCanBuildAircraftEventReceived(self, other) ObjectDispatchEvent(self, other, "YesWeCan") -- Probably either -- ObjectDispatchEvent(self, message, other) -- or -- ObjectDispatchEvent(self, other, message) end end function OnDummyYesWeCanEventReceived(self, other) ObjectDoSpecialPower(other, "SpawnMyAircraftSpecialPower") ExecuteAction("NAMED_DELETE", self) endJust let SpawnMyAircraftSpecialPower be used in a OCLSpecialPower in the airfield. If it doesn't work on the ObjectDispatchEvent step just use ObjectBroadcastEventToAllies again.
  12. I think you would still have to define the AI itself via map scripts. Afaik the Boss general map is 100% scripted thus they never bothered to do this.
  13. If you don't want a random Heli pad give them a SP which gives them a status which says "I'm Primary!". Then when you build the aircraft just spawn a dummy as you said. Use LUA to message a Helipad, let it check back in with the dummy containing a message if it's available (and primary if you want that), If so message back to spawn the real aircraft and immediately after delete the dummy (in the same function where it sends the spawn message so it doesn't spawn multiple).
  14. Just use total commander: http://www.ghisler.com/
  15. If it doesn't happen automatically anyway my first guess would be to just create a dummy object where you just trigger an UnpackSpecialPower into the structure you really want.
  16. RequireFollowThru: not tested but I think this was if preattack is still underway and your target dies the weapon will still be fired instead of just canceling it. InstantLoadClipOnActivate: Iirc this was a fix for stuff like in Generals the Overlord had the problem that it often killed the target and had still one shot in its clip, so it didn't reload, for the next target it takes a while to aquire it, shoots once, and then has a huge reload, severely decreasing the damage output. LockWhenUsing: idk ContactWeapon: afaik this requires the object to run up to a contact point of the target (defined in the geometry element of the target object).
  17. ScaleWeaponSpeed: Iirc the bezier projectile does not really scale its speed on the curve but the flat distance between the source and target thus with a more elaborate curve the projectile is faster. This should work as intended, but it might not, dunno. CapableOfFollowingWaypoints: This was heavily used in Generals for cool effects like the carpet bombing being able to bomb in a curve. You can setup a waypoint path in the WorldBuilder and tell the carpet bomber to fire on waypoint. As the attack is continuous for some seconds it will fire the weapon while following the waypoints. Without this attribute the weapon would stop firing when flying to the second waypoint. ContinueAttackRange: Let's say you have an object with AttackRange x and ContinueAttackRange y, while x < y. The target has to move into range x but as soon as the attack started the object can still attack as long as the target is in range of y. SuspendFXDelaySeconds: I guess it's to have the fx played delayed, like DelayTimeSeconds in the DamageNugget. I would think it's to sync up fx and actual damage effect. ForceDisplayPercentReady: This causes the reload animation to play at an other point, iirc between shots, not just clip reload. Afaik this was to easily scale preattack animation of the Balrog whip, could be wrong though.
  18. Tanks don't use crushing, could easily killed the first wave.
  19. Cursors without the sp button are hardcoded with a combination of SP and KindOf.
  20. http://1drv.ms/1vNlp2k Nuke.7z is the file you want. It's made for TW but can just be used in KW with some alterations.
  21. I'll upload it in a bit (on laptop right now) one thing that is important for the MetaImpactNugget: its effect is always created at the object that fired the weapon. So for the Nod Nuke I actually had to reconfigure it a bit as the original nuke just fires a weapon which is completely detached from the animation and its damage is just delayed. If I had just placed the MetaImpactNugget into this weapon stuff around the temple would be flying away, not the nuke itself, so I created a deathweapon for the nukeseed and moved the damage and meta impact there. Keep this in mind especially for non projectile weapons like infantry/apc miniguns.
  22. If you want I can upload you the mod too.
  23. @Raven: Yes a tumble is needed to make it more realistic, also BFME, maybe also Gen, had in addition to that animations for being in the air and landing/getting up again. ShockWaveClearWaveMult is a scalar for the speed of which the radius is cleared. ShockWaveClearFlingHeight is the absolute height the objects are flung when the radius is cleared. Both only work if ShockWaveClearRadius is set to true, and if it's set to false the objects are just thrown straight up into the air iirc. So the module is half broken, but it reminded me of a test mod I did some years back. Quickly compiled it and made a short video, imo it looks pretty okayish, though vehicles are pretty stiff, a tumble thing might help, didn't test it, and get up animations for infantry is a must: @Madin: Can't remember if it works in TW/KW but you might be able to spawn the projectile as a slave which passes it's xp on to the slaver. Also I cannot recommend both options as it only works well for slow moving weapons. Any faster weapon will leave areas unharmed, also the difference toward using linear damage towards an object with fireweaponupdate is that: -Linear only hits once, while fireweaponupdate circles can overlap, causing more damage -only 1 Linear weapon per source can be active, so it has to reach its end before spawning a new one, else the old one will just be removed
  24. Just checked again DamageSubType actually has the type DamageSubType, which is defined as: <xs:simpleType name="DamageSubType"> <xs:restriction base="xs:string"> <xs:enumeration value="NORMAL" /> <xs:enumeration value="BECOME_UNDEAD" /> <xs:enumeration value="SELF" /> <xs:enumeration value="UNDEFINED" /> </xs:restriction> </xs:simpleType> And only used once in BFME2 in EvilMenBlackRiderMorgulBlade. It triggers OCL_BecomeUndead defined in the DefaultThingTemplate which all objects in BFME inherit from. Used in DamageFilteredCreateObjectDie (which spawns a wraith after killing the undead thing). So for example SELF would be useful in conjunction with the weapon having OnlyKillOwnerWhenTriggered set to true, triggering a spawn of something. Looking through the xsd DamageSubType is really only used with DamageFilteredCreateObjectDie.
×