Browse Source

Initial Commit

Maxim Stewart 4 years ago
  1. 3
  2. BIN
  3. 67
  4. 12
  5. 51
  6. 67
  7. 17
  8. 499
  9. BIN
      Other/000_Notes/Anyone can do skins tutorial 3.pdf
  10. BIN
      Other/000_Notes/Attached Effects.doc
  11. 2056
  12. 277
      Other/000_Notes/Cade_Allos' Guide to Hex Editing/CadeAllosguidetohexediting.txt
  13. 224
      Other/000_Notes/Cade_Allos' Guide to Hex Editing/Charactor Guide #2.txt
  14. BIN
      Other/000_Notes/Cade_Allos' Guide to Hex Editing/mission.lvl
  15. 674
  16. 2345
      Other/000_Notes/ODF Parameters.txt
  17. BIN
      Other/000_Notes/Particle Editor and You.doc
  18. 71
  19. 81
      Other/000_Notes/Vegati's Guide to Making a Decent Map in BF2.txt
  20. 81
      Other/000_Notes/Vegatis_guide_to_making_a_decent_map_in_bf2/Vegati's Guide to Making a Decent Map in BF2.txt
  21. BIN
  22. BIN
  23. BIN
  24. BIN
  25. BIN
  26. BIN
  27. BIN
  28. 1
  29. 656
  30. 769
  31. 656
  32. BIN
  33. 656
  34. 229
  35. 200
  36. BIN
  37. BIN
  38. BIN
  39. 5
  40. BIN
  41. BIN
  42. 4
  43. BIN
  44. BIN
  45. 17
  46. BIN
  47. BIN
  48. BIN
  49. BIN
  50. 6
  51. BIN
  52. BIN
  53. BIN
  54. 79
  55. BIN
  56. BIN
  57. BIN
  58. BIN
  59. BIN
  60. BIN
  61. BIN
  62. BIN
  63. BIN
  64. BIN
  65. BIN
  66. BIN
  67. BIN
  68. BIN
  69. BIN
  70. 6
  71. BIN
  72. BIN
  73. 22
  74. BIN
  75. 145
  76. BIN
  77. BIN
  78. BIN
  79. BIN
  80. BIN
  81. BIN
  82. BIN
  83. BIN


@ -0,0 +1,3 @@
-- Copy one of the files to the worlds folder of ones map.
-- Rename it to the 3 letter name of the map exactly!
-- Try copying other settings too.


Binary file not shown.


Width:  |  Height:  |  Size: 16 KiB


@ -0,0 +1,67 @@
// regular ember
Color(255, 255, 255);
AlphaMinMax(0.5, 0.9);
// light ember
Color(255, 255, 255);
AlphaMinMax(0.3, 0.45);
// heavy snow
Color(255, 255, 255);
AlphaMinMax(0.3, 0.45);


@ -0,0 +1,12 @@
Range(60.0, 100.0);
Color(168, 172, 180, 128);
Velocity(5.0, 0.0);


@ -0,0 +1,51 @@
// light rain
Color(216, 220, 228);
AlphaMinMax(0.3, 0.45);
// heavy rain
Color(216, 220, 228);
AlphaMinMax(0.3, 0.45);


@ -0,0 +1,67 @@
// light snow
Color(255, 255, 255);
AlphaMinMax(0.3, 0.45);
// heavy snow
Color(255, 255, 255);
AlphaMinMax(0.3, 0.45);
// blizzard
Color(255, 255, 255);
AlphaMinMax(0.5, 0.9);


@ -0,0 +1,17 @@
Angle(120.000000, -30.000000);
Color(255, 255, 255);
HaloInnerRing(0.0, 255, 255, 255, 255);
HaloMiddleRing(10.0, 255, 200, 0, 128);
HaloOutterRing(40.0, 255, 127, 0, 0);


@ -0,0 +1,499 @@
Soldier Animation System
human [custom]
Soldier animations are organized at the top level by a hierarchy of
character types, each of which (except human, the root) inherit from
another character type in the hierarchy (default: human).
Examples of custom character types are 'bdroid', 'ewok', and so on.
Custom character types are generally distinguished from human by a custom
skeleton, and allow the overriding of movement and action animations
independent of the weapon being used. Custom types may be defined in
soldier ODFs using the SkeletonName or AnimationName tag.
rifle bazooka tool pistol grenade melee
Soldier animations are organized next by a hierarchy of weapon types, each
of which (except rifle, the root) inherit from another weapon type in the
hierachy. For the predefined standard types, bazooka and tool inherit
from rifle and pistol, grenade, and melee inherit from tool. Custom
weapons may be defined in weapon ODFs using the CustomAnimationBank or
ComboAnimationBank tag and must specify either a standard type or a
previously defined custom type as their parent.
Examples of custom weapon types might be 'hanblaster' from 'pistol' or
'lukesaber' from 'melee'. Custom weapon types are useful for defining new
weapon animations while still inheriting a skeleton and movement
animations independently based on character type.
Each weapon may or may not support alert states. For instance, bazooka
and melee do not, since they are effectively always alert. Combo weapon
types also specify a combo file controlling the weapon FSM simulation and
associated animation states.
stand crouch prone standalert crouchalert pronealert
A soldier who is not playing action, custom, or override animations is
always in one of the above postures. Alert postures are used for a few
seconds after playing a weapon_shoot* animation to avoid popping when
shooting repeatedly.
upper lower full
A soldier is divided into upper and lower parts which can be animated
independently or together.
Animations come in several types, but most have the following parameters:
Loop - does the animation loop when it completes.
Blend time - how long does the animation take to blend in when it begins.
Scope - if the animation does not override it, what parts of the soldier
are affected by the animation.
Currently, loop and blend time are hard coded.
Weapon Animations:
shoot shoot2 shoot_secondary shoot_secondary2
charge reload
Weapon animations cover various weapon specific actions, and are named
<character>_<weapon>_<posture>_<anim>[_<scope>]. For example,
<posture> does not include alert postures for weapon animations - weapon
animations are effectively always alert.
<scope> defaults to 'upper' for all weapon animations, as they will
generally be combined with movement animations on the lower body. A
weapon animation that overrides this to 'full' by being named, for
instance, human_rifle_stand_shoot_full, will also have precedence over
idle movement animations on the lower body.
<loop> is false for all weapon animations.
<blend time> is 0.02s for shoot*, 0.5s for other weapon animations
Any weapon animations that are not directly defined for a character and
weapon combination will inherit from other animations based on the
following rules, until a defined animation is found. For example, for
1) from <character parent>_<weapon>_<posture>_<anim>, i.e.
from human_tool_crouch_shoot2
2) for shoot* anims, from shoot or shoot2 or shoot3, i.e.
from bdroid_tool_crouch_shoot, bdroid_tool_crouch_shoot3
3) for posture 'crouch', from <character>_<weapon>_stand_<anim>, i.e.
from bdroid_tool_stand_shoot2 (this is to support grenades/melee)
4) from <character>_<weapon parent>_<posture>_<anim>, i.e.
from bdroid_rifle_crouch_shoot.
Note that all inheritance actually happens character by character, and
that rule 1 is applied for all weapons before rules 2-4 are applied. In
simpler terms, all human_* animations are resolved before bdroid attempts
to inherit from human, and all bdroid_tool_* animations inherit from
human_tool_* before bdroid_grenade_* attempts to inherit from them.
Additional rules for inheritance are defined in specific cases -
See SoldierAnimatorClass.cpp::_PostLoad() for the details, which have
become complicated...
After the inheritance rules have been applied, all animations except
must be defined for the upper body, and no animations must be defined for
the lower body. Weapons without a charge state do not need a charge
animation, and weapons without reload do not need a reload animation.
The inheritance rules allow for only one of the shoot* animations being
defined, and for crouch animations being undefined, since they default
to stand posture.
Movement Animations:
idle_emote idle_checkweapon idle_lookaround(idle_takeknee)
turnleft turnright
walkforward runforward walkbackward runbackward
walkright runright walkleft runleft
Movement animations cover various turning and walking actions, and are
named <character>_<weapon>_<posture>_<anim>[_<scope>]. For example,
<posture> may include alert animations for weapons that support them.
<scope> defaults to 'full' for human_rifle_*, to 'lower' for turn*
animations, and to 'upper' for other animations.
<loop> is true for all animations except turn*.
<blend time> is 0.4 for prone/pronealert postures and 0.15 for others.
Any movement animations thate are not directly defined for a character
and weapon combination will inherit from other animations based on the
following rules, until a defined animation is found. For example, for
0) for alert postures with weapons that do not support alert states,
simply copy the final results from non alert posture.
1) from <character>_<weapon parent>_<posture>_<anim>, i.e.
from bdroid_rifle_crouchalert_idle_lookaround. For alert postures,
weapons which support alert states inherit from the first parent which
also supports alert states, skipping any that do not.
2) from <character parent>_<weapon>_<posture>_<anim>, i.e.
from human_tool_crouchalert_idle_lookaround.
3) from <character>_<weapon>_<nonalert posture>_<anim>, i.e.
from bdroid_tool_crouch_idle_lookaround
4) for human_*idle* and human_*turn* animations, from idle_emote then
stand_idle_emote, i.e. human_tool_crouch_idle_checkweapon would
inherit from human_tool_crouch_idle_emote, then
Inheritance works as in weapon animations, with rules 0, 1 applied first.
Additional rules for inheritance are defined in specific cases -
See SoldierAnimatorClass.cpp::_PostLoad() for the details, which have
become complicated...
After the inheritance rules have been applied, all idle animations must be
defined for the full body, turn animations for the lower body. At least
one of walk/run must be defined for the full body for forward and backward.
If at least one of walk/run is defined for left and for right, the
character will sidestep rather than twisting his body when moving left or
right. The inheritance rules also allow for idle_checkweapon and
idle_lookaround being undefined.
Action Animations:
jump jump_up jump_forward jump_backward jump_left jump_right
landsoft landhard fall thrown_flail
thrown_flyingfront thrown_flyingback
thrown_flyingleft thrown_flyingright
thrown_tumblefront thrown_tumbleback
thrown_bouncefrontsoft thrown_bouncebacksoft
thrown_landfrontsoft thrown_landbacksoft
thrown_restfrontsoft thrown_restbacksoft
diveforward jetpack_hover
stand_getupfront stand_getupback
stand_getdown_prone crouch_getdown_prone
prone_getup_stand prone_getup_crouch
stand_death_forward stand_death_backward
stand_death_left stand_death_right
Action animations cover various full body transitions and special
movements, and are named <character>_<weapon>_<anim>[_<scope>]. For
example, bdroid_tool_jump.
<scope> defaults to 'full' for human_rifle_*, and to 'upper' for others.
<loop> is true for thrown_flail, thrown_tumblefront, thrown_tumbleback,
abd jetpack_hover, and false for all others.
<blendtime> is 0.8s for fall, 0.5s for thrown_flail, 0.4s for jump*,
thrown_land*, 0.1s for thrown_tumble* and thrown_bounce*, 0.05s for
landsoft and landhard, and 0.15s for all others.
Any action animations that are not directly defined for a character and
weapon combination will inherit from other animations based on the
following rules, until a defined animation is found. For example, for
1) from <character>_<weapon parent>_<anim>, i.e.
from bdroid_rifle_jump_up.
2) from <character parent>_<weapon>_<anim>, i.e.
from human_tool_jump_up.
Inheritance works as in weapon animations, with rule 1 applied first.
Additional rules for inheritance are defined in specific cases - for
instance, jump_* -> jump, sprint -> stand_runforward, jetpack_hover ->
jump, and so on. See SoldierAnimatorClass.cpp::_PostLoad() for the
details, which have become complicated...
After the inheritance rules have been applied, all animations must be
defined for the full body.
Combo Animations:
Combo animation names are defined in combo files, along with data
controlling their blend times, looping behavior, and so on.
Custom Animations:
Custom animations generally cover various full body poses, generally
used when piloting various vehicles, and are named either
<character>_<weapon>_<anim> or <character>_<anim>. For example,
human_minigun_9pose or bdroid_ride_stap.
The names of these animations are defined in vehicle ODFs using one of
the tags PilotAnimation, SoldierAnimation, or AttachTrigger (used by
Sarlacc Technology (TM)).
Custom animations are always full body and do not support _<scope>.
Custom animations also do not loop or blend.
Any custom animations that are not directly defined for a character and
weapon combination will inherit from other animations based on the
following rules, until a defined animation is found. For example, for
0) from <character>_<weapon parent>_<anim>, i.e.
from bdroid_rifle_stap_ride.
1) from <character>_<anim>, i.e.
from bdroid_stap_ride.
2) from <character parent>_<weapon>_<anim>, i.e.
from human_tool_stap_ride.
Inheritance works as in weapon animations, with rules 0, 1 applied first.
After the inheritance rules have been applied, all custom animations must
be defined for every character.
Soldier Low Resolution Animation System
humanlz [custom]
Low res animation banks are separated by character type. Custom types
default to inheriting from humanlz, but may specify an alternate parent
if it is already defined. Examples of custom types are bdroidlz, and
rifle_stand_idle_emote rifle_crouch_idle_emote
[rifle_prone_idle_emote] rifle_stand_flail
rifle_jetpack_hover rifle_diveforward
rifle_stand_runforward rifle_stand_death_backward
Low res animations cover all possible lowres animation states, and are
named <character>_<anim>, for example bdroidlz_rifle_stand_idle.
All are full body in scope. Any low res animations that are not defined
for a character type inherit from the parent bank. All animations must
be defined in humanlz.
With the exception of runforward and death, all are single frame poses
that may be shared by any number of low res soldiers.
Run animations use a pool of N (currently 3) looping animators, which can
be shared - i.e. if there are more than 3 humanlz low res soldiers on
screen, they will begin to share poses.
Death animations use a pool of N (currently 8) unshared LRU non-looping
animators. If there are more than 8 humanlz low res soldiers on screen
and dying, additional soldiers will take animators from the oldest
animating soldier.
Combo Animations:
Combo animation names are defined in combo files, along with data
controlling whether the animation is reduced to a pose or not. The low res
animation system currently just uses the high res animations from the high
res banks, applied to the low res skeleton - perhaps 10% performance could
be gained by converting these animations to the low res skeleton.
Combo animations use a special high res unshared pool of fixed size, similar
to the death animation pool, unless they have been defined to use a single
frame pose, in which case they behave like a shared single pose anim.
Custom Animations:
Low res custom animations work similarly to those for high res animation,
except that there is no support for alternate weapons (the animation for
ride_stap must be named [bank]_ride_stap or [bank]_rifle_ride_stap.
Soldier First Person Animation System
humanfp droidekafp
First person animation banks are separated by character type, so that
droideka animations will only be loaded when droideka are present on a
map. No custom types are supported currently.
rifle bazooka tool grenade (lascannon)
First person animations are grouped by weapon type. No custom weapon
types are supported currently.
idle run shoot shoot2 charge reload repair
jump flail handsdown
First person animations cover all possible first person animation states,
and are named humanfp_<weapon>_<anim>, with the exception of
handsdown, which is named humanfp_<handsdown>.
Droidekafp only contains four animations, idle, walk, shoot, and reload,
but is otherwise similarly named (droideka_rifle_<anim>).
First person animations are loaded according to a hardcoded table. Some
animations do not exist for some weapons and are hardcoded to load
alternates. Any animations which are not found default to
Animation System Data
Extracts the skeleton and animations from a set of msh files in a
directory named basepose.msh and <anim>.msh, and outputs a ZAF file
containing the skeleton, a ZAA file containing the animations, and an
ANIMS file containing a utfc format (text) list of animations in the ZAA.
Converts ZAF and ZAA files to ZAFBIN, ZAABIN files used by the game,
Now generates requirements for individual animations, soldier animation
sets, as well as for ZAABINs and ZAFBINs correctly.
Now handles requirements for individual animations, soldier animation
sets, as well as for ZAABINs and ZAFBINs correctly, using an updated
version of FILES table of content files.
Contains all animation data used to build the ZAABIN, ZAFBIN, and ANIMS
files used during the game munge process. Animations are built as a
separate munge process using the munge.bat in this directory, and the
resulting files are checked into perforce in the appropriate munged
directory (Data/Common/munged, or Data/Sides/ALL/munged, for example).
Animations are broken down into subdirectories based on type:
SoldierAnimationBank/ for soldier animation banks and lowres animation
banks, SoldierAddon/ for soldier addons like capes, FirstPerson/ for first
person animation banks, Prop/ for world prop animations, and Vehicle/ for
vehicle animations.
ZAFBIN files - contain a skeleton, possibly associated with a ZAABIN file of
the same name.
ZAABIN files - contain a bank of animations.
ANIMS files - contains a text format (utfc) list of animations in a ZAA.
Data/Common/config/SoldierAnimation.SANM file
A config format file containing data controlling the looping, blending,
and other animation properties of all standard high-res soldier animations.
See combo.txt for formatting information - the format is the same as
Animation tags from that combo config files.
Soldier Animation Banks:
Soldier animation banks follow some specific additional rules.
Banks are expected to be named either <character> or <character>_<weapon>.
A bank is expected to only contain animations with names beginning with
the bank name, i.e. bdroid.zaabin should contain animations matching
bdroid_*, and human_melee.zaabin should only contain animations matching
human_melee_*. A bank may consist of only a skeleton (zafbin), or may
also contain override animations.
Any bank may additionally be broken into multiple parts in order to
deal with the size limitation imposed by the in game loader. The
resulting parts must be named with an appended '_0', '_1', and so on.
human.zaabin, for instance, is split into human_0 through human_4.
Only human_0's associated skeleton (zafbin) is required at load time.
ODF Properties -
Soldier ODFs:
AnimationName = "<character> [<parent>]"
SkeletonName = "<character> [<parent>]"
AnimationName and SkeletonName are synonyms.
If no property is found, <character> defaults to 'human'.
<parent> defaults to 'human'.
Specifies a custom skeleton and possibly animation bank to use
for this soldier and its place in the character hierarchy.
Generates a requirement for <character>.zafbin and optionally for
ex. SkeletonName = "wookie"
AnimationLowRes = "<character>"
SkeletonLowRes = "<character>"
AnimationLowRes and SkeletonLowRes are synonyms.
If no property is found, <character> defaults to 'humanlz'.
Specifies a custom low res skeleton and possibly animation bank to
use for this soldier.
Generates a requirement for <character>.zafbin and optionally for
ex. SkeletonLowRes = "wookielz"
Weapon ODFs:
AnimationBank = "[<character>_]<weapon>"
<character>_ defaults to 'human_'.
Specifies the weapon type used by this weapon for animation,
which must either be a standard type or a type previously defined
with CustomAnimationBank (see below).
At run time, <character> is ignored, since the character type is
based on the soldier wielding the weapon.
Generates a requirement for <character>_<weapon>_* animations
which requires a zaabin containing the given animations. If the
animations in question are in a weapon specific bank, i.e.
gam_melee_* to be found in gam_melee.zaabin, it is useful to
specify <character> in order to generate the correct requirement.
ex. AnimationBank = "rifle"
CustomAnimationBank="[<character>_]<weapon> <parent> [alert|noalert]"
Defines a custom weapon type used by this weapon for animation
and its relationship to the weapon hierarchy.
<character>_ defaults to 'human_'.
<parent> must either be a standard type or a type previously
defined with CustomAnimationBank.
If alert or noalert is specified, the weapon will either support
alert postures or not. If not specified, it will inherit the
alert support of its parent weapon.
At run time, <character> is ignored, since the character type is
based on the soldier wielding the weapon.
Generates a requirement for <character>_<weapon>_* animations
which requires a zaabin containing the given animations. If the
animations in question are in a weapon specific bank, i.e.
gam_melee_* to be found in gam_melee.zaabin, it is useful to
specify <character> in order to generate the correct requirement.
ex. CustomAnimationBank = "leia_pistol pistol alert"
ComboAnimationBank="[<character>_]<weapon> <parent> <combofile>"
Defines a custom melee weapon that uses a combo file to control
the weapon simulation and animations, and its relationship to
the hierarchy.
<character>_ defaults to 'human_'.
<parent> must either be a standard type or a type previously
defined with CustomAnimationBank/ComboAnimationBank.
At run time, <character> is ignored, since the character type is
based on the soldier wielding the weapon.
Generates a requirement for <character>_<weapon>_* animations
which requires a zaabin containing the given animations. If the
animations in question are in a weapon specific bank, i.e.
human_sabre_* to be found in human_sabre.zaabin, it is useful to
specify <character> in order to generate the correct requirement.
Also generates a requirement for <combofile>.combo.
ex. ComboAnimationBank = "human_sabre melee all_hero_lukejedi"
Other ODFs:
AnimationName = "<bankname>"
Specifies a skeleton and possibly a bank of animations to use for
this object.
Generates a requirement for <bankname>.zafbin and optionally for
...Animation = "<animname>"
Specifies a specific animation to be found in an already loaded
animation bank.
Generates a requirement for an animation named <animname>.
Controllable ODFs:
PilotAnimation = "<animname>"
Defines a custom soldier animation <animname>.
Generates a requirement for a soldier animation named
OrdnanceGrapplingHook/WeaponAreaEffect ODFs:
SoldierAnimation = "<animname>"
Defines a custom soldier animation <animname>.
Generates a requirement for a soldier animation named
EntityPropAnimated ODFs:
AttachTrigger = "<name> <...> <animname> <soldier_animname> ..."
Defines a custom soldier animation <soldier_animname>.
Generates a requirement for an animation '<animname>' and a
soldier animation named 'human_<soldier_animname>'.

Other/000_Notes/Anyone can do skins tutorial 3.pdf

Binary file not shown.

Other/000_Notes/Attached Effects.doc

Binary file not shown.


File diff suppressed because it is too large

Other/000_Notes/Cade_Allos' Guide to Hex Editing/CadeAllosguidetohexediting.txt

@ -0,0 +1,277 @@
Cade_Allos' Guide to HEX-Editing, for beginners.
This is my first guide, so it may not be good for some, but I hope it helps.
Hex Editor. Pspad recommended, I use it and find it very good.
Star Wars Battlefront II, already installed
Mouse with scoll wheel, to move up and down easily, although not essential, it works best.
Use this tree for easy reference. Just type in the code in the find cosole and it should take you there.
1.0 Introduction
1.1 How I will be explaining this guide
1.2 What files to mod and where to find them
1.3 Rules
2.0 Changing Heroes
2.1 Changing Infantry
2.2 Changing On-ground vehicles
2.3 Swapping Space Vehicles and Sides with another Side
3.0 Miscellaneous Stuff
3.1 Factions and their code formats
3.2 Vehicle and Infantry code guide
3.3 Give your Ewok firepower!!!
3.4 Just as real
3.5 Credits
1.0 Introduction
This is a more advanced version of a hex editing guide. Here I will explain the very basics of hex editing, as
1.1 How I will be explaining the guide:
* Ok, I will be addressing the character and vehicle lines as "codes". An example of a "code" would be: rep_hero_anakin.
* You MUST abide the rules at all times, to save yourself from trouble
* I will only be explaining modding in Instant Action, Conquest mode. I will not do anything else, like CTF.
* Sides are the armies such as Republic or Empire
* Important notes will be displayed something like ***NOTE***
* In a HEX editor there are two sides, left and right. The left is numbers the right is letters. I will name the left
as the 123 side and the right as the ABC side.
* The Heros and Villains will be referred to as 'Infantry' as putting them in is the same as putting ordinary infantry in
* You must save after each change you finish
* Although long and tiring, I suggest you check your mods in the game if they're working correcly, before you mod anything
else, as if you make a mistake, it will be difficult to find the problem
* A good way to evade that last rule, is to make backups of your mods. So if you finished a mod, save it and store it
in a folder AWAY from the original mission.lvl. Be sure to create subfolders e.g: Original mission.lvl backup and
Republic vs. Empire mission.lvl backup.
1.2 What files to mod and where to find them:
Ok, the main files to mod are found in: C:\Program Files\LucasArts\Star Wars Battlefront II\GameData\data\_lvl_pc
Just copy that link and paste it into your file browser. The main file that most or maybe all of your mods will be
the mission.lvl file. Make sure you have at least 2-3 backup copies. More files will be used to mod things such
as switching vehicles, but that will be covered later on in the guide.
1.3 Rules
* Before you do a single mod, you MUST backup all files. Just copy the LucasArts folder and paste it in a handy folder.
I have a folder named: "Star Wars Battlefront II mod files". I'd advise you to make a folder like that for mod files and
backups if you don't want your files scattered all over the desktop.
* I hope this doesn't put you down, but you must only edit an infantry or vehicle code that has more chatacters than the
infantry or vehicle you are trying to add.
* I am not yet a master of HEX editing, but there are some things you can't change. Sometimes when you change things
it will either not appear or worse, crash to the desktop.
* You can only REPLACE ingame infantry or vehicles. There is no way you can ADD, otherwise that will change the size of the
folder and the game won't read your file properly.
* Choose a good editor that highlights your changes. I use Pspad because it highlights my changes in yellow.
2.0 Step 1: Changing heros
I've started with changing heros first, because it is more basic and will start you off with the needed knowledge for other
steps. Now you maybe wondering, what on earth is Obi-Wan Kenobi doing on the death star? Or perhaps you have grown tired
of Ki-Adi-Mundi because you hate how long his lead is? Well read on.
First off, you will need to select your world with the hero you want to change. In this example, we will be going to replace
Mace Windu, on Coruscant. Open up your mission.lvl file with your Hex Editor. Now if you're a first timer to Hex
editors, then you might be freaked out at the amount of random characters. Don't change ANY character. Only change
the correct characters to mod. If you change a character thats not supposed to be changed, then your mission.lvl won't
work with the game properly. You will be using the right side for editiing. Ok, now to work. Tap Ctrl+F to bring up the
'find' console. Type in: cor1_conquest. Scroll up until you see rep.lvl. This is the Republic Side. Don't drag the box on
the side or it will take you too far up or down. Now scan the lines until you see the codeline rep_hero_macewindu. This
line is Mace Windu's SWBFII game code. Now this is were it gets tough. Click on the 'r' of rep_hero_macewindu, basically
the beggining character of the code. Now type over the code with: rep_hero_anakin.
any character otherwise it will change the file size of the mission.lvl folder, and if it changes, you won't be able to
play the game. If you do make a mistake and save the file accidently, simple copy and replace the mission.lvl file in
C:\Program Files\LucasArts\Star Wars Battlefront II\GameData\data\_lvl_pc with your backup.***
Now you should be left with rep_hero_anakinndu. Now click on the second "n". Now look on the 123 side of the hex pad.
You should see the character "6E" highlighted. Click on it. You should see the characters 64 75 after 6E [6E64 75].
Now those are the extra "ndu" characters on the ABC side. Now you need to remove these. To do this, you have to write
0000 00 over 6E64 75. The '00's show that you are saying 'nothing'. When done, you should see the 'ndu' replaced with
3 dots (on some editors, it may show rectangular squares). These dots mean nothing, while the dots (formerly full-stops)
on your keyboard is not the same. Don't use the full stop on you keyboard. Every two '0's (00) represent one dot.
You have now replaced Mace Windu of Coruscant
with Anakin Skywalker.
***On some maps it's different. There will not always be something like hot1_conquest, you'll have to find it yourself.
If you're modding other maps, and you're not sure if its the conquest side you are modding, there is a neat trick
to find out how. When you select your world, you may want to keep scrolling down until you find something that says
'conquest' or 'con2' for example. If you find it, you're on the right track. Now just scroll down a bit more until you
find the codelines of the map you want to mod. Thats the conquest side.***
2.1 Step 2: Changing Infantry:
Infantry. Soldiers. Quite. Well now you have the basics of replacing. Now a harder step. You may sometimes want a
CIS vs. Rebels war or a Empire vs. Republic war, or even a Rebels vs. Rebels war (i've already made and tried that,
real confusing unless you use lock on lol.) So first off, we will be changing the Coruscant Clones into Rebels.
Now do the same as in Step 1 to get to the rep.lvl side. Now this time you don't need to look for anything else once you
find rep.lvl, because that's the first thing you're going to change. Now this will be the first thing you will need to
change if you are putting in a new army for any map. So for example, we will be using the Rebels right? So then we will have
to replace rep.lvl with all.lvl. That means you are changing the Republic to the Rebel Alliance. Well you've got your army,
but who's in it? Now scroll down a bit until you see some codes like rep_inf_ep3_rifleman. That code there is the
Clone trooper. You're gonna wanna change it to a Rebel Soldier. If the Clone trooper is there under the all.lvl side,
then he won't appear at all as he doesn't correspond with that particular army. So replace him with the Rebel Soldier'
code: all_inf_rifleman. You'll notice you're left with all_inf_ep3_riflemaneman. Just fix that with "00"s on the 123
side. Well now you've replaced the Clone trooper with the Rebel Soldier. I will list what to replace next to make it
easier. Along the way you will come across rep_fly_assailt_DOME and rep_fly_gunship_DOME. Don't touch those.
rep_inf_ep3_rifleman all_inf_rifleman
rep_inf_ep3_rocketeer all_inf_rocketeer
rep_inf_ep3_engineer all_inf_engineer
rep_inf_ep3_sniper all_inf_sniper
rep_inf_ep3_officer all_inf_officer
rep_inf_ep3_jettrooper all_inf_wookie
And the Hero:
rep_hero_macewindu all_hero_chewbecca
Both heroes are exacltly 18 characters each. No need to replace anything. You can replace Chewie if you want ;)
2.2 Step 3: Changing On-ground Vehicles
***Make a backup of EVERY folder you mod.***
Vehicles. Tanks. Starfighters. Hell. This is far more complicated than replacing infantry, because now you need to start
modifying another folder. The other folder you will be modifying along with mission.lvl is the maps game file. Now some
may be asking what is it. For those that don't know, it can be found in C:\Program Files\LucasArts\Star Wars Battlefront II
\GameData\data\_lvl_pc. Now in there, do you see alot of folders, like myg, nab, cor, kam or mus? Those are the map
folders. First off you'd need to choose the world WITH vehicles that you want to mod. But that's after you finish reading
this tutorial, because we will be modding Hoth. Find the Hoth, conquest section in the pad. Tap Ctrl+F to bring up the
'find' console, and then search: hot1.lvl. You'll have to find the conquest section from there. Now you will need to
change all Imperial infantry into the Republic, because we will be replacing the Imperial AT-AT with a Republic vehicle.
Just like the infantrys rules, you can only have Republic vehicles with Republic. If you do something like Empire with
Republic vehicles, the vehicles won't appear in the game.
Now once you've found it, scroll down to the Imperial side. Now if you look closely, you will see the codeline
imp_walk_atat. That's the AT-AT's game code. Now replace over it with rep_walk_atte. Easy, no need to replace any
characters. Happy? You're not done. Save the mission.lvl. Now go to your C:\Program Files\LucasArts\
Star Wars Battlefront II\GameData\data\_lvl_pc folder. Select the map you're modding. Since we're modding Hoth, open
up the 'hot' subfolder. Inside it you should see a file named: 'hot1.lvl'. That's Hoths map file. Open it in your hex
editor. Since imp_walk_atat and rep_walk_atte have the same amount of characters, this will be a very easy step. Open
up the 'replace' console by tapping Ctrl+H. Please note that it may be different for other hex editors, but considering
you're using Pspad, you're doing good. Now type in: imp_walk_atat in the 'find' field. Now type in: rep_walk_atte in the
replace field. Click 'ok' and you should see a loading bar. Once it finishes loading, you're done! To be certain, you
may want to check if it had been successful. So type in the new code in the 'find console, and if it takes you to that
code, then you're done! Save, and open up the game. Open the Hoth map, and enjoy a faster moving AT-TE!
2.3 Step 4: Swapping Space Vehicles and Sides with another Side
Space Vehicles. Star Destroyers. Star Fighters. Probably some of the most things you want to change. Here I will show you
how to change space vehicles. Some fellow HEX editors may not know this step. Simply because the space maps aren't assigned
to simple files like space_tat.lvl. This is were you'll find most useful things for modding space maps. First off, you'll
need to edit the mission.lvl file. In this example we will be modding the Space Kashyyk map. Open up your mission.lvl
file with your hex editor. Now open up the 'find' console and type in: rep_fly_anakinstarfighter_sc. Now this isn't the
one you'll need, so hit 'F3' on your keyboard twice and then you'll come to the right one. First things first, you'll
need to put in your army that you want to add, just like infantry. Just scroll down a bit until you see: cis.lvl.
change that to imp.lvl. You've added your Imperial army, now you need to give it infantry. Scan the lines until you fin
the following lines. Replace them with the ones i've stated below.
cis_inf_pilot imp_inf_pilot
cis_inf_marine imp_inf_marine
Simple you just replcace 'cis' with 'imp. Well, you've got your infantry, but how are they gonna fly? Red Bull gives you
wiiiiings...joking lol. After the infantry codelines, you'll notice some codes like cis_fly_fedlander_dome and cis_droid_
starfighter. You musn't change the cis_fly_fedlander_dome. Those codes are the space vehicle's game codes. Now just
replace all those codes as follows:
cis_fly_droidfighter_sc imp_fly_tiefighter_sc
cis_fly_greviousfighter imp_fly_tieinterceptor
cis_fly_droidgunship imp_fly_trooptrans
cis_fly_tridroidfighter imp_fly_tiebomber
***Take extra caution with replacing the grevious fighter. make sure you type in GREVIOUS and not GRIEVOUS. Some people
tend to get mixed up. The vehicle won't appear of you don't get the code right.***
***Remember, if there are still characters leftover from the code you replaced, just replace it with the '00's on the
123 side of the pad.***
Now once you've done that, save. You're not finished. Go to C:\Program Files\LucasArts\Star Wars Battlefront II\GameData\data
\_lvl_pc and look for the folder 'spa'. Open it and you should see spa1.lvl spa2.lvl etc. Now THESE are what the space
maps are called, I think. You'll have to find out what they are yourself. A way to do this would be opening up spa_sky.lvl
and searching for fel or kas or tat etc. But I do know that spa3.lvl is Kasyyk, so that is the file we're going to mod.
For starters, open up spa3.lvl with your editor. Now you'll have to do the hard work from there. Just search for the CIS
ship codes you want to replace and replace it with how I listed it above. Remember to replace any leftover
characters with '00's on the 123 side of the pad. When done, save. Now open up your game and load up Space Kashyyk.
Enjoy Brothers vs. Brothers!
***If it doesn't work, then replace the mission.lvl and spa3.lvl with your backups, and then either leave it or retrace
the steps.***
3.0 Miscellaneous Stuff:
3.1 Faction: Infantry Format: Hero Format:
Republic = rep.lvl rep_inf_***_**** rep_hero_****
cis = cis.lvl cis_inf_**** cis_hero_****
Alliance = all.lvl all_inf_**** all_hero_****
Imperial = imp.lvl imp_inf_**** imp_hero_****
Replace the **** with the infantry names. The *** is what episode you want the clone to be from. Yes, episode 2 or 3,
you choose what clones you want! If you want the Phase I clones, type in ep2, for episode 2. E.g, rep_inf_ep2_rifleman.
And the same with Phase II clones, just with ep3. E.g, rep_inf_ep3_rifleman. I personally enjoy this feature, becuase
I have the Phase II Clone Trooper on Hoth with the Phase I Sniper and Rocketeer.
3.2 Vehicle and Infantry code guide.
I will enclose a Vehicle and Infantry Codeline guide with this package. Now all credit goes to Fiminopter because he made
it. I'm just adding it to this package for easy reference.
3.3 Give your Ewok firepower!!!
Well, I just thought i'd tell you how to give Ewoks Blaster Rifles! Haha ok go to Go to C:\Program Files\LucasArts\
Star Wars Battlefront II\GameData\data and open up the 'side' folder. Look around until you find ewk.lvl. That's
the Ewok's side file. Open it up in your hex editor. Bring up the 'replace' console and type in: ewk_weap_inf_spear.
in the 'find' field and type in: all_weap_inf_rifle. Now it should load. Save and then done! You can even try diffucult
things like give wookiees lightsabers, but I must warn you, it is frustrating TRYING to do it. Yes, i've tried and failed.
3.4 Just as real
If you have a Empire vs. Republic war, then you may notice some of the infantry saying things like, "Get the traitors!"
or "Take out that Clone!", just like the Campaign mission where you have the Empire vs. The ARC Rebellion Clones.
There are many limited things you can mod with HEX editors. It would be wise to get the mod tools. With those, you'll
practically be able to do many things, such as create your own Jedi. Most people like myself once before eagerly search
forum after forum, site after site for a good HEX editing guide. I hadn't found a good one yet, apart from Fiminopters,
so I decided to develop this Tutorial Guide. Hope this guide helped, leave comments if you can. Well, have fun modding!
3.5 Credits:
* LucasArts for creating the Star Wars Universe
* Pandemic for making Star Wars Battlefront II
* for inspiring me to mod SWBFII
* Fiminopter for his original Hex editing guide, and for his examples
* Me, Cade_Allos, for making this extended version

Other/000_Notes/Cade_Allos' Guide to Hex Editing/Charactor Guide #2.txt

@ -0,0 +1,224 @@
A long time ago in a galaxy far, far away...
Guide for hex editing charactors version 2
Written by Fiminopter
Finnished 3/8/06
I didn't update much, but it's enough and all (hopefully).
I added some charactors to the rep side and added the missing vehicles.
I also made it a little more organized (for me).
Table of Contents
1) Republic Side
2) CIS Side
3) Allience Side (rebels)
4) Imperial Side (empire)
5) Jedi Side
6) Other Goodies
7) Credits
________________________________________________________________________________________________________1.) REPUBLIC SIDE
Clone Trooper rep_inf_ep2_rifleman
Heavy Trooper rep_inf_ep2_rocketeer
Clone Sharpshooter rep_inf_ep2_sniper
Clone Engineer rep_inf_ep2_engineer
Clone Commander rep_inf_ep3_officer (ep3 not ep2)
Jet Trooper rep_inf_ep2_jettrooper
Jet Sniper rep_inf_ep2_jettroper_sniper
Jet Rifleman rep_inf_ep2_jettrooper_rifleman
Rocket Officer rep_inf_ep2_rocketeer_chaingun
Clone Trooper rep_inf_ep3_rifleman
Heavy Trooper rep_inf_ep3_rocketeer
Clone Sharpshooter rep_inf_ep3_sniper
Clone Engineer rep_inf_ep3_engineer
Clone Commander rep_inf_ep3_officer
Jet Trooper rep_inf_ep3_jettropper
Cameo Trooper rep_inf_ep3_sniper_felucia
Clone Pilot rep_inf_ep3_pilot
Clone Marine rep_inf_ep3_marine
Mace Windu rep_hero_macewindu
Yoda rep_hero_yoda
Obi-Wan Kanobi rep_hero_obiwan
Aayla Secura rep_hero_aalya
Ki-Adi Mundi rep_hero_kiyadimundi
Anakin rep_hero_anakin
Lord Vader (Anakin) rep_hero_cloakedanakin
AT-TE rep_walk_atte
IFT-X rep_hover_fightertank
AT-RT rep_oneman-atst
BARC Speeder rep_hover_barcspeeder
Republic Starfighter rep_fly_anakinstarfighter_sc
V-Wing rep_fly_vwing
ARC-170 Starfighter rep_fly_arc170fighter_sc
Republic Attack Cruiser rep_fly_assault_dome
________________________________________________________________________________________________________2.) CIS SIDE
Super Battle Droid cis_inf_rifleman
Asault Droid cis_inf_rocketeer
Assasin Droid cis_inf_sniper
Engineer Droid cis_inf_engineer
Manga Guard cis_inf_officer
Droideka cis_inf_droideka
Pilot Droid cis_inf_pilot
Droid Marine cis_inf_marine
Count Dooku cis_hero_countdooku
Jango Fett cis_hero_jangofett
Darth Maul cis_hero_darthmaul
General Grievous cis_hero_grievous
Spider Walker cis_walk_spider
Hailfire Droid cis_tread_hailfire
Armored Tank Droid cis_tread_snailtank
AAT cis_cis_hover_aat
STAP cis_hover_stap
Droid Trifighter cis_fly_tridroidfighter
CIS Strike Bomber cis_fly_greviousfighter
Droid Starfighter cis_fly_droidfighter_sc
Droid Gunship cis_fly_fedlander_dome
________________________________________________________________________________________________________3.) ALLIENCE SIDE
Rebel Soldier all_inf_rifleman
Rebel Vanguard all_inf_rocketeer
Rebel Marksman all_inf_sniper
Rebel Smuggler all_inf_engineer
Bothan Spy all_inf_officer
Wookiee Warrior all_inf_wookiee
Jungle Soldier all_inf_rifleman_jungle
Jungle Vanguard all_inf_rocketeer_jungle
Jungle Maksman all_inf_sniper_jungle
Snow Soldier all_inf_rifleman_snow
Snow Vanguard all_inf_rocketeer_snow
Snow Marksman all_inf_sniper_snow
Snow Smuggler all_inf_engineer_snow
Snow Spy all_inf_officer_snow
Snow Wookiee all_inf_wookiee_snow
Rebel Pilot all_inf_pilot
Rebel Marine all_inf_marine
Pilot Luke all_hero_luke_pilot
Luke Skywalker all_hero_luke_jedi
Princess Leia all_hero_leia
Han Solo all_hero_hansolo_tat
Chewbacca all_hero_chewbacca
Luke Stormtrooper all_hero_luke_storm
Han Stormtrooper all_hero_hansolo_storm
Snowspeeder all_fly_snowspeeder
Alliance AAC-1 all_hover_combatspeeder
Tauntaun all_walk_tauntaun
Speeder Bike imp_hover_spederbike
A-Wing all_fly_awing
Y-Wing all_fly_ywing_sc
X-Wing all_fly_xwing_sc
Alliance Assault Craft all_fly_gunship_sc
________________________________________________________________________________________________________4.) IMPERIAL SIDE
Stormtrooper imp_inf_rifleman
Shock Trooper imp_inf_rocketeer
Scout Trooper imp_inf_sniper
Imperial Engineer imp_inf_engineer
Imperial Officer imp_inf_officer
Darktrooper imp_inf_dark_trooper
Snowtrooper imp_inf_rifleman_snow
Snow Shocktrooper imp_imf_rocketeer_snow
Snow Scout imp_inf_sniper_snow
Snow Engineer imp_inf_engineer_snow
Imperial Pilot imp_inf_pilot
Imperial Marine imp_inf_marine
Darth Vader imp_hero_darthvader
Boba Fett imp_hero_bobafett
The Emperor imp_hero_emperor
AT-AT imp_walk_atat
IFT-T imp_hover_fightertank
AT-ST imp_walk_atst
Speeder Bike imp_hover_speederbike
TIE Fighter imp_fly_tiefighter_sc
TIE Bomber imp_fly_tiebomber_sc
TIE Interceptor imp_fly_tieinterceptor
Landing Craft imp_fly_trooptrans
Dual Saber or Double Blade Jedi are jedi masters
Single blade jedi are jedi knights
Jedi Jumpers Are dual blade jedi
***Some of these don't work***
Acklay geo_inf_acklay
Ewok ewk_inf_basic
Gamorrean Guard gam_inf_gamorreanguard
Geonosian (geo side) gen_inf_geonosian
Gun-Gun Defender gun_inf_defender
Gun-Gun Soldier gun_inf_soldier
Jawa* tat_inf_jawa
Naboo Queen gar_inf_naboo_queen
Temple Soldier gar_inf_temple_soldier
Temple Vanguard gar_inf_temple_vaguard
Tusken Hunter* tat_inf_tuskenhunter
Tusken Raider* tat_inf_tuskenraider
Queen Guard gar_inf_soldier
Wampa snw_inf_wampa
Wookiee wok_inf_basic
* Belongs to the desert (des) side and not the tatooine (tat) side
________________________________________________________________________________________________________7.) This is the boring stuff that nobody wants to read
Thanks to Tiger_Boy27 and Kazooie said that they wanted a guide.
Also thanks to ~SC~ Dave [S] for giving me the luke and han stromtrooper charactors.
I also want to thank whoever approved my last version of the guide
I will only come out with another guide if you find more charactors to write about, so have fun!

Other/000_Notes/Cade_Allos' Guide to Hex Editing/mission.lvl

Binary file not shown.


@ -0,0 +1,674 @@
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
16. Limitation of Liability.