New Tutorials


Slopes

There are two types of slope: steep and gentle. The former rise one level of elevation for every world unit they run, the latter rise one elevation for every six units they run.

Before you do anything else: go to “View” and turn on “Show Tile Bounding Box”. This will make this process much easier and spare you quite a bit of eye strain.

Let's cover the gentle slope first, since they're the easier of the two to build. The great thing about these is that since they're the same size as normal floor tiles you don't have to worry about alignment nearly as much as you do with the other type. All you have to do, is to look at the tiles and determine which ones are going in the direction that you want your slope to go. This can be a bit tricky, so don't be afraid to select a tile and place it experimentally. There are also tiles that serve as corners in there, but more on them in a bit.

In order to line up your slope with the other floor tiles, just place the first level of slope at the edge of the floor tiles, but one level higher. The others on the same level you just place next to that one just as though you were building a normal floor. The next level of slope will go one level higher, and so forth until you have gotten to the level that you want to place your next flat surface. Your last level of slope should be at the same level that your first flat tiles on that level will be.

The corners are easy to put in. All you have to do is place them……well, in the corner of your slope. However, it can be a challenge to find a tile that is “bent” the right way. Again, don’t be afraid to experiment, placing them on blank ground to better see their graphic outline.

That’s pretty much it for the gentle slope. One last word of caution: it is best to make sure that your sloped tiles are lined up with the lower ground tiles when you start placing them. This is especially true if you’re working with any kind of slope other that the brown “dirt” tiles. If you for some reason need a sloped tile that is narrower than 6 units, go to the following folder:

    Ruined City/Road/Slope/Cliff Face

There you will find narrower sloped tiles. Some of them even have Nifty™ rocks on them so that you can dress your map up a bit. Also, remember to vary the sloped tiles you use. If you use the same tile to build your slope with there will be a noticeable pattern on it that will be rather…… “unappealing”. (That is to say that it will look like shit.)

Okay, now on to the harder part: steep slopes.

Steep slopes can be a real headache. Since they go up one elevation for every world unit of “run” they can present some problems in getting everything lined up properly between levels. One solution is to have all of your slopes go up a number of elevations that is divisible by 6. The other solution is to build the next level of flat tiles first. Let’s say that you want to go to level 8 up from level ––1, which is your default. Let’s also say that your slope is going to start in the west, and slope upward to the east.

1) Start by placing a line of flat tiles that will be the first row of your next higher level. Do this somewhere off in blank space, as this will make the final step much easier. Again, you can get a bit adventurous and put a few undulations in the line to break up the monotony a bit.

2) Now that that’s done, you will notice that there are three types of the steeply sloped tiles. Some have a rounded edge at the top and these go at the top of the slope. Others have a lip at the bottom and —— you guessed it —— they go at the bottom of your slope. The third type is straight on both the top and bottom and they go on all of the middle levels of your slope.

3) Start by selecting all of the tiles that run in the correct direction and that are six units wide. (If you don’t know, you can select multiple tiles by pressing and holding “Shift” and then left-clicking on as many tiles as you’d like. You can then simply point-and-click and a randomly selected tile will be placed. I recommend this as it saves loads of time. You can always go back and place different tiles in the places where you don’t like the way the tiles look.) You are going to place these at the same level (level 8 for our example) as the higher level of floor tiles. Make sure you’re lining up the sloped tiles with the floor tiles. (That bounding box comes in very handy here, saving you loads of time.) When you come to a corner you will notice that they come in two different shapes. The ones that look like they have a floor tile attached to them require that you delete one of the floor tiles on your upper level. The other style does not require this. At this point, everything should line up perfectly and there will be no need to use the smaller tiles to fill in those pesky gaps that will develop later. So once you’’re done with that, go on to the next step……

4) Next, select all of the tiles that I told you go in the middle levels. Set your elevation level one lower (level 7 for the first one) and move the tiles one world unit over. Make sure that you line up the place you’re starting at with the last level. It will make things much easier when it comes to corners. Start laying those tiles ‘til you come to a corner. Now, just like the lanes of a racetrack aren’t equally long, so will you start to run into this problem with each level below the first. This is one of the primary reasons that we started at the top and are working our way down. You are going to have to place one of the smallest tiles on either side of the corners to make up for the fact that this level is longer. For every level you go down, this will increase by one, so on the next level you will need to place two, etc. There are also larger tiles that will fit these gaps, so you don’t have to place a bunch of one unit wide tiles.

5) Continue to repeat step 4 until you have are ready to place tiles on level 0, which —— for the purposes of our example —— is one level above the lower ground. For this level you will need the sloped tiles with a rounded “lip” at the bottom. All you have to do here is exactly what you’ve been doing with the other levels, except that you’re using different tiles. Continue along in your now veteran slope-building fashion until you’ve completed your slope, then go to the next step.

6) Now it’s time to move the slope and line it up with the other, lower level of floor tiles. The reason that we built this entire mess out away from everything else is so that we can use this Nifty Trick™: Go into Select mode (F1 key) and set your level indicator to 0 (where it should be since you just finished that level of slopes on level 0). Now, press and hold Alt, then click and hold while you drag the Selection Bounding Box around all of your slope. This will select everything from the lowest to the highest elevation. Once you’ve gotten the whole thing selected you can move everything by pressing Ctrl + arrow keys until you have your slope lined up with the edge of the lower level of floor tiles. (The ones at level ––1.)

 

As a final step, go in and remove all of the floor tiles that are concealed by the curves in your slope. There’s no sense in keeping them there since all they will do is eat up resources.

Now, you’re probably wondering what those odd little triangles are for. Those are for slopes that face away from the camera. The same rules apply to laying these as to the other type, except that using the Tile Bounding Box is even more important here.

If anything is unclear, take a look at slopes in the various mission maps included with the game. If something is still unclear, feel free to post again and I’ll see what I can do.

Cheers,

OTB

 

Tilesets

Basically you need to double-quote all the lines in the tileset, except the first line (SavedTileSetV1 I believe).

Also note that to save a tileset, you need a tileset directory to be created.... I'm afraid I don't remember where it is/should be located however, and my best guess would be core/tilesets.

 

Here's a regexp to convert it:

Code:

    s/^(.*)$/"\1"/

 

Now I'm guessing most of you don't know what is or how to use a regexp, so I'll include an easy way to use it.

    Download UltraEdit (There are plenty of other which editors support this, but this is beyond the scope of this post) and install it

    Go into the Advanced -> Configuration menu, Select the Find tab, and check the Unix Style Regular Expressions checkbox.

    Once that's done, open the *.tse tileset file, do a Search -> Replace (Ctrl-R), make sure that the Regular Expressions checkbox is in fact checked and type

Code:

    ^(.*)

 

in the Find What text area, and

Code:

    "\1"

 

in the Replace With text area. (Note that this will all be remembered by the program unless you change it, so you'll no longer need to do all this again. Same goes for the configuration of course.)

        Press Start and you're mostly done!

        Make sure to remove the quotes from the first line.

-Red    

 

Effects Spawn

If you want a breakable entity, say, a toilet, and the entity's sprite lacks a "break" animation (i.e. an explosion), you can add an ExplodeSpawn (entities\misc\ExplodeSpawn.ent) near the entity (in this example, the John). Then, add a trigger to "set it off." Observe:

CONDITION:

    Unit "Breakable_Crapper" has less than 1 alive at 'Anywhere'

ACTION:

    Set object script state of 'The_Breakable_Crapper's_Explosion'

Then, just check/tick the 'Object script state' box and yer set!

 

Note, however, that the default Delay on the ExplodeSpawn is 3, so you might want to change it to 0 (otherwise, the explosion will appear 3 seconds after the character shoots the toilet).

As far as I know, ExplodeSpawn's cannot do damage. If anyone has any more info on this, I'd be all ears.

One should note, however, that ExplodeSpawn is only one type of EffectSpawn. You could, for example, have in place of the explosion some pools of blood spilling out all over the place (to simulate dead bodies hanging from the ceiling, dripping blood).

There is one small problem with the above example: The blood is gray for some reason. This is true for all the "blood" impact fx. I tried messing with the entity's colors, and they don't change a thing. One probably has to edit the .spr of the blood pools.

Also note that you can have a light effect as well. Useful if your map is at night, and you have an explosion. Explosions emit light, no? Unfortunately, one must manually type in the location of the light entity, starting with the "lights" folder. i.e. lights/Red Light.ent

But that's not all, boys and girls...

You can also make these EffectSpawn thingies play .wav's! There is some limitations on this - the sprite you use must be of an Explode nature (Explode BIG, Explode Flak, Explode Flame, etc.). I'm not sure if you can have .wav's play with the blood spilling things, but I DO know that the Projectile sprites don't work. Somewhat annoying, yes, as you HAVE to have an animation to go along with the sound, but you don't need a sound to go along with the animation.

 

"But MV, surely there is something more to EffectSpawns!?!?" you ask? Certainly...

The PC's don't actually need to SEE the animation in order to hear the sound. Unfortunately, I dunno what the "cut-off" distance is for hearing/not hearing the sound (if there is one).

All this said, you could create a rather gnarly map featuring ambient gunfire, explosions, etc. Imagine, if you will, a recreation of D-Day using custom and pre-made sounds and animations. Very cool.

One final note: You really only need one EffectSpawn entity for all your EffectSpawn needs, as you can change something like an Explode Fire animation with an orange light and a loud BOOM sound to a Explode Electric animation with blue light and no sound from within the level editor.

Max-Violence

 

Timers

To make a timer (like the one in the generator room in Quincy) you need to think "variable" when making the timer itself. Timers are sorta like mission variables - you must 'set' the timer in the mission header (where you set objectives, death text, variables, etc.). Observe:

CONDITION:

    Always

ACTION:

    Set (whatever number) to timer: (name of timer)

    Stop timer (Name of timer)

     

Then, when you want the timer to start counting down, you:

CONDITION:

    (Whatever you want to start the countdown. An NPC speech, for example)

ACTION:

    Set (whatever number) to timer: (name of timer) and set descending

 

Obviously, set descending makes the timer count down, and set ascending makes it count up.

Note that the numbers for the timers are in seconds, so if you want the timer to start at 5 minutes, you would enter 300 for the timer set number.

Not quite as complicated as I thought they'd be, timers are a curious lot.

Full example:

CONDITION:

    Always

ACTION:

    Set to 300 (5 minutes) to timer: Main_Village_Timer

    Stop timer Main_Village_Timer

 

the 'stop timer' part is so that the timer doesn't count down/up before you want it to

Then,

CONDITION:

    BoS has more than 0 alive at Main_Village_Timer_Start_Zone

ACTION:

    Show timer: Main_Village_Timer (Important part: otherwise, the player will have no idea how long he/she has left)

    Set to 300 to timer: Main_Village_Timer and set descending

 

Finally, for whatever you want to happen when the time is up:

CONDITION:

    Timer Main_Village_Timer is less than 1 (second)

ACTION:

    Kill entity BoS with death type Explode

 

I think that's it...

Max-Violence

 

Skill-Use Occurred

The "Skill Use Occurred" trigger works, and here's how I used it earlier this evening:                  

Set up a trigger with "Skill Use Occurred" and an Object Script State depending on a Science Switch's Script State. (In this case it was "off" [unticked/unchecked].) The field containing the Tag Name of the Entity which is to use the skill was left blank, but the Tag Name of the switch was entered.

"Enable Script Events" was ticked/checked for my technologist recruit on the map.

Several Raiders were assigned a Tag Name.

The actual trigger's conditions were that the skill use (Science) had occured, and the switch was still in the off position. The action was to kill the hapless Raiders by way of electrocution.

When I had the recruit use the Science skill on the switch (she was doomed to failure w/her 104% Science as the switch's difficulty was set to 200) the Raiders were immediately killed. BINGO!!!

The only problem with this arrangement is that you are basically limited to using Prefab characters since AFAIK those generated at the beginning of a campaign do not have the "Enable Script Events" field ticked/checked and this is crucial to the setup.

While this is of help to SP Map Rats, it's not all that helpful to campaign-oriented Map Rats like myself. For instance, I wanted to simulate having an alarm sound if someone tampered with a switch and fucked it up. While it can be done, if the player is using his/her own character the alarm won't sound if he/she fails when attempting to throw the switch.

Ah well...back to the drawing board...

OTB

 

HOLODISKS

After much experimentation and clumps of bloody hair lying on my living room floor, I have a tasty tid-bit for you modding/level editing maniacs out there. Here is how you get Holodisks to work properly in in FoT:

1) Design an entity of the "Holodisk" type. Note that none of the holodisks provided with the game are actually "Holodisk" entity files, rather they are "Generic Items", so you'll have to create a new entity for this process.

2) The most imporant field for this type of entity is the "Text Label" field. Place an entry here that corresponds with the format for the speech file, e.g. M01_holodisk_01.

3) In the speech file of the mission that you're going to place the holodisk in, enter lines in the following format:

textLabel = {What you want to have displayed in the PipBoy.}

title_textLabel = {The title of the holodisk that will appear in the PipBoy Dialogue section}

To use the example above, it would read like this:

    M01_holodisk_01 = {Francis, I know you killed those people, and I'm coming after you.\n\n

    Signed,\n\nOTB\n\n}

    title_M01_holodisk_01 = {OTB's Note to Francis}

If you don't follow the speech file format rules you can say hello to the line "No relevant information found" which will be appearing in your text message window. Also, if you do not include the "title_..." line you will not have a title appear in dialogue window, but rather simply a "." (That was the part that sent me scurrying for help. *lol*)

Incidentally, you don't have to use the holodisk sprites for this. You can simply use the notebook sprite, or pamphlet, etc. so you're not limited to giving out information like this simply w/disks.

For the information that appears in the inventory screen, use the Display Name. The usual rules apply to that. (There are standard entries available in the core campaign's items.txt.)

 

Special thanks go out to Alistair Phillips, who was kind enough to clear up this whole mess even though he was one Xmas holiday, and to Ed Orman for getting a hold of him for me.

If you recall I had a deuce of a time getting holodisks to work properly in the first place and Ed Orman was kind enough to relay the proper format to me. I had been putting the info that the holodisks were supposed to contain in the mission's speech file, and this had the drawback that you had to include that speech node in each mission's speech file that you wanted the text to be available in. Well, I found a better solution: place the speech node in the GenericMission.txt file for your campaign and it will be available on all maps w/no pesky copy-'n'-paste action. The player will still have reaccess the data every time they want to read the disk and are on a new map, but you, the designer, do not have to worry about it once you've placed it in a single file.

If you don't know, here's the proper format for holodisks: you have to use the correct Speech Node format for the Text Label field in the holodisk entity type. Don't stray from that format or it won't work. Also, use "title_..." for the title of the holodisk that is to show up in the PipBoy dialogue section.