Welcome, Guest. Please login or register.

What openbor you prefer: Double dragon,battletoads or final fight !? by lirexpatrio
[December 07, 2012, 07:15:27 pm]


what are your favorite games OpenBOR?! by lirexpatrio
[December 07, 2012, 07:09:46 pm]


Post Some Awesome Videos by maxman
[December 07, 2012, 05:51:39 pm]


Can @cmd playmusic "aaaa" 1 also increse music sound ? by BeasTie
[December 07, 2012, 05:24:38 pm]


Streets of Rage: Silent Storm by mtrain
[December 07, 2012, 03:45:05 pm]


Site will be down for maintenance on 12/8/2012 thru 12/10/2012 by Damon Caskey
[December 07, 2012, 07:42:42 am]


Cancelled SOR 3d Remake by riccochet
[December 07, 2012, 03:58:33 am]


Dungeon Fighter: B.O.R. by msmalik681
[December 07, 2012, 03:24:27 am]


[TUTORIAL] How to create 4 Games of OpenBOR in 1 CD (650 MB) by magggas
[December 06, 2012, 09:46:25 pm]


custknife by Bloodbane
[December 06, 2012, 09:34:09 pm]


blockfx help by B.Kardi
[December 06, 2012, 04:09:14 pm]


street of age 4 hd by corradlo
[December 06, 2012, 01:41:36 pm]


ClaFan - Classic Fantasy ver 1.17 by soniczxblade
[December 06, 2012, 05:01:20 am]


Bug Archive by Bloodbane
[December 06, 2012, 02:00:44 am]


"Bio-Doom" and "Gears of Doom" by BulletBob
[December 05, 2012, 10:07:21 pm]


Contra Locked 'N' Loaded v2 by Bloodbane
[December 05, 2012, 09:39:43 pm]


Downloadable OpenBoR Manual by BeasTie
[December 05, 2012, 08:31:24 pm]


Having trouble testing changes by B.Kardi
[December 05, 2012, 03:05:53 pm]


DragonBall Absalon by msmalik681
[December 05, 2012, 02:52:13 pm]


[Hi-Res] Swamp by Vibrant
[December 05, 2012, 10:47:14 am]


  • Dot Guests: 158
  • Dot Hidden: 0
  • Dot Users: 0

There aren't any users online.



Author Topic: [FAQ] OpenBoR Basics [Under Construction]  (Read 25132 times)

0 Members and 1 Guest are viewing this topic.

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
[FAQ] OpenBoR Basics [Under Construction]
« on: November 18, 2007, 06:35:23 pm »
Due to the recent increase in posts asking the exact same thing , we have decided to put up a FAQ. I will be starting with the absolute basics (palettes, animation structure and stages) to begin with , but eventually it will cover much more.

Until we have a completed FAQ , please use the OpenBoR Manual.

For now , I will be using Senile Team's original guide as a reference (whilst expanding on it) as it is still the most comprehensive guide for beginners. So thanks in advance to them.....

Contents
Getting Started
Basics FAQ
Common Abbreviations And Phrases
OpenBoR Manual - Models.txt
OpenBoR Manual - Levels.txt Header
OpenBoR Manual - Levels.txt Level Sets
OpenBoR Manual - Lifebar.txt
OpenBoR Manual - PAL.act
OpenBoR Manual - Entity Header

Useful links
bor-edit.1.2 - Senile team's original manual and tools.
Beats Of Rage Wiki
Senile Team Official Site
OpenBoR Manual - mirrored by Christuserloeser.
WinRaR
Adobe Photoshop

« Last Edit: September 07, 2012, 09:34:13 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #1 on: November 18, 2007, 10:08:20 pm »
Creating a character

Step 1. Creating .gif's

Grabbing Frames
In order to make a new character you need sprites for your character. On the internet many ripped sprites can be found, however these are often modified and manhandled. You'll probably get better sprites if you grab them yourself. Also this ensures you can get the sprites you need.

Please refer to my sprite ripping tutorial HERE

Editing Frames

To reduce memory , it is recommended that you crop your images. Whilst doing so , it is a good idea to crop them in such a way that all the frames in a single animation are the same size. It will make coding the animations much easier for beginners.





The above images are from Ralf's jab attack. Note that the first frame is the same size as the second frame and that his body hasn't moved at all. You can achieve this quite easily. Using Photoshop , open them as new layers on top of eachother , crop then save the individual layers

INDEPTH GUIDE COMMING SOON

Saving Frames

Once you have your frames sorted and cropped , you need to apply a palette to them. OpenBoR's colour scheme uses a single 256 colour palette for every entity (hero,enemy,item,obstacle etc). Traditionally , the first 128 colours are reserved for entities whilst background images may use the extra 128 colours as well.

To apply the palette , we use Adobe Photoshop.

1. Go to File "Save as", select CompuServe GIF (*.GIF)
Do not use long file names, but a maximum of 8 characters.

2. Go to Palette and choose "Custom"



3. A colour table pops up, here you press load. Select data/pal.act and press load. Also set Dither to none.



4. The BOR palette was loaded. You should see something like this: Notice how the colour in the top left corner matches the background colour in our frames. This is our "transparent colour". You won't actually see the background of the frames when they are loaded into the mod.



Now press OK, and OK again.

5. Now you are asked to choose between normal and interlaced row orders. Choose normal. Now your frame has been saved.

Once you have loaded your palette, you can save yourself some time by choosing previous palette for every subsequent frame you save.



Making Your Own Palette

If you find the original palette inadequate then you can create your own. To do so , place every entity that use all the different colours into one image. Include heroes , enemies , projectiles , objects etc.



In Photoshop , choose Image , Mode , Indexed colour



A new window should pop up. Traditionally , you need to be using 128 colours so , depending on your images , the best way to set this is to use a Local (perceptual) palette , type in 128 and leave the other options blank.



Once done , click Image , Mode , Colour Table. A new window will appear.



Notice that our "transparent colour" is in the wrong place. We need to swap the two colours so that they are in the correct place. To do this , click on the colour in the top right corner.



See the highlighted code? You need to copy that and then enter the code for the "transparent colour". For the purpose of this tutorial , that code is ff00ff.

Press OK.

Now we need to make the old "transparent colour" by following the same process , only this time , paste the code you copied from the previous step.

You will notice that the colours of your image may swap around. That is perfectly normal and nothing to worry about as we were only using that image to "extract" the colours we needed.



Note how the "transparent colour" is now in the correct place. Press the save button and browse to the location of the old palette ( ..../data/pal.act ). It is OK to replace the old file.

Once that is done , you will need to apply this new palette to every entity in the mod by following the steps under "Saving Frames".

Creating an Animation

Now that we have our frames sorted , we can start to create our own characters. For beginners , it is a good idea to look at , then edit an existing character. Not only will you ( hopefully  ;) ) learn more quickly about a characters structure but they will allready include all the necessary animations that OpenBoR needs to actually run.

A Character "Header"

The below is a basic example of the first few lines of a hero character This section of the text file is known as the "header"....

Code: [Select]
name     Ryo
health     100
mp     100
speed     9
type     player
jumpheight   3
running     24 3 2 1 0
shadow     3
icon data/chars/Ryo/icon.gif

name is the default name for this character. It will be displayed near the life bar.

health is how much life your character has. Bear in mind that using tricks like setting a bosses health to 10000 doesn't mean you'll have a good mod.

mp is how many "magic points" your character will have. If you use this setting , a mp bar will be drawn near your life bar. Mp , depending on your settings , will be reduced whenever you perform a freespecial.

speed is how fast your character can walk. Be careful when setting this as a low setting could be painful to play  ;) whilst setting it too high will cause your character to dissapear off the screen....And die!

type lets the engine know what sort of entity this is. In this case it is a player (playable "hero" character) . Setting it to enemy would let the engine know that it is an enemy.

jumpheight determines how high a character can jump. An entity's jumpheight also affects how far it flies when knocked down, and how high and far jumpframe moves

running has five options , {speed} {height} {length} {move} {land}
{speed} is how fast the character can run
{height} is how high (if at all) the character can jump whilst running
{length} is how far your character will jump whilst running
{move} setting this to 1 will enable your character to run "up and down" the screen if you press and hold up or down whilst holding the direction button during a run. Very useful for weaving in between enemies!
{land} setting this to 1 will allow your character to continue running after landing if you continue to hold the direction button during a running jump.

shadow This will determine the size of the shadow displayed under your character. There are several default shadows of various sizes in the data/sprites folder named shadow1.gif through to shadow6.gif. The numbers correspond to the options you have in this setting. The lower the number , the smaller the shadow. Also , if you do not want a shadow used at all , you can set shadow to 0.

icon this is the icon that is displayed next to the lifebar.

Creating an Animation

Next the actual animations will be constructed. There are a number of different animations.

anim idle    The animation for standing still. 
anim walk   Walking! 
anim pain   When your character gets hurt. 
anim fall     When the character gets knocked down, he falls. 
anim rise    And getting up again.

Here is an example of a basic attack...

Code: [Select]
anim attack1
loop 0
delay          5
offset 32 99
             bbox           14 4 41 95
frame data/chars/Ryo/lp01.gif
delay 7
attack 39 14 46 34 5 0 0 0 8
frame data/chars/Ryo/lp02.gif
             attack          0 0 0 0 0 0 0 0 0
delay 8
frame data/chars/Ryo/lp01.gif

loop Some animations , such as idle or walk should loop (set to 1). However , in animations such as an attack , it is advised to disable loop , by setting it to 0 , so that it is only performed once. You can only set this once per animation.

delay this is how long the frame is displayed. It is timed in 100ths of a second. Increase the delay to slow down the animation. You may use multiple delay settings in a single animation. It is usually required to make a nice smooth animation.

offset This is the point your character stands and is important to get right as incorrectly placed offsets will make your animations "jumpy". The shadow is also drawn from this point. If you followed my sprite ripping tutorial , you should only need to set this once per animation. Saving you a lot of work.

In the image below , a well placed offset has been marked with a white dot. As you can see , an offset is normally in the centre of a character.



bbox This is the area that can be hit by incoming attacks. The first 2 numbers (14 and 4) are the x and y coordinates of the topleft point of the area. The third number (41) is the width of the bbox, and the fourth (95) is the height.

You may use more than one bbox in an animation  , but only one per frame.

Below is an example of a well placed bbox. It is usually good practice for the bbox to be roughly shoulder width and a little shorter than the character. You don't want to be able to receive a hit from a punch halfway across the screen , do you?



attack This will be the area that will hurt other entities if it overlaps with their bbox. The first 2 numbers (39 14) give the x and y coordinates of the attack box. Number three and four (476 35) are the width and height of the box. The fifth number (5) is the strength of the attack. Increase this number for a heavier attack. The sixth number (0) is used to define whether the enemy falls down after the attack. Use 1 for fall down, and 0  not to have the enemy fall down. The seventh number (0) defines whether or not this attack is unblockable. Set it to 1 to make it unblockable. The eighth number (0) , if set to 1 would disable the hitflash effect during this attack. And the ninth number ( 8 ) will cause the attacker and attackee to be paused for that amount of time (in 100ths of a second) if the attack hits something.

Recently , a 10th parameter has been added , Z range. "Z" is how much of the playable area you can walk up and down (in or out of the screen , whichever you prefer) so adding "Z range" to an attack effects how far in and out of the screen it will hit. Giving the attack a sense of depth...You will notice sometimes in certain mods , you are able to attack a character even though he is on a different z axis , making it look as if you are hitting his legs....

If you do not use z range , then it is linked to a characters grabdistance which defaults to 36.

You can use multiple attacks in the same animation but they must be separated by at least one non-attacking frame and be greater than 6 100ths of a second delay apart
   
Set the attack to 0 0 0 0 0 0 when the attack frames are over.

Below is an example of a well placed attack box. As useful as it may sound , being able to hit characters with a punch from the other side of the screen will not make for a very good playing experience!



Photoshop is absolutely essential for finding the coordinates of the offset point along with the width and height of the attack and bboxes.

At the top right of Photoshop you will see an info box



I have highlighted the area of importance. The first thing to do is to make sure the values are in pixels. Click on the cross shaped tab and choose pixels from the drop down box.

Then , with either the crop or marquee tool , draw a rectangle.

The first two values ( X and Y ) will show the coordinates of the offset and the top left corner of the attack and bbox whilst (W) is the width of the attack and bbox and , finally , (H) is the height of the attack and bbox.

frame tells the engine where the frame is located. Not really much more to say about that except

check that the path is correct , and that there are no typing errors!
 
 

« Last Edit: November 27, 2007, 07:14:52 pm by Orochi_X »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Damon Caskey

  • Hero Member
  • *****
  • Posts: 5335
    • The Gorge
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #2 on: November 19, 2007, 08:59:25 am »
Common Abbreviations and Phrases.

AI: Artificial intelligence.

BOR: Beats of Rage. The orginal DOS based sidescrolling Streets of Rage tribute game released by Senile Team. Often also used as an abbreviation for OpenBOR (see below).

DC: Dreamcast. The Dreamcast is Sega's last foray into the console business, and is the primary focus of many OpenBOR modders. Also sometimes used to refer to Damon Caskey.

Dither: A technique used to simulate more colors then are truly available by stipling color pixels. For example, to create the illusion of purple, a line of pixels would stager Red, Blue, Red, Blue. Dithering is ill advised for the most part when creating images for OpenBOR modules because it tends to look poor in animation and can create difficulty in color management. It can however be very useful for still images and cutscenes.

Enemy: An AI controlled entity that will attack PCs on sight by default. In modding terms, this is any entity with its type set to "enemy".

Entity: An object that can potentially be manipulated in any form during gameplay. Anything that doesn't default as part of the playing field itself is an entity.

FF(#): Final Fight (1, 2 or 3). One of the most successful (and copied) games of all time. It introduced most of the common conventions used in side scrolling games to this day.

GIF: Graphics Interchange Format. An 8-bit bitmap type format that allows up to 256 colors. It is the primary format for images used in OpenBOR. Its main advantage is enabling transparencies and fairly small file size depending on how the image itself is arranged.

Hero: See PC.

NPC: An AI controlled entity that will attack enemies on sight by default. In modding terms, this is any entity with its type set to "npc".

OpenBOR: Open Beats of Rage. A compilation of serveral BOR clones and offshoots into a single open source moddable gaming engine, primarly for side scrolling type fighters. It is the main point of discussion for lavalit and what the vast majority of modules here run on.

OX: Orochi_X. A long time OpenBOR modder and moderator on Lavalit forums.

PC: Player Character. A player controlled entity in an OpenBOR module. Often refered to as the "hero". In modding terms, this is any entity with its type set to "player".

Script: As of this writing, a fairly new addition to the OpnBOR engine. Unlike many engines, script is not required to create a functional module in OpenBOR and is in fact more of an add on feature. It does however provide logic control and access to functionality otherwise unavailable to the engine alone.

SOR(#): Streets of Rage (1,2 or 3). Sega's original answer to Final Fight, and to compensate for inferior graphics refined and added to many Final Fight gameplay concepts. As a result, SOR2 is considered to be one of, if not the finest side scrolling fighter in existence, and overall the series has spawned a number of remakes and fan games. Notabley, Streets of Rage Remake (SORR) and Beats of Rage itself.

SX: SumolX. Currently the primary Open BOR developer and owner of lavalit.com.



« Last Edit: November 25, 2007, 03:49:59 pm by Damon Caskey »
OpenBOR Wiki.

Coming Soon:
Spoiler
Fatal Fury Chronicals


Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #3 on: November 19, 2007, 03:06:42 pm »
Getting Started

This section will explain how to set up OpenBoR for both creating your own mods and playing other peoples finished mods.

I advise every modder to have a separate instance of OpenBoR for his own WIP mod and another for playing other peoples mods. It keeps everything nice and simple.

Setting up OpenBoR to run mods

1. The first thing you need to do is download a copy of OpenBoR. There are two types of download , "official" and "dev-build". Official releases are considered stable and will include binaries for all available platforms whilst dev-builds are used to test bug fixes and try out new features. These will usually only include the windows binaries , unless the fixes or new features are specific to a certain platform.

You will be able to find the latest version of OpenBoR in the Engine Center sub forum.

2. Once you have downloaded a copy of OpenBoR , Double click the .rar file. You should see the following....



3. All the separate platforms are clearly marked out. Double click on "WINDOWS" you will see a new directory , OpenBOR. Drag this out to which ever location you prefer.

4. Once done , open the OpenBOR folder , you should see something like this....



Logs Whilst OpenBoR is running , it produces a log file. It is mostly used by modders to find errors in their mods.
Menu This folder contains all the fonts and graphics for OpenBoR's .pak select screen.
Paks This is where all the pak files go. A pak file is , in short , a compressed mod. All mods , whether completed or demo's are available from our download section.

Once downloaded , they should be extracted into the Paks folder like so...

 

Saves This is the folder where settings are stored. OpenBoR will also save your progress whenever you complete a level. Allowing you to resume from that stage at a later time should you need to. Finally , high scores are also saved to this folder.

It is often advised that you delete all your previous save files should you decide to replace your existing version of OpenBoR with a newer one.

Screenshots This is where any captured screenshots are stored.

You will notice that there are two versions of OpenBoR. A standard version and a "Lite" version. For the most part , you will only need the standard. The Light version was made available to modders who were interested in creating mods for consoles , as it allows them to estimate memory usage more accurately.

Console Specifics

Coming Soon!

Setting up OpenBoR to create mods

Following the above procedure to create an OpenBoR directory , download the attachment at the bottom of the thread or download it from here. It contains a few useful items for modders....

A "dummy file" named bor.pak - this should be the only file you need in the Paks folder if you are creating a mod. OpenBoR will shut down if it doesn't find at least one correctly placed pak file. As we do not actually need to run a pak file while modding , we use a dummy.

Packer.exe and makepak.bat A program that will compress your WIP mod into a pak file. I have included a batch file for ease of use.

paxplode This program will extract a pak file. It is useful to extract an existing pak file and create a new mod by replacing the files with your own , mainly so that the WIP mod will have all the required files but it is especially useful to beginner modders as they can look around the structure of a mod and get a feel for how everything works.

Extract the attachment into your OpenBoR directory and move bor.pak to the Paks folder.

Now we need to extract a pak file so we can edit it. Drag a completed pak file onto paxplode. You should see a new window pop up. Once that window closes itself , you should have a new folder called "data" in the same directory as the completed pak file. Move the folder into your OpenBoR diectory , you should now have something like this.....



The data folder contains all the files of a mod. Go on! Jump in , take a look around and get aquianted with the file structure  ;D

Once you have a demo or completed mod , you will need to convert it back into a pak file again to do so , you simply double click makefile.bat which will execute packer.exe with a couple of added commands. A window will pop up. Again , wait untill it closes then you will see a new pak file in the same directory as packer. By default it should be called mymod.pak but you can edit makefile.bat to change "mymod" to the name of your mod. Be careful not to change anything else , though.

Check out our Uploading Guidelines for information on how to get your mod out to the public.


 

Attachment timed out.
« Last Edit: September 16, 2012, 06:01:23 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #4 on: November 27, 2007, 02:38:49 pm »
OpenBoR Manual - Models.txt

This is a list of commands available in data/models.txt.

ajspecial (bi)

~Determines the input for special attacks and whether or not players can block attacks.
0 = players use their special with the special key they have assigned and they cannot block.
1 = players can use the input for ATTACKBOTH as a special attack. They can also use a block animation, which will be used when the special attack button is pressed.
~If you set 1 but the player does not have a block animation, they can use their special with both the special key and ATTACKBOTH.

autoland {int}

~{int} is either 0, 1, or 2, and changes how entities can land after being thrown.
0 (default) = Players can press up and jump when hittting the ground after being thrown by another player or an enemy to land safely.
1 = they can use up and jump for a safe landing when thrown by an enemy, but automatically land safely if thrown by another player. Pits will still be a danger, of course.
2 = players can't use a safe landing at all.

colourselect {bi}

~{bi} is a binary value.
0 = you can't change your character's palette.
1 = you can change your character's palette on the select screen by pressing up and down to cycle through the remaps.
~If a remap is used for a character's 'fmap' or some remaps are hidden with 'hmap', they will not be selectable.
~That's "colour" with a u, not "color". Some countries spell it different ways.

nocost {bi}

~{bi} Determines how player's special attacks costs life
0 = they always costs life whether they hit something or not
1 = only lose life if they hit something

nodropen {bi}

~{bi} is a binary value.
0 = enemies all fall down (they don't take damage, though) when you respawn after dying.
1 = enemies do not fall down when you respawn after dying

nolost {bi}

~Controls whether or not players will drop the weapon they are holding when grabbing an enemy.
~Set to 1 to prevent players from dropping their weapons. 0 or blank means they will drop them when grabbing.

noblink {bi}

~{bi} was a binary value (It could have been either 1 or 0. Defaulted to 0.)
0 = enemies flashed when they died.
1 = enemies would not flash when they died.
~This command has been removed. It can now be controlled on an individual character basis with nodieblink.

blockratio {bi}

~If this is set, blocking will not completely nullify damage. The entity will take one forth of original damage instead

mpblock {bi}

~If this is set, damage from blocking will consume MP instead of health. If player is running out of MP, the damage will take health.
~blockratio needs to be set before using this.

nochipdeath {bi}

~If this is set, entities can't die by blockdamage (damage from blocking).
~blockratio needs to be set before using this.
~Entities health can be reduced to 1 health with this the next successful blocks won't take any health.

forcemode {bi}

~Sets whether the mode specified in models.txt is switchable or not.
0 = the mode can be switched in options menu.
1 = the mode can't be switched {default}.

versusdamage {bi}

~Sets whether players can hit each other or not. This overrides options menu.
0 = players can't hit each other.
1 = players can hit each other.

spdirection {b1} {b2} {b3} {b4}

~Sets the facing direction of players in select menu.
0 = facing left.
1 = facing right.
~{b1} is for player 1, {b2} is for player 2 and so on.
~Default is 1 0 1 0.

maxattacks {max}

~Sets the maximum number of normal attacks.
~{max} is number of available normal attacks.
~Default is 4.

maxattacktypes {max}

~Sets the maximum number of attack types.
~PAIN,FALL and DEATH animations limit is also set together with this.
~{max} is number of available types.
~Default is 10.

maxfollows {max}

~Sets the maximum number of followups.
{max} is number of available follow ups.
~Default is 4.

maxfreespecials {max}

~Sets the maximum number of free specials.
~{max} is number of available free specials.
~Default is 8.

Load/Know:

~know {name} {path}
{name} is a name that the game will use to identify the entity.
{path} is the location relative to OpenBoR of the entity's .txt file.
These entities are only placed in memory when actually needed. Used for everything but FLASH.txt and heroes.
~load {name} {path}
{name} is a name that the game will use to identify the entity.
{path} is the location relative to OpenBoR of the entity's .txt file.
The entity is always in memory. Used for flashes, heros, weapon-holding heros, and hero's projectiles.
~You don't need to load music, sound, system, or stage files. This is used only for entities.
« Last Edit: September 16, 2012, 06:02:00 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #5 on: November 27, 2007, 03:02:43 pm »
OpenBor Manual - Levels.txt Header

These commands go in the header of Levels.txt


noslowfx {bi}

~If set to 1, hit sounds will always play at the normal speed. Normally, the higher the damage of an attack, the slower it's hitsound plays.

hiscorebg {bi}

~If set to 1, the high score screen will have a background. Normally, it's just text on black.

completebg {bi}

~Determines whether custom stage complete screen is used or not.
0 = no custom screen is used. A black screen with texts will be shown instead.
1 = custom screen is used.
~The custom stage complete screen must be named complete.gif, must be non-animated gif and placed in data/bgs/ folder.

maxplayers {int}

~{int} could be 1, 2, 3 or 4.
~Only {int} or fewer players can be playing at any one time.

showcomplete {x1} {y1} {x2} {y2} {x3} {y3}

~Determines the position of "STAGE # COMPLETE".
~{x1} and {y1} determines "STAGE"'s position.
~{x2} and {y2} determines the number's position. This number shows the completed stage's number.
~{x3} and {y3} determines "COMPLETE"'s position.
~ x and y are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the life bar.

clearbonus {x0} {y0} {x1} {y1} {x2} {y2} {x3} {y3} {x4} {y4}

~Determines the position of "Clear Bonus" and its scores for each player.
~{x0} and {y0} determines "Clear Bonus"' position.
~{x1} and {y1} determines Player 1's score bonus' position.
~{x2} and {y2} determines Player 2's score bonus' position.
~{x3} and {y3} determines Player 3's score bonus' position.
~{x4} and {y4} determines Player 4's score bonus' position.
~ x and y work exactly like they are for 'showcomplete'.
~The score will only be shown if the respective player is present when stage completes though.

lifebonus {x0} {y0} {x1} {y1} {x2} {y2} {x3} {y3} {x4} {y4}

~Determines the position of "Lives Bonus" and its scores for each player.
~{x0} and {y0} determines "Lives Bonus"' position.
~{x1} {y1} {x2} {y} {x3} {y3} {x4} {y4} works exactly like for 'clearbonus' except that they are for life bonus.

totalscore {x0} {y0} {x1} {y1} {x2} {y2} {x3} {y3} {x4} {y4}

~Determines the position of "Total Score" and its scores for each player.
~{x0} and {y0} determines "Total Score"'s position.
~{x1} {y1} {x2} {y2} {x3} {y3} {x4} {y4} works exactly like for 'clearbonus' except that they are for Total Score.

p{#}life {x} {y}

~Determines the position of player's life bar.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the life bar.

p{#}icon {x} {y}

~Determines the position of player's icon.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the icon.

p{#}mp {x} {y}

~Determines the position of player's MP bar, if player has MP that is.
~Works exactly like p{#}life, except it affects player's MP bar instead.

p{#}lifex {x} {y}

~Determines the position of player's "x". Which "x"? the "x" between lifebar and number of lives player has that is.
~{#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of "x".

p{#}lifen {x} {y}

~Determines the position of player 1's current number of lives. In case you haven't figured it out, the number on the right of lifebar is player's lives.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the number.

p{#}score {x1} {y1} {x2} {y2} {x3} {y3}

~Determines the position of player's status.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x1} and {y1} determines player's name position.
~{x2} and {y2} determines player's "-" position. Yes, there is "-" between name and score.
~{x3} and {y3} determines player's score position.
~ x and y are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the name, "-" or the score.

p{#}namej {x1} {y1} {x2} {y2} {x3} {y3}

~Determines the position of player's "Select Hero", Name text, continue, credits and "GAME OVER" when joining the game.
~{x1} and {y1} determines player's name position.
~{x2} and {y2} determines "Select Hero"'s position.
~{x3} and {y3} determines "Press Start"'s position. These also sets "GAME OVER" and credits position.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the text.

p{#}shoot {x} {y}

~Determines the position of weapon's counter when shootnum is used.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the text.

mp{#}icon {x} {y}

~Determines the position of magicbar's icon.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the icon.

p{#}iconw {x} {y}

~Determines the position of player's icon for players with weapon.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the icon.

e{#}life {x} {y}

~Determines the position of the life bar for the entity which most recently hit/was hit by/touched/interacted with player. Nothing will be shown if that entity hides his/her/its status though.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the life bar.

e{#}icon {x} {y}

~Determines the position of the icon for the entity which most recently hit/was hit by/touched/interacted with player. Nothing will be shown if that entity hides his/her/its status though.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the icon.

e{#}name {x} {y}

~Determines the position of the name for the entity which most recently hit/was hit by/touched/interacted with player. Nothing will be shown if that entity hides his/her/its status though.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the name.

p{#}smenu {x1} {y1} {x2} {y2}

~Determines the position of players in select screen.
~ {#} determines which player this setting is for and its possible values are 1, 2, 3 and 4. There's no space around {#} though.
~{x1} and {y1} determines player's position.
~{x2} and {y2} determines player's "Ready!" position.
~ x and y are the number of pixels, right and down respectively, from the top left corner of the screen to the player's offset (for x1 and y1) or to the top left corner of "Ready!" text.

noslow {bi}

~Determines whether or not the level slows down when the boss is defeated.

nohit {bi}

~Determines whether or not players can hit each other.
~This is overridden by the main menu option controlling the same feature.

lbarsize {w} {h} {noborder} {type} {orientation} {border} {shadow} {graph} {backfill}

~Controls the size of lifebars.
~This applies to players, enemies, items, etc (their lifebar will all have the same width, height, etc). If 'olbarsize' is declared, this only applies to players.
~{w} is the maximum amount of health the bar can display. Defaults to 100.
~{h} is the height of the lifebar in pixels. Defaults to 5.
~{noborder} turns on or off the border and shadow around life bars. {0} means there is, {1} means no outline or shadow.
~ {type} is a flag that sets how lifebar show health. 0 (default) means if an entity's health goes over width, the life bar will wrap around and 'double up' on top of itself (1 unit of health is 1 pixel long.). 1 means the lifebar is shown in percent based.
~ {orientation} is a flag that sets lifebar's orientation. 0 (default) means horizontal while 1 means vertical.
~ {border} sets layer adjustment of outer border. Default to 0.
~ {shadow} sets layer adjustment of border shadow. Default to 0.
~ {graph} sets layer adjustment of graph fill. Default to 0.
~ {backfill} sets layer adjustment graph background. Default to 0.
~ The last 4 variables can be used to place lifebar behind player 'icon' or 'bgicon'. To do that you need to give value like -300.

mpbarsize {w} {h} {noborder} {type} {orientation} {border} {shadow} {graph} {backfill}

~Controls the size of mpbars.
~Works exactly like 'lbarsize'.

olbarsize {w} {h} {noborder} {type} {orientation} {border} {shadow} {graph} {backfill}

~Controls opponent's lifebars size. If not available, 'lbarsize' will be used.
~Works exactly like 'lbarsize'.

timeloc {x} {y} {w} {h} {noborder}

~Controls the position of the clock timer.
~To change the font, you'll need to work with the font file, not this command.
~{x} and {y} control how far right and down (respectively) the timer is from the top left of the screen.
~{w} and {h} control the dimensions of the border placed around the timer. If your timer is being displayed under the border or is off-center, try editing this.
~{noborder} turns on or off the outline around the timer. {0} means it's there, {1} takes it away.
~The default values are 149, 4, 21, 20, and 0, respectively.

timeicon {path} {x} {y}

~Determines the position of timeicon. Timeicon is optional icon that can be placed behind timer to make timer looks cooler ;).
~{path} is the location relative to OpenBoR of the icon's .gif.
~{x} and {y} are the number of pixels, right and down respectively, from the top left corner of the screen to the top left corner of the icon.

rush {flag} {duration} {text1} {f1} {f2} {text2} {f3} {f4}

~This is for showing successful hits counter onscreen. If it is activated, texts will appear onscreen showing how many current consecutive hits and maximum consecutive hits.
~As long player hit something, the hit counter will keep incrementing. It doesn't matter if player hit same enemies/obstacles or other ones. Juggling hits also counted.
{flag} = 0, means the counter is off.
{flag} = 1, means the counter is on.
{flag} = 2, means the counter is on and maximum hits is always displayed.
~ {duration} sets how long the counter will be on before it expires.
~ {text1} sets what text to be displayed for hits counter.
~ {f1} sets which font to be used for {text1}.
~ {f2} sets which font to be used for hits counter's number.
~ {text2} sets what text to be displayed for maximum hits.
~ {f3} sets which font to be used for {text2}.
~ {f4} sets which font to be used for maximum hit' number.
~ Here's font reference for {f1}, {f2}, {f3} and {f4}
0 = font.gif
1 = font2.gif
2 = font3.gif
3 = font4.gif

itemtrans {bi}

~This makes dropped items transparent. Make sure the items have transparency set before setting this.

custfade {int}

~{int} determines how long it takes for music to fade out.

musicoverlap {bi}

~Determines if the music fades in and out when changing (1), or stops and restarts (0). Defaults to 0.

scrollspeed {spd}

~{spd} was either 1 or 2. It determined how fast the screen scrolled when a player reached the edge of the screen.
~This command has been removed. The screen will now automatically speed up if your character is fast enough.

single {bi}

~Sets 'maxplayer' to 1.
~This command is outdated. Use 'maxplayer' instead.
« Last Edit: September 16, 2012, 06:02:35 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #6 on: November 27, 2007, 03:29:21 pm »
OpenBoR Manual - Levels.txt Level Sets

These commands are used to build your "game modes/difficulties" and level order as well as setting certain set specific options.

set {name}

~Marks the start of a difficulty level.
~{name} is the name of the difficulty which will be selectable from the difficulty select menu.

nosame {bi}

~Determines whether or not Player 2 and Player 1 can use the same character at the same time.

noshare {bi}

~Determines whether or not Player 2 and Player 1 both use the same credits. If set to 1, each player will have their own supply of credits.

lives {int}

~The player will start with {int} lives.

credits {int}

~The player will start with {int} credits.

ifcomplete {bi}

~Can be used to create 'secret' levels if {bi} is set to 1.
~They aren't really secrets, as the players will still be able to see them on the menu, but they won't be able to select it until they've beaten the game at least once.
~'secret' characters can only be used in difficulty settings with 'ifcomplete'.

z {zmin} {zmax} {BGheight}

~Changes the location of stage boundaries.
~{xmin} is how high up entities can walk. It starts at the top and works down, so larger numbers mean less room. Defaults to 160.
~{xmax} is how far down the character can walk. It also goes down from the top. Defaults to 232.
~{BGheight} changes where the bottom of the background is drawn. Defaults to 160. By changing this value, you can make the background match an altered {xmin}.
~This can be set once per level. You can change it between two stages. If you need to change it during a stage, you should combine it with the "wall" command in the stage itself.
~You can spawn entities outside of this range, but once they enter the playing field they can't escape again.

file {path}

~{path} is the location of a .txt file which describes a stage.

scene {path}

~{path} is the location of a .txt file which describes a cutscene.

next

~This command doesn't need any arguments.
~When this command is reached, the Stage Complete scene will play, and Scores will be tallied.

branch {name}

~Used to give name to warp destination for endlevel entities which uses 'branch'.
~{name} is the name of the destination.
~Used together with 'branch' feature.

end

~When this is reached, the game will end regardless of the levels after it.
~There's no point of using 'end' without 'branch' so use this together with 'branch'.

typemp {int}

~Controls the conditions under which a player's MP can recover.
0 (or leave blank) = players will recover MP slowly over time.
1 = players will recover some MP when they hit an enemy.
2 = players can't recover MP without using items or dying.
 
« Last Edit: September 16, 2012, 06:03:05 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #7 on: November 27, 2007, 03:39:43 pm »
OpenBoR Manual - Lifebar.txt

Lifebar.txt is an optional file which can be placed in the same directory as MODELS.txt to change the color of lifebars.

{R}, {G}, and {B} are color values from 0 to 255 for Red, Green, and Blue.

If you don't know what that means, try thinking of them as brightnesses. If you had 0 255 0, then there would be no red, no blue, and all green, so you'd have green. If you had 0 0 0, there wouldn't be anything, and you'd have black. 255 255 255 would be all of everything, so it'd be white. 255 0 255 would be red + blue = purple. 128 128 128 would be halfway between white and black, so it'd be grey.

If it still doesn't make sense to you, Look at how colours are represented in Photoshop's info box.
 
~Setting a color to the transparent color doesn't actually make it transparent.
~The color settings must match one of the colors in the default pallete exactly. If your colors aren't correct, try decreasing every color value by 1- some programs report color values to be higher or lower depending on whether they start at 0 or 1.
~It's LIFEBAR.txt, not LIFEBARS.txt.

blackbox {R} {G} {B}

~Determines the color of the 'shadow' around the lifebar and the bar at 500 health.

whitebox {R} {G} {B}

~Determines the color of the outline around the lifebar and the bar at 600 health and up.

color{#} {R} {G} {B}

~{#} must be 25, 50, 100, 200, 300, 400, or 500.
~There's no space between "color" and {#} in color{#}.
~{#} is the health value at which the color will be displayed
~color500 is also used as the background of the lifebar, and is displayed with transparency.

colormagic {R} {G} {B}

~Controls the color of the MP bar.

colormagic2 {R} {G} {B}

~When a player's MP bar is longer than their health, the extra MP is overlaid on top of the first bar in this color, like with health.
« Last Edit: September 16, 2012, 06:03:37 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #8 on: November 27, 2007, 04:14:47 pm »
OpenBoR Manual - PAL.act

This is the ingame pallete.

 

The colour in the top left corner of the grid will be used as the "transparent colour" and must match the colour used in the background of all your entity and stage images.

Traditionally , all entities ( characters , items , obstacles etc) will share the 1st 128 colours whilst stages can use the remaining colours in addition to the first 128.

There are two ways to change or use this file. The first is to use Photoshop, which has built-in support for this format. The second is to use Roel's free online .bmp/.png/.act conversion page. You can find this page HERE.
 
I have attached the complete original BoR pallette, It might prove useful.

Attachment timed out.
« Last Edit: September 16, 2012, 06:04:07 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

Offline Orochi_X

  • Hero Member
  • *****
  • Posts: 3301
  • Now! Count up your crimes.
Re: [FAQ] OpenBoR Basics [Under Construction]
« Reply #9 on: November 27, 2007, 05:11:23 pm »
OpenBoR Manual - Entity Header

These commands go in the header of the entity .txt file.

name {name}

~{name} is the name given to the entity by default.
~It is a string of 1 to 21 characters. You can actually use up to 40 characters, but the name will stretch off the screen or under the timer, making it look silly. You can also make the name even longer than that, but anything past 40 won't be displayed, so you'll really just be making your life harder.
~Program will crash on accessing the entity if you try to put a space in the name. You can safely use an underscore (_) instead.
~It is required- program crashes on access without it.
~Used for Players, Enemies, Items, Projectiles, and obstacles. Basically, everything.

type {type}

~{type}:
player: The entity is a human-controlled player.
enemy: The entity is a CPU controlled enemy or enemy projectile.
npc: The entity is a CPU controlled ally that will seek out and attack enemies. The entity is otherwise functionally identical to enemy entities with the chase subtype. You can change the NPC allegiance via hostile setting. Npc types do not count toward groups.
item: The entity is a stationary item which can be picked up. Items can only give one bonus per item. In other words, you can't make one item that both gives 2000 points AND gives a 1-up.
none: The entity is a useless decoration.
steamer: The entity constantly spews the object called Steam upwards with alpha transparency.
obstacle: The entity is a stationary blockade which can (normally) be destroyed.
text: The entity is a message object. When spawned, it will freeze all objects in play and show it's IDLE animation, then dissapear. It can be sped up by pressing attack or jump. Can be used for level intros, mid-level cutscenes, etc.
trap: The entity is an obstacle which cannot be attacked. It can be made to attack, though, and will hit both players and enemies. If a trap is not set up to knock the entity down, the trap will only damage the entity one time. To hit them again, the target entity must take damage from another entity.
endlevel: The entity is an item which, when touched by a player, will end the stage. It can be given a score value to be awarded for level completion.
pshot: The type is outdated and does nothing. You can still use it, but it's ignored.

subtype {type}

~{type}:
arrow: The entity flies from right to left off the screen. You can use the "flip" command when spawning it to make it fly left-to-right.
noskip: Used with text-type entities. It prohibits the player from using attack or jump to skip through text.
weapon: Used for player weapons which can be picked up and used.
biker: Used for Biker enemies. They fly left and right across the screen and must be knocked off their bikes to be stopped.
notgrab: Does the same thing as the cantgrab command: the entity can't be grabbed.
touch: For items. The item will be collected just by touching it. You won't need to press the attack button.
flydie: For obstacles. When hit, the obstacle will fly horizontally offscreen while playing it's FALL animation.
both: For endlevel items. If there are two players, both must be touching this item to end the stage.
project: For items. When picked up, this entity is treated like a weapon which doesn't actually change any of the character's attributes except for their projectiles. Works for both players and enemies (if they have a GET animation).
chase: For enemies and projectiles. If given to an enemy, he/she will walk towards player all the time. If player is far from the enemy, he/she will run instead. If given to projectile, it will become homing projectile.
follow: For npcs. Will cause an npc to attempt to follow the entity that spawned or summoned it (see below). Uses range setting in idle animation to determine how close it will follow. If the npc exceeds the minimum range and no entities it is hostile towards are nearby, it will move to the spawning entity normally. If it exceeds maximum range, the npc will instantly warp to the spawning entity regardless of what it is currently doing and play it?s respawn animation if it has one. An npc without this subtype will behave exactly like an enemy with the chase subtype. It can potentially follow a hostile across the entire level, and will wander randomly if no hostiles are available.

health {int}

~{int} is an integer, a number from -2147483647 to 2147483647 (which also happens to be (2^31)-1, if you're a math fan).
~This is the total amount of damage this entity can take before they die.
~Do not actually put a boss with 2147483647 health in your game. It's not funny.
~You can use decimal numbers, but it will always round down, so there's no real point.
~If you use a value less than one or greater than 2147483647, the enemy starts off dead. Now that IS funny, but not neccessarily useful.
~If the number is greater than the width of the life bar, the meter will "double up" the display. This can make it hard to tell how much life an enemy has remaining sometimes.
~Not required, but it defaults to zero if it's not there, so that's kind of useless if you don't set it in the level's spawn point.
~Used for players, enemies, items, projectiles, obstacles.
~For items, this tells you how much life you regain when you pick it up.

mp {int}

~{int} is an integer.
~This is the total amount of MP this entity begins with.
~MP is drained by attacks set to drain MP. It can be recovered in several ways.
~You can use decimal numbers, but it will always round down, so there's no real point.
~If the number is greater than the width of the life bar, the meter will "double up" the display. Since the MP bar is already pretty thin, this can make it hard to tell how much MP you have remaining sometimes.
~Not required. If a player doesn't have it, they won't have an MP bar displayed.
~Used for players and items.
~For items, this tells you how much MP you regain when you pick it up.

credit {int}

~For items.
~If an item has this set, it will give player credit when player take it.
~Keep in mind that only one bonus can be given to an item.

alpha {int}

~If set to 1, this entity will be displayed with alpha transparency.
~If set to 2, this entity will use negative alpha transparency (the darker colors are stronger, like shadows).
~If set to 3, this entity will overlay transparency. It's described in the engine as being a combination of alpha and negative alpha, and the formula is "bg<128 ? multiply(bg*2,fg) : screen((bg-128)*2,fg)".
~If set to 4, this entity will use hardlight transparency. Seems to be the opposite of overlay. The formula is "fg<128 ? multiply(fg*2,bg) : screen((fg-128)*2,bg)".
~If set to 5, this entity uses dodge transparency. Described in the code as being "Very nice for a colourful boost of light."
~If set to 6, this entity will use 50% transparency. The entire entity will be 50% transparent: every pixel will be averaged with the pixel right behind it.
~This setting DOES NOT work with remaps.

speed {int}

~{int} is a number from 5 to 300.
~You can use numbers less than 5, but the entity will still move at the same speed. Same with using more than 300.
~Somewhere between 100 and 300, the entity will gain the ability to run off the screen edges and out of the play area, killing it instantly. So that might not be a good idea.
~Setting this to 0 will not stop an enemy from moving. You must use 'nomove' to do that.
~Used for players, enemies, projectiles, and arrows.

running {speed} {height} {length} {move} {land}

~Determines the character's running abilities.
~Used for players and enemies with subtype chase.
~If present, players can run by pressing left or right twice and holding the button. The free special attack's input also changes to left, right, attack and right, left, attack.
~If this is not present, the character will be unable to run.
~{speed} is an integer value which works just like speed.
~Actually, unlike normal speed, running speed can be greater than 300. Of course, you'd still run off an edge into oblivion if you tried to set a running speed that high.
~{height} determines how high a character can jump (if at all) while running. It works like jumpheight.
~{length} is an integer value which changes how far a character can jump while running. It is multiplied by the current jump length.
~{move} is a binary value. It defaults to 0, which means the character stops running if they press up or down. If set to 1, the character will continue running, but will also move up or down at an angle.
~{land} is a binary value. 0 means they stop running after landing from a running jump. 1 means they can continue running if the player holds forward during the jump.

nomove {move} {flip}

~Can be used to make a stationary enemy (one who does not move).
~{move} is a binary value which determines if the enemy can or can't move. Setting it to 0 doesn't do anything, but setting it to 1 stops the enemy from moving.
~{flip} is a binary value which determines if enemies can turn around to face players behind them.
~If {move} is set to 1, the enemy's speed will default to 0.

jumpheight {int}

~{int} is an integer value which determines how high an entity jumps.
~The default value is 4.
~An entity's jumpheight also affects how far it flys when knocked down, and how high and far jumpframe moves you.
~For Bomb entities, this controls how high the bomb arcs into the air.

grabdistance {int}

~{int} determines many things:
~How close this entity must be to another to grab it.
~How far away this entity will stand while holding an enemy.
~How deep this character's attack range is (the range which can be changed with 'z' in LEVELS.txt).
~How close this entity must get to be stopped by obstacles or pick up items.
~How close other entities must be to be damaged or blocked by this trap/obstacle.
~The default value is 36.

throwdamage {int}

~Changes the amount of damage this entity recieves if it gets thrown.
~Defaults to 21.

throw {dist} {height}

~Controls the angle at which this player or enemy flies if they get thrown.
~{dist} is the distance that this entity will fly.
~{height} controls how high off the ground this entity will get before it starts falling back down.

throwframewait {frame}

~Sets at which frame in character's throwing animation, throwing will start.

height {alt}

~Affects an entity's ability to walk under platforms.
~If the platform is higher off the ground than this entity's height, this entity can move under it. Otherwise, it will get pushed out.
~Measured from the offset point up.
~This can only be set once per entity, so test it under multiple animations to make sure nothing goes wrong.

secret {bi}

~Used to make a 'secret' character who must be unlocked.
~Secret characters are unlocked after beating any difficulty setting once, and can only be used in 'secret' difficulty levels.

shadow {int}

~{int} is a number from 0 to 6.
~Each number corresponds to a specific shadow in the SPRITES folder.
~Normally, the lower numbers are smaller.
~This determines which shadow graphic will appear centered at this entity's offset point.
~0 means there won't be a shadow.

fmap {int}

~{int} is a number from 1 to 14 which tells the game what color to make the entity if it gets frozen by an attac
~{int} is the number of a remap palette

load {name}

~{name} is the name of an enemy which will be shot as a projectile.
~The projectile's type should be "enemy".
~The projectile must be named "shot", "knife", or "star". If you don't want to use those names (or they're already used), use the knife, star, and fireb commands.

project {name}

~For subtype "project" items.
~{name} is the name of the new projectile the player or enemy who grabs this can use.

shootnum {int}

~For items which can be used as weapons.
~This is the maximum number of times a weapon can be fired.

counter {int}

~For items which can be used as weapons.
~This is the maximum number of times a weapon can be dropped before it dissapears forever.
~To make weapons hang around basically forever, give them a high value like 100,000 or something. If somebody can drop it that many times, they probably don't deserve to hold onto it!

reload {int}

~For items.
~If a player picks up an item that has this command, it will restore their ammunition by {int}.
~Does nothing if a player doesn't have a weapon.
~Should be used with 'shootnum'.
~Don't forget that items can only give one bonus.

typeshot {bi}

~For weapons.
~Determines if the weapon is a gun or a knife.
~0 means a knife, and ammunition will not be displayed, since you can only throw knives once.
~1 means a gun, so ammunition will be displayed. It will also appear on the ground if you run out of ammunition while using it.

animal {bi}

~For players with a weapon.
~Determines if the weapon is actually an animal to be ridden.
~Animals will run away if they are knocked down enough times.
~Players on an animal can't be grabbed.

playshot {name}

~{name} is the name of an entity.
~The player shoots this with pshotframe #.
~This does exactly the same thing as a specifying {name} as a knife. Note: As of version 2.0691, playshot is no longer supported. Use knife instead.

playshotno {name}

~{name} is the name of an entity.
~The player shoots this with 'pshotframe #'.
~Difference with 'playshot' is that the shot entity won't fly forward or in other word, it will stay on ground and not moving. That means it can fall to holes.
~That also means setting a in 'pshotframe' is useless.

knife {name}

~Used like "load". {name} will be thrown like a knife.
~You'll need to use "load {name} {path}" instead of "know {name} {path}" when declaring the projectile in models.txt.
~Knives can't be used by enemies during a jump. Stars are currently thrown instead.

star {name}

~Used like "load". {name} will be flung like a ninja star in a jump.
~This command actually causes three stars to be thrown at three different angles.
~You'll need to use "load {name} {path}" instead of "know {name} {path}" when declaring the projectile in models.txt.
~Stars can only be used during a jump.

bomb {name} pbomb {name}

~This command is different for players and enemies. Players should use "pbomb" and enemies should use "bomb".
~Used like "load". {name} will be tossed out like a grenade.
~Bombs start off playing their IDLE animation until one of three things happens:
1: The bomb touches an entity
2: The bomb is hit by an attack
3: The bomb touches the ground
~After 1 or 2, the bomb will play it's ATTACK2 animation.
~After 3, the bomb will play it's ATTACK1 animation.
~After playing it's attack animation, the bomb will disappear.
~Bombs are thrown in an arc determined by their speed and their jumpheight.
~You'll need to use "load {name} {path}" instead of "know {name} {path}" when declaring the projectile in models.txt.

hitenemy {canhit} {alt}

~For enemy's projectile entities.
~If {canhit} is 1, this entity can hit other enemies, even if they threw this. Obviously, it still can hit players as well.
~If {canhit} is 0 or left out, this entity can only hit heros.
~If this entity is thrown as a bomb, it won't be able to hit the enemy who threw it until AFTER it explodes.
~{alt} determines when this entity can hit other enemies: 0 means it can hit either while in air or on the ground. 1 means the attack can only hit on the ground.

rider {name}

~For 'subtype biker' enemies.
~{name} should be the name of an enemy in MODELS.txt.
~When the bike is attacked, this entity will fall off.
~Defaults to "K'" (Yes, with an apostrophe ')
~If the rider is only loaded with 'know' in models.txt, you should add 'load {name} {path}' in this biker text to ensure that the 'rider' will fall off.

flash {name}

~{name} is the name of flash animation this entity will use. Defaults to "Flash".
~This is played when this entity is hit, not when it hits another entity.
~'noatflash' is required to make this command is activated.

bflash {name}

~{name} is the name of flash animation this entity will use. Defaults to "Flash".
~This is played when this entity blocks an attack.

dust {name}

~{name} is the name of flash animation this entity will use.
~This is played when this entity lands on the ground after being knocked down by an attack or after jumping.
~If it's not specified, nothing will be shown.

nolife {bi}

~Determines whether or not the player can see the entity's life when they make contact.
0 = they CAN see it. Defaults to 0.
1 = they CANNOT see it.

noquake {bi}

~Determines whether or not the screen shakes if the entity hits the ground after being thrown.
0 = it shakes. Defaults to 0.
1 = it doesn't shake.

nopain {bi}

~Used to make the character not playing his/her PAIN animation when hit by a non-knockdown attack. He will continue what he is doing when attacked.

nodrop {bi}

~Set it to 1 to stop this entity from falling unless he/she/it dies and:
1: There's no DEATH animation
2: There's a DEATH animation, and its 'falldie' flag is set to 1.
~This entity will play corresponding PAIN animation if knockdown attack hits him/her/it. For instance, attack3 will make this entity play PAIN3 even if it's a knockdown attack.

nodieblink {int}

~If set to 3, the entity, when killed, will play it's death animation without blinking, and will not disappear until scrolled offscreen. The enemy won't count towards 'group's after dying, even though they don't disappear. This setting only works for enemies, but the others work for players.
~Set to 2 to prevent the entity from blinking at all during death, and they will disappear after the last frame of their death animation.
~Set to 1 to prevent dead entities from blinking until after the last frame of their FALL or DEATH animation when killed.
~0 means they start blinking as soon as they die

makeinv {int}

~Determines whether or not the character is briefly invincible after being respawned. Otherwise, traps and enemies may be able to attack the player as they reappear- not nice.
~{int} is how many seconds the player will be invincible for.
~{int} also controls how long the parrow and parrow2 are visible.
~You can also use makeinv in item type entities. This will create an item that gives the player {int} seconds of invincibility , much like a star in Mario.

blockodds {int}

~{int} is a number from 1 to 2147483647. It determines how often an enemy will block an attack.
~1 means they'll block almost all attacks. 2147483647 means they pretty much never, ever, ever block, ever.
~Enemies can't block during attacks so don't hesitate using this ;).

thold {int}

~{int} is the threshold for an entity's blocking ability.
~If the entity tries to block an attack with an attack power higher than {int}, they will not be able to do so and will get hit anyway.
~If {int} is 0, an entity will have infinite threshold. In other words, they can block any attacks.
~Regardless of threshold, if an attack is set to be unblockable, it can't be blocked.

blockpain {bi}

~Determines whether the entity plays pain animation during blocking or not.
0 = No pain animation during block.
1 = Pain animation is played during block.

falldie {value} or death {value}

~Determines how DEATH animation will be played when the character dies.
0 = fall, blink on ground then disappear without playing DEATH at all (default).
1 = No FALL animation, DEATH animation will be played right after final blow
2 = Fall first then play DEATH animation. This only applies to enemies.
~MAKE SURE that the character have DEATH animation when using this!

sleepwait {value}

~Determines how long player must stand still in IDLE animation before SLEEP animation is played in centiseconds. Default value is 10 seconds.

aironly {bi}

~If set to 1, this character's shadow will only be visible when it is off the ground (jumping, falling, etc.)

setlayer {int}

~This entity will be displayed as if it were at z position {int}, regardless of it's actual position.

grabback {bi}

~If set to 1, when grabbing, this entity will be displayed behind the other entity being grabbed.

icon {path}

~The graphic normally shown next to the entity's life bar.
~Normally a 16 x 16 box with a picture of the entity's head.
~{path} is the location relative to OpenBoR of the icon's .gif.
~The position of the graphic can be changed in LEVELS.txt.
~You can use a longer image to change the appearence of your character's lifebar, but remember that the box and shadow around it appear on top if you don't turn them off in LEVELS.txt.
~Dimensions of the life bar relative to the icon in bbox format (if you haven't changed it in LEVELS.txt): 18 8 103 9

iconpain {path}

~Same as icon, except this appears instead if the entity is being injured.
~This only works for players.

icondie {path}

~Same as icon, except this appears instead if the entity is dead.
~This only works for players.

iconget {path}

~Same as icon, except this appears instead if the entity is picking up an item.
~This only works for players. Not like anything else has a GET animation.

iconw {path}

~For players with a weapon.
~{path} should point to a .gif file.
~If a player has weapon with a limited number of uses, this icon will appear with a counter for the remaining uses.

iconmphigh {path}

~Same as icon, except this appears when the entity's MP is full.
~This only works for players. Other entities doesn't have MP.

iconmphalf {path}

~Same as icon, except this appears when the entity's MP is half.
~This only works for players. Other entities doesn't have MP.

iconmplow {path}

~Same as icon, except this appears when the entity's MP is low.
~This only works for players. Other entities doesn't have MP.

diesound {path}

~{path} points to a .wav file that plays if the entity is defeated.
~As with all .wav files, MAKE SURE TO KEEP THE FILE SIZE DOWN! Open the file with Microsoft Sound Recorder and cut off any blank or unneeded sections of the file. .wav is a large file format, don't waste all your mod's memory on it!

parrow {path} {x} {y}

~When a player respawns, the image at {path} will flash over the player at {x},{y} compared to their offset.
~The image will be visible for as long as the player is invincible after respawning (determined with makeinv).
~I use -48 -130 for mine. You'll probably want yours to be somewhere around there, but I doubt you're using the exact same image and entity, so experiment.

parrow2 {path} {x} {y}

~If player 2 is playing, and respawns, this will appear instead of parrow. You could just use parrow over again, or you could use something to mark that this is Player 2, not Player 1.

score {onkill} {multiplier}

~Changes the score earned by killing this entity. Both {onkill} and {multiplier} are {int}s.
~When the entity dies, the player who killed him/her/it will get {onkill} bonus points to their score.
~Any hits landed on this entity by a player which would increase the player's score is multiplied by {multiplier}.
~The default value is 5 for the multiplier. Setting {multiplier} to 0 makes it use default setting. Use -1 if you want to set 0 multiplier.
~When used with an item, {onkill} changes the amount of score added when the item is picked up and {multiplier} is not used.

smartbomb (power) (type) (pause) (length}

~This is for players. Enemies use the 'bomb' command for something else. Don't mix the two up!
~If this is present, the player's special will work differently: it will become a "smart bomb" which damages all onscreen enemies, regardless of position.
~{power} is an integer value which determines attack damage.
~{type} is the attack's effect type:
0 knockdown1 (based on attack1)
1 knockdown2 (based on attack2)
2 knockdown3 (based on attack3)
3 knockdown4 (based on attack4)
4 blast
5 burn
6 freeze
7 shock
8 steal
~{pause} is a binary value which determines whether or not all action onscreen pauses when you use your special. Used for a dramatic effect.
~If {type} was set to 6 (freeze), {length} can be used to determine how long the enemies will remain frozen.
~This command can also be used for items. In this way you can make "smart bomb" items to clear the screen. If you do use it with an item, {length} will replace {pause}
~Exactly what is so smart about a bomb that just hits everything, anyway?

toflip {bi}

~Used for hitflashes.
~If {bi} is 0, this hitflash will always face the same direction when spawned. If set to 1, the hitflash will flip when the attack comes from the other side.

cantgrab {bi}

~{bi} determines whether or not an entity can be grabbed and held (or thrown).
~If set to 1, opponent who stand close to this entity will simply pass through.

paingrab {bi}

~For enemies.
~Determines whether the enemy can be grabbed normally or only in pain animation.
0 (default) = enemy can be grabbed normally, if the enemy is grabbable that is.
1 = enemy can only be grabbed in pain animation, if the enemy is grabbable that is.

noatflash {bi}

~When {bi} is 1, this entity will always play it's personal 'flash' when hit, instead of the attacker's. Useful for obstacles.

remove {bi}

~Only works for projectiles. Defaults to 1.
1 = the projectile will be destroyed when it hits an enemy.
0 = the projectile continues flying even after hitting an enemy.

escapehits {int}

~For enemies
~If you give this to an enemy, the enemy will perform SPECIAL2 when they get hit by int+1 hits. Don't forget to give the enemy anim SPECIAL2 if you're using this.
~In case you haven't figured out, this feature is to make enemy counter attacks after they get certain number of consecutive hits.
~The counter will reset if enemy plays any animation EXCEPT IDLE, FAINT and PAIN. The counter works even with grabattacks.

com {dir1} {dir2} {action} freespecial{#}

~Allows you to customize freespecial input commands.
~The {#} should be the number of the freespecial you want to change. You can leave it blank for 1 or use 2 though 8 for 2 through 8.
~There is no space between freespecial and {#}.
~The input will become {dir1}, {dir2}, {action}.
~{dir1} or {dir2}: U: Up
D: Down
B: Back (The direction opposite your current direction. If used, the character will turn around.)
F: Forward
~{action}:
A: Attack button
J: Jump button
S: Special attack button
K: Alternate special attack button
~You can use either S or K for the special attack button commond. You can only use one or the other, so pick one and stick with it. This was done so that modders who use the special key for blocking can remember the key is used to blocK, not use Specials. (B would have been used, for Block, but B is already used for Back.)
~Make sure that you don't have any conflicts with other commands. RUN, DODGE, and the directional ATTACKs all have inputs which can be the same as freespecials.
~If you use B for {dir1}, flip the next input. The player changes direction, remember? So B, F, A would be 'turn around, move forward, attack', but since you turned around first, moving forward would mean moving in the direction you just turned to. If you wanted to have an input like Street Fighter's Guile or Charlie's Sonic Boom, you'd need to use B, B, A instead of B, F, A.

remap {path1} {path2}

~Allows you to create alternate palletes for entities.
~Each entity can have up to 14 palletes.
~{path1} is a sprite of an entity in their normal pallete. {path2} is a sprite of the entity in an alternate pallete.
~You should not change the file's pallete. The only changes should be to the pixels in the image, not the pallete data.
~Player 2 normally uses the first alternate pallete, but both players can select their color when choosing a character with up and down if the colourselect option is on.
~If your entity has sprites with incorrect colors in alternate palletes, the entity may use colors which are not in {path1}. Check the frames with incorrect colors and compare them. Then just add the colors somewhere in {path1} and the new colors in the same position in {path2}. If that sounds confusing, look at K9999's remaps. That's what I mean.

atchain {number} {number} {number} {number} {number}

~Determines the attack chain order for player. The attack chain only starts if the first attack hits.
~{number} can be either 1, 2, 3 or 4. 1 refers to ATTACK1, 2 to ATTACK2 and so on.
~You can repeat the same number if you need to.
~You don't have to use all 5 of them. Setting something like 'atchain 1 3 2' works.
~Default combo is 'atchain 1 1 2 3'.

chargerate {int}

~Determines how fast MP recharge with CHARGE animation would be. Default value is 2.

mprate {int}

~This sets how many MP player recovers (by time and by hitting enemy)
~If typemp = 1, this is the amount MP player recover from hitting enemy.
~If typemp = 2, this is the amount MP player recover on regular intervals.

risetime {value}

~This is for altering risetime (wait time for character while lying down after falling before rising).
~Positive value reduces risetime making the character rises earlier.
~Negative value increase risetime making the character rises more late.

turndelay {int}

~ This sets how long the character performs BACKWALK before turning back.
~ {int} is time in centiseconds.
~ This is used together with TURN and BACKWALK.

facing {int}

~ This is for forcing the entity to face certain direction regardless where he/she is going.
0 = no force (default).
1 = force the entity to face right.
2 = force the entity to face left.
3 = force the entity to face same direction with level's direction.
~ Setting this allows players to play BACKWALK.

weaploss {flag}

~Determines how weapon could be lost when the character is wielding a weapon.
0 (default) -> weapon is lost and dropped on any hit.
1 -> weapon is lost only on knockdown hit.
2 -> weapon is lost only on death.
3 -> weapon is lost only when level ends or character is changed during continue. This depends on the level settings and whether players had weapons on start or not.
~This setting can also be declared in weapon text. If you do so, the setting will override similar setting in character's text and it will only be used for that weapon.

branch {name}

~This is used to make endlevel entity warps players to certain level instead of the next level in a level set if player touch it.
~{name} is name of the destination in a level set.
~In case you haven't figure it out, this feature is to make branch for multiple paths.

fireb {name}

~This was used like "load". {name} was launched like a shot.
~This command has been removed. Use knives instead.

hostile {type1} {type2} ...

~Optional.
~Specifies what types an AI controlled entity will attack and what entities a projectile with the chase subtype will seek (this does not determine what the entity can hit, only what it will intentionally attack).
~Available types are enemy, player, npc, obstacle, shot and you can use as many as you need.
~Be aware if you use this setting, you must provide all types you wish this entity to be hostile towards. That is to say, an enemy with ?hostile npc obstacle? will only attack npc and obstacle types, not players.

candamage {type1} {type2} ...

~Optional.
~Specifies what types this entity can hit (very similar to hostile, but determines what entity may hit, not what it will intentionally target).
~Available types are enemy, player, npc, obstacle, shot and you can use as many as you need.
~Be aware if you use this setting, you must provide all types you wish this entity to be able to hit. That is to say, an enemy with ?candamage npc obstacle? will be able to hit npc and obstacle types, not players.

projectilehit {type1} {type2} ...

~Optional.
~Do not let the name confuse you, this is not for projectiles. This setting specifies what types this entity will hit when thrown from a grab.
~Available types are enemy, player, npc, obstacle, shot and you can use as many as you need.
~Be aware if you use this setting, you must provide all types you wish this entity to be able to hit when thrown. That is to say, an enemy with ?projectilehit player? will only hit players when thrown, not other enemies.

aggression {value}

~For enemies, this command modifies pausetime for enemy before they attack after player is within attack range.
~Positive value reduces pausetime making the enemy reacts faster.
~Negative value increase pausetime making the enemy reacts slower.

antigrab {value}

~This command sets entity's resistance to grabbing attempt by opponent. To grab this entity, opponent's 'grabforce' must equal or more than {value}.
~Used in conjuction with 'grabforce'.

grabforce {value}

~This command sets entity's power to grab an opponent. This entity will have success grab if opponent's 'antigrab' is equal or less than {value}.
~Used in conjuction with 'antigrab'.

offense {type} {%}

~Increases or decreases damage output of given attack type by %.
~For example, "offense shock 50%" will increase shock attacks by 50%, whereas "offense burn -75%" will decrease burn attacks 75%.
~ % could go more than 100 and -100. -100% makes the attack to give HP to opponent instead.
~ Possible types are:
all (all default attacktypes are affected)
normal# (replace # with appropriate attacktype number)
shock
burn
steal
blast
freeze (only affects damage, freeze effect remains)
~If you use attacktypes more than 10, setting 'all' won't affect attack11 and next attacks. You gonna have to set for each extra attack if you want to affect them too.

defense {type} {%}

~Increases or decreases damage received by given attack type by %.
~For example, "defense attack3 60%" will decrease attack3 damage by 60%, whereas "offense blast -45%" will increase blast damage by 45%.
~ % could go more than 100 and -100. -100% makes the entity regains HP from the respective attack instead.
~ Possible types are exactly sames with 'offense' (see above).

hmap {a} {b}

~Hides entity's remap from being selected (in select screen for heroes and in levels for enemies).
~Hidden remaps are from ath remap to bth remap.
~For example 'hmap 3 6', hides 3th, 4th, 5th and 6th remap.
~Normally used with scripts.

bounce {int}

~Determines whether entity will bounce or not after touches ground after falling.
0 = No bounce effect
1 = Bounce effect is set
« Last Edit: September 16, 2012, 06:04:48 am by MatMan »


* Orochi_X says : " Sore ga doushita? " :looney:

 



 0%




mighty
SimplePortal 2.3.3 © 2008-2010, SimplePortal