As you probably know when you want to create your own characters you will need Data Changer program, or to be specific, program which can decode files .dat because on that files all LF2 is based. The use of this program is as easy as the use of Notebook. You will also need a program to process bmp. files. The program which is used the most often is MS Paint.

So lets begin. I warn you that if you want to understand this guide you should have patience and even more when you want to create the best character.

I’m going to explain how it works.

The .dat file of every character begins with so called bmp. part. It looks like that:

These are graphic files for each character, these numbers will be used in individual frame.
w: the width of one frame, h: height of one frame, row: the number of frames in a row, col: the number of frames in a column.

walking_frame_rate 3? The number of time between another walking frames, unrelated with parameter wait: in those frames
walking_speed 5.000000
walking_speedz 2.500000
The walking speed, appropriately on the left, on the right, up and down (probably given in pixels at TU (TU – time unit)
running_frame_rate 3
running_speed 10.000000
running_speedz 1.600000
These three mean the same as in walking frames so I don’t explain them.

heavy_walking_speed 3.700000
heavy_walking_speedz 1.850000
heavy_running_speed 6.200000
heavy_running_speedz 1.000000
Walking/running speed during holding heavy object (Type 2)
jump_height -16.299999
The jump height is always negative.
jump_distance 10.000000
jump_distancez 3.750000
The distances cover during jumping up or on side.
dash_height -10.000000
dash_distance 18.000000
dash_distancez 5.000000
These are the values with are use in jumping during the running. If you understand previous one that should not be a riddle.
rowing_height -2.000000
rowing_distance 5.000000
Values during a backward somersault during halling ( key J during falling)

And this is it as far as the first part is concerned.

Frames

The next part concerns frames, and this is the most important part of the game. They decide what will happen on the screen.
Every frame contains basic information as time in which another frame appears, the move in the frame, or picture which appears in making the frame.

399 dummy (there is a notify that another frame begins, the number of the frame, it’s name- it is easier to figure out what is what))
pic: 0 (the picture of the frame)
state: 0 (condition of the character, there is almost 50 conditions which I’ll describe later)
wait: 0 ( how much time will the computer wait to the next frame ( in TU(1TU=1/30s if somebody forgets)
next: 0 the number of next frame
dvx: 0 dvy: 0 dvz: 0 ( the move of the character in particular frame (x=left/right, y=up(jump),
z=depth(up, down when you are standing on the ground)
centerx: 39 centery: 79 (the place, in which the shadow appears and the place from which other values concerning position are counted)
hit_a: 0 hit_d: 0 hit_j: 0 ( describe what will happen after pressing proper key, more below)
kind: 0 x: 21 y: 18 w: 43 h: 62
bdy_end:
( this is special function so I don’t describe it now)

All those names should be understandable in one condition. You must read the guide from the beginning. When you don’t understand sth it is enough to check proper frame and see the picture which is assigned to the frame. It should dispel all your doubts.

Special functions

Now I will talk about special functions of frames. The first and easiest one is bdy. function.

bdy: - the beginning of the function
kind: 0 (kind is always 0( there is one exception, but I will talk about it later) x: 21 y: 18 w: 43 h: 62 (coordinates – take-off position, height, width)
bdy_end:

As you can see it is veeeeery difficult. The function is used to describe the area which you should attack when you want to injury the character. (bdy=abbreviation for body).

Another function is itr (interaction=the influence on environment). It is much more difficult because there are few types. Yet probably you will use one or two.

Type one is a normal hit.
itr:
kind: 0
x: y: w: h: ( the space in which the hit takes place)dvx: dvy: (how does the opponent behave after the hit = knockback) vrest: (or arrest: ) ( determine the time after which the same hit may be given to the character again ( vrest appears if you hit many enemies, arest if one (I’ve never used arest so I don’t know how it works)
fall: every character have 70 points of fall. Every strike takes away some of them. Below you have values (value of fall parameter, the number of hits needed to cross to the Dance of Pain, number of strikes to fall)
20 – 3,4
30 – 2,3
60 – 1,2
70 – 1 ( fall right away)
bdefend: similar to fall but there is 10 points. When they go down to zero the opponent, which defends will go to broken defend frame.
injury: number of life points which are taken from opponent
zwidth: it is the width of attack in up down directions. I can’t explain it more clearly.
effect: what effect the attack causes. Below I include the list.
itr_end:

The list of effects:
0. Normal attack
1. Blood
2. Fire
3. Freeze
4. Works as John’s reflection
5. It’s the same effect as we will not write effect at all. It’s completely useless in the game
20. Lightening, resistance to 20, 21 effects. For example use in every burning character and in fire, which leaves Firen, when she does fiery run
21. Lightening, resistance to 20, 21 effects. For example fiery run.
22. Lighten, explosion. dvx, dvy must be negative because the character might be hauled inside, for example Firen’s explosion
23. The same as above but it doesn’t burn, f.e. Julian’s explosion
30. Freezing. Frozen characters are immune to such effects, f.e. Freez’s ice columns.
40. I don’t know what it is.

Another kind of interaction – catching

itr:
kind: 1
(area)
caughingact: here we give two numbers of frames into which our hero will go after the catching ( one concerns catching on the front, the other on the back)) caughtact: (the same but it concerns the frame into which caught prson will go)
itr_end:

We use

To pick up the gun:

itr:
kind: 2
x: y: w: h: (area)
vrest: 1 (always)
itr_end:

We use strike with fist in first frame ( normal strike ( because f.e. Rudolf throws szriuken))

The next one is the strike which character makes after attack.
itr:
kind: 4
?
I put three dots because the rest of functions were described in kind: 0, they are the same. In case of doubt look kind: 0
?
intr_end:

Next one is shot with gun. It’s strange enough that it appeals to strength of accurate weapon. That’s why values should be always the same. ( I will give some examples)

This information is for other characters. Super Punch should be made that is finished attack f.e. hit up with John’s club.

itr:
kind: 6
x: y: w: h: (area)
vrest: 1
itr_end:

It is used in Dance of Pain and Broken Demence frames.

Another type is picking up the gun during rolling.

itr:
kind: 7
The rest is normal picking up gun.
itr_end:

Another are curing balls (f.e. Johna)

itr:
kind: 8
x: y: w: h: (area)
dvx: the number of frame to which the ball goes after curing someone.
injury: the number of hp possible to cure. Usually 100

Another is shield which recoils the bullets. IMPORTANT!!!!! Don’t use in characters. Use kind: 0 /effect 4
itr:
kind: 9
?
itr_end

I have never used it. I didn’t understand it completely.

Another type is used in Henry’s flute frames.
itr:
kind: 10
x: y: w: h: (area)(all weapons and characters are raised to the uphill edge of this area
vrest: 1
injury: low value ( kind: 10 automatically take away opponent’s life so we can easily leave it alone)
zwidth: look kind: 0
itr_end:
kind: 11 it causes that opponent spends all the time in falling frames. But kind: 10 has the same effect so kind: 11 is unnecessary.
Another kind only block the road.
itr:
kind: 14
x: y: w: h: (area)
vrest: 1
itr_end:
We use f.e. in stone or Freeze’s ice wall.
itr:
kind:15
?
itr_end:
When is used in Freeze’s gale, is responsible for spinning.
itr:
kind: 16
?
itr_end:
The same as above although it is responsible for freezing.
That will be all about interaction.
bpoint
The next function I will write about is bpoint.
It is responsible for blood on the character’s face.

bpoint:

x: y: (position)
bpoint_end:

Another, very important is point, which is responsible for keeping the weapon in hands:

wpoint:

kind: (1 is used to everything beside dropping the weapon because for it we use kind: 3)
x: y: Point at which the character holds the weapon.
weaponact: Determine how the weapon will act in character’s hands. (number of frame)
attacking: from 1 to 4. Determine what attack the weapon do .It referent to weapon files.
cover: 1=hidden weapon 0=visible weapon
dvx: dvy: dvz: use in case of movement. If sou want to drop the weapon with zero coordinates use wpoint / kind: 3

Creating the lens

opoint: the beginning
kind: 1 for everything, 2 for light weapon.
x: y: where the object appears
action: number if frame in which the object will be activated
dvx: dvy: initial impulse
oid: the number of object (from data.txt files)
facing: 0 one odject in the front (positive dvx takes away from character) 1 one object from the back. Double-digit numbers: 10: there is a catch but I don’t remember. The first number determines the number of objects, the second one the direction (0 front, 1 back, 2 I don’t know )
opoint_end: the end

Conditions of characters

States (Conditions of characters):
0 – standing, reaction to all keys and passing to standard frames ( I gave it already)
1 – walking ( the speed automatically established, according to bmp_part), reaction to the same keys as in 0
2 – run, reaction to all keys and passing to particular frames, speed taken from .bmp
3 – punch strike, interaction is used with that state
4 – jump, reaction to arrow keys, left – right (changes the stand of the character) and also attack key
5 – dash, attack while running
6 – rowing
7 - defense
8 – broken defense
9 – catching, if there’s cpoint in the frame you have to use state: 9 to get it working properly
10 – caught in every frames, in which the character is caught (there’s no control over the hero)
11 – hit, loss of control over the hero ( standard character)
12 – falling
13 – ice may be struck by comrades, the first strike crushes the ice
14 – lying, very interesting state because of possibility of using it to move after hero’s death, ignored by the computer
15 – different, no special features
16 – struck 2 ( I don’t know what for)
17 – drinking bottles
18 – burning. The interaction may affect friends!
19 – the fire run. You can move on z axis but you won’t hurt your friends.
100 – struck into the ground. It is used in dash strike of Louis with big wait: parameter – I will solely study over that state in a few days
301 – it’s responsible for the attack in which moving on z axis is possible. See Deep – Dashing Strafe ( Run with a Sword)
400/401 – Woody’s teleportation, 400 – to the nearest enemy on 121 pixels distance, 401 – to the distant enemy on 60 pixels distance
500/501 – Rudolf’s transformation. I’ll explain later
1000 – responsible for the behavior of light weapons in air
1001 – 1.weapon in hand
1002 – thrown 1.weapon
1003 – 1.weapon bouncing on the ground ( I’m not sure of that)
1004 – light weapon on the ground
1700 – heals 10 HP (Only from the dark stripe) the same as itr/kind:8
2000 – heavy weapon in air
2001 – heavy weapon in hand
2004 – thrown heavy weapon
3000 – flying marble. After smashing with another strike which has state:3000, the attack is destroyed
3001 – used in frames of hitting something. The same as 3002 and 3004, so there’s no need of describing it
3003 – countering the strike. ( Strike with state 3000)
3005 – Strike without a shadow. The strongest one, destroys any attack.
3006 – Super strike. Destroys 3000 but it’s destroyed by 3005
80xx – ( xx is the id of the character from data.txt file) Transformation to chosen hero ( there’s a bug, and you have to add 140 to all picture numbers ( I must confess that this state was always useful))
9995 – transformation into the character with id:50 (Louis EX) (BTW: id – I explained that in the part with opoint: so if you read to the end, check it out)
9996 – Louise’s armor. Activated: 4 times id 217 (go to the sides) and id 218 once (stays in the middle). May harm your character.
9997 – messages max 80x80 as far as I am concerned. If you’ll activate it by opoint you have to give dvy:550 or you’re going to fall
9998 – deleting the object from the game. The same as next: 1000, but if you work with cpoints and weapons it’s better to use this
9999 – see 15

Rudolf’s Transformation

Rudolf’s transformation:
You’ll need cpoint, but you don’t know what it is at the moment. I’ll give you a hint, that in the frames of holding an enemy you have to put a reference to the frame of transformation.
The frame has to have:
State: 9
Cpoint with values: vaction: 181 ( for the enemy to get to the falling frame) throwvx: 10 Throwvy: -5 ( so as to the enemy wouldn’t stay in the same spot) throwinjury: -1 ( is responsible for the transformation

That’s all. You are a different character now. You change back by the combination D+J+A – unfortunately that’s how it is in the game code.

To transform to the previous character you have to:

Create one frame with state: 500. Create another frame with state: 501. That’s all. It’s worth putting next: 999 instead of state: 501, but it’s not necessary. ( 500 is responsible for blocking if you’re not any other character yet( then you’ll get back to standing frame).