Discovered UC scripts in Unreal, missing in Deus Ex! (U1Mod.u & testmaps)

Talk about any Deus Ex game modification here, e.g. maps, package or a total conversion.

Moderator: Forum Guards

Discovered UC scripts in Unreal, missing in Deus Ex! (U1Mod.u & testmaps)

Postby Lurker » Mon Apr 09, 12 3:07 am

AssertMover
AttachMover
DynamicAmbientSound
Earthquake
ElevatorMover
ElevatorTrigger
GradualMover
LoopMover
MixMover
RotatingMover
StochasticTrigger
TriggeredAmbientSound
TriggeredDeath


Imagine my astonishment after I found these extra classes in original Unreal which were later excluded in Deus Ex, although it's usually more advanced than its predecessor and not the other way round.

Some of these classes even include a detailed description written by Epic. See link below for download.

Now let's take a closer look at some of the findings:


AssertMover

Code: Select all
class AssertMover extends Mover;

// A mover which keeps opening as long as the instigator stays within
// the trigger's radius.  If the instigator steps out, the mover will
// stay in it's current position for WaitUnAssertTime time, and then
// close all the way back to the beginning.  If the bTriggerOnceOnly
// variable is true, once it reaches the last keyframe, it will
// stay there forever if bOnceOnlyStopOpen is true, or it will go back
// to the first frame (after waiting for StayOpenTime) and stay there
// forever if bOnceOnlyStopOpen is false.  If bTriggerOnceOnly is
// false, when it reaches the last keyframe, after it waits for
// StayOpenTime, it will return to the first keyframe, and the
// entire process will be repeatable.
// Note: When the last keyframe is reached, Event will be called. M.


Sounds like one could do interesting effects with this mover type...


DynamicAmbientSound

I like ambient sound effects. And if they are dynamic then I find them even better. God knows why this class was excluded from DX1.


ElevatorMover & ElevatorTrigger

Although Deus Ex includes its own ElevatorMover class, this one from Unreal looks more advanced. And it requires ElevatorTrigger to be used in conjunction with.

Code: Select all
class ElevatorTrigger extends Triggers;

// A special trigger devised for the ElevatorMover class, since
// detecting one trigger message is not enough to determine 2 or more
// different commands (like up/down).  When an actor is within its'
// radius, it sends a message to the ElevatorMover with the desired
// keyframe change and moving time interval.



LoopMover

Code: Select all
class LoopMover extends Mover;

// When the last keyframe position is reached, this mover
// interpolates to the first keyframe (directly, not through
// the intermediate frames), and repeats the movement forever.


Ha!! I love this one. There were DX1 modders who had to write their own LoopMover Mod in the past, only because this class was missing in UnrealEd.


MixMover

Code: Select all
class MixMover extends Mover;

var() float OpenTimes [6];
var() float CloseTimes[6];
var() name  Tags      [6];
var() name  Events    [6];
var() name  AttachTag;


Wow! A mover with 6 different opentimes, closetimes, tags and events to be handled! Now why would anyone exclude a class like this?


RotatingMover

Code: Select all
class RotatingMover extends Mover;

var() rotator RotateRate;

function BeginPlay()
{
   Disable( 'Tick' );
}

function Tick( float DeltaTime )
{
   SetRotation( Rotation + (RotateRate*DeltaTime) );
}

function Trigger( Actor other, Pawn EventInstigator )
{
   Enable('Tick');
}

function UnTrigger( Actor other, Pawn EventInstigator )
{
   Disable('Tick');
}


defaultproperties
{
}


A rotating mover which can be trigger ON/OFF. Simple and good.


Ok, what else had been excluded from DX1...


StochasticTrigger

Code: Select all
class StochasticTrigger extends Triggers;

// Works like a DynamicAmbientSound, only events are called instead of
// sounds. M


A dynamic random trigger! Must experiment with this......


TriggeredAmbientSound

Code: Select all
class TriggeredAmbientSound extends Keypoint;

// Re-plays a sound effect if triggered.  If in state TriggerToggled,
// the sound is turned off if triggered, and turned on, etc..
// when triggered again.  In the OnWhileTriggered state, the instigator
// must stay within the trigger's radius for the sound effect to continue
// playing.  bInitiallyOn determines if the sound is playing from the
// start, and does not apply in the OnWhileTriggered state.  A variance
// can also be set for the timing, so that the replay time can seem
// more 'real'.


A triggered ambient sound can be very useful in a dynamic map.


TriggeredDeath

Code: Select all
//=============================================================================
// TriggeredDeath.
// When triggered, kills the player, causing screen flashes and sounds.
//=============================================================================
class TriggeredDeath extends Triggers;


Instant death trigger. No fun for gamers. I can see why anyone would exclude this Unreal class for being too harsh. But the other ones should had never been removed in the first place.
Attachments
U1Mod_for_DeusEd.zip
Exported .uc scripts from original Unreal.
(12.51 KiB) Downloaded 588 times
U1Mod_Package1.zip
Fixed and compiled U1Mod.u package (2012-04-10) for Deus Ex.
(24.88 KiB) Downloaded 595 times
Last edited by Lurker on Wed Apr 11, 12 10:45 pm, edited 9 times in total.
User avatar
Lurker
Wannabe
 
Posts: 108
Joined: Fri Apr 08, 11 10:47 pm
Location: Germany

Postby RedDynasty » Mon Apr 09, 12 4:11 am

GradualMover sounds interesting
But this is great for mapers.Thank you for sharing this!
Image
Your not a gamer until you played this.
User avatar
RedDynasty
Wannabe
 
Posts: 130
Joined: Sun Apr 01, 12 8:12 pm
Location: Portugal

Postby Lurker » Mon Apr 09, 12 12:40 pm

You are welcome. :)

I've just tried to recompile the classes with ucc make for Deus Ex. So far all classes successfully compiled, except the "ElevatorMover" gave me an error:

Code: Select all
Heading: --------------------U1Mod--------------------
Warning: Failed to load 'U1Mod.u': Can't find file 'U1Mod.u'
Warning: Failed loading package: Can't find file 'U1Mod.u'
Log: Analyzing...
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\AssertMover.uc)
Log: Imported: Class U1Mod.AssertMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\AttachMover.uc)
Log: Imported: Class U1Mod.AttachMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\DynamicAmbientSound.uc)
Log: Imported: Class U1Mod.DynamicAmbientSound
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\Earthquake.uc)
Log: Imported: Class U1Mod.Earthquake
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\ElevatorMover.uc)
Log: Imported: Class U1Mod.ElevatorMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\ElevatorTrigger.uc)
Log: Imported: Class U1Mod.ElevatorTrigger
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\GradualMover.uc)
Log: Imported: Class U1Mod.GradualMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\LoopMover.uc)
Log: Imported: Class U1Mod.LoopMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\MixMover.uc)
Log: Imported: Class U1Mod.MixMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\RotatingMover.uc)
Log: Imported: Class U1Mod.RotatingMover
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\StochasticTrigger.uc)
Log: Imported: Class U1Mod.StochasticTrigger
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\TriggeredAmbientSound.uc)
Log: Imported: Class U1Mod.TriggeredAmbientSound
Log: FactoryCreateText: Class with ClassFactoryUC (0 1 ..\U1Mod\Classes\TriggeredDeath.uc)
Log: Imported: Class U1Mod.TriggeredDeath
Log: Parsing AssertMover
Log: Parsing AttachMover
Log: Parsing ElevatorMover
Log: Parsing GradualMover
Log: Parsing LoopMover
Log: Parsing MixMover
Log: Parsing RotatingMover
Log: Parsing DynamicAmbientSound
Log: Parsing Earthquake
Log: Parsing TriggeredAmbientSound
Log: Parsing ElevatorTrigger
Log: Parsing StochasticTrigger
Log: Parsing TriggeredDeath
Log: Compiling AssertMover
Log: Compiling AttachMover
Log: Compiling ElevatorMover
Log: Compiling GradualMover
Log: Compiling LoopMover
Log: Compiling MixMover
Log: Compiling RotatingMover
Log: Compiling DynamicAmbientSound
Log: Compiling Earthquake
Log: Compiling TriggeredAmbientSound
Log: Compiling ElevatorTrigger
Error: C:\Games\DeusEx\U1Mod\Classes\ElevatorTrigger.uc(57) : Error, Unrecognized member 'MoveKeyframe' in class 'ElevatorMover'
Critical: appError called:
Critical: Failed due to errors.
Exit: Executing UObject::StaticShutdownAfterError
Critical: CompileError
Critical: TryCompile
Critical: FScriptCompiler::CompileScript
Critical: (Class U1Mod.ElevatorTrigger, Pass 1, Line 57)
Critical: CompileScripts
Critical: CompileScripts
Critical: CompileScripts
Critical: CompileScripts
Critical: DoScripts
Critical: UEditorEngine::MakeScripts
Critical: UMakeCommandlet::Main
Exit: Exiting.


This could be due to the fact that there already is a "ElevatorMover" class in Deus Ex, thus there may be some conflicts there.

I will look into this later and upload some testmaps for the other mover and trigger classes......
Last edited by Lurker on Mon Apr 09, 12 12:44 pm, edited 3 times in total.
User avatar
Lurker
Wannabe
 
Posts: 108
Joined: Fri Apr 08, 11 10:47 pm
Location: Germany

Postby Poor » Mon Apr 09, 12 12:55 pm

This look great. You should put these together as a package for mappers.
Poor
Poster
 
Posts: 190
Joined: Tue Jan 04, 11 7:42 pm

Postby RedDynasty » Mon Apr 09, 12 1:07 pm

Judging by the error, and the discription u gave us, u said that the mover is more advenced, it could have things deus ex does not, thus explaining the "Unrecognized member 'MoveKeyframe'" error.
But i dont know much about coding so its just a guess XD
Also gifs or some videos of the new classes would be cool :D
Image
Your not a gamer until you played this.
User avatar
RedDynasty
Wannabe
 
Posts: 130
Joined: Sun Apr 01, 12 8:12 pm
Location: Portugal

Postby Lurker » Mon Apr 09, 12 11:44 pm

I have fixed the error. The solution to the problem was to rename the ElevatorMover class and the "foreach AllActors( class 'ElevatorMover', EM, Event )" statement in the ElevatorTrigger class. It's because there already exists a class with the name "ElevatorMover" in Deus Ex which extends from the "Mover" parent class. So the statement in the ElevatorTrigger called from that class instead. And in that Deus Ex class the "MoveKeyframe" function/member does not exist ofcourse.

For better compatibility with Deus Ex and to avoid possible conflicts like these with other mods I have edited and renamed all the classes to:

U1AssertMover
U1AttachMover
U1DynamicAmbientSound
U1Earthquake
U1ElevatorMover
U1ElevatorTrigger
U1GradualMover
U1LoopMover
U1MixMover
U1RotatingMover
U1StochasticTrigger
U1TriggeredAmbientSound
U1TriggeredDeath


Now everything compiled without any errors. :D

You can download the fixed package U1Mod_Package1.zip from above.

Included files:
U1Mod.u - compiled package for UnrealEd (DeusEd)
U1Mod.txt - readme file for U1Mod.u
U1ModShot.gif - screenshot of U1 classes in UEd (or see below)

I will upload some testmaps and videos tomorrow...

Image
Last edited by Lurker on Mon Apr 09, 12 11:54 pm, edited 5 times in total.
User avatar
Lurker
Wannabe
 
Posts: 108
Joined: Fri Apr 08, 11 10:47 pm
Location: Germany

Postby Aidan » Tue Apr 10, 12 1:48 am

This is very cool! Thanks!
Psychokiller, spelled incorrectly.
User avatar
Aidan
CandyMan
 
Posts: 6270
Joined: Wed Aug 02, 06 8:57 am
Location: True North Strong & Free

Postby RedDynasty » Tue Apr 10, 12 7:47 pm

Thanks for fixing it. The one that im more willing to test its the assertmover. Alot of unreal and UT maps used this one, so im curious of what one can achieve here.
Image
Your not a gamer until you played this.
User avatar
RedDynasty
Wannabe
 
Posts: 130
Joined: Sun Apr 01, 12 8:12 pm
Location: Portugal

Postby Lurker » Wed Apr 11, 12 10:43 pm

Here comes my first testmap called U1Mod_ElevatorTest for the ElevatorMover and ElevatorTrigger classes.

See download below.

Image

The whole thing works like this: First when you start at PS (Playerstart) and go inside the elevator on Level 1 it moves to Level 2, makes a brief pause and moves to Level 3. I have set the elevator to move from level 1 to 3 in 10 seconds (5 seconds between each level). If you stay in the elevator, it automatically moves the levels down as expected, and the whole procedure repeats when you step out and in into the elevator again.

If you step out of the elevator on levels 2 or 3 and wait until it moves back to its base position on level 1 again, then the ElevatorTriggers come into play. (see the grey bird-like symbols 1,2,3 in the upper screenshot). If you move in the proximity of one of those ElevatorTriggers then the elevator will come up (or down) to your position.

Image

So far so good. It could be a nice mover. BUT here's the problem which makes the whole thing buggy and useless if you want to build real elevators in DX: After you call the elevator with one of the ElevatorTriggers on any level and then step into the elevator it won't move (?). It will just stay there forever (see second screenshot) until you use the stairwell, which I added, to go some other level and call the elevator again. But then it moves to the new position again and won't move if you step inside it.

Since the ElevatorMover (see purple brush in screenshot) uses a StayOpenTime of 4 seconds it is supposed to move back to the base keyframe 0 on Level 1. As I said, it only does that when you ride the elevator between levels 1 and 3 and never let the elevator leave without you.

At first I thought the bug could be in the player promixity check of the ElevatorTriggers. So I decreased the CollisionRadius, so that when you step in the elevator after you touched the ElevatorTrigger, you leave the proximity of it and thus don't trigger it anymore.

But it turns out this doesn't solve the problem. I can only suspect that the ElevatorTrigger works like some kind of "Follow Me" Trigger. You can use the stairwell to go to any level and call the elevator on your position. But if it appears it will stay there and you can't ride it to any other level.

I also tried to play with the mover settings and the settings of the ElevatorTrigger. I thought maybe I set something wrong. But it didn't help either. I have no clue why the thing doesn't move back to keyframe 0 after you touch ElevatorTrigger 2 or 3.

My conclusion: What's the point of an elevator which you can call to come to your current level, but which you can't ride up/down to any other level?! If the ElevatorTrigger works like a dominant trigger which calls and stops the movement of the ElevatorMover brush then the only useful appliance which I see for those two classes is when you intend to create a mover which follows the player gradually on locations in the map where you put ElevatorTriggers. The trigger will then work like pathnodes for the mover. After all it seems that Deus Ex's ElevatorMover is a much better choice to build elevators than Unreal's ElevatorMover and ElevatorTrigger.

To my surprise I also found out that ElevatorMover and ElevatorTrigger haven't been used in any of the original Unreal maps, after doing a string search for "ElevatorMover" and "ElevatorTrigger" in the *.unr map files. I find this very strange and it can only mean one thing: The Unreal developers have written and compiled the elevator scripts into Unreal, but they haven't used it, because of the problems I have mentioned. Maybe the elevator classes were some sort of unfinished code which Epic added but didn't finish in time. At least it appears so.

RedDynasty wrote:Thanks for fixing it. The one that im more willing to test its the assertmover. Alot of unreal and UT maps used this one, so im curious of what one can achieve here.


Alright. AssertMover and GradualMover are going to be added in my next testmap/s...

Let's hope these mover classes will give better results than the elevator classes.

After I created testmaps for all the U1Mod classes I will upload a final package to my profile at ModDB.com.
Attachments
U1Mod_Package2a.zip
U1Mod.u package w/current testmap (2012-04-11) for Deus Ex.
(51.6 KiB) Downloaded 576 times
Last edited by Lurker on Wed Apr 11, 12 10:53 pm, edited 5 times in total.
User avatar
Lurker
Wannabe
 
Posts: 108
Joined: Fri Apr 08, 11 10:47 pm
Location: Germany

Postby atrey65789 » Thu Apr 12, 12 2:16 am

Wowww.... This is awesome... Maybe you can Export more classes like this? I can help too?
-A
atrey65789
Regular
 
Posts: 400
Joined: Thu Dec 22, 11 3:02 pm

Postby atrey65789 » Thu Apr 12, 12 2:37 am

Uhh.... How do I use the movers? lol I can't get them to animate hehe
-A
atrey65789
Regular
 
Posts: 400
Joined: Thu Dec 22, 11 3:02 pm


Return to Modifications

Who is online

Users browsing this forum: No registered users and 82 guests