diff --git a/FX_Files/NOTE.TXT b/FX_Files/NOTE.TXT new file mode 100644 index 0000000..6f210d7 --- /dev/null +++ b/FX_Files/NOTE.TXT @@ -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. \ No newline at end of file diff --git a/FX_Files/effects/fx_ember.tga b/FX_Files/effects/fx_ember.tga new file mode 100644 index 0000000..3f0448a Binary files /dev/null and b/FX_Files/effects/fx_ember.tga differ diff --git a/FX_Files/ember.fx b/FX_Files/ember.fx new file mode 100644 index 0000000..32eae70 --- /dev/null +++ b/FX_Files/ember.fx @@ -0,0 +1,67 @@ +// regular ember +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_ember"); + ParticleSize(0.025); + Color(255, 255, 255); + Range(15.0); + Velocity(-0.3); + VelocityRange(1); + PC() + { + ParticleDensity(20.0); + } + ParticleDensityRange(0.0); + CameraCrossVelocityScale(0.5); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.5, 0.9); + RotationRange(25); +} + +// light ember +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_ember"); + ParticleSize(0.015); + Color(255, 255, 255); + Range(15.0); + Velocity(2.0); + VelocityRange(0.8); + + PC() + { + ParticleDensity(100.0); + } + ParticleDensityRange(0.0); + CameraCrossVelocityScale(1.0); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.3, 0.45); + RotationRange(2.0); +} + +// heavy snow +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_ember"); + ParticleSize(0.015); + Color(255, 255, 255); + Range(15.0); + Velocity(4.0); + VelocityRange(0.8); + + PC() + { + ParticleDensity(256.0); + } + ParticleDensityRange(2.0); + CameraCrossVelocityScale(1.0); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.3, 0.45); + RotationRange(2.0); +} \ No newline at end of file diff --git a/FX_Files/fog.fx b/FX_Files/fog.fx new file mode 100644 index 0000000..e1f986d --- /dev/null +++ b/FX_Files/fog.fx @@ -0,0 +1,12 @@ +Effect("FogCloud") +{ + Enable(1); + Texture("fluffy"); + Range(60.0, 100.0); + Color(168, 172, 180, 128); + Velocity(5.0, 0.0); + Rotation(0.1); + Height(16.0); + ParticleSize(28.0); + ParticleDensity(60.0); +} \ No newline at end of file diff --git a/FX_Files/rain.fx b/FX_Files/rain.fx new file mode 100644 index 0000000..2b7b772 --- /dev/null +++ b/FX_Files/rain.fx @@ -0,0 +1,51 @@ +// light rain +Effect("Precipitation") +{ + Enable(1); + Type("Streaks"); + Range(12.5); + Color(216, 220, 228); + VelocityRange(1.0); + ParticleDensityRange(0.0); + CameraCrossVelocityScale(0.2); + CameraAxialVelocityScale(1.0); + + GroundEffect("com_sfx_rainsplash"); + GroundEffectSpread(8); + + PC() + { + AlphaMinMax(0.3, 0.45); + ParticleSize(0.02); + ParticleDensity(256.0); + Velocity(9.0); + StreakLength(1.0); + GroundEffectsPerSec(15); + } +} + +// heavy rain +Effect("Precipitation") +{ + Enable(1); + Type("Streaks"); + Range(12.5); + Color(216, 220, 228); + VelocityRange(1.0); + ParticleDensityRange(0.0); + CameraCrossVelocityScale(0.2); + CameraAxialVelocityScale(1.0); + + GroundEffect("com_sfx_rainsplash"); + GroundEffectSpread(8); + + PC() + { + AlphaMinMax(0.3, 0.45); + ParticleSize(0.02); + ParticleDensity(512.0); + Velocity(15.0); + StreakLength(4.0); + GroundEffectsPerSec(15); + } +} diff --git a/FX_Files/snow.fx b/FX_Files/snow.fx new file mode 100644 index 0000000..63e85b0 --- /dev/null +++ b/FX_Files/snow.fx @@ -0,0 +1,67 @@ +// light snow +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_snow"); + ParticleSize(0.015); + Color(255, 255, 255); + Range(15.0); + Velocity(2.0); + VelocityRange(0.8); + + PC() + { + ParticleDensity(100.0); + } + ParticleDensityRange(0.0); + CameraCrossVelocityScale(1.0); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.3, 0.45); + RotationRange(2.0); +} + +// heavy snow +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_snow"); + ParticleSize(0.015); + Color(255, 255, 255); + Range(15.0); + Velocity(4.0); + VelocityRange(0.8); + + PC() + { + ParticleDensity(256.0); + } + ParticleDensityRange(2.0); + CameraCrossVelocityScale(1.0); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.3, 0.45); + RotationRange(2.0); +} + +// blizzard +Effect("Precipitation") +{ + Enable(1); + Type("Quads"); + Texture("fx_snow"); + ParticleSize(0.025); + Color(255, 255, 255); + Range(15.0); + Velocity(-0.3); + VelocityRange(1); + PC() + { + ParticleDensity(500.0); + } + ParticleDensityRange(4.0); + CameraCrossVelocityScale(0.5); + CameraAxialVelocityScale(1.0); + AlphaMinMax(0.5, 0.9); + RotationRange(25); +} diff --git a/FX_Files/sun.fx b/FX_Files/sun.fx new file mode 100644 index 0000000..0731602 --- /dev/null +++ b/FX_Files/sun.fx @@ -0,0 +1,17 @@ +SunFlare() +{ + Angle(120.000000, -30.000000); + Color(255, 255, 255); + Size(5.0); + FlareOutSize(40.0); + NumFlareOuts(40); + InitialFlareOutAlpha(70); + HaloInnerRing(0.0, 255, 255, 255, 255); + PC() + { + HaloMiddleRing(10.0, 255, 200, 0, 128); + } + HaloOutterRing(40.0, 255, 127, 0, 0); + SpikeColor(230,230,0,128); + SpikeSize(9.0); +} \ No newline at end of file diff --git a/Other/000_Notes/AnimationSystem.txt b/Other/000_Notes/AnimationSystem.txt new file mode 100644 index 0000000..f55ee4f --- /dev/null +++ b/Other/000_Notes/AnimationSystem.txt @@ -0,0 +1,499 @@ +------------------------------------------------------------------------------ +Soldier Animation System +------------------------------------------------------------------------------ + +Character: + 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. + +Weapon: + rifle bazooka tool pistol grenade melee + [custom] + + 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. + +Posture: + 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. + +Scope: + upper lower full + + A soldier is divided into upper and lower parts which can be animated + independently or together. + +Animations: + 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 + ___[_]. For example, + human_bazooka_stand_reload. + does not include alert postures for weapon animations - weapon + animations are effectively always alert. + 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. + is false for all weapon animations. + 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 + bdroid_tool_crouch_shoot2: + 1) from ___, 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 __stand_, i.e. + from bdroid_tool_stand_shoot2 (this is to support grenades/melee) + 4) from ___, 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 ___[_]. For example, + bdroid_tool_prone_idle_checkweapon. + may include alert animations for weapons that support them. + defaults to 'full' for human_rifle_*, to 'lower' for turn* + animations, and to 'upper' for other animations. + is true for all animations except turn*. + 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 + bdroid_tool_crouchalert_idle_lookaround: + 0) for alert postures with weapons that do not support alert states, + simply copy the final results from non alert posture. + 1) from ___, 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 ___, i.e. + from human_tool_crouchalert_idle_lookaround. + 3) from ___, 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 + human_tool_stand_idle_emote. + + 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: + sprint + 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 __[_]. For + example, bdroid_tool_jump. + defaults to 'full' for human_rifle_*, and to 'upper' for others. + is true for thrown_flail, thrown_tumblefront, thrown_tumbleback, + abd jetpack_hover, and false for all others. + 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 + bdroid_tool_jump_up: + 1) from __, i.e. + from bdroid_rifle_jump_up. + 2) from __, 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: + [custom] + + Combo animation names are defined in combo files, along with data + controlling their blend times, looping behavior, and so on. + +Custom Animations: + [custom] + + Custom animations generally cover various full body poses, generally + used when piloting various vehicles, and are named either + __ or _. 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 _. + 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 + bdroid_tool_stap_ride: + 0) from __, i.e. + from bdroid_rifle_stap_ride. + 1) from _, i.e. + from bdroid_stap_ride. + 2) from __, 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 +------------------------------------------------------------------------------ + +Character: + 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 + ewoklz. + +Animations: + 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 _, 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: + [custom] + + 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: + [custom] + + 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 +------------------------------------------------------------------------------ + +Character: + 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. + +Weapon: + rifle bazooka tool grenade (lascannon) + + First person animations are grouped by weapon type. No custom weapon + types are supported currently. + +Animations: + idle run shoot shoot2 charge reload repair + jump flail handsdown + + First person animations cover all possible first person animation states, + and are named humanfp__, with the exception of + handsdown, which is named humanfp_. + + Droidekafp only contains four animations, idle, walk, shoot, and reload, + but is otherwise similarly named (droideka_rifle_). + + 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 + humanfp_tool_idle. + +------------------------------------------------------------------------------ +Animation System Data +------------------------------------------------------------------------------ + +Tools/Bin/ZenAsset.exe + Extracts the skeleton and animations from a set of msh files in a + directory named basepose.msh and .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. + +Tools/Bin/BinMunge.exe + Converts ZAF and ZAA files to ZAFBIN, ZAABIN files used by the game, + respectively. + +Tools/Bin/OdfMunge.exe + Now generates requirements for individual animations, soldier animation + sets, as well as for ZAABINs and ZAFBINs correctly. + +Tools/Bin/LevelPack.exe + 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. + +Data/Animations + 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 or _. + 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 = " []" + SkeletonName = " []" + AnimationName and SkeletonName are synonyms. + If no property is found, defaults to 'human'. + 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 .zafbin and optionally for + .zaabin. + + ex. SkeletonName = "wookie" + + AnimationLowRes = "" + SkeletonLowRes = "" + AnimationLowRes and SkeletonLowRes are synonyms. + If no property is found, defaults to 'humanlz'. + Specifies a custom low res skeleton and possibly animation bank to + use for this soldier. + Generates a requirement for .zafbin and optionally for + .zaabin. + + ex. SkeletonLowRes = "wookielz" + + Weapon ODFs: + AnimationBank = "[_]" + _ 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, is ignored, since the character type is + based on the soldier wielding the weapon. + Generates a requirement for __* 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 in order to generate the correct requirement. + + ex. AnimationBank = "rifle" + + CustomAnimationBank="[_] [alert|noalert]" + Defines a custom weapon type used by this weapon for animation + and its relationship to the weapon hierarchy. + _ defaults to 'human_'. + 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, is ignored, since the character type is + based on the soldier wielding the weapon. + Generates a requirement for __* 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 in order to generate the correct requirement. + + ex. CustomAnimationBank = "leia_pistol pistol alert" + + ComboAnimationBank="[_] " + Defines a custom melee weapon that uses a combo file to control + the weapon simulation and animations, and its relationship to + the hierarchy. + _ defaults to 'human_'. + must either be a standard type or a type previously + defined with CustomAnimationBank/ComboAnimationBank. + At run time, is ignored, since the character type is + based on the soldier wielding the weapon. + Generates a requirement for __* 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 in order to generate the correct requirement. + Also generates a requirement for .combo. + + ex. ComboAnimationBank = "human_sabre melee all_hero_lukejedi" + + Other ODFs: + AnimationName = "" + Specifies a skeleton and possibly a bank of animations to use for + this object. + Generates a requirement for .zafbin and optionally for + .zaabin. + + ...Animation = "" + Specifies a specific animation to be found in an already loaded + animation bank. + Generates a requirement for an animation named . + + Controllable ODFs: + PilotAnimation = "" + Defines a custom soldier animation . + Generates a requirement for a soldier animation named + 'human_'. + + OrdnanceGrapplingHook/WeaponAreaEffect ODFs: + SoldierAnimation = "" + Defines a custom soldier animation . + Generates a requirement for a soldier animation named + 'human_'. + + EntityPropAnimated ODFs: + AttachTrigger = " <...> ..." + Defines a custom soldier animation . + Generates a requirement for an animation '' and a + soldier animation named 'human_'. diff --git a/Other/000_Notes/Anyone can do skins tutorial 3.pdf b/Other/000_Notes/Anyone can do skins tutorial 3.pdf new file mode 100644 index 0000000..a120642 Binary files /dev/null and b/Other/000_Notes/Anyone can do skins tutorial 3.pdf differ diff --git a/Other/000_Notes/Attached Effects.doc b/Other/000_Notes/Attached Effects.doc new file mode 100644 index 0000000..23a98cd Binary files /dev/null and b/Other/000_Notes/Attached Effects.doc differ diff --git a/Other/000_Notes/Battlefront2API.doclua b/Other/000_Notes/Battlefront2API.doclua new file mode 100644 index 0000000..e43eded --- /dev/null +++ b/Other/000_Notes/Battlefront2API.doclua @@ -0,0 +1,2056 @@ +-------------------------------------------------------------- +-- @module Battlefront2API + +-------------------------------------------------------------- +-- Sets the sound stream to play for the specified team when the other specified team has started/stopped bleeding. +-- +-- @param #int playerTeam Player's team number +-- @param #int bleedTeam The team that's started/stopped bleeding +-- @param #string streamSoundName Stream sound to play when the local player is playerTeam and bleedTeam has started/stopped bleeding +-- @param #int bleeding Set to 1 to assign a started bleeding sound, set to 0 to assign a stopped bleeding sound +function SetBleedingVoiceOver(playerTeam, bleedTeam, streamSoundName, bleeding) end + +-------------------------------------------------------------- +-- Sets the bleeding sound stream repeat time. +-- +-- @param #float repeatTime Time between each repetition of the started bleeding voice over +function SetBleedingRepeatTime(repeatTime) end + +-------------------------------------------------------------- +-- Sets the voice over to play for the specified bonus. +-- +-- @param #int playerTeam Player's team number +-- @param #int bonusNum The number of the bonus to be set. +-- `0` - medical regen bonus (played on level load, heard by players team) +-- `1` - surplus supplies bonus (played on level load, heard by players team) +-- `2` - sensor boost bonus (played on level load, heard by players team) +-- `3` - hero is on the battlefield (played on level load, heard by both teams) +-- `4` - our team just got the reserves bonus (played when it happens, heard by players team) +-- `5` - the other team just got reserves bonus (played when it happens, heard by other team) +-- @param #string streamSoundName Stream sound to play when the bonus occurs (or at level load if the bonus is ongoing) +function SetPlanetaryBonusVoiceOver(playerTeam, bonusNum, streamSoundName) end + +-------------------------------------------------------------- +-- Sets the sound effect to play for the specified sound event. +-- +-- @param #string soundEventType Type of event. Can be any of the following... +-- `BirdScatter` - Played when birds are spawned +-- `Bird` - Attached to each bird +-- `LeafFall` - Played when a falling leaf is spawned +-- `ScopeDisplayAmbient` - Played when scope display is active +-- `ScopeDisplayZoomIn` - When scope display zooms in +-- `ScopeDisplayZoomOut` - When scope display zooms out +-- `WeaponUnableSelect` - When the weapon change button is pressed but another weapon is not available +-- `WeaponModeUnableSelect` - When the weapon mode change button is pressed but another mode is not available +-- `SpawnDisplayUnitChange` - When unit is changed in spawn display +-- `SpawnDisplayUnitAccept` - When unit is selected in spawn display +-- `SpawnDisplaySpawnPointChange` - When spawn point is changed in spawn display +-- `SpawnDisplaySpawnPointAccept` - When spawn point is selected in spawn display +-- `SpawnDisplayBack` - When user presses the back button and returns from the map to the unit select screen in +-- the spawn display +-- `LockOn` - Played when player locks onto someone using the targetting display +-- `HeroesUnlocked` - When heroes are unlocked in multiplayer +-- `HeroSpawned` - When a player on Team `teamIndex` spawns in as the hero +-- `HeroDefeated` - When a player on Team `teamIndex` dies in as the hero +-- @param #string soundPropertyName Name of a SoundProperty assigned to the event +-- @param #int teamIndex Only required if `soundEventType` == `"HeroSpawned"` or `"HeroDefeated"`. Index of team that player is on +function SetSoundEffect(soundEventType, soundPropertyName, teamIndex) end + +-------------------------------------------------------------- +-- Sets the voice over for when the specified team has low reinforcements. +-- +-- @param #int playerTeam Player's team number +-- @param #int lowReinforcementTeam Team which has low reinforcements +-- @param #string streamSoundName Sound stream to play when the local player is `playerTeam` and `lowReinforcementTeam`'s reinforcements +-- have dropped below `numReinforcements` +-- @param #int numReinforcements Number of reinforcements which triggers the low reinforcement stream +-- @param #int isPercentage Optional argument which when set to 1 treats `numReinforcements` as a fraction (`0.0..1.0`) of maximum reinforcements +function SetLowReinforcementsVoiceOver(playerTeam, lowReinforcementTeam, streamSoundName, numReinforcements, isPercentage) end + +-------------------------------------------------------------- +-- Sets the out-of-bounds voice over to play for the specified team. +-- +-- @param #int playerTeam Player's team number +-- @param #string streamSoundName Name of the stream to play when the player goes out of bounds +function SetOutOfBoundsVoiceOver(playerTeam, streamSoundName) end + +-------------------------------------------------------------- +-- Sets the ambient music to play for players on the specified team. +-- +-- @param #int playerTeam Player's team number +-- @param #int reinforcementCount Reinforcement count of the player's team which triggers the specified music +-- @param #string musicName Name of the music configuration +-- @param #int gameStage Value from 0 to 2, where 0 = beginning, 1 = middle, and 2 = end +-- @param #int isPercentage Optional argument which when set to 1 treats reinforcementCount as a fraction (`0.0..1.0`) of maximum reinforcements +function SetAmbientMusic(playerTeam, reinforcementCount, musicName, gameStage, isPercentage) end + +-------------------------------------------------------------- +-- Sets which music and voice overs are heard when in two-player (only?) splitscreen. +-- +-- @param #int teamIndex Index of the attacking team +function SetAttackingTeam(teamIndex) end + +-------------------------------------------------------------- +-- Sets the music to play for players on the specified team when their team is victorious. +-- +-- @param #int teamIndex Index of player's team +-- @param #string soundStreamID ID of sound stream properties to play +function SetVictoryMusic(teamIndex, soundStreamID) end + +-------------------------------------------------------------- +-- Sets the music to play for players on the specified team when their team is defeated. +-- +-- @param #int teamIndex Index of player's team +-- @param #string soundStreamID ID of sound stream properties to play +function SetDefeatMusic(teamIndex, soundStreamID) end + +-------------------------------------------------------------- +-- Plays the specified sound stream segment. +-- +-- @param #string streamFilename File containing the audio stream +-- @param #string streamID ID of sound stream properties containing `segmentID` +-- @param #string segmentID ID of segment within the `streamID` to play +-- @param #float gain Initial gain of the stream +-- @param #string busName Bus stream is assigned to (default = "Root") +-- @param #int streamIndex Index of the open stream to play, `streamFilename` can be "" if this is specified. (NOTE : This is an optional argument) +-- @return #int ID of the opened stream, `streamIndex` if it was specified or 0 if the function fails +function PlayAudioStream(streamFilename, streamID, segmentID, gain, busName, streamIndex) end + +-------------------------------------------------------------- +-- Plays the specified sound stream with the specified properties. +-- +-- @param #string streamFilename File containing the audio stream specified in the sound stream properties +-- @param #string soundStreamID ID of the sound stream properties to play +-- @param #int noOpen Set to 1 to play using a previously opened stream. (NOTE : This is an optional argument) +-- @return #int ID of the opened stream (this may not be the stream that's playing) +function PlayAudioStreamUsingProperties(streamFilename, soundStreamID, noOpen) end + +-------------------------------------------------------------- +-- Stops and optionally closes the specified sound stream. +-- +-- @param #int streamIndex Index of the audio stream to stop +-- @param #int close Optional argument. Set to 1 to close the stream, 0 to leave the stream open +function StopAudioStream(streamIndex, close) end + +-------------------------------------------------------------- +-- Opens the specified sound stream. +-- +-- @param #string streamFilename File containing the audio stream +-- @param #string streamID ID of stream within the file +-- @return #int ID of the opened stream or 0 if the function fails +function OpenAudioStream(streamFilename, streamID) end + +-------------------------------------------------------------- +-- Appends the specified sound stream to another stream. Just like how only one segment in an open audio stream can be +-- played at a time, only one segment in a group of appended segments can be played at a time. +-- +-- NOTE: This can ONLY be used with streams that are stored inside the same lvl file! +-- +-- @param #string streamFilename File containing the stream to append to the currently open stream +-- @param #string streamID ID of the stream within the file +-- @param #string streamIndex Number returned from `OpenAudioStream()` which is the index of the stream to append segments to +-- @return #int ID of the opened stream or 0 if the function fails +function AudioStreamAppendSegments(streamFilename, streamID, streamIndex) end + +-------------------------------------------------------------- +-- Returns whether or not a sound stream is currently playing. +-- +-- @param #string streamID ID of the stream to query +-- @return #int 1 if the stream has stopped, 0 otherwise +function AudioStreamComplete(streamID) end + +-------------------------------------------------------------- +-- Plays the specified sound properties. +-- +-- @param #string soundID ID of sound properties to play +function ScriptCB_SndPlaySound(soundID) end + +-------------------------------------------------------------- +-- Fades the specified sound bus. +-- +-- @param #string busName Name of the bus to fade +-- @param #float endGain Final gain of the bus +-- @param #float fadeTime Time to fade the bus +-- @param #float startGain Start gain of the bus (NOTE : this is an optional argument) +function ScriptCB_SndBusFade(busName, endGain, fadeTime, startGain) end + +-------------------------------------------------------------- +-- Scales the specified parameter for the specified sound group. +-- +-- @param #string groupID Identifies the group which contains sounds that are changed +-- @param #string parameter Parameter to scale on each sound within the group. Can be one of the following... +-- `Gain` +-- `GainDev` +-- `Pitch` +-- `PitchDev` +-- `PlayProbability` +-- `PlayInterval` +-- `PlayIntervalDev` +-- `ReverbGain` +-- `Pan` +-- `MinDistance` +-- `MuteDistance` +-- `MaxDistance` +-- `RollOff` +-- `RollIn` +-- `RollInDistance` +-- @param #float scale Scale factor for the parameter +function ScaleSoundParameter(groupID, parameter, scale) end + +-------------------------------------------------------------- +-- Sets the bus that controls movie audio volume. +-- +-- @param #string busID ID of bus which controls the movie audio volume +function ScriptCB_SetMovieAudioBus(busID) end + +-------------------------------------------------------------- +-- Exaggerates or reduces doppler effects. +-- +-- @param #float dopplerFactor Default value is 1.0. To reduce doppler effects use values +-- less than 1.0, to exaggerate use values greater than 1.0 +function ScriptCB_SetDopplerFactor(dopplerFactor) end + +-------------------------------------------------------------- +-- Plays the specified music. +-- +-- @param #string musicID ID of the music to play in game +function ScriptCB_PlayInGameMusic(musicID) end + +-------------------------------------------------------------- +-- Stops the music previously played using `ScriptCB_PlayInGameMusic()`. +function ScriptCB_StopInGameMusic() end + +-------------------------------------------------------------- +-- Enables or disables command post voice overs. +-- +-- @param #int enabled Set to 1 to enable command post VO, 0 to disable command post VO +function ScriptCB_EnableCommandPostVO(enabled) end + +-------------------------------------------------------------- +-- Enables or disables hero music. +-- +-- @param #int enabled Set to 1 to enable hero music, 0 to disable hero music +function ScriptCB_EnableHeroMusic(enabled) end + +-------------------------------------------------------------- +-- Enables or disables hero voice overs. +-- +-- @param #int enabled Set to 1 to enable hero voice overs, 0 to disable hero voice overs +function ScriptCB_EnableHeroVO(enabled) end + +-------------------------------------------------------------- +-- Sets the gain of the ingame bus when the spawn display is visible. +-- +-- @param #float gain 0..1 - Gain of the ingame bus when the spawn display is visible (default = 0.2) +-- @param #float fadeTime Time, in seconds, to fade the ingame bus (default = 3.0) +function ScriptCB_SetSpawnDisplayGain(gain, fadeTime) end + +-------------------------------------------------------------- +-- Enables or disables the specified trigger sound region. +-- +-- @param #string groupName Name of the trigger sound region group to enable/disable +-- @param #int enabled 1 to enable, 0 to disable. (default = 1) +function ScriptCB_TriggerSoundRegionEnable(groupName, enabled) end + +-------------------------------------------------------------- +-- Returns the entity class of the specified class name. +-- +-- @param #string entityClassName Name of the entity class +-- @return Entity class +function FindEntityClass(entityClassName) end + +-------------------------------------------------------------- +-- Sets the amount of extra(?) model memory to allocate for the map on the PS2. +-- +-- @param #int bytes Bytes to allocate +function SetPS2ModelMemory(bytes) end + +-------------------------------------------------------------- +-- For CollisionManager and TreeGrid sizes... +-- +-- `SetWorldExtents` and `ScriptPreInit` go hand in hand. When building a Space level, you may notice that when you exit +-- your ship you instantly die. You also might find that running around certain parts of your ship you will die +-- without taking damage. That’s what `SetWorldExtents` is for. If you have this set to 2500, but you’re still finding +-- that the world is killing you (and you’re not walking into a death region) then bump it up to enlarge the soldier +-- based playable space. +-- +-- Might have to go in `ScriptPreInit`. +-- +-- @param #int amount New world extents in meters(?) +function SetWorldExtents(amount) end + +-------------------------------------------------------------- +-- Sets the amount of memory to take from the artist memory pools and reallocate. (Where to, though?) +-- +-- @param #int bytes Bytes to reallocate +function StealArtistHeap(bytes) end + +-------------------------------------------------------------- +-- Loads the specified lvl file. Sub-lvls contained in the lvl file can be loaded in subsequent arguments like so: +-- `ReadDataFile("dc:SIDE\\rep.lvl", "rep_inf_ep3_trooper", "rep_inf_ep3_engineer", "rep_hero_anakin")` +-- +-- You can also load a sub-lvl with a semicolon in the `sourceFilename` argument like so: +-- `ReadDataFile("dc:Sound\\abc.lvl;ABCg")` +-- +-- @param #string sourceFilename Path of the lvl file to load, a single sub-lvl can be loaded by appending a semicolon followed by the name of the sub-lvl to this +-- @param #string ... Optional. Any additional sub-lvls to load +function ReadDataFile(sourceFilename, ...) end + +-------------------------------------------------------------- +-- Loads the specified lvl file during run-time (I think?). Sub-lvls contained in the lvl file can be loaded in subsequent arguments like so: +-- `ReadDataFile("dc:SIDE\\rep.lvl", "rep_inf_ep3_trooper", "rep_inf_ep3_engineer", "rep_hero_anakin")` +-- +-- You can also load a sub-lvl with a semicolon in the `sourceFilename` argument like so: +-- `ReadDataFile("dc:Sound\\abc.lvl;ABCg")` +-- +-- @param #string sourceFilename Path of the lvl file to load, a single sub-lvl can be loaded by appending a semicolon followed by the name of the sub-lvl +-- @param #string ... Optional. Any additional sub-lvls to load +function ReadDataFileInGame(sourceFilename, ...) end + +-------------------------------------------------------------- +-- Sets the amount of memory to allocate to a temporary pool. Used in galactic conquest. (What for specifically, though?) +-- +-- @param #int bytes Bytes to allocate +function SetupTempHeap(bytes) end + +-------------------------------------------------------------- +-- Clears the temporary memory pool created with `SetupTempHeap`. +function ClearTempHeap() end + +-------------------------------------------------------------- +-- Adds a shot to the map's set of camera shots. These are the different camera angles that you cycle +-- through while in spectator mode when there's no players to spectate. +-- Use the `DumpCamera` console command to print new ones to the debug log. +-- +-- @param #float quatW Quaternion's W value for camera rotation +-- @param #float quatX Quaternion's X value for camera rotation +-- @param #float quatY Quaternion's Y value for camera rotation +-- @param #float quatZ Quaternion's Z value for camera rotation +-- @param #float posX Value of camera's X position +-- @param #float posY Value of camera's Y position +-- @param #float posZ Value of camera's Z position +function AddCameraShot(quatW, quatX, quatY, quatZ, posX, posY, posZ) end + +-------------------------------------------------------------- +-- Sets the camera's rotation (in quaternions). Note that the camera is immediately reset if the player is controlling a +-- Controllable entity. +-- +-- @param #float quatW Quaternion's W value for camera rotation +-- @param #float quatX Quaternion's X value for camera rotation +-- @param #float quatY Quaternion's Y value for camera rotation +-- @param #float quatZ Quaternion's Z value for camera rotation +function SetCameraRotation(quatW, quatX, quatY, quatZ) end + +-------------------------------------------------------------- +-- Sets the camera's position. Note that the camera is immediately reset if the player is controlling a Controllable entity. +-- +-- @param #float posX Value of camera's X position +-- @param #float posY Value of camera's Y position +-- @param #float posZ Value of camera's Z position +function SetCameraPosition(posX, posY, posZ) end + +-------------------------------------------------------------- +-- Moves the camera to the specified entity. Used in galactic conquest. +-- +-- @param entity Entity to move camera to +function MoveCameraToEntity(entity) end + +-------------------------------------------------------------- +-- Sets the map camera's position. Used in galactic conquest. +-- +-- @param #int posX X position +-- @param #int posY Y position +-- @param #int posZ Z position +function SetMapCameraPosition(posX, posY, posZ) end + +-------------------------------------------------------------- +-- Returns the map camera's position values. Used in galactic conquest. +-- +-- @return #int X position +-- @return #int Y position +-- @return #int Z position +function GetMapCameraPosition() end + +-------------------------------------------------------------- +-- Sets the map camera's position offset for the specified level of zoom. Used in galactic conquest. +-- +-- @param #int zoom Level of zoom for which to set camera offset (0 = wide, 1 = normal, 2 = focus) +-- @param #int posX X position offset +-- @param #int posY Y position offset +-- @param #int posZ Z position offset +function SetMapCameraOffset(zoom, posX, posY, posZ) end + +-------------------------------------------------------------- +-- Sets the map camera's pitch for the specified level of zoom. Used in galactic conquest. +-- +-- @param #int zoom Level of zoom for which to set camera pitch +-- @param #float pitch Amount to pitch camera by +function SetMapCameraPitch(zoom, pitch) end + +-------------------------------------------------------------- +-- Sets the map camera's zoom level. Used in galactic conquest. +-- +-- @param #int zoom Level of zoom (0 = wide, 1 = normal, 2 = focus) +-- @param #int dir Optional argument. Direction of zoom (1 = zoom in, 0 = zoom out) +-- @param #float ratio Optional argument. Ratio of the shortest and longest ranges of the zoom lens. For example, +-- an 18-55 mm lens has a ratio of 0.33, or about 1:3, while a 75-300 mm lens ratio is 0.25, +-- or 1:4. Note that the zoom ratios have no connection to field of view, but merely express +-- the range between short and long +function SetMapCameraZoom(zoom, dir, ratio) end + +-------------------------------------------------------------- +-- Returns the map camera's current zoom values. Used in galactic conquest. +-- +-- @return #int Level of zoom (0 = wide, 1 = normal, 2 = focus) +-- @return #int Direction of zoom (1 = zoom in, 0 = zoom out) +-- @return #float Ratio of the shortest and longest ranges of the zoom lens. For example, an 18-55 mm lens +-- has a ratio of 0.33, or about 1:3, while a 75-300 mm lens ratio is 0.25, or 1:4. Note +-- that the zoom ratios have no connection to field of view, but merely express the range +-- between short and long +function GetMapCameraZoom() end + +-------------------------------------------------------------- +-- Snaps the map camera in place. Used in galactic conquest. +function SnapMapCamera() end + +-------------------------------------------------------------- +-- Restarts the shell. +-- +-- @param #string state Set to "State" +function SetState(state) end + +-------------------------------------------------------------- +-- Sets the mission as historical, might be related to Galactic Conquest? Obsolete, used in SWBF1. +function SetHistorical() end + +-------------------------------------------------------------- +-- Sets the name of the specified team. The names "neutral", "neu", "alliance", "all", "empire", "imp", "republic", "rep", +-- and "cis" map to pre-defined team identifiers; anything else maps to locals. (Yes, this is not very general.) +-- +-- @param #int teamIndex Index of team +-- @param #string key Localization key (not the full path) of the team name, which must be located in the +-- scope `"level.ABC."` (replacing `ABC` with the map's ID) +function SetTeamName(teamIndex, key) end + +-------------------------------------------------------------- +-- Sets the aggressiveness of the AI on the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #float aggressiveness Aggressiveness value, higher means more aggressive (`0.0..1.0`) +function SetTeamAggressiveness(teamIndex, aggressiveness) end + +-------------------------------------------------------------- +-- Controls how far downwards from the center of the world the AI can fly. These are used on ground based maps to limit +-- the jet classes and jedi, but is also used to keep flyers from getting too far below the space battlefield. To find +-- an appropriate height, use `PrintPlayerPos` in the console, fly to your desired min height, and punch those numbers +-- in. It’s best to keep the MinFlyHeight and the MinPlayerFlyHeight in line with each other to avoid AI doing things +-- that players can’t. +-- +-- @param #int height Height in meters(?) +function SetMinFlyHeight(height) end + +-------------------------------------------------------------- +-- Controls how far upwards from the center of the world the AI can fly. These are used on ground based maps to limit +-- the jet classes and jedi, but is also used to keep flyers from getting too far above the space battlefield. To find +-- an appropriate height, use `PrintPlayerPos` in the console, fly to your desired max height, and punch those numbers +-- in. It’s best to keep the MaxFlyHeight and the MaxPlayerFlyHeight in line with each other to avoid AI doing things +-- that players can’t. +-- +-- @param #int height Height in meters(?) +function SetMaxFlyHeight(height) end + +-------------------------------------------------------------- +-- Controls how far downwards from the center of the world the player can fly. These are used on ground based maps to +-- limit the jet classes and jedi, but is also used to keep flyers from getting too far below the space battlefield. To +-- find an appropriate height, use `PrintPlayerPos` in the console, fly to your desired min height, and punch those +-- numbers in. It’s best to keep the MinFlyHeight and the MinPlayerFlyHeight in line with each other to avoid AI doing +-- things that players can’t. +-- +-- @param #int height Height in meters(?) +function SetMinPlayerFlyHeight(height) end + +-------------------------------------------------------------- +-- Controls how far upwards from the center of the world the player can fly. These are used on ground based maps to +-- limit the jet classes and jedi, but is also used to keep flyers from getting too far above the space battlefield. To +-- find an appropriate height, use `PrintPlayerPos` in the console, fly to your desired min height, and punch those +-- numbers in. It’s best to keep the MaxFlyHeight and the MaxPlayerFlyHeight in line with each other to avoid AI doing +-- things that players can’t. +-- +-- @param #int height Height in meters(?) +function SetMaxPlayerFlyHeight(height) end + +-------------------------------------------------------------- +-- Enables uber mode, which allows more than 32 units per team. +-- +-- @param #int enabled Set to 1 to enable, or 0 to disable +function SetUberMode(enabled) end + +-------------------------------------------------------------- +-- Exact functionality unknown, but likely allows AI units to jetjump at will instead of restricting them to JetJump hint nodes. Used in Kamino. +-- +-- @param #int allow Set to 1 to allow, or 0 to disallow (default = 1) +function SetAllowBlindJetJumps(allow) end + +-------------------------------------------------------------- +-- Unused, exact functionality unknown. Might be related to AI planning requests. +-- +-- @param #float time Wait time in seconds +function SetStationaryWaitTime(time) end + +-------------------------------------------------------------- +-- Sets the icon of the specified team to the specified texture. Not sure where exactly this is used. +-- +-- @param #int teamnIndex Index of team +-- @param #string icon Name of icon texture +function SetTeamIcon(teamIndex, icon) end + +-------------------------------------------------------------- +-- Makes the specified `team` regard the `other` team as an enemy. It does not affect how the `other` team regards the specified `team`! +-- +-- @param #int team Index of team to set views of +-- @param #int other Index of team that's being viewed as enemy +function SetTeamAsEnemy(team, other) end + +-------------------------------------------------------------- +-- Makes the specified `team` regard the `other` team as a neutral. It does not affect how the `other` team regards the specified `team`! +-- +-- @param #int team Index of team to set views of +-- @param #int other Index of team that's being viewed as neutral +function SetTeamAsNeutral(team, other) end + +-------------------------------------------------------------- +-- Makes the specified `team` regard the `other` team as an ally. It does not affect how the `other` team regards the specified `team`! +-- +-- @param #int team Index of team to set views of +-- @param #int other Index of team that's being viewed as ally +function SetTeamAsFriend(team, other) end + +-------------------------------------------------------------- +-- Sets the number of units the specified team has. +-- +-- @param #int teamIndex Index of team +-- @param #int count Number of units +function SetUnitCount(teamIndex, count) end + +-------------------------------------------------------------- +-- Returns the number of units the specified team has. +-- +-- @param #int teamIndex Index of team +-- @return #int Team's unit count +function GetUnitCount(teamIndex) end + +-------------------------------------------------------------- +-- Sets the specified team's ticket count. +-- +-- @param #int teamIndex Index of team +-- @param #int tickets Number of tickets to set to +function SetReinforcementCount(teamIndex, tickets) end + +-------------------------------------------------------------- +-- Returns the specified team's current ticket count. +-- +-- @param #int teamIndex Index of team +-- @return #int Number of tickets +function GetReinforcementCount(teamIndex) end + +-------------------------------------------------------------- +-- Adds the specified number of tickets to the specified team's ticket count. +-- +-- @param #int teamIndex Index of team +-- @param #int tickets Number of tickets to add, use negative value to subtract tickets +function AddReinforcements(teamIndex, tickets) end + +-------------------------------------------------------------- +-- Sets the specified team's point count. +-- +-- @param #int teamIndex Index of team +-- @param #int points Number of points to set to +function SetTeamPoints(teamIndex, points) end + +-------------------------------------------------------------- +-- Returns the specified team's current point count. +-- +-- @param #int teamIndex Index of team +-- @return #int Number of points +function GetTeamPoints(teamIndex) end + +-------------------------------------------------------------- +-- Adds the specified number of points to the specified team's point count. +-- +-- @param #int teamIndex Index of team +-- @param #int points Number of points to add, use negative value to subtract points +function AddTeamPoints(teamIndex, points) end + +-------------------------------------------------------------- +-- Gives the specified character unit flag capture points. +-- +-- @param #int integerChrIdx Integer index of character unit +function AddFlagCapturePoints(integerChrIdx) end + +-------------------------------------------------------------- +-- Gives the specified character unit assault destroy points. +-- +-- @param #int integerChrIdx Integer index of character unit +function AddAssaultDestroyPoints(integerChrIdx) end + +-------------------------------------------------------------- +-- Gives the specified character unit space assault destroy points for the specified object. +-- +-- @param #int integerChrIdx Integer index of character unit +-- @param #string object ID of object +function AddSpaceAssaultDestroyPoints(integerChrIdx, object) end + +-------------------------------------------------------------- +-- Returns the faction ID of the specified team. Not sure what this is used for. +-- +-- @param #int teamIndex Index of team +-- @return #string Team's faction ID +function GetTeamFactionId(teamIndex) end + +-------------------------------------------------------------- +-- Adds the specified unit class to the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #string unitClass Name of unit class (example: `"imp_inf_trooper"`) +-- @param #int minUnits Minimum number of AI units that can spawn as this class +-- @param #int maxUnits Optional argument. Maximum number of AI units that can spawn as this class. If the unit class has +-- a `PointsToUnlock` value specified in its ODF, this argument acts as the maximum number of AI and +-- player units that can spawn as this class. +function AddUnitClass(teamIndex, unitClass, minUnits, maxUnits) end + +-- Hero + +-------------------------------------------------------------- +-- Sets the hero class for the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #string heroClass Name of hero class (example: `"imp_hero_vader"`) +function SetHeroClass(teamIndex, heroClass) end + +-------------------------------------------------------------- +-- Turns on the hero rules for the game. This should be present in every multiplayer script, unless you do not actually want heroes +-- in your map. Simply omit this line, and you will never get heroes in your game. +function EnableSPHeroRules() end + +-------------------------------------------------------------- +-- Turns on the campaign hero rules for the game. This should be present in every campaign script for missions that include heroes. +function EnableSPScriptedHeroes() end + +-------------------------------------------------------------- +-- Unused. Sets the rule by which the hero is unlocked. +-- +-- @param #string rule Unlock rule to use, possible options are unknown +function SetHeroUnlockRule(rule) end + +-------------------------------------------------------------- +-- Unused. Sets the hero player rule (whatever that means). +-- +-- @param #string rule Team rule to use, possible options are unknown +function SetHeroTeamRule(rule) end + +-------------------------------------------------------------- +-- Unused. Sets the hero player rule (whatever that means). +-- +-- @param #string rule Player rule to use, possible options are unknown +function SetHeroPlayerRule(rule) end + +-------------------------------------------------------------- +-- Unused. Sets the rule by which the hero respawns. +-- +-- @param #string rule Respawn rule to use, possible options are unknown +function SetHeroRespawnRule(rule) end + +-------------------------------------------------------------- +-- Unlocks the hero for the specified team. +-- +-- @param #int teamIndex Index of team +function UnlockHeroForTeam(teamIndex) end + +-------------------------------------------------------------- +-- Forces the specified character unit to accept the unlocked hero, automatically bringing them to the spawn screen. +-- +-- @param #int integerChrIdx Character unit index returned by GetCharacterUnit +function AcceptHero(integerChrIdx) end + +-------------------------------------------------------------- +-- Shows all units on the minimap if enabled. +-- +-- @param #int enabled Set to 1 to show all units, or 0 to put back to normal +function ShowAllUnitsOnMinimap(enabled) end + +-------------------------------------------------------------- +-- Shows or hides the CTF points for the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #int enabled Set to 1 to show points, or 0 to hide +function ShowTeamPoints(teamIndex, enabled) end + +-------------------------------------------------------------- +-- Activates a bonus for the specified team. +-- +-- @param #int teamIndex Index of team to activate bonus for +-- @param #string bonus Bonus to activate. Allowed values: +-- `MEDICAL_SUPPLIES` +-- `SURPLUS_SUPPLIES` +-- `SENSOR_BOOST` +-- `HERO` +-- `RESERVES` +-- `SABOTAGE` +-- `SNEAK_ATTACK` +-- `TRAINING` +function ActivateBonus(teamIndex, bonus) end + +-------------------------------------------------------------- +-- Sets the specified team's ticket bleed rate. +-- +-- @param #int teamIndex Index of team +-- @param #float rate Bleed rate to set to +function SetBleedRate(teamIndex, rate) end + +-------------------------------------------------------------- +-- Returns the specified team's current ticket bleed rate. +-- +-- @param #int teamIndex Index of team +-- @return #float Team's bleed rate +function GetBleedRate(teamIndex) end + +-------------------------------------------------------------- +-- Obsolete, from SWBF1. Sets the carrier class for the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #string class Name of carrier class (example: `"rep_fly_vtrans"`) +function SetCarrierClass(teamIndex, class) end + +-------------------------------------------------------------- +-- Specifies an initial spawn delay. All levels use this call. You should never have to modify the values. +-- +-- @param #float num1 Unknown, always set to `10.0` +-- @param #float num2 Unknown, always set to `0.25` +function SetSpawnDelay(num1, num2) end + +-------------------------------------------------------------- +-- Specifies an initial spawn delay for the specified team. All levels use this call. You should never have to modify the values. +-- +-- @param #float num1 Unknown, always set to `10.0` +-- @param #float num2 Unknown, always set to `0.25` +-- @param #int teamIndex Index of team +function SetSpawnDelayTeam(num1, num2, teamIndex) end + +-------------------------------------------------------------- +-- Sets a switch in the code that controls a number of AI behaviors. If this were a very foggy map, with a short view distance, +-- you would set this to "true" which would make the AI see a shorter distance, and other various things to make the AI act +-- more appropriately in an environment with limited visibility. +-- +-- Synonymous with `SetUrbanEnvironment()`. +-- +-- @param #string enabled Set to "true" to enable, or "false" to disable +function SetDenseEnvironment(enabled) end + +-------------------------------------------------------------- +-- Sets the distance from which AI scout units can snipe when using 'attack' snipe hint nodes. +-- +-- @param #int distance Average distance in meters from which AI can snipe +function SetAttackerSnipeRange(distance) end + +-------------------------------------------------------------- +-- Sets the distance from which AI scout units can snipe when using 'defend' snipe hint nodes. +-- +-- @param #int distance Average distance in meters from which AI can snipe +function SetDefenderSnipeRange(distance) end + +-------------------------------------------------------------- +-- Makes AI units stay in turrets, but under what conditions, no one knows... Found on Endor. +-- +-- @param #int enabled Set to 1 to enable, or 0 to disable +function SetStayInTurrets(enabled) end + +-------------------------------------------------------------- +-- Sets the maximum collision distance for asteroids. What this does exactly is unclear. +-- +-- @param #int distance Maximum collision distance (likely in meters) +function SetMaxCollisionDistance(distance) end + +-------------------------------------------------------------- +-- Sets the particle LOD bias (probably correlates to particle view distance). Needed for particles in space +-- to work properly, don’t delete it! +-- +-- @param #int bias LOD bias value, is set to `15000` in stock space maps +function SetParticleLODBias(bias) end + +-------------------------------------------------------------- +-- Sets the size of the specified memory pool. +-- +-- @param #string memoryPool Memory pool to set size of. Possible values: +-- `AcklayData` +-- `ActiveRegion` +-- `Aimer` +-- `AmmoCounter` +-- `Asteroid` +-- `BaseHint` +-- `ClothData` - need 1 per cloth object in the level +-- `Combo` - should be ~ 2x number of jedi classes +-- `Combo::Attack` - should be ~8-12x #Combo +-- `Combo::Condition` - should be a bit bigger than #Combo::State +-- `Combo::DamageSample` - should be ~8-12x #Combo::Attack +-- `Combo::Deflect` - should be ~1x #combo +-- `Combo::State` - should be ~12x #Combo +-- `Combo::Transition` - should be a bit bigger than #Combo::State +-- `CommandFlyer` +-- `CommandHover` +-- `CommandWalker` +-- `ConnectivityGraphFollower` +-- `EnergyBar` +-- `EntityBuildingArmedDynamic` +-- `EntityCarrier` +-- `EntityCloth` +-- `EntityDefenseGridTurret` +-- `EntityDroid` +-- `EntityDroideka` +-- `EntityFlyer` - need 1 per flyer in the level +-- `EntityHover` +-- `EntityLight` +-- `EntityMine` +-- `EntityPortableTurret` +-- `EntityRemoteTerminal` +-- `EntitySoldier` +-- `EntitySoundStatic` +-- `EntitySoundStream` +-- `EntityTauntaun` - need 1 per tauntaun in the level +-- `EntityWalker` - need 1 per walker in the level +-- `FlagItem` - need 1 per flag in the level +-- `FLEffectObject::OffsetMatrix` +-- `LightFlash` +-- `MountedTurret` +-- `Music` +-- `Navigator` +-- `Obstacle` +-- `Ordnance` +-- `OrdnanceTowCable` +-- `ParticleEmitter` +-- `ParticleEmitterInfoData` +-- `ParticleEmitterObject` +-- `ParticleTransformer::ColorTrans` - must go before the stock `ingame.lvl` is loaded +-- `ParticleTransformer::PositionTr` - must go before the stock `ingame.lvl` is loaded +-- `ParticleTransformer::SizeTransf` - must go before the stock `ingame.lvl` is loaded +-- `PassengerSlot` +-- `PathFollower` +-- `PathNode` +-- `PathRequest` +-- `PowerupItem` +-- `RedOmniLight` +-- `ShieldEffect` +-- `SoldierAnimation` +-- `SoundSpaceRegion` +-- `TentacleSimulator` +-- `Timer` +-- `TreeGridStack` +-- `UnitAgent` +-- `UnitController` +-- `Weapon` +-- @param #int size Size of memory pool +function SetMemoryPoolSize(memoryPool, size) end + +-------------------------------------------------------------- +-- Sets how many types of birds there are in the level. +-- +-- @param #int types Number of bird types +function SetNumBirdTypes(types) end + +-------------------------------------------------------------- +-- Declares a new bird type. +-- +-- @param #int disable Exact functionality unknown, seems to disable birds of this type when set to 1 +-- @param #float size Size of birds of this type +-- @param #string texture Name of bird texture +function SetBirdType(disable, size, texture) end + +-------------------------------------------------------------- +-- Sets the lowest height at which flocks of birds can fly. +-- +-- @param #int height Minimum flying height +function SetBirdFlockMinHeight(height) end + +-------------------------------------------------------------- +-- Sets how many types of fish there are in the level. +-- +-- @param #int types Number of fish types +function SetNumFishTypes(types) end + +-------------------------------------------------------------- +-- Declares a new fish type. +-- +-- @param #int disable Exact functionality unknown, seems to disable fish of this type when set to 1 +-- @param #float size Size of fish of this type +-- @param #string texture Name of fish texture +function SetFishType(disable, size, texture) end + +-------------------------------------------------------------- +-- Fills the specified region with asteroids. Each asteroid will move in the X, Y, and Z directions at a random velocity within the range +-- of each `minSpeed` and `maxSpeed` argument. Asteroid velocity is probably measured in meters per second. This randomized velocity is +-- different for each asteroid. +-- +-- NOTE: Asteroids won't appear unless the "Asteroid" memory pool is filled >= the total number of asteroids that +-- are in the level! +-- +-- @param #string region ID of region class +-- @param #string class Name of asteroid class (example: `"spa1_prop_asteroid_03"`) +-- @param #int count Number of asteroids to fill the region with +-- @param #float maxSpeedX Maximum asteroid drift speed in X direction (default = 0) +-- @param #float maxSpeedY Maximum asteroid drift speed in Y direction (default = 0) +-- @param #float maxSpeedZ Maximum asteroid drift speed in Z direction (default = 0) +-- @param #float minSpeedX Minimum asteroid drift speed in X direction (default = 0) +-- @param #float minSpeedY Minimum asteroid drift speed in Y direction (default = 0) +-- @param #float minSpeedZ Minimum asteroid drift speed in Z direction (default = 0) +function FillAsteroidRegion(region, class, count, maxSpeedX, maxSpeedY, maxSpeedZ, minSpeedX, minSpeedY, minSpeedZ) end + +-------------------------------------------------------------- +-- Fills the specified path with asteroids. The distribution of the asteroids along the path's spline is more-or-less even. However, the +-- position of each asteroid is also offset in a random direction. The distance of this offset is a random value between 0 and `maxOffset`. +-- This randomized offset is different for each asteroid. +-- +-- Each asteroid will move in the X, Y, and Z directions at a random velocity within the range of each `minSpeed` and `maxSpeed` +-- argument. Asteroid velocity is probably measured in meters per second. This randomized velocity is different for each asteroid. +-- +-- NOTE: Asteroids won't appear unless the "Asteroid" memory pool is filled >= the total number of asteroids that +-- are in the level! +-- +-- @param #string path ID of path +-- @param #float maxOffset Maximum distance (probably in meters) to offset each asteroid's position by (default = 0) +-- @param #string class Name of asteroid class (example: `"spa1_prop_asteroid_03"`) +-- @param #int count Number of asteroids to fill the path with +-- @param #float maxSpeedX Maximum asteroid drift speed in X direction (default = 0) +-- @param #float maxSpeedY Maximum asteroid drift speed in Y direction (default = 0) +-- @param #float maxSpeedZ Maximum asteroid drift speed in Z direction (default = 0) +-- @param #float minSpeedX Minimum asteroid drift speed in X direction (default = 0) +-- @param #float minSpeedY Minimum asteroid drift speed in Y direction (default = 0) +-- @param #float minSpeedZ Minimum asteroid drift speed in Z direction (default = 0) +function FillAsteroidPath(path, maxOffset, class, count, maxSpeedX, maxSpeedY, maxSpeedZ, minSpeedX, minSpeedY, minSpeedZ) end + +-------------------------------------------------------------- +-- Registers the specified region class as a death region. Entities that enter this region will be immediately killed. +-- +-- @param #string regionClass ID of region class +function AddDeathRegion(regionClass) end + +-------------------------------------------------------------- +-- Registers the specified region class as a landing region. Flyers will be able to land when inside of this region. +-- +-- @param #string regionClass ID of region class +function AddLandingRegion(regionClass) end + +-------------------------------------------------------------- +-- Removes the specified region class. Death regions and landing regions removed by RemoveRegion can be re-added +-- with AddDeathRegion or AddLandingRegion. +-- +-- @param #string regionClass ID of region class +function RemoveRegion(regionClass) end + +-------------------------------------------------------------- +-- Returns whether or not the specified character is in the specified region. +-- +-- @param #int integerChrIdx Integer index of character +-- @param #string region ID of region class +-- @return #int 1 if character is in region, 0 if not +function IsCharacterInRegion(integerChrIdx, region) end + +-------------------------------------------------------------- +-- Returns the name of the specified region class. +-- +-- @param #string region ID of region class +-- @return #string Name of region +function GetRegionName(region) end + +-------------------------------------------------------------- +-- Returns the class of the specified region. +-- +-- @param #string region Name of region +-- @return #string ID of region class +function GetRegion(region) end + +-------------------------------------------------------------- +-- Wipes out any allocations that may have been done automatically for walkers. You’ll need to have this line in, +-- and uncommented if you want to have walkers in your level. +function ClearWalkers() end + +-------------------------------------------------------------- +-- Adds walkers to your level. +-- +-- The first number inside the parenthesis (numPairs) specifies how many leg pairs the walker type has. +-- Droidekas are set up as a special case, with 0 leg pairs. So as you can see below, we have AddWalkerType(0,4), this +-- specifies that we will have 4 walkers with 0 leg pairs (droidekas). 1 leg pair would specify a walker with one pair +-- of legs, an ATST for example, or a one-man ATST from the Clone Wars era. So for 2 ATSTs, we would have a line that +-- says AddWalkerType(1, 2). 2 leg pairs would be a unit like the CIS spider walker, or an ATAT, and 3 leg pairs would +-- be the 6-legged walker from the Clone Wars era. +-- +-- **Examples:** +-- +-- `AddWalkerType(0, 4) -- special -> droidekas, 0x4 (4 droidekas)` +-- `AddWalkerType(1, 2) -- 1x2 (2 walkers with 1 pair of legs)` +-- `AddWalkerType(2, 4) -- 2x4 (4 walkers with 2 pairs of legs)` +-- `AddWalkerType(3, 1) -- 3x1 (1 walker with 3 pairs of legs)` +-- +-- @param #int numPairs How many leg pairs the walker type has +-- @param #int count Max number of walkers of this type that can exist simultaneously in the level +function AddWalkerType(numPairs, count) end + +-------------------------------------------------------------- +-- Sets the distance around a waiting vehicle from which AI can be lured in. +-- +-- @param #int radius Notify radius in meters (probably) +function SetAIVehicleNotifyRadius(radius) end + +-------------------------------------------------------------- +-- Sets the overall view distance for AI. +-- +-- @param #float visibility Multiplier for how far AI can see +function SetAIViewMultiplier(visibility) end + +-------------------------------------------------------------- +-- Sets the distance from which AI scout units can snipe. +-- +-- @param #int distance Average distance in meters from which AI can snipe +function AISnipeSuitabilityDist(distance) end + +-------------------------------------------------------------- +-- When enabled, makes it so AI flyers are spatially aware of the ground, thus reducing/eliminating the chances of them crashing into it. +-- +-- @param #int enabled Set to 1 to enable, set to 0 to disable (default = 0) +function SetGroundFlyerMap(enabled) end + +-------------------------------------------------------------- +-- Turns on AutoBalancing. This will work for Conquest/Assault/CTF games. Not campaign. Basically +-- if the score gets too far in one teams favor (+/- 40 conquest, 60 assault, 1 ctf) it will make +-- the losing team better and the winning team worse until things get back to close again. +function EnableAIAutoBalance() end + +-------------------------------------------------------------- +-- Turns off AutoBalancing. It is on by default so you should use this for your campaign mode scripts. +function DisableAIAutoBalance() end + +-------------------------------------------------------------- +-- Sets the current difficulty modifier. This can be called from any point within a mission. So if you +-- want the bad guys to be more difficult on just one objective, call this with say (0,2) in the OnStart +-- function, then call it again with (0,0) to reset it in the OnComplete function. +-- +-- @param #int player Modifier for player team, positive value = team is better, negative value = team is worse (default = 0) +-- @param #int enemy Modifier for enemy team, positive value = team is better, negative value = team is worse (default = 0) +-- @param #string difficulty Optional argument. Sets the player and enemy difficulty only for this profile difficulty mode ("easy", "medium", or "hard") +function SetAIDifficulty(player, enemy, difficulty) end + +-------------------------------------------------------------- +-- Notifies the C++ code that the specified objective (uniquely identified in `text` parameter) exists for the specified team. +-- Optionally specifies the text to show in a popup once the objective is activated. +-- +-- @param #int teamIndex Index of team to add the objective to +-- @param #string text Path to localized text to display in the objective list once the objective is activated +-- (example: `"level.ABC.objectives.1"`) +-- @param #string popupText Optional argument. Path to localized text to display in a popup once the objective is +-- activated (example: `"level.ABC.objectives.1_popup"`) +function AddMissionObjective(teamIndex, text, popupText) end + +-------------------------------------------------------------- +-- Tells the C++ code to activate the specified objective. +-- +-- @param #string text Path to localized text of the objective to activate (example: `"level.ABC.objectives.1"`) +function ActivateObjective(text) end + +-------------------------------------------------------------- +-- Tells the C++ code to complete the specified objective. +-- +-- @param #string text Path to localized text of the objective to complete (example: `"level.ABC.objectives.1"`) +function CompleteObjective(text) end + +-------------------------------------------------------------- +-- Adds the specified hint to the list of hints for the level. +-- +-- @param #string hintText Path to localized text of the hint (example: `"level.ABC.hints.1"`) +function AddMissionHint(hintText) end + +-------------------------------------------------------------- +-- Sets the flag gameplay type for the level. +-- +-- @param #string type Flag gameplay type. Possible values: +-- `none` +-- `1flag` +-- `2flag` +-- `campaign` +function SetFlagGameplayType(type) end + +-- Space Assault + +-------------------------------------------------------------- +-- Notifies C++ that we're running space assault now so it can do team scoring with critical systems and whatnot. +-- +-- @param #bool enabled Set to true to enable, or false to disable (default = false) +function SpaceAssaultEnable(enabled) end + +-------------------------------------------------------------- +-- Adds a critical system to be destroyed in space assault. +-- +-- @param #string name Name of the object in the level +-- @param #int pointValue How many points the object is worth when it's destroyed +-- @param #float hudPosX X coordinate for placing the hud health indicator for the critical system (`0.0..1.0`) +-- @param #float hudPosY Y coordinate for placing the hud health indicator for the critical system (`0.0..1.0`) +-- @param #bool displayHUDMarker Optional argument. Set to true to display the HUD marker, or false to not display it (default = true) +function SpaceAssaultAddCriticalSystem(name, pointValue, hudPosX, hudPosY, displayHUDMarker) end + +-------------------------------------------------------------- +-- Links together all of the critical system objects (the names of which are stored in the specified table) as one marker in space assault. +-- +-- @param #table objects Table containing the names of critical system objects to link together +function SpaceAssaultLinkCriticalSystems(objects) end + +-------------------------------------------------------------- +-- Unused. Exact functionality unknown. +-- +-- @param unknown Unknown argument +function SpaceAssaultSetupTeamNumbers(unknown) end + +-------------------------------------------------------------- +-- Sets up the HUD bitmaps for each team's capital ship, systems, etc. +-- +-- @param #string shipBitmapATT Name of texture to use for ATT team's ship +-- @param #string shipBitmapDEF Name of texture to use for DEF team's ship +-- @param #string shieldBitmapATT Name of texture to use for ATT team's shields +-- @param #string shieldBitmapDEF Name of texture to use for DEF team's shields +-- @param #string critSysBitmapATT Name of texture to use for each of ATT team's critical systems +-- @param #string critSysBitmapDEF Name of texture to use for each of DEF team's critical systems +function SpaceAssaultSetupBitmaps(shipBitmapATT, shipBitmapDEF, shieldBitmapATT, shieldBitmapDEF, critSysBitmapATT, critSysBitmapDEF) end + +-------------------------------------------------------------- +-- Returns the score limit for space assault. +-- +-- @return #int Score limit that each team must reach to win +function SpaceAssaultGetScoreLimit() end + +-------------------------------------------------------------- +-- Returns whether or not the current mission is using non-multiplayer rules. +-- +-- @return #int 1 if using non-multiplayer rules, 0 if using multiplayer rules +function IsCampaign() end + +-------------------------------------------------------------- +-- Returns the name of the first wld file that was loaded in the map. For example, if the stock hot1.lvl +-- file is loaded, this function will return *hoth*, since the wld file in hot1 is called *hoth.wld*. +-- +-- @return #string Name of the first-loaded wld file +function GetWorldFilename() end + +-- Messages + +-------------------------------------------------------------- +-- Prints the specified localized key in the message box in the player's HUD. For example, printing the key +-- "level.cor1.objectives.campaign.1" would print "Capture the Jedi Council Chamber". +-- +-- @param #string keyPath Full path of localized key to show (example: "level.cor1.objectives.campaign.1") +-- @param #int teamIndex Optional argument. Index of team to show message to if specified, or shows to players on both teams if unspecified +function ShowMessageText(keyPath, teamIndex) end + +-------------------------------------------------------------- +-- DEPRECATED, DOESN'T WORK. +-- +-- @param #string keyPath Full path of localized key to show (example: "level.cor1.objectives.campaign.1") +function ShowPopup(keyPath) end + +-------------------------------------------------------------- +-- DEPRECATED, DOESN'T WORK. +-- +-- @param #string keyPath Full path of localized key to show (example: "level.cor1.objectives.campaign.1") +function ShowObjectiveTextPopup(keyPath) end + +-------------------------------------------------------------- +-- Shows or hides the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer to show. Set to nil (or leave blank) to hide all Timers +function ShowTimer(timer) end + +-------------------------------------------------------------- +-- Shows the specified localized text in a selection popup. Used in spa2c_c for choosing control layout making but not for PC?! +-- +-- @param #string text Path to localized text to show (example: `"level.spa2.objectives.popup.selectConfig"`) +function ShowSelectionTextPopup(text) end + +-------------------------------------------------------------- +-- Plays the specified sound stream for all players, or optionally only for players on the specified team. +-- +-- @param #string streamID ID of sound stream properties to play +-- @param #int teamIndex Optional argument. If set, plays the sound stream properties only for players on this team +function BroadcastVoiceOver(streamID, teamIndex) end + +-------------------------------------------------------------- +-- Kills the player of the specified HUD viewport. +-- +-- @param viewport Viewport of the player to kill +function ScriptCB_PlayerSuicide(viewport) end + +-- Markers + +-------------------------------------------------------------- +-- Attaches a map marker to the specified region class. +-- +-- @param #string region ID of region class to attach marker to +-- @param #string markerClass Name of marker icon texture to use (the only value that seems to work is `"hud_objective_icon_circle"`) +-- @param #float size Icon size multiplier +-- @param #int teamIndex Index of team that should be able to see the marker +-- @param #string color Icon color. Possible values: +-- `RED` +-- `GREEN` +-- `BLUE` +-- `CYAN` +-- `MAGENTA` +-- `YELLOW` +-- `ORANGE` +-- `WHITE` +-- `BLACK` +-- @param #bool showOnHUD Optional argument. Set to true to also show the marker on the player's HUD, or false to only show it on the map. NOTE: Doesn't seem to +-- work with this particular marker function (default = true) +-- @param #bool pulseOpacity Optional argument. Set to true to linearly interpolate marker opacity from `(alpha*1.0)` to `(alpha*0.0)` +-- once per second, or false to keep opacity static (default = true) +-- @param #bool pulseSize Optional argument. Set to true to linearly interpolate marker size from `(size*0.5)` to `(size*1.5)` once +-- per second, or false to keep size static (default = true) +function MapAddRegionMarker(region, markerClass, size, teamIndex, color, showOnHUD, pulseOpacity, pulseSize) end + +-------------------------------------------------------------- +-- Removes any map markers attached to the specified region class. +-- +-- @param #string region ID of region class to remove markers from +function MapRemoveRegionMarker(region) end + +-------------------------------------------------------------- +-- Attaches a map marker to the specified entity. +-- +-- @param #string entity ID of entity to attach marker to +-- @param #string markerClass Name of marker icon texture to use (the only value that seems to work is `"hud_objective_icon_circle"`) +-- @param #float size Icon size multiplier +-- @param #int teamIndex Index of team that should be able to see the marker +-- @param #string color Icon color. Possible values: +-- `RED` +-- `GREEN` +-- `BLUE` +-- `CYAN` +-- `MAGENTA` +-- `YELLOW` +-- `ORANGE` +-- `WHITE` +-- `BLACK` +-- @param #bool showOnHUD Optional argument. Set to true to also show the marker on the player's HUD, or false to only show it on the map (default = true) +-- @param #bool pulseOpacity Optional argument. Set to true to linearly interpolate marker opacity from `(alpha*1.0)` to `(alpha*0.0)` +-- once per second, or false to keep opacity static (default = true) +-- @param #bool pulseSize Optional argument. Set to true to linearly interpolate marker size from `(size*0.5)` to `(size*1.5)` once +-- per second, or false to keep size static (default = true) +function MapAddEntityMarker(entity, markerClass, size, teamIndex, color, showOnHUD, pulseOpacity, pulseSize) end + +-------------------------------------------------------------- +-- Removes any map markers attached to the specified entity. +-- +-- @param #string entity ID of entity to remove markers from +function MapRemoveEntityMarker(entity) end + +-------------------------------------------------------------- +-- Attaches a map marker to all instances of the specified entity class. +-- +-- @param #string class Name of entity class to attach markers to (example: `"imp_inf_trooper"`) +-- @param #string markerClass Name of marker icon texture to use (the only value that seems to work is `"hud_objective_icon"`) +-- @param #float size Icon size multiplier +-- @param #int teamIndex Index of team that should be able to see the marker +-- @param #string color Icon color. Possible values: +-- `RED` +-- `GREEN` +-- `BLUE` +-- `CYAN` +-- `MAGENTA` +-- `YELLOW` +-- `ORANGE` +-- `WHITE` +-- `BLACK` +-- @param #bool showOnHUD Optional argument. Set to true to also show the marker on the player's HUD, or false to only show it on the map (default = true) +-- @param #bool pulseOpacity Optional argument. Set to true to linearly interpolate marker opacity from `(alpha*1.0)` to `(alpha*0.0)` +-- once per second, or false to keep opacity static (default = true) +-- @param #bool pulseSize Optional argument. Set to true to linearly interpolate marker size from `(size*0.5)` to `(size*1.5)` once +-- per second, or false to keep size static (default = true) +function MapAddClassMarker(class, markerClass, size, teamIndex, color, showOnHUD, pulseOpacity, pulseSize) end + +-------------------------------------------------------------- +-- Removes any map markers attached to the specified entity class. +-- +-- @param #string class Name of entity class to remove markers from +function MapRemoveClassMarker(class) end + +-------------------------------------------------------------- +-- Hides all command post markers from the minimap and radar. +function MapHideCommandPosts() end + +-------------------------------------------------------------- +-- Sets whether or not the specified object can be locked onto by weapons. +-- +-- @param #string objectName ID of object +-- @param #int enabled Set to 1 to enable locking on, or 0 to disable +function EnableBuildingLockOn(objectName, enabled) end + +-- Timer + +-------------------------------------------------------------- +-- Checks whether or not a timer exists. +-- +-- @param #string timer ID (or handler returned from `CreateTimer`) of the timer to find +function FindTimer(timer) end + +-------------------------------------------------------------- +-- Creates a new Timer with the specified name and returns it. +-- +-- @param #string name Name to give the Timer +-- @return Timer's handler +function CreateTimer(name) end + +-------------------------------------------------------------- +-- Deletes the specified Timer. Do not use the timer after destroying it! +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +function DestroyTimer(timer) end + +-------------------------------------------------------------- +-- Activates the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +function StartTimer(timer) end + +-------------------------------------------------------------- +-- Deactivates the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +function StopTimer(timer) end + +-------------------------------------------------------------- +-- Sets the value of the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +-- @param #float value Timer's duration in seconds +function SetTimerValue(timer, value) end + +-------------------------------------------------------------- +-- Returns the value of the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +-- @return #float The Timer's value +function GetTimerValue(timer) end + +-------------------------------------------------------------- +-- Sets the rate of the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +-- @param #float rate Multiplier for Timer's elapse speed (default = 1.0) +function SetTimerRate(timer, rate) end + +-------------------------------------------------------------- +-- Returns the rate of the specified Timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +-- @return #float The Timer's rate +function GetTimerRate(timer) end + +-------------------------------------------------------------- +-- Shows or hides the timer. +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer +function GetTimerName(timer) end + +-------------------------------------------------------------- +-- Tell the C++ code about the defeat timer (which will display it on the HUD). +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer to pair with the defeat timer +-- @param #int teamIndex Index of team to associate with the defeat timer +function SetDefeatTimer(timer, teamIndex) end + +-------------------------------------------------------------- +-- Tell the C++ code about the victory timer (which will display it on the HUD). +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer to pair with the victory timer. Set to nil (or leave blank) to hide it +-- @param #int teamIndex Index of team to associate with the victory timer +function SetVictoryTimer(timer, team) end + +-------------------------------------------------------------- +-- UNUSED. Tell the C++ code about the mission timer (which will display it on the HUD). +-- +-- @param #string timer ID (or handler returned from CreateTimer) of the Timer to pair with the mission timer. Set to nil (or leave blank) to hide it +function SetMissionTimer(timer) end + +-- Object + +-------------------------------------------------------------- +-- Returns the object pointer of the specified object +-- +-- @param #string objectName ID of object to get pointer of +-- @return The object's pointer +function GetObjectPtr(objectName) end + +-------------------------------------------------------------- +-- Activates the specified object. +-- +-- @param #string objectName ID of object to activate +function ActivateObject(objectName) end + +-------------------------------------------------------------- +-- Deactivates the specified object. +-- +-- @param #string objectName ID of object to deactivate +function DeactivateObject(objectName) end + +-------------------------------------------------------------- +-- +-- @param #string objectName ID of object to set the team of +-- @param #int teamIndex Index of the team to assign to the object +function SetObjectTeam(objectName, teamIndex) end + +-------------------------------------------------------------- +-- Returns the team index of the specified object. +-- +-- @param #string objectName ID of object to destroy +-- @return #int Index of the team the object belongs to +function GetObjectTeam(objectName) end + +-------------------------------------------------------------- +-- Returns whether or not the specified object is alive. +-- +-- @param #string objectName ID of object to get the name of +-- @return #int 1 if object is alive, 0 if object is not alive +function IsObjectAlive(objectName) end + +-------------------------------------------------------------- +-- Returns the current health value of the specified object. +-- +-- @param #string objectName ID of object to get the current health value of +-- @return #float Object's CurHealth value +-- @return #float Object's MaxHealth value +-- @return #float Object's AddHealth value +function GetObjectHealth(objectName) end + +-------------------------------------------------------------- +-- Returns the current shield value of the specified object. +-- +-- @param #string objectName ID of object to get the current shield value of +-- @return #float Object's CurShield value +-- @return #float Object's MaxShield value +-- @return #float Object's AddShield value +function GetObjectShield(objectName) end + +-------------------------------------------------------------- +-- Returns the name of the most recent weapon that the specified object was hit by. +-- +-- @param #string objectName ID of object to check +-- @return #string Weapon class name +function GetObjectLastHitWeaponClass(objectName) end + +-------------------------------------------------------------- +-- Kills the specified object. +-- +-- @param #string objectName ID of object to destroy +function KillObject(objectName) end + +-------------------------------------------------------------- +-- Respawns the specified object. +-- +-- @param #string objectName ID of object to respawn +function RespawnObject(objectName) end + +-- Entity + +-------------------------------------------------------------- +-- Returns the entity pointer of the specified object or character unit index. +-- +-- @param object ID of object or character unit index +-- @return Entity pointer of object or character +function GetEntityPtr(object) end + +-------------------------------------------------------------- +-- Returns the name of the specified entity. +-- +-- @param entity ID of entity +-- @return #string Entity name +function GetEntityName(entity) end + +-------------------------------------------------------------- +-- Returns the class of the specified entity. Can be used with FindEntityClass to check whether or not an entity is a certain class. +-- +-- @param entity ID of entity +-- @return Entity class +function GetEntityClass(entity) end + +-------------------------------------------------------------- +-- Returns the class name of the specified entity. +-- +-- @param entity ID of entity +-- @return #string Entity class name +function GetEntityClassName(entity) end + +-------------------------------------------------------------- +-- Sets the matrix of the specified entity. +-- +-- @param entity ID of entity +-- @param matrix Entity matrix to apply to entity +function SetEntityMatrix(entity, matrix) end + +-------------------------------------------------------------- +-- Returns the matrix of the specified entity. +-- +-- @param entity ID of entity +-- @return Entity matrix +function GetEntityMatrix(entity) end + +-------------------------------------------------------------- +-- Sets the value of a property for the specified object. +-- +-- @param objectName ID of object or character unit index +-- @param #string property ID of the property to set +-- @param value Value to set the property to +function SetProperty(objectName, property, value) end + +-------------------------------------------------------------- +-- Creates a new instance of the specified entity and returns it. +-- +-- @param #string class Name of the entity class to instantiate +-- @param node Path point to create the entity at +-- @param #string name Name to assign to the entity +-- @return Entity instance +function CreateEntity(class, node, name) end + +-------------------------------------------------------------- +-- Deletes the specified entity. +-- +-- @param entity ID of entity +function DeleteEntity(entity) end + +-------------------------------------------------------------- +-- Returns the entity class pointer of the specified entity. +-- +-- @param entity ID of entity +-- @return Entity class pointer +function GetEntityClassPtr(entity) end + +-------------------------------------------------------------- +-- Sets the value of a property for the specified object class. +-- +-- @param objectClass ID of object class +-- @param #string property ID of the property to set +-- @param value Property's value to set +function SetClassProperty(objectClass, property, value) end + +-------------------------------------------------------------- +-- Forces the specified flyer to perform a take-off. +-- +-- @param #string flyer ID of flyer object or flyer vehicle spawn object +function EntityFlyerTakeOff(flyer) end + +-------------------------------------------------------------- +-- Forces the specified flyer to perform a landing. +-- +-- @param #string flyer ID of flyer object or flyer vehicle spawn object +function EntityFlyerLand(flyer) end + +-------------------------------------------------------------- +-- Initializes the specified flyer as flying. +-- +-- @param #string flyer ID of flyer object or flyer vehicle spawn object +function EntityFlyerInitAsFlying(flyer) end + +-------------------------------------------------------------- +-- Initializes the specified flyer as landed. +-- +-- @param #string flyer ID of flyer object or flyer vehicle spawn object +function EntityFlyerInitAsLanded(flyer) end + +-------------------------------------------------------------- +-- Forces the specified entity into the specified vehicle. +-- +-- @param entity Entity or character unit index to force into vehicle +-- @param #string vehicle ID of the vehicle class +function EnterVehicle(entity, vehicle) end + +-------------------------------------------------------------- +-- Forces the specified entity out of whatever vehicle it's currently in. +-- +-- @param entity Entity or character unit index to force out of vehicle +function ExitVehicle(entity) end + +-------------------------------------------------------------- +-- Enables or disables the specified flyer path. +-- +-- @param #int pathID ID of flyer spline path to enable +-- @param #int enable Set to 1 to enable the path, or set to 0 to disable the path +function EnableFlyerPath(pathID, enable) end + +-------------------------------------------------------------- +-- Returns the path point based on the specified path node. +-- +-- @param #string pathName ID of path +-- @param #int nodeIdx Numeric ID of path node +-- @return Path point +function GetPathPoint(pathName, nodeIdx) end + +-------------------------------------------------------------- +-- Returns the number of units that are currently alive in the specified team. +-- +-- @param #int teamIndex Index of team +-- @return #int Number of units currently alive in team +function GetNumTeamMembersAlive(teamIndex) end + +-------------------------------------------------------------- +-- Creates a new matrix based on an existing one. +-- +-- @param #float rad Rotation angle in radians around chosen axes or X axis if none chosen +-- @param #float rotX Rotation around x axis if rotX ~= 0 +-- @param #float rotY Rotation around y axis if rotY ~= 0 +-- @param #float rotZ Rotation around z axis if rotZ ~= 0 +-- @param #float posX Translates unit on X axis +-- @param #float posY Translates unit on Y axis +-- @param #float posZ Translates unit on Z axis +-- @param matrix Starting point for matrix changes +-- @return Newly created matrix +function CreateMatrix(rad, rotX, rotY, rotZ, posX, posY, posZ, matrix) end + +-------------------------------------------------------------- +-- Returns the current screen position relative to what seems to be the entity camera or +-- entity origin point (otherwise known as pivot point or center of geometry (COG)). +-- +-- @param entity Entity, or integer character index (returned by GetCharacterUnit) to check +-- @return #float X position +-- @return #float Y position +-- @return #float Z position (so it seems, anyway) +function GetScreenPosition(entity) end + +-- procedural animation callbacks + +-------------------------------------------------------------- +-- Resumes playing of animation group from whichever time it was at last. +-- +-- @param #string animationGroupName ID of animation group to resume +function PlayAnimation(animationGroupName) end + +-------------------------------------------------------------- +-- Pauses animation group's playback – objects remain where they are currently. +-- +-- @param #string animationGroupName ID of animation group to pause +function PauseAnimation(animationGroupName) end + +-------------------------------------------------------------- +-- Instanly rewinds the animation group to the beginning. Can be called while the group is playing. +-- If called while the group is stopped, play will resume from the beginning when Play is called. +-- +-- @param #string animationGroupName ID of animation group to rewind +function RewindAnimation(animationGroupName) end + +-------------------------------------------------------------- +-- Takes the current positions of the objects referenced by the group, and uses those positions +-- as the new start point for when that object is next animated. +-- +-- @param #string animationGroupName ID of animation group to affect +function SetAnimationStartPoint(animationGroupName) end + +-------------------------------------------------------------- +-- Plays the indicated animation group from beginTime to endTime. So for a 10-second animation, +-- playing from 0 to 5 plays the first half, and playing from 5 to 10 plays the second half. +-- +-- @param #string animationGroupName ID of animation group to play +-- @param #float beginTime Start point of animation in seconds +-- @param #float endTime End point of animation in seconds +function PlayAnimationFromTo(animationGroupName, beginTime, endTime) end + +-- Character + +-------------------------------------------------------------- +-- Returns the total number of units (living or dead) on the specified team. +-- +-- @param #int teamIndex Index of team to get size of +-- @return #int Size of team +function GetTeamSize(teamIndex) end + +-------------------------------------------------------------- +-- Returns the integer character index of the specified unit index from the specified team. +-- +-- @param #int teamIndex Index of team +-- @param #int unitIndex Index of unit to get integer character index of +-- @return #int Integer character index +function GetTeamMember(teamIndex, unitIndex) end + +-------------------------------------------------------------- +-- +-- @param #int characterIndex Index of character to get team of +-- @return #int Index of team the character belongs to +function GetCharacterTeam(characterIndex) end + +-------------------------------------------------------------- +-- Selects the specified team for the specified character (as if you were doing so manually via the spawn screen). +-- +-- @param #int character Character unit +-- @param #int teamIndex Index of team to select +function SelectCharacterTeam(character, teamIndex) end + +-------------------------------------------------------------- +-- Returns whether the specified character is a human player or an AI. +-- +-- @param #int characterIndex Index of character to check "humanity" of +-- @return #int 1 if character is human, 0 if character is not human +function IsCharacterHuman(characterIndex) end + +-------------------------------------------------------------- +-- Selects the specified team for the specified character (as if you were doing so manually via the spawn screen). +-- +-- @param #int character Character unit +-- @param #int class Name of class to select +function SelectCharacterClass(character, class) end + +-------------------------------------------------------------- +-- Returns the numeric index of the specified character's class (starting at 0). If you think of a team's list of +-- classes as a table (with the hero being the last class in the list), the first class's index would be 0, the +-- second class's index would be 1, etc. +-- +-- @param #int integerChrIdx Integer character index returned by GetCharacterUnit +-- @return #int Numeric index of character's class +function GetCharacterClass(integerChrIdx) end + +-------------------------------------------------------------- +-- Moves specified number of units from the source team to the destination team. No, you can't specify which units +-- are moved. All this function does is iterate through the list of units on the source team and move each unit to +-- the source team until the iterator max limit, `numUnits`, has been reached. Think of it as a for loop where +-- the `min` is `1` and the `max` is `numUnits`, and inside the loop is a function that moves the unit index (shifted +-- up by 1, so the player's index is going to be 1) matching the loop's `cur` value to the destination team. +-- +-- Also worth noting is when an alive unit is moved with this function, the function will not automatically kill the +-- unit, so you must kill the unit through some other means if you don't want the unit to remain spawned their current +-- class. One way you might do this (and this is untested) is by looping through `destTeam`'s units and killing them +-- (and only loop through as many as you plan on moving to the other team), and then call `BatchChangeTeams` immediately +-- after the loop has finished. Here's what this might look like: +-- +-- `unitsToMove = 5` +-- +-- `for unit=0,unitsToMove-1 do` +-- ` KillObject(GetCharacterUnit(GetTeamMember(ATT, unit)))` +-- `end` +-- +-- `BatchChangeTeams(ATT, DEF, unitsToMove)` +-- +-- @param #int sourceTeam Index of source team, where units are moved from +-- @param #int destTeam Index of destination team, where units are moved to +-- @param #int numUnits Number of units to move +function BatchChangeTeams(sourceTeam, destTeam, numUnits) end + +-------------------------------------------------------------- +-- Prevents or allows spawning of AI units from the specified team. +-- +-- @param #int teamIndex Index of team to affect +-- @param #int canSpawn Set to 1 to allow AI units on this team to spawn, or 0 to prevent them from spawning +function AllowAISpawn(teamIndex, canSpawn) end + +-------------------------------------------------------------- +-- Spawns the specified character unit index at the specified path point. +-- +-- @param #int integerChrIdx Unit returned from GetCharacterUnit +-- @param pathPoint Path point returned from GetPathPoint +function SpawnCharacter(integerChrIdx, pathPoint) end + +-------------------------------------------------------------- +-- Returns the integer character index from the specified entity or team member index. +-- +-- @param entity Character entity, or character index returned from GetTeamMember +-- @return #int Character unit index +function GetCharacterUnit(entity) end + +-------------------------------------------------------------- +-- Returns the integer vehicle index from the specified vehicle entity. +-- +-- @param entity Vehicle entity +-- @return #int Vehicle index +function GetCharacterVehicle(entity) end + +-------------------------------------------------------------- +-- Returns the integer index from the specified RemoteTerminal entity. See BF2EntityRemoteTerminalClassReference for more information. +-- http://www.secretsociety.com/forum/downloads/BF2Docs/ClassReference/BF2EntityRemoteTerminalClassReference.jpg +-- +-- @param entity RemoteTerminal entity +-- @return #int RemoteTerminal entity index +function GetCharacterRemote(entity) end + +-------------------------------------------------------------- +-- Returns the integer vehicle index from the specified Controllable entity. See BF2ControllableClassReference for more information. +-- http://www.secretsociety.com/forum/downloads/BF2Docs/ClassReference/BF2ControllableClassReference.jpg +-- +-- @param entity Vehicle entity +-- @return #int Controllable entity index +function GetCharacterControllable(entity) end + +-------------------------------------------------------------- +-- Returns a command post's capture region. +-- +-- @param #string postID ID of command post +-- @return #string ID of command post's capture region +function GetCommandPostCaptureRegion(postID) end + +-------------------------------------------------------------- +-- Returns a command post's bleed value. +-- +-- @param #string postID ID of command post +-- @return #int Command post's bleed value +function GetCommandPostBleedValue(postID) end + +-------------------------------------------------------------- +-- Returns a command post's owning team. +-- +-- @param #string postID ID of command post +-- @return #int Index of owning team +function GetCommandPostTeam(postID) end + +-------------------------------------------------------------- +-- Initiates a victory for the specified team. +-- +-- @param #int teamIndex Index of team to declare victory for +function MissionVictory(teamIndex) end + +-------------------------------------------------------------- +-- Initiates a defeat for the specified team. +-- +-- @param #int teamIndex Index of team to declare defeat for +function MissionDefeat(teamIndex) end + +-------------------------------------------------------------- +-- Sets the movie to play once the mission has ended. +-- +-- @param #string sourceFilename File containing the movie +-- @param #string movieID ID of the movie properties to play +function SetMissionEndMovie(sourceFilename, movieID) end + +-- AI Goal management functions + +-------------------------------------------------------------- +-- Removes all previous AI goals for this team. You should call this before you set the +-- first goals for a team, since teams 1, 2, and 3 start out with a default Conquest goal. +-- +-- @param #int teamIndex Index of team to clear goals of +function ClearAIGoals(teamIndex) end + +-------------------------------------------------------------- +-- Removes the specified goal. +-- +-- @param goalHandle Handle returned by AddAIGoal +function DeleteAIGoal(goalHandle) end + +-------------------------------------------------------------- +-- Adds an AI goal for this team. +-- +-- @param #int teamIndex Index of team to add goal to +-- @param #string goalType Goal's type. Can be one of the following... +-- `Conquest` - capture enemy team's CPs while preventing own from being captured. +-- `Deathmatch` - just kill everyone. +-- `Destroy` - destroy the target (a gameobject pointer, or a character index) (set in target1). +-- `Defend` - defend the target (a gameobject pointer, or a character index) (set in target1). +-- `CTFOffense` - try to get the specified flag (set in `target2`) and bring it back to the specified region (set in target1). +-- `CTFDefense` - protect the specified flag (set in `target1`), and hunt down and return it when its stolen. +-- `Follow` - follow around the target (like defend, but uses a tight follow) (set in `target1`). +-- @param #int weight Weight is a relative weight for this goal. Since you can specify more than one goal for a +-- team at a time, this specifies how the guys are divided. A goal with weight 2 will get +-- twice as many guys as the goal with weight 1. The size of the numbers doesn't matter and +-- they don't have to add up to 100 or anything. +-- @param target1 If `goalType` is: +-- `Destroy` - this is a gameobject pointer or a character index. +-- `Defend` - this is a gameobject pointer or a character index. +-- `CTFOffense` - this is a region name. +-- `CTFDefense` - this is a flag pointer. +-- `Follow` - this is a gameobject pointer. +-- @param target2 If `goalType` is: +-- `CTFOffense` - this is a flag pointer. +-- @return Goal's handle. +function AddAIGoal(teamIndex, goalType, weight, target1, target2) end + +-- dynamic congraph functions + +-------------------------------------------------------------- +-- Blocks the given dynamic connection/group if it is currently unblocked, or unblocks it if it is currently blocked. +-- +-- @param #int connection ID of dynamic connection or planning group to toggle +function TogglePlanningGraphArcs(connection) end + +-------------------------------------------------------------- +-- Blocks the given dynamic connection/group. +-- +-- @param #int connection ID of dynamic connection or planning group to block +function BlockPlanningGraphArcs(connection) end + +-------------------------------------------------------------- +-- Unblocks the given dynamic connection/group. +-- +-- @param #int connection ID of dynamic connection or planning group to unblock +function UnblockPlanningGraphArcs(connection) end + +-- dynamic barrier functions + +-------------------------------------------------------------- +-- Disables the given barrier if it is currently enabled, or enables it if it is currently disabled. +-- +-- @param #int connection ID of barrier to toggle +function ToggleBarriers(barrierID) end + +-------------------------------------------------------------- +-- Enables the given barrier. +-- +-- @param #int connection ID of barrier to enable +function EnableBarriers(barrierID) end + +-------------------------------------------------------------- +-- Disables the given barrier. +-- +-- @param #int connection ID of barrier to disable +function DisableBarriers(barrierID) end + +-------------------------------------------------------------- +-- Prevents all AI or AI on a specified team from using any vehicle. When this +-- is called, AI currently in a vehicle will be forced out of it. +-- +-- @param #int teamIndex Index of team to force out of vehicles +-- @param #bool enabled True to prevent AI from entering vehicles, false to allow them to do so +function ForceAIOutOfVehicles(teamIndex, enabled) end + +-------------------------------------------------------------- +-- Disables the given barrier. +-- +-- @param #string postID ID of command post +-- @param #int teamIndex Index of team whose AI to affect +-- @param #int canCapture Set to 1 to allow AI from teamIndex to capture postID, set to 0 to prevent them from capturing it +function AICanCaptureCP(postID, teamIndex, canCapture) end + +-------------------------------------------------------------- +-- Sets the threshold at which AI units can no longer damage the specified +-- object or entity. For example, if threshold is 0.5, AI will not be able +-- to damage the object or entity if its health percentage is <= 50%. +-- +-- @param object Object or entity to affect +-- @param #float threshold Lowest health percentage that object can be brought to by AI +function SetAIDamageThreshold(object, threshold) end + +-------------------------------------------------------------- +-- Translates AI command IDs to strings. +-- +-- @param command_id command_id returned by CharacterIssueAICommand event +-- @return #string Depending on command_id, will be one of the following: "getintovehicle", +-- "getoutofvehicle", "waitforpickup", "followchr", or "stopfollowchr" +function TranslateAICommand(command_id) end + +-------------------------------------------------------------- +-- Adds the specified amount to the specified entity's MaxShields. NOTE: This does not affect the entity's CurShields value. +-- +-- @param entity Entity, or integer index returned by GetCharacterUnit, GetCharacterVehicle, etc. +-- @param #int shields Amount of shields to add +function AddShieldStrength(entity, shields) end + +-------------------------------------------------------------- +-- Sets the north angle on the minimap. +-- +-- @param #int angle New minimap rotation angle in degrees (clockwise) +-- @param #int number Unknown, seemingly optional, doesn't appear to do anything. Some stock mission scripts have this set to 1, some don't include it at all +function SetMapNorthAngle(angle, number) end + +-------------------------------------------------------------- +-- Forces all non-AI players to join team 1. +function ForceHumansOntoTeam1() end + +-------------------------------------------------------------- +-- Returns whether or not the specified character can interact with flags. +-- +-- @param #int integerChrIdx Character unit index to check for flag interactibility (yeah I made up that word, so what, big whoop, wanna fight about it?) +-- @return #int 1 if character can interact with flag, 0 if not +function CanCharacterInteractWithFlag(integerChrIdx) end + +-------------------------------------------------------------- +-- Returns the character unit carrying the specified flag. +-- +-- @param #string flag Name of the flag in the level +-- @return #int Character unit index of flag carrier +function GetFlagCarrier(flag) end + +-------------------------------------------------------------- +-- Sets the map overall range (whatever that means). My guess is it's related to unit scan/transmit +-- radar reporting. Either way, it doesn't appear to actually do anything. +-- +-- @param #int range Range in meters? (or maybe units in relation to minimap size) +function SetMapRangeOverall(range) end + +-------------------------------------------------------------- +-- Sets the map shooting range (whatever that means). My guess is it's related to unit scan/transmit +-- radar reporting. Either way, it doesn't appear to actually do anything. +-- +-- @param #int range Range in meters? (or maybe units in relation to minimap size) +function SetMapRangeShooting(range) end + +-------------------------------------------------------------- +-- Sets the map range view cone (whatever that means). My guess is it's related to unit scan/transmit +-- radar reporting. Either way, it doesn't appear to actually do anything. +-- +-- @param #int range Cone range in meters? (or maybe units in relation to minimap size) +function SetMapRangeViewCone(range) end + +-------------------------------------------------------------- +-- Sets the map view cone angle (whatever that means). My guess is it's related to unit scan/transmit +-- radar reporting. Either way, it doesn't appear to actually do anything. +-- +-- @param #int angle Cone angle in degrees? +function SetMapViewConeAngle(angle) end + +-------------------------------------------------------------- +-- Removes the small minimap from the HUD. +function DisableSmallMapMiniMap() end + +-- effects + +-------------------------------------------------------------- +-- Spawns a new instance of the specified particle effect and returns it. +-- +-- @param effectFilename Name of particle effect to instantiate +-- @return Particle effect instance +function CreateEffect(effectFilename) end + +-------------------------------------------------------------- +-- Deletes the specified particle effect instance. +-- +-- @param effect Particle effect instance returned by CreateEffect +function RemoveEffect(effect) end + +-------------------------------------------------------------- +-- Attaches the specified particle effect instance to the specified object. +-- +-- @param effect Particle effect instance returned by CreateEffect +-- @param #string object ID of object to attach effect to +function AttachEffectToObject(effect, object) end + +-------------------------------------------------------------- +-- Attaches the specified particle effect instance to the specified matrix. +-- +-- @param effect Particle effect instance returned by CreateEffect +-- @param matrix Matrix to attach effect to +function AttachEffectToMatrix(effect, matrix) end + +-------------------------------------------------------------- +-- Returns the matrix of the specified particle effect instance. +-- +-- @param effect Particle effect instance returned by CreateEffect +-- @return Effect matrix +function GetEffectMatrix(effect) end + +-------------------------------------------------------------- +-- Sets the matrix of the specified particle effect instance. +-- +-- @param effect Particle effect instance returned by CreateEffect +function SetEffectMatrix(effect, matrix) end + +-------------------------------------------------------------- +-- Returns whether or not the specified particle effect is active. +-- +-- @param effect Particle effect instance returned by CreateEffect +-- @return #int 1 if effect is active, 0 if effect is inactive +function IsEffectActive(effect) end + +-------------------------------------------------------------- +-- Sets the state of the specified particle effect. +-- +-- @param effect Particle effect instance returned by CreateEffect +-- @param #int active Set to 1 to activate effect, set to 0 to deactivate effect +function SetEffectActive(effect, active) end + + + diff --git a/Other/000_Notes/Cade_Allos' Guide to Hex Editing/CadeAllosguidetohexediting.txt b/Other/000_Notes/Cade_Allos' Guide to Hex Editing/CadeAllosguidetohexediting.txt new file mode 100644 index 0000000..b420047 --- /dev/null +++ b/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. + +Requirements: +Hex Editor. Pspad recommended, I use it and find it very good. +Star Wars Battlefront II, already installed +Patience + +Recommended: +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 +well as some more advanced techniques. WARNING: THIS GUIDE IS FOR BEGINNER MODDERS ONLY, AND IS SUITABLE FOR +THOSE WITH LOW INTERNET SPEEDS SUCH AS MYSELF. IF YOU HAVE BROADBAND OR A HIGH INTERNET SPEED, JUST DOWNLOAD THE +MOD TOOLS FROM: starwarsbattlefront.filefront.com/file/Star_Wars_Battlefront_Modding_Tools;34987. + +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. + +***IF YOU MAKE A MISTAKE, DON'T HIT DELETE OR BACKSPACE. JUST CLICK ON THE LETTER AND WRITE OVER IT. You musn't delete +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. + +REPLACE: WITH: +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. + +REPLACE: WITH: +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: + +REPLACE: WITH: +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 + +***WHAT NOT TO CHANGE:*** + cis_fly_droidfighter_dome + cis_fly_fedlander_dome + +***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 + +* starwarsbattlefront.filefront.com 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 \ No newline at end of file diff --git a/Other/000_Notes/Cade_Allos' Guide to Hex Editing/Charactor Guide #2.txt b/Other/000_Notes/Cade_Allos' Guide to Hex Editing/Charactor Guide #2.txt new file mode 100644 index 0000000..9febd4b --- /dev/null +++ b/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... + +STAR WARS + +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 + +EPISODE 2 + +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 + +EPISODE 3 + +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 + +HEROES + +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 + +VEHICLES + +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 + +HEROES + +Count Dooku cis_hero_countdooku +Jango Fett cis_hero_jangofett +Darth Maul cis_hero_darthmaul +General Grievous cis_hero_grievous + +VEHICLES + +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 + +HEROES + +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 + +VEHICLES + +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 + +HEROES + +Darth Vader imp_hero_darthvader +Boba Fett imp_hero_bobafett +The Emperor imp_hero_emperor + +VEHICLES + +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 + +________________________________________________________________________________________________________ +5.) JEDI SIDE + +Dual Saber or Double Blade Jedi are jedi masters +Single blade jedi are jedi knights +Jedi Jumpers Are dual blade jedi + +jed_master_01 +jed_master_02 +jed_master_03 +jed_master_04 +jed_knight_01 +jed_knight_02 +jed_knight_03 +jed_knight_04 +jed_jumper +jed_sith_01 + +***Some of these don't work*** + +________________________________________________________________________________________________________ +6.) OTHER + +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! + + + diff --git a/Other/000_Notes/Cade_Allos' Guide to Hex Editing/mission.lvl b/Other/000_Notes/Cade_Allos' Guide to Hex Editing/mission.lvl new file mode 100644 index 0000000..451e233 Binary files /dev/null and b/Other/000_Notes/Cade_Allos' Guide to Hex Editing/mission.lvl differ diff --git a/Other/000_Notes/LICENSE b/Other/000_Notes/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/Other/000_Notes/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + 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. + + Preamble + + 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. + + TERMS AND CONDITIONS + + 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 +Source. + + 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 +measures. + + 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. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Other/000_Notes/ODF Parameters.txt b/Other/000_Notes/ODF Parameters.txt new file mode 100644 index 0000000..d7268d9 --- /dev/null +++ b/Other/000_Notes/ODF Parameters.txt @@ -0,0 +1,2345 @@ +Header +[GameObjectClass] +ClassLabel is required by the game engine to determine it's functional properties. +GeometryName is required to display the lowrez mesh within the zeroeditor. +GeometryScale is required by zero to reflect any post-XSI scaling done through the msh.option file + +Classlabels +Collision-less Object Classlabels + DustEffect + Cloth + Light + +Objects with Collision +Prop +Any building with infinite health should be classlabel prop. +Prop subclasses include + Door + AnimatedProp + + +Damageable objects with finite health +Asteroid +Building/DestructableBuilding - If you want a building with health use classlabel destructible building. + + AnimatedBuilding + CommandPost + BuildingAnimatedArmed ? + CommandArmedAnimatedBuilding + ArmedBuilding + CommandBuildingArmed ? + BuildingArmedDynamic ? + DefenseGridTurret + PortableTurret + Trap + PowerupStation +Droid +Droideka +Flyer + CommandFlyer + Carrier +Hover + CommandHover +Item + Mine + FlagItem + PowerupItem +RemoteTerminal +Soldier +Walker + CommandWalker + + + + +BF2 Controllable Objects +Controllable objects support camera views and first person models + Droid + Droideka + Flyer + Hover + RemoteTerminal + Soldier + Walker + MountedTurret + PassengerSlot + +Controllable objects support units + ThirdPersonFOV + FirstPersonFOV + ForceMode + VehiclePosition + CockpitTension + NumBobPoints + BobVector + BobSlope + BobOrient + BobRSlope + BobTime + ShakeScale + PilotPosition + AnimatedPilotPosition + Pilot9Pose + PilotAnimation + PilotType + none + self + vehicle + remote + vehicleself + IsPilotExposed + PilotDeath + fly + fall + CapturePosts + NoEnterVehicles + IgnoreHintNodes + ControlsUnit + AnimatesUnitAsTurret + + + +Controllable objects support weapons +Weapons Have Aimers + Aimer Properties +AimerPitchLimits deg +AimerPitchRate +AimerYawLimits deg +AimerYawRate +AimerRestDirection xyz +BarrelOffset +AimerOffset xyz +AimerNodeName +NextBarrel +BarrelNodeName +BarrelLength +BarrelRecoil +FirePointName +FireNodeName +HierarchyLevel bool +FireOutsideLimits bool +NextAimer + +BF2 Weapon Classes +Weapon + NextCharge + IconTexture + ReticuleTexture + ScopeTexture + Ordnance + OrdnanceName + AmmoPerShot + HeatPerShot + HeatRecoverRate + MagReloadTime + ReloadTime + ZoomMin + ZoomMax + ZoomRate + ZoomTurnDivisorMin + ZoomTurnDivisorMax + ZoomFirstPerson + RecoilStrengthHeavy + RecoilStrengthLight + RecoilLengthLight + RecoilLengthHeavy + RecoilDelayLight + RecoilDelayHeavy + RecoilDecayLight + RecoilDecayHeavy + MaxChargeStrengthHeavy + MaxChargeStrengthLight + ChargeRateHeavy + ChargeRateLight + ChargeDelayLight + ChargeDelayHeavy + TimeAtMaxCharge + TriggerSingle + ExtremeRange + LockOnRange + AutoAimSize + LockOnAngle + LockOffAngle + MinRange + OptimalRange + MaxRange + TargetEnemy + TargetNeutral + TargetFriendly + TargetAll + TargetPerson + TargetAnimal + TargetDroid + TargetVehicle + TargetBuilding + TargetBuildingDead + TargetBuildingUnbuilt + TargetMine + AITargetAll + AITargetPerson + AITargetAnimal + AITargetDroid + AITargetVehicle + AITargetBuilding + AITargetBuildingDead + AITargetBuildingUnbuilt + AITargetMine + GeometryName + WeaponName + HUDTag + HighResGeometry + CustomAnimationBank + AnimationBank + FirePointName + FireSound + FireSoundStop + ReloadSound + FireLoopSound + FireEmptySound + ChargeSound + ChargedSound + ChargeSoundStop + ChargeSoundPitch + WeaponChangeSound + OverheatSound + OverheatSoundPitch + OverheatStopSound + ClankLeftWalkSound + ClankRightWalkSound + ClankLeftRunSound + ClankRightRunSound + JumpSound + LandSound + RollSound + ProneSound + SquatSound + StandSound + BarrageMin + BarrageMax + BarrageDelay + SniperScope + FlashRadius + FlashWidth + FlashLength + FlashColor + FlashLightColor + FlashLightRadius + FlashLightDuration + MuzzleFlashEffect + ChargeUpEffect + MuzzleFlashModel + FireAnim + MuzzleFlash + small_muzzle_flash + med_muzzle_flash + large_muzzle_flash + EnergyDrain + AutoPitchScreenDist + AutoTurnScreenDist + TargetLockMaxDistance + TargetLockMaxDistanceLose + ScoreForMedalsType + MedalsTypeToUnlock + MedalsTypeToLock + InstantPlayFireAnim bool + OffhandWeapon bool + ReticuleInAimingOnly bool + DisplayRefire bool + AIBubbleCircle bool + AIBubbleSizeMultiplier float + AIBubbleScaleDistDivider float + AIBubbleScaleClamp float + NoFirstPersonFireAnim bool + + WeaponAreaEffect + FireType + Repeat + Charge + Hold + EffectType + Push + Pull + Choke + Stun + Mindtrick + AreaType + Sphere + Cylinder + Arc + Ray + InitialSalvoDelay + AreaRange + AreaRadius + AreaHeight + MaxTargets + EffectDamage + EffectStrength + EffectFalloff + EnergyDrainRate + ChargeMaxTime + ChargeMinStrength + ThrustFactor + TargetLock + SoldierAnimation + WeaponBinoculars + WeaponCannon + ShotDelay + MaxPressedTime + MaxSpread + PitchSpread + YawSpread + StandStillSpread + StandMoveSpread + StandAimSpread + CrouchStillSpread + CrouchMoveSpread + CrouchAimSpread + ProneStillSpread + ProneMoveSpread + ProneAimSpread + KickSpread + SpreadPerShot + SpreadRecover + SpreadRecoverRate + SpreadThreshold + SpreadLimit + KickStrength + KickBuildup + SalvoCount + ShotsPerSalvo + SalvoDelay + InitialSalvoDelay + ShotPatternCount + ShotPatternPitchYaw + WarmUpTime + CoolDownTime + WarmUpSoundStartPitch + WarmUpSoundFadeInTime + WarmUpSoundFadeOutTime + BarrelSoundFadeInTime + BarrelSoundFadeOutTime + CoolDownSoundEndPitch + CoolDownSoundFadeInTime + CoolDownSoundFadeOutTime + WarmUpSound + BarrelSound + CoolDownSound + SecondaryOrdnance + SecondaryOrdnanceName + SecondaryOrdnancePeriod + WeaponGrapplingHook + WeaponLauncher + Ordnance + OrdnanceName + LockTime + TrackingSound + ClearLockOnFire + WeaponTowCable + WindSound + DetatchSound + WeaponCatapult + ArmName + CockedAngle + OrdnanceGeometryName + WeaponDestruct + MaxPressedTime + ExplosionClass + SelfDestructSoundPitch + WeaponDisguise + TimeToChange + WeaponDispenser + HideOnFire + Ordnance + OrdnanceName + Velocity + ShotDelay + MaxPressedTime + MinStrength + MaxStrength + InitialSalvoDelay + InitialSalvoDelayProne + MaxItems + FirePointExtraOffset + WeaponDetonator + PlantedHash + WeaponRemote + SwitchImmediately + AllowDestruct + WeaponGrenade + + Weapon Grenade + ShotDelay + InitialSalvoDelay + InitialSalvoDelayUnderhand + InitialSalvoDelayProne + ShotElevate + MaxPressedTime + HideOnFire + ForceFireAnimation + WeaponInvisibility + InvisibilityTrigger + Press "0" + Toggle "1" + Hold "2" + InvisibilityPersistTime + InvisibilityMax + InvisibilityMin + SpeedForInvisibilityMax + SpeedForInvisibilityMin + InvisibilityIncRate + InvisibilityDecRate + FlickerAmplitude + FlickerTimeMin + FlickerTimeMax + InitialSalvoDelay + InitialEnergyDrain + WeaponLaser + ShotDelay + SalvoTime + WeaponMelee + Explosion + ExplosionName + HitEffect // this call now gets rid of any additional hit effects + AddHitEffect // add extra hit effects - choose one randomly when making contact - Mike Z + HitSound + DeflectEffect + DeflectSound + TurnOnDuration + OnSound + TurnOnSound + TurnOffSound + NumDamageEdges + DamageEdgeLength + LightSaberLength + DamageEdgeWidth + LightSaberWidth + LightSaberTexture + LightSaberGlowTexture + LightSaberTrailColor + CustomAnimationBank // Override handling of WeaponAnimationBank tags + ComboAnimationBank // Override handling of WeaponAnimationBank tags + GeometryName + FirePointName + OffhandGeometryName + OffhandFirePointName + AttachedFirePoint + WeaponMeleeThrow + PrimaryWeaponIndex + InitialSalvoDelay + WeaponRepair + ShotDelay + SoldierHealth + SoldierAmmo + PersonHealth + PersonAmmo + AnimalHealth + AnimalAmmo + DroidHealth + DroidAmmo + VehicleHealth + VehicleAmmo + BuildingHealth + BuildingAmmo + BuildingRebuild + BuildingBuild + MineHealth + WeaponShield + MaxShield + AddShield + AddShieldOff + ShieldOffset + ShieldRadius xyz + ShieldEffect + ShieldSound + ShieldOffSound + + + + + + + + + + + + + + + + + +Entity + DustEffect + MinPos + MaxPos + MinVel + MaxVel + MinSize + MaxSize + MinLifeTime + MaxLifeTime + Alpha + Color + NumParticles + MaxDistance + MinDistance + RadiusFadeMin + RadiusFadeMax + HeightScale + Texture + CameraDistance + SpawnSound + + Cloth + winddirection + windspeed + dampening + drag + particlemass + maxacceleration + attachedmesh + priority + crossconstraint + bendconstraint + stretchconstraint + hardedge + transparent + EntityEx + EntityGeometry + IsVisible ? + IsCollidable ? + CHUNKSECTION + CHUNK + CHUNK1 + CHUNK2 + CHUNK3 + CHUNK4 + CHUNK5 + CHUNK6 + CHUNK7 + CHUNK8 + CHUNK9 + LODPriorityMod + GeometryName + ChunkGeometryName + ChunkNodeName + ChunkTerrainCollisions + ChunkTerrainEffect + ChunkTrailEffect + ChunkSmokeEffect + ChunkSmokeNodeName + ChunkTrailNodeName + ChunkPhysics + FULL + LEAF + STATIC + COCKPIT + SIMPLE + ChunkOmega xyz + ChunkSpeed + ChunkGravity + ChunkLinearDamping + ChunkAngularDamping + ChunkDeathSpeed + ChunkVelocityFactor + ChunkUpFactor + ChunkBounciness + ChunkStickiness + ChunkSimpleFriction + ChunkLifetime + ChunkInitialCollisionSound + ChunkScrapeCollisionSound + ChunkKeepSoldierCollision + TerrainCollisionPrim + BuildingCollisionPrim + VehicleCollisionPrim + SoldierCollisionPrim + OrdnanceCollisionPrim + TargetableCollisionPrim + sphere radius + aacylinder radius,height + cylinder radius,height + box radius,height,width + TerrainCollisionPrim + BuildingCollisionPrim + VehicleCollisionPrim + SoldierCollisionPrim + OrdnanceCollisionPrim + TargetableCollisionPrim + TargetableCollision + TerrainCollision + BuildingCollision + VehicleCollision + SoldierCollision + OrdnanceCollision + HitLocation + Lighting + dynamic + static + MaxShadowLength + DeathOnFlyerLand + DenyFlyerLand + TargetPointOffset + Prop + GeometryName = "mesh filename" + TerrainCollisionPrim = + BuildingCollisionPrim = + VehicleCollisionPrim = + SoldierCollisionPrim = + OrdnanceCollisionPrim = + sphere x,y,z, radius // manually create invisible collision using predefined shape + aacylinder x,y,z, radius,height // manually create invisible collision using predefined shape + cylinder x,y,z, radius,height // manually create invisible collision using predefined shape + box x,y,z, radius,height,width // manually create invisible collision using predefined shape + TargetableCollision = "geometryname" + TerrainCollision = "geometryname" + BuildingCollision = "geometryname" + VehicleCollision = geometryname, none, clear + VehicleCollisionOnly ="geometryname" //masks from soldier collision + SoldierCollision = geometryname, none, clear + OrdnanceCollision = geometryname, none, clear + DestroyedGeometryName = "mesh filename" + LowResModel = "geometryname" + GeometryColorMin = "r,g,b,a" + GeometryColorMax = "r,g,b,a" + SoundOffset = x,y,z + SoundWhenMoving = soundpropertyname + SoundProperty = soundpropertyname + StartMovementSound = soundpropertyname + StopMovementSound = soundpropertyname + Lighting = dynamic or static //controls dynamic lighting + DeathOnFlyerLand = 0 or 1 // kills flyers that land on object + DenyFlyerLand = 0 or 1 // prevents ai from landing on object + AttachEffect = "effect filename" + AttachOdf = "odf filename" + AttachToHardPoint = "hard point name" + MaxDistance = // sets distance of attached odfs, may need to go in attached odf + Door + OpenTrigger + OpenRatio + IsLocked + AnimationName + Animation + AnimationTrigger + OpenSound + CloseSound + LockedSound + AnimatedProp + AnimationName + Animation + AttachTrigger + die + AnimationTrigger + DisableForCloneWars + TrackDeathOnAttach + IdleDelay + KillSoldierSound + AnimationTriggerSound + GameObject + Team + PerceivedTeam + CurHealth + MaxHealth + AddHealth + CurShield + MaxShield + AddShield + DisableTime + PhysicsActive + HealthType + Person + Animal + Droid + Vehicle + Building + Mine + HealthTypeForLockOn + Person + Animal + Droid + Vehicle + Building + Mine + MaxHealth + AddHealth + MaxShield + AddShield + HideHealthBar + PilotSkillRepairScale + ScanningRange + TransmitRange + ReserveOneForPlayer + AvailableForAnyTeam + HurtSound + HurtFallSound + DeathSound + DamageRegionSound + AISizeType + SOLDIER + HOVER + SMALL + MEDIUM + HUGE + FLYER + AINoRepair + DamageStartPercent + DamageStopPercent + DamageEffect + DamageEffectScale + DamageInheritVelocity + DamageAttachPoint + DamageAttachOffset + DamageEffectSound + VOSound + VOUnitType + VORadius + SwitchClassRadius + IsNotTargetableByPlayer + LockOnMinDist + LockOnMaxDist + LockOnMaxTrackDist + PointsToUnlock + DisabledEffect + HideHealthBar + AICollisionRadius + RadiusDamageSizeScale + VehicleType //Used By Vehicles + SCOUT + LIGHT + MEDIUM + HEAVY + FIGHTER + TRANSPORT + CAPITOL + REMOTETERMINAL + ATAT + Asteroid + GeometryName + SoldierCollision + OrdnanceCollision + MinSpeed + MaxSpeed + MinOmega + MaxOmega + Collidable + ExplosionBreak + Explosion + ExplosionName + ExplosionDestruct + ChildAsteroid + Building + GeometryName + DestroyedGeometryName + UnbuiltGeometryName + Explosion + ExplosionName + ExplosionOffset + RespawnTime + UnbuiltHoloOdf + BuiltSound + BuildingSound + AutoBarrierEnable + AutoBarrierRemoveOnDeath + ColorizeByTeam + AutoBarrierSize + AnimatedBuilding + AnimationName + IdleAnimation + DeathAnimation + EnableDeathExplosions + DeathEffect + CommandPost + Label + CaptureRegion + ControlRegion + KillRegion + SpawnPath + SpawnRegion + AllyPath + TurretPath + AllyCount + Radius + HUDIndex + HUDIndexDisplay + /* player(s) is/are Alliance + VO_All_AllCapture + VO_All_AllLost + VO_All_AllInDispute + VO_All_AllSaved + VO_All_AllInfo + VO_All_ImpCapture + VO_All_ImpLost + VO_All_ImpInDispute + VO_All_ImpSaved + VO_All_ImpInfo + /* player(s) is/are Empire + VO_Imp_AllLost + VO_Imp_AllInDispute + VO_Imp_AllSaved + VO_Imp_AllInfo + VO_Imp_ImpCapture + VO_Imp_ImpLost + VO_Imp_ImpInDispute + VO_Imp_ImpSaved + VO_Imp_ImpInfo + /* player(s) is/are Republic + VO_Rep_RepCapture + VO_Rep_RepLost + VO_Rep_RepInDispute + VO_Rep_RepSaved + VO_Rep_RepInfo + VO_Rep_CISCapture + VO_Rep_CISLost + VO_Rep_CISInDispute + VO_Rep_CISSaved + VO_Rep_CISInfo + /* player(s) is/are CIS + VO_CIS_RepCapture + VO_CIS_RepLost + VO_CIS_RepInDispute + VO_CIS_RepSaved + VO_CIS_RepInfo + VO_CIS_CISCapture + VO_CIS_CISLost + VO_CIS_CISInDispute + VO_CIS_CISSaved + VO_CIS_CISInfo + ValueBleed_Alliance + ValueBleed_CIS + ValueBleed_Empire + ValueBleed_Republic + ValueBleed_Neutral + ValueBleed_Locals + Value_ATK_Alliance + Value_ATK_CIS + Value_ATK_Empire + Value_ATK_Republic + Value_ATK_Locals + Value_DEF_Alliance + Value_DEF_CIS + Value_DEF_Empire + Value_DEF_Republic + Value_DEF_Locals + SoldierBan + HoverBan + SmallBan + MediumBan + HugeBan + FlyerBan + AISpawnWeight + NeutralizeTime + CaptureTime + HoloOdf + HoloImageGeometry + HoloTurnOnTime + ChargeSound + CapturedSound + DischargeSound + LostSound + DisputeSound + AmbientSound + SoundPitchDev + CaptureMusic + LostMusic + SpawnPointNames + SpawnPointCount + SpawnPointLocation + BuildingAnimatedArmed ? + BUILDINGSECTION + BODY + TURRET + TURRET1 + TURRET2 + TURRET3 + TURRET4 + TURRET5 + TURRET6 + TURRET7 + TURRET8 + CommandArmedAnimatedBuilding + ArmedBuilding + NoAIBoard + BUILDINGSECTION + BODY + TURRET + TURRET1 + TURRET2 + TURRET3 + TURRET4 + TURRET5 + TURRET6 + TURRET7 + TURRET8 + CommandBuildingArmed ? + BuildingArmedDynamic ? + DefenseGridTurret + RespawnTime + PortableTurret + LifeTime + Gravity + Rebound + Friction + CollisionSound + CollisionWaterSound + CollisionOtherSound + Trap + GeometryName + AnimationName + BuildAnimation + BuildPoint + BuildModelOdf + TriggerAnimation + TriggerNode + TriggerOffset + TriggerRadius + TriggerTeam + all + imp + rep + cis + RayTriggerWidth + RayTriggerMinSpeed + ResetTeam + all + imp + rep + cis + MinEnemyRadius + DeathTime + DeathEffect + DeathEffectOffset + TriggerSound + BuiltCollision + TriggerCollision + HideUnbuiltModel + DeathOnCollision + PowerupStation + EffectRegion + Radius + PowerupDelay + SoldierHealth + SoldierAmmo + SoldierEnergy + PersonHealth + PersonAmmo + PersonEnergy + AnimalHealth + AnimalAmmo + AnimalEnergy + DroidHealth + DroidAmmo + DroidEnergy + VehicleHealth + VehicleAmmo + VehicleEnergy + BuildingHealth + BuildingAmmo + BuildingEnergy + BuffOffenseTimer + BuffOffenseMult + BuffDefenseTimer + BuffDefenseMult + BuffHealthTimer + BuffHealthRate + DebuffDamageTimer + DebuffDamageRate + PowerupSound + AmbientSound + IdleRotateSpeed + IdleWaitTime + IdleWobbleNode + IdleWobbleFactor + IdleWobbleLeftFoot + IdleWobbleRightFoot + ActiveRotateNode + ActiveSpinNode + Droid + GeometryName + SetAltitude + GravityScale + LiftSpring + LiftDamp + NoCombatInterrupt + Acceleration + Acceleraton //HACK support old typo + MaxSpeed + MaxStrafeSpeed + MaxTurnSpeed + MaxPitchSpeed + PitchLimits + LevelSpring + LevelDamp + CollisionThreshold + CollisionScale + CollisionInflict + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponShareAmmo + WeaponShareHeat + WeaponChannel + Explosion + ExplosionName + EnergyAutoRestore + AmbientSound + Ambient2Sound + DestructTrackOffset + DestructTiltValue + DestructChargeEffect + Droideka + MouseTurnDecay + FirstPerson + GeometryName + UprightLowResModel + BallLowResModel + VehicleType + NoCombatInterrupt + AnimationName + Acceleration + Acceleraton //HACK support old typo + MaxSpeed + MaxTurnSpeed + MaxYawSpeed + YawLimits + MaxPitchSpeed + UnrollTime + RollTime + PitchLimits + CollisionThreshold + CollisionScale + CollisionInflict + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponShareAmmo + WeaponShareHeat + WeaponChannel + Explosion + ExplosionName + TEMP_AnimationSpeed - No Longer in code, was in ODFs for develpment + StompEffect + AttachNodeName + NoDeathExplosions + DeathDustEffect + DeathDustDelay + DeathDustOffset + DeathShakeDelay + DeathShakeForce + DeathShakeDuration + DeathShakeRadius + JumpSound + LandSound + Footstep0Sound + Footstep1Sound + Footstep2Sound + HydraulicSound + HydraulicSoundHeight + StoppedTurnSpeed ? + ForwardTurnSpeed ? + TurnThreshold + MaxTerrainAngle + WaterDamageInterval + WaterDamageAmount + BallRadius + BallMoveSpeed + BallStoppedTurnSpeed + BallTurnSpeed + BallSprintTurnSpeed + BallSlippage + BallMaxLean + BallAcceleration + BallRollingFriction + MaxBallAngle + SprintTimeForBowling + BowlingPush + BallSprintSpeedBoost + BallJumpHeight + BallJumpForwardBoost + EnergyRestore + EnergyRestoreIdle + EnergyDrainSprint + EnergyCostJump + EnergyCostBowling + WakeEffect + CAMERASECTION + STAND + STANDZOOM + CROUCH + SPLITSTAND + SPLITSTANDZOOM + SPLITCROUCH + UprightWaterDamageHeight + BallWaterDamageHeight + HealthGainEffect + AmmoGainEffect + EnergyGainEffect + BuffHealthEffect + BuffOffenseEffect + BuffDefenseEffect + DebuffEffect + Flyer + FLYERSECTION + BODY + TURRET + TURRET1 + TURRET2 + TURRET3 + TURRET4 + TURRET5 + TURRET6 + TURRET7 + TURRET8 + GeometryName + FirstPerson + NoCombatInterrupt + SoldierCollision + OrdnanceCollision + VehicleType + AnimationName + Acceleration + Acceleraton //HACK support old typo + BoostAcceleration + MinSpeed + MidSpeed + MaxSpeed + BoostSpeed + StrafeSpeed + PitchRate + PitchFilter + PitchFilterDecel + TurnRate + TurnFilter + TurnFilterDecel + PitchBuildupMultiplier + TurnBuildupMultiplier + ThrustPitchAngle + StrafeRollAngle + BankAngle + BankFilter + LevelFilter + LevelFilterLanding + RollRate + RollRateAccel + TakeoffHeight + TakeoffTime + TakeoffSpeed + LandingTime + LandingSpeed + LandedHeight + CollisionThreshold + CollisionScale + CollisionInflict + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponShareAmmo + WeaponShareHeat + WeaponChannel + ExplosionCritical + Explosion + ExplosionName + ExplosionDestruct + ThrustEffect + ThrustEffectMinScale + ThrustEffectMaxScale + ThrustEffectScaleStart + ThrustAttachPoint + ThrustAttachOffset + ContrailEffect + ContrailAttachPoint + ContrailAttachOffset + ContrailEffectMinSpeed + ContrailEffectMaxSpeed + ContrailEffectMinScale + ContrailEffectMaxScale + BlurEffect + BlurStart + FinAnimation + PassengerSlots + FOVEffect3rd DEG + FOVEFFectMinCamOffset3rd + FOVEFFectMaxCamOffset3rd + FOVEffect1st DEG + EnergyAutoRestore + EnergyBoostDrain + EnergyTrickDrainSingleTap + EnergyTrickDrainDoubleTap + TrickRollSpeed + TrickFlipSpeed + TrickFlipCameraDetach + TrickSideRollCameraDetach + TrickSideRollStrafeSpeed + MomentumFilter + FreeFlyTime + TrickTimeMid + TrickTimeRange + CircleATATFrequency + SquadronMaxAngle + SquadronDistance + TimeRequiredToEject + EjectResistance + TimeTilReboard + NeverCrashWhenUnpiloted + GuidedMissile + GuidedMissileDamage + GuidedMissileDamageBoost + HealthScale + ArmorScale + PersonScale + AnimalScale + DroidScale + VehicleScale + BuildingScale + ShieldScale + GuidedMissileDeathCamPause + GuidedMissileDeathCamPullbackSpeed + GuidedMissileDeathCamMinDistance + GuidedMissileBoostExplosionSpeedThreshold + TrickSound + FlipSound + CommandFlyer + Carrier + CargoNodeName + CargoNodeOffset + PickupSound + DropoffSound + Hover + HOVERSECTION + BODY + TURRET + TURRET1 + TURRET2 + TURRET3 + TURRET4 + TURRET5 + TURRET6 + TURRET7 + TURRET8 + GeometryName + FirstPerson + FPModelAttachedtoCam + NoCombatInterrupt + SoldierCollision + OrdnanceCollision + TerrainCollision + SetSpringBody + AddSpringBody + BodySpringLengthRadiusMultiplier + BodyVelocitySpringFactor + BodyVelocityDampFactor + BodyOmegaXSpringFactor + BodyOmegaXDampFactor + BodyOmegaZSpringFactor + BodyOmegaZDampFactor + BodySpringLength + VelocitySpring + VelocityDamp + OmegaXSpring + OmegaXDamp + OmegaZSpring + OmegaZDamp + NoRandomSpring + VehicleType + SetAltitude + GravityScale + LiftSpring + LiftDamp + Acceleration + Deceleration + Traction + ForwardSpeed + ReverseSpeed + StrafeSpeed + BoostSpeed + BoostAcceleration + BoostFOV + BoostTurnMultiplier + SpinRate + TurnRate + TurnFilter + PitchRate + PitchLimits min max + ThrustPitchAngle + StrafeRollAngle + BankAngle + BankFilter + LevelSpring + LevelDamp + CollisionThreshold + CollisionScale + CollisionInflict + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponShareAmmo + WeaponShareHeat + WeaponChannel + Explosion + ExplosionName + AttachNodeName + WakeEffect + WaterEffect + BlurEffect + BlurStart + GroundedSound + GroundedHeight + AnimationName + MovingTurnOnly + FloatsOnWater + FinAnimation + SuspensionNodeName + SuspensionLeftArmNodeName + SuspensionRightArmNodeName + SuspensionMaxOffset + SuspensionMidOffset + PassengerSlots + EnergyAutoRestore + EnergyBoostDrain + TimeRequiredToEject + EjectResistance + TimeTilReboard + JumpTimeMin + JumpTimeMax + JumpForce + JumpEnergyPerSec + JumpMinSpeedMult + WheelSection + WheelTexture + WheelVelocToU + WheelVelocToV + WheelOmegaToU + WheelOmegaToV + CommandHover + Item + GeometryName + LifeSpan + NoLifeSpanDisplay bool + Gravity + Rebound + Friction + LightOdf + LightColor rgba + LightRadius + CollisionSound + CollisionWaterSound + CollisionOtherSound + TrailEffect + Mine + Explosion + ExplosionName + ExplosionTrigger + ExplosionExpire + ExplosionDeath + TriggerContact + TriggerRadius + SuppressRadius + TickSound + TickSoundPitch + FlagItem + SoldierAttachBone + DroidekaAttachBone + GeometryName + CarriedGeometryName + DroppedInLandingZoneGeometryName + HomeRegion + AllowTeamPickup + AllowAIPickup + CarriedGeometryName + DroppedInLandingZoneGeometryName + SoldierAttachBone + DroidekaAttachBone + CarriedOffset + CarriedColorize + DroppedColorize + PickupSound + DropSound + AmbientSound + PowerupItem + SoldierHealth + SoldierAmmo + SoldierEnergy + PersonHealth + PersonAmmo + PersonEnergy + AnimalHealth + AnimalAmmo + AnimalEnergy + DroidHealth + DroidAmmo + DroidEnergy + VehicleHealth + VehicleAmmo + VehicleEnergy + BuildingHealth + BuildingAmmo + BuildingEnergy + BuffOffenseTimer + BuffOffenseMult + BuffDefenseTimer + BuffDefenseMult + BuffHealthTimer + BuffHealthRate + DebuffDamageTimer + DebuffDamageRate + PowerupSound + AmbientSound + + RemoteTerminal + RemoteGameObject + NextLinkedTerminal + PrevLinkedTerminal + GeometryName + VehicleType + Soldier + IsAcklay + GeometryName + GeometryLowRes + AnimationName + SkeletonName + AnimationLowRes + SkeletonLowRes + FirstPerson + NoCombatInterrupt + Acceleration + Acceleraton //HACK support old typo + MaxSpeed + MaxStrafeSpeed + MaxTurnSpeed + MaxPitchSpeed + PitchLimits + JumpHeight + JumpForwardSpeedFactor + JumpStrafeSpeedFactor + RollSpeedFactor + SprintAccelerateTime + RecoverFromTumble + UseDirectionalJumps + UseDirectionalDeaths //- Mike Z + ControlSpeed + stand + crouch + prone + sprint + jump + jet + tumble + roll + CollisionThreshold + CollisionScale + CollisionInflict + UnitType + ImmuneToMines + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponAmmo1 + WeaponAmmo2 + WeaponAmmo3 + WeaponAmmo4 + WeaponShareAmmo + WeaponShareAmmo1 + WeaponShareAmmo2 + WeaponShareAmmo3 + WeaponShareAmmo4 + WeaponShareHeat + WeaponShareHeat1 + WeaponShareHeat2 + WeaponShareHeat3 + WeaponShareHeat4 + WeaponChannel + PrimaryWeapon + WeaponName1 + SecondaryWeapon + WeaponName2 + WeaponName3 + WeaponName4 + WeaponChannel1 + WeaponChannel2 + WeaponChannel3 + WeaponChannel4 + EnergyRestore + EnergyRestoreIdle + EnergyDrainSprint + EnergyCostJump + EnergyCostJumpSprint + EnergyCostRoll + JetJump + JetPush + JetAcceleration + JetShowHud + JetEnergyDrain + JetFuelRechargeRate + JetFuelCost + JetFuelInitialCost + JetFuelMinBorder + HealthGainEffect + AmmoGainEffect + EnergyGainEffect + BuffHealthEffect + BuffOffenseEffect + BuffDefenseEffect + DebuffEffect + InvincibleEffect + JetEffect + JetIdleEffect // - Mike Z + JetType + FootSlideEffect + ChokeEffect + BlurEffect + WaterSplashEffect + FootWaterSplashEffect + WakeWaterSplashEffect + CAMERASECTION + STAND + STANDZOOM + CROUCH + CROUCHZOOM + PRONE + PRONEZOOM + SPRINT + SPLITSTAND + SPLITSTANDZOOM + SPLITCROUCH + SPLITCROUCHZOOM + SPLITPRONE + SPLITPRONEZOOM + SPLITSPRINT + CameraBlendTime + FootstepStride + RunSpeed + AcquiredTargetSound + HidingSound + ApproachingTargetSound + FleeSound + PreparingForDamageSound + HeardEnemySound + ChargeSound + ShockFadeOutTime + ShockFadeInTime + ShockFadeOutGain + ShockSound + ClothingRustleSound + LowHealthSound + LowHealthThreshold + ChokeSound + AmbientSound + DropItemClass + DropItemProbability + NextDropItem + SkeletonRootScale + CollisionRootScale + CollisionHeadScale + CollisionTorsoScale + CollisionHeadOffset + CollisionTorsoOffset + SkeletonRootScaleLowRes + Explosion + ExplosionName + ChunkFrequency + OverrideTexture + OverrideTexture2 + AnimatedAddon + GeometryAddon + AnimationAddon + AddonAttachJoint + SndHeroSelectable + SndHeroSpawned + SndHeroDefeated + SndHeroKiller + SoldierMusic + AISoldierMusic + SoldierAnnoucement + FleeLikeAHero + MinFootHeight + TargetPointOffsetStand + TargetPointOffsetCrouch + TentacleCollType + NumTentacles + BonesPerTentacle + Scout + Anti-Armor rocket + Assault rocket + Repair + Support repair + Pilot + Trooper + Special - repair + Walker + GeometryName + WALKERSECTION + BODY + TURRET + TURRET1 + TURRET2 + TURRET3 + TURRET4 + TURRET5 + TURRET6 + TURRET7 + TURRET8 + StompRumbleLightDuration + StompRumbleHeavyDuration + StompRumbleHeavy + StompRumbleLight + FPWalkScale + FPPosePointName + VehicleType + NoCombatInterrupt + AnimationName + SkeletonName + SkeletonRootScale + AnimationBlending + Acceleration + Acceleraton //HACK support old typo + MaxSpeed + BoostSpeed + JumpHeight + JumpForwardSpeedBoost + JumpMinSpeed + MaxTurnSpeed + MaxYawSpeed + YawLimits + MaxPitchSpeed + PitchLimits + ThrustAngleToStrafe + ThrustAngleToTurn + ThrustAngleToStop + SteerTowardAimRate + SteerAtYawLimit + SteerAtStrafeLimit + CorrectAimForSteering + ReverseBackwardSteering + CollisionThreshold + CollisionScale + CollisionInflict + WeaponSection + Weapon + WeaponName + WeaponAmmo + WeaponShareAmmo + WeaponShareHeat + WeaponChannel + Explosion + ExplosionName + ExplosionOffset + FinalExplosion + FinalExplosionName + FinalExplosionOffset + StompEffect + StompDecal + StompDecalSize + FootWaterSplashEffect + AttachNodeName + DeathAnimationExplosion + DeathAnimationExplosionTime + DeathDustEffect + DeathDustDelay + DeathDustOffset + DeathShakeDelay + DeathShakeForce + DeathShakeDuration + DeathShakeRadius + DeathFadeTimeStart + DeathFadeTimeEnd + StompDetectionType + StompThreshold + FootstepSound0 + FootstepSound1 + FootstepSound2 + FootstepSound3 + FootstepSound4 + FootstepSound5 + HydraulicSound + HydraulicSoundHeight + HydraulicLowerSound + HydraulicLowerHeight + StoppedTurnSpeed + ForwardTurnSpeed + BoostTurnSpeed + EnergyAutoRestore + EnergyBoostDrain + EnergyCostJump + TurnThreshold + MaxTerrainAngle + LegPairCount + WalkerLegPair + LegRayHitLength + WalkerOrientRoll + FootBoneLeft + FootBoneRight + TerrainLeft + TerrainRight + LegBoneLeft + LegBoneRight + LegBoneTopLeft + LegBoneTopRight + WaterDamageInterval + WaterDamageAmount + FirstPerson + DropShadowSize + PassengerSlots + TowCableCollision + IgnorableCollision + IgnorableCollsion //HACK continue supporting old misspelling + WalkerWidth + SmashParkedFlyers + TimeRequiredToEject + EjectResistance + TimeTilReboard + AttackAnimation + AttackControls + AttackPosition + AttackTime + AttackRadius + AttackDamage + AttackPush + AIUseHoverPhysics + CommandWalker + Hologram + Color + HoloImageGeometry + HoloVisibleDistance + HoloHeight + HoloSize + HoloBeamInitialWidth + HoloBeamIntensity + HoloLightIntensity + HoloImageIntensity + HoloFlareIntensity + HoloLightRadius + HoloRotateRate + HoloPopRate + HoloFlickerRate + HoloFlickerAlphaMin + HoloFlickerAlphaMax + HoloFadeInTime + HoloTurnOnDistance + HoloType + MountedTurret + PassengerSlot + PassengerEyePoint + Light + Color + ConeLength + ConeWidth + ConeInitialWidth + ConeFadeFactor + ConeFadeLength + HaloRadius + HaloFadeFactor + HaloFadeLength + FlareIntensity + BeamIntensity + FlickerType + None + Strobe + StrobeRandom + StrobeFade + Pulse + Flicker + FlickerPeriod + FadePeriod + OmniRadius + SpotInnerConeAngle + SpotOuterConeAngle + DrawDistance + Static + ShadowCaster + SpecularCaster + Bidirectional + Name + Type + Spot + Omni + ProjectedTexture + FrameRate + Synchronize + EntitySound + EntitySoundStatic + EntitySoundStream + GrassPatch + MinSize + MaxSize + Alpha + NumParticles + MaxDistance + RadiusFadeMin + RadiusFadeMax + DarknessMin + DarknessMax + NumParts + YOffset + Texture + BoxSize + FlatHeight + FlatSizeMultiplier + FlatFaceFactor + FlatShadowHeight + FlatGrassSwing + FlatCount + SkinnyFactor + MaxSkew + TransparentType + LeafPatch + MaxDistance + Offset + BoxSize + MinSize + MaxSize + Alpha + NumParticles + MaxDistance + Radius + Height + ConeHeight + DarknessMin + DarknessMax + HeightScale + NumVisible + Texture + MaxFallingLeaves + MaxScatterBirds + Seed + NumParts + Vine + VineLength + VineSpread + WiggleSpeed + WiggleAmount + + RotatingModel + RotateNodeName + YawConstant + YawRandom + + RumbleEffect + MinLight + MaxLight + MinHeavy + MaxHeavy + MinHeavyDecay + MaxHeavyDecay + MinLightDecay + MaxLightDecay + MinDelayLight + MaxDelayLight + MinDelayHeavy + MaxDelayHeavy + MinTimeLeftHeavy + MaxTimeLeftHeavy + MinTimeLeftLight + MaxTimeLeftLight + MinInterval + MaxInterval + MinShakeAmt + MaxShakeAmt + MinShakeLen + MaxShakeLen + SoundName + VehicleSpawn + Team + CommandPost + SpawnCount + SpawnTime + ExpireTimeEnemy + ExpireTimeField + DecayTime + + + Trackable Entity Properties +IconTexture +HealthTexture +MapTexture +HUDModel +MapScale +MapSpeedMin +MapSpeedMax +MapViewMin - make sure the view cone's range is at least as far as the min map range +MapViewMax +MapTargetFadeRate +MapRangeOverall +MapRangeShooting +MapRangeViewCone +MapViewConeAngle +RemoveFromMapWhenDead + + + Vehicle Properties +EngineSound +TurnOnSound +TurnOffSound +TurningOffSound +WindUpSound +TakeoffSound +WindDownSound +LandSound +BoostSound +TurnOffTime +VehicleCollisionSound +Cockpit1stPersonSound +Cockpit3rdPersonSound +ProximityMinDist +ProximityMaxDist + Music + AllMusic + ImpMusic + RepMusic + CISMusic + MusicSpeed + MusicDelay + + + + + + + + + SkyObject Properties - skyfile? +Geometry +NumObjects +Height h, variance +VelocityX Vx, variance +VelocityY Vy, variance +VelocityZ Vz, variance +Acceleration xyz +Distance +InDirectionFactor +LifeTime + + Sky Stars - sky file? +NumStars +RandomSeed +BrightStarPercent +AlphaMin +ColorSaturation +TwinkleFactor +TwinkleFrequency +AngleMin +AngleFade +EnableBottom +Color rgba +StarTexture + + + Space Dust Effect Properties +Enable +SpawnDistance +MaxRandomSideOffset +CenterDeadZoneRadius +SpawnDelay +ReferenceSpeed +DustParticleSpeed +MinParticleScale +MaxParticleScale +SpeedParticleMinLength +SpeedParticleMaxLength +ParticleLengthMinSpeed +ParticleLengthMaxSpeed +Texture + + + Attached Effect Properties - add to any object to attach an effect +AttachOdf +AttachEffect +AttachToHardPoint +Emitter +AttachDynamic bool + + + + Godlight Properties +Radius +MinLifetime +MaxLifetime +MinAlpha +MaxAlpha +Color + + Godray Properties +Enable +MaxGodraysInWorld +MaxGodraysOnScreen +MaxViewDistance +FadeViewDistance +MaxLength +OffsetAngle +Texture +TextureScale +TextureVelocity +TextureJitterSpeed +MaxRaysPerGodray +MinRaysPerGodray +RadiusForMaxRays +Radius +MinLifetime +MaxLifetime +MinAlpha +MaxAlpha +Color +NumRays +SpreadRadius + + + Lightning Effect +Enable +Color +SunlightFadeFactor +SkyDomeDarkenFactor +BrightnessMin +FadeTime +TimeBetweenFlashesMinMax +TimeBetweenSubFlashesMinMax +NumSubFlashesMinMax +HorizonAngleMinMax +SoundCrack +SoundSubCrack + + Lightning Bolt Effect +Texture +Width +FadeTime +BreakDistance +TextureSize +SpreadFactor +MaxBranches +BranchFactor +BranchSpreadFactor +BranchLength +InterpolationSpeed +NumChildren +ChildBreakDistance +ChildTextureSize +ChildWidth +ChildSpreadFactor +Color +ChildColor + + + + + + + + OrbitalStrike // WeaponDestruct Class +AimAzimuth +AimElevation +AimDistance +SalvoCount +SalvoDelay +InitialSalvoDelay +ScatterDistance +StrikeOrdnance +StrikeOrdnanceName + + Explosion Properties +Damage +MaxDamage +HealthScale +ArmorScale +PersonScale +AnimalScale +DroidScale +VehicleScale +BuildingScale +ShieldScale +DamageRadiusInner +DamageRadiusOuter +DamageRadius +Shake +ShakeRadiusInner +ShakeRadiusOuter +ShakeRadius +ShakeLength +Push +PushRadiusInner +PushRadiusOuter +PushRadius +PushDeadOnly +HurtOwner +Effect +WaterEffect +ShieldEffect +Decal +SoundProperty +ChunkGeometryName +ChunkTerrainCollisions +ChunkTerrainEffect +ChunkTrailEffect +ChunkSmokeEffect +ChunkPhysics + FULL + LEAF + STATIC + SIMPLE +ChunkOmega float xyz +ChunkSpeed +ChunkGravity float xyz +NumChunks +ChunkStartDistance +ChunkInitialCollisionSound +ChunkScrapeCollisionSound +VisibleRadius +LightColor +LightRadius +LightDuration + + + + ShieldEffect Properties +Type f for faamba? +Texture +Color +SpecularColor +Radius +Height +ViewAngleFactor +TurnOnTime +TurnOffTime +ScrollRate + + + + + + +Ordnance +NextCharge +LifeSpan +DamageTransitionDelay +DamageTransitionPeriod +DamageFinalDamage +Explosion +ExplosionImpact +ExplosionName +ExplosionExpire +Damage +MaxDamage +HealthScale +ArmorScale +PersonScale +AnimalScale +DroidScale +VehicleScale +BuildingScale +ShieldScale +TrailEffect +ExplosionEffect +OrdnanceSound +CollisionSound +CollisionWaterSound +CollisionShieldSound +BonusAmplification +BonusColor - rgba + Ordnance Beam + BeamWidth + BeamTexture + BeamColor rgba + BeamGlowWidth + BeamGlowTexture + BeamGlowColor rgba + PassThrough + OrdnanceEffect + red_blaster_bolt + red_blaster_bolt_small + green_blaster_bolt + green_blaster_bolt_small + blue_blaster_bolt + blue_blaster_bolt_small + ImpactEffect + Ordnance Bullet + GeometryName + Velocity + OrdnanceEffect + ImpactEffectSoft + ImpactEffectRigid + ImpactEffectStatic + ImpactEffectTerrain + ImpactEffectWater + ImpactEffectShieldSmall + ImpactEffectShieldLarge + ImpactDecalTerrain + ImpactDecalStatic + LightOdf + LightColor rgba + LightRadius + EndLightColor rgba + FadeLightColor + Ordnance FatRay + RayRadius + MaxDamage + MinDamage + DamageDeduction + MaxPush + MinPush + PushDeduction + Ordnance GrapplingHook + SoldierAnimation + Ordnance Laser + LaserLength + GlowLength + BlurLength + LaserWidth + FadeOutTime + LaserTexture + LaserGlowColor + EndLaserGlowColor rgba + OrdnanceEffect + red_blaster_bolt + red_blaster_bolt_small + green_blaster_bolt + green_blaster_bolt_small + blue_blaster_bolt + blue_blaster_bolt_small + Ordnance Missile + ScaleTime + TurnRate + WaverRate + WaverTurn + LockedOnSound + MinSpeed + Acceleration + Ordnance Shell + Gravity + Ordnance Grenade + Rebound + Friction + CollisionFoliageSound + CollisionOtherSound + StartTimerOnContact + AlignVertical + ImpactEffectWater + + + Ordnance Sticky + CollisionWaterSound + CollisionFoliageSound + CollisionOtherSound + StartTimerOnContact + AlignVertical + StickAll + StickPerson + StickAnimal + StickDroid + StickVehicle + StickBuilding + StickBuildingDead + StickBuildingUnbuilt + StickTerrain + Ordnance Beacon + AimAzimuth + AimElevation + AimDistance + SalvoCount + SalvoDelay + ScatterDistance + Ordnance + OrdnanceName + Ordnance Haywire + DisableTime + Ordnance Towcable + InitialCableLength + CableLength + Ordnance Emitter + StunTime + Damage + Push + ConeLength + ConeAngle + MaxTargets + Effect + StunAnimation + LightningEffect + LightningEffectScale + NoTargetLightningEffectCount + NoTargetLightningEffectRandomSpread + MaxDamage + DamageThreshold + MaxJumpDistance + JumpDeduction + FirstRadius + NoChaining + Radius + BuffOffenseTimer + BuffOffenseMult + BuffDefenseTimer + BuffDefenseMult + BuffHealthTimer + BuffHealthRate + DebuffDamageTimer + DebuffDamageRate + PlayEffectOnOwner + PlayEffectOnOwnerAimer + Explosion + SmolderEffectTimer + SmolderVanishDeath + SmolderBone + SmolderEffect + SmolderDamageRate + AffectFriends + AffectEnemies + ApplyOnOwnerIfOnOthers + Ordnance Melee Throw + Velocity + ReturnDuration + RotationRate + DamageLength + DamageWidth + LightOdf + LightColor + LightRadius + OnSound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Other/000_Notes/Particle Editor and You.doc b/Other/000_Notes/Particle Editor and You.doc new file mode 100644 index 0000000..ad030b8 Binary files /dev/null and b/Other/000_Notes/Particle Editor and You.doc differ diff --git a/Other/000_Notes/Settingup_Uber_Mode.TXT b/Other/000_Notes/Settingup_Uber_Mode.TXT new file mode 100644 index 0000000..6e24580 --- /dev/null +++ b/Other/000_Notes/Settingup_Uber_Mode.TXT @@ -0,0 +1,71 @@ +In data_***/Common/Scripts/*** <-- The *** is ones 3 letter map name. + +Usualy in the the files that have con c and g.... + +Right under : +conquest:Start() +Place: +SetUberMode(1); + +If SetUberMode is already there and is set to (0) or has nothing in it '()'. Set it to '(1)' + + + +Then you can increase the total number of units and increase the max units for each class. + +Example:: + +SetupTeams{ +all = { +team = ALL, +units = 200, --total # of units +reinforcements = 1000, +soldier = { "all_inf_rifleman",9,100}, --last # is max units for this class +assault = { "all_inf_rocketeer",1,10}, +engineer = { "all_inf_engineer",1,10}, +sniper = { "all_inf_sniper",1,10}, +officer = { "all_inf_officer",1,10}, +special = { "all_inf_wookiee",1,10}, + +}, +imp = { +team = IMP, +units = 200, +reinforcements = 1000, +soldier = { "imp_inf_rifleman",9,100}, +assault = { "imp_inf_rocketeer",1,10}, +engineer = { "imp_inf_engineer",1,10}, +sniper = { "imp_inf_sniper",1,10}, +officer = { "dtr_inf_magnaguard",1,10}, +special = { "imp_inf_dark_trooper",1,10}, +}, +} + + +Example 2:: + +SetupTeams{ +rep = { +team = REP, +units = 200, +reinforcements = 500, +soldier = { "rep_inf_ep3_rifleman",9, 100}, +assault = { "rep_inf_ep3_rocketeer",1, 10}, +engineer = { "rep_inf_ep3_engineer",1, 10}, +sniper = { "rep_inf_ep3_sniper",1, 10}, +officer = {"rep_inf_ep3_officer",1, 10}, +special = { "rep_inf_ep3_jettrooper",1, 10}, + +}, +cis = { +team = CIS, +units = 200, +reinforcements = 500, +soldier = { "cis_inf_rifleman",9, 100}, +assault = { "cis_inf_rocketeer",1, 10}, +engineer = { "cis_inf_engineer",1, 10}, +sniper = { "cis_inf_sniper",1, 10}, +officer = {"cis_inf_officer",1, 10}, +special = { "cis_inf_droideka",1, 10}, +} +} \ No newline at end of file diff --git a/Other/000_Notes/Vegati's Guide to Making a Decent Map in BF2.txt b/Other/000_Notes/Vegati's Guide to Making a Decent Map in BF2.txt new file mode 100644 index 0000000..30d1ed6 --- /dev/null +++ b/Other/000_Notes/Vegati's Guide to Making a Decent Map in BF2.txt @@ -0,0 +1,81 @@ +Okay to start off, try to be different. Before you make your map, +search around and make sure that either no one has done your idea or +it hasn't been done often. Okay and here are the two parts that almost +instantly tell you someone is a noob modder. Those annoying Yaving +textures and sky. Those are the map killers. (unless you're doing +Yavin) For Pete's sake, CHANGE THEM! Make them Hoth, Mustafar, or even +Endor, but PLEASE, do not use those textures they have been seen far +too many times in a map. Okay after you've changed the terrain and sky, +let's add some objects. Go to your assets folder in the main directory +of your BF2 Modtools folder and click on worlds. Click on a world that +has something to do with your map and copy the ODF and MSH files. Then +go to your mod maps directory (data_XXX) and paste the in YOUR world +directory. (Data_XXX\Worlds\XXX or Data_XXX\Worlds\XXX\world1) Okay, +now that you have some objects to work with, open up ZeroEditor in your + mod maps directory and load your map's .wld file. Load the layers that + you want to show up, click "build accurate collision geometry," and +click the load button. Now go to objects. Click on the browse button +and go to your mod maps world directory and open up the file named ODF. +Pick an object. (If it doesn't load the object and you can't see it, if + you click it will probably crash ZeroEditor.) Now that you've got some + objects out you change the textures or add cps or munge your map and +play on it. But before you do that I recommend you change the height a +little. (its another way to spot noob modders.) Make sure that you +don't make it too steep or you won't be able to get to it. (this can +also cause terrain glitches so be careful.) Make sure that your map +isn't TOO big or its going to be boring unless you have, like, one +thousand units which causes lag. You can also add more cps which is +documented in your BF2 Modtools folder. You could also create your own +heroes and such. (also documented) If your map is small make sure that +you either A. Don't make any vehicles or B. Don't make very many +vehicles. If you make too many at-sts and such, your map is going to +become a death trap. Another important thing, make sure that your AI +have planning so they don't wander around mindlessly trying to kill +people (they have to be a bit smarter to do that.) But the AI +automatically travel to a cp so it still works - kinda. If your +building a multi-leveled world your going to run into some issues with +AI planning. When you're done editing you can save your map and munge +it. Just go to your mod maps main directory, click the folder called +_Build, and doubleclick on the .exe called visualmunge. A screen will +pop up with several options on things to munge. Click the button +'Select All' then click munge. This will take a while (5-10 minutes +tops unless your computer is either really bad or its a HUGE file\map) +while your waiting you can maybe, start your homework the day before +its due, or maybe catch a basketball with your face (I've tried it, +doesn't work too well) When its almost done a log file will pop up and +tell you if anything went wrong. (If it doesn't pop up then nothing +went wrong) Shortly after that a screen will pop up something like this. + +There's magic in the air... + Go run BF2 + |---------| + | OK | + ----------- + +Click OK and your map will be complete. Go run Battlefront 2 and you +will see your map in the instant action list. Start it up. If it +crashes, here's an easy way to figure out what caused it. Go to your +BF2 Modtools directory and look for the .exe labeled Modtools. Copy it +and put it in your Gamedata folder. Click on the one in the Gamedata +folder and it will run what looks like the PSP version of the game. +There will be a green bar at the top. Now run your map and watch it +crash. In the Gamedata directory a file will be created called BFront2. + It will contain any errors inside of it. Wait for about a minute for +it to get all the crud written down and skim through it. If you +absolutely CANNOT find what went wrong post it here on Gametoast and +someone will help you with it. (eventually) Now just wait for a day or +two and look at the responses. If someone posted and told you why it +crashed then go and fix the issue. (Most maps I have made have not +crashed.) Once your dilemma seems to be over and you have addressed +the issue(s), run visualmung again and select the place where something + went wrong and munge it. When its finished munging run your game +again. If your level works, look for bugs (floating objects, +non-localized weapons, etc.) and glitches (walk through walls, fly for +all eternity, go through the ground.) Once your level is complete you +can make a readme explaining the map, it's contents, etc. Then you can +put it in a .zip or .rar file and post it on Filefront or ModDB. Then +watch the download count rise ever higher, all thanks to this great +tutorial/guide. P.S Remember to thank me in your readme or I will be +very upset. I mean seriously, I spend an HOUR of MY time to help YOU +make a good map. So you better remember the name Vegati, lest a +thousand Geonosians assault your living quarters. \ No newline at end of file diff --git a/Other/000_Notes/Vegatis_guide_to_making_a_decent_map_in_bf2/Vegati's Guide to Making a Decent Map in BF2.txt b/Other/000_Notes/Vegatis_guide_to_making_a_decent_map_in_bf2/Vegati's Guide to Making a Decent Map in BF2.txt new file mode 100644 index 0000000..30d1ed6 --- /dev/null +++ b/Other/000_Notes/Vegatis_guide_to_making_a_decent_map_in_bf2/Vegati's Guide to Making a Decent Map in BF2.txt @@ -0,0 +1,81 @@ +Okay to start off, try to be different. Before you make your map, +search around and make sure that either no one has done your idea or +it hasn't been done often. Okay and here are the two parts that almost +instantly tell you someone is a noob modder. Those annoying Yaving +textures and sky. Those are the map killers. (unless you're doing +Yavin) For Pete's sake, CHANGE THEM! Make them Hoth, Mustafar, or even +Endor, but PLEASE, do not use those textures they have been seen far +too many times in a map. Okay after you've changed the terrain and sky, +let's add some objects. Go to your assets folder in the main directory +of your BF2 Modtools folder and click on worlds. Click on a world that +has something to do with your map and copy the ODF and MSH files. Then +go to your mod maps directory (data_XXX) and paste the in YOUR world +directory. (Data_XXX\Worlds\XXX or Data_XXX\Worlds\XXX\world1) Okay, +now that you have some objects to work with, open up ZeroEditor in your + mod maps directory and load your map's .wld file. Load the layers that + you want to show up, click "build accurate collision geometry," and +click the load button. Now go to objects. Click on the browse button +and go to your mod maps world directory and open up the file named ODF. +Pick an object. (If it doesn't load the object and you can't see it, if + you click it will probably crash ZeroEditor.) Now that you've got some + objects out you change the textures or add cps or munge your map and +play on it. But before you do that I recommend you change the height a +little. (its another way to spot noob modders.) Make sure that you +don't make it too steep or you won't be able to get to it. (this can +also cause terrain glitches so be careful.) Make sure that your map +isn't TOO big or its going to be boring unless you have, like, one +thousand units which causes lag. You can also add more cps which is +documented in your BF2 Modtools folder. You could also create your own +heroes and such. (also documented) If your map is small make sure that +you either A. Don't make any vehicles or B. Don't make very many +vehicles. If you make too many at-sts and such, your map is going to +become a death trap. Another important thing, make sure that your AI +have planning so they don't wander around mindlessly trying to kill +people (they have to be a bit smarter to do that.) But the AI +automatically travel to a cp so it still works - kinda. If your +building a multi-leveled world your going to run into some issues with +AI planning. When you're done editing you can save your map and munge +it. Just go to your mod maps main directory, click the folder called +_Build, and doubleclick on the .exe called visualmunge. A screen will +pop up with several options on things to munge. Click the button +'Select All' then click munge. This will take a while (5-10 minutes +tops unless your computer is either really bad or its a HUGE file\map) +while your waiting you can maybe, start your homework the day before +its due, or maybe catch a basketball with your face (I've tried it, +doesn't work too well) When its almost done a log file will pop up and +tell you if anything went wrong. (If it doesn't pop up then nothing +went wrong) Shortly after that a screen will pop up something like this. + +There's magic in the air... + Go run BF2 + |---------| + | OK | + ----------- + +Click OK and your map will be complete. Go run Battlefront 2 and you +will see your map in the instant action list. Start it up. If it +crashes, here's an easy way to figure out what caused it. Go to your +BF2 Modtools directory and look for the .exe labeled Modtools. Copy it +and put it in your Gamedata folder. Click on the one in the Gamedata +folder and it will run what looks like the PSP version of the game. +There will be a green bar at the top. Now run your map and watch it +crash. In the Gamedata directory a file will be created called BFront2. + It will contain any errors inside of it. Wait for about a minute for +it to get all the crud written down and skim through it. If you +absolutely CANNOT find what went wrong post it here on Gametoast and +someone will help you with it. (eventually) Now just wait for a day or +two and look at the responses. If someone posted and told you why it +crashed then go and fix the issue. (Most maps I have made have not +crashed.) Once your dilemma seems to be over and you have addressed +the issue(s), run visualmung again and select the place where something + went wrong and munge it. When its finished munging run your game +again. If your level works, look for bugs (floating objects, +non-localized weapons, etc.) and glitches (walk through walls, fly for +all eternity, go through the ground.) Once your level is complete you +can make a readme explaining the map, it's contents, etc. Then you can +put it in a .zip or .rar file and post it on Filefront or ModDB. Then +watch the download count rise ever higher, all thanks to this great +tutorial/guide. P.S Remember to thank me in your readme or I will be +very upset. I mean seriously, I spend an HOUR of MY time to help YOU +make a good map. So you better remember the name Vegati, lest a +thousand Geonosians assault your living quarters. \ No newline at end of file diff --git a/Other/000_Notes/fierfeks_bf2_mapping_and_modding_tutorial.doc b/Other/000_Notes/fierfeks_bf2_mapping_and_modding_tutorial.doc new file mode 100644 index 0000000..5194df0 Binary files /dev/null and b/Other/000_Notes/fierfeks_bf2_mapping_and_modding_tutorial.doc differ diff --git a/Other/000_Notes/fierfeks_mapmaking_guide.doc b/Other/000_Notes/fierfeks_mapmaking_guide.doc new file mode 100644 index 0000000..16221f3 Binary files /dev/null and b/Other/000_Notes/fierfeks_mapmaking_guide.doc differ diff --git a/Other/000_Notes/fierfeks_mapping_and_modding_tutorial.doc b/Other/000_Notes/fierfeks_mapping_and_modding_tutorial.doc new file mode 100644 index 0000000..9785dad Binary files /dev/null and b/Other/000_Notes/fierfeks_mapping_and_modding_tutorial.doc differ diff --git a/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_guide.doc b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_guide.doc new file mode 100644 index 0000000..a937377 Binary files /dev/null and b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_guide.doc differ diff --git a/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_tutorial.doc b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_tutorial.doc new file mode 100644 index 0000000..fdc7a8d Binary files /dev/null and b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_mapmaking_tutorial.doc differ diff --git a/Other/000_Notes/fierfeks_star_wars_battlefront_ii_modding_tutorial_3.5.doc b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_modding_tutorial_3.5.doc new file mode 100644 index 0000000..def63b4 Binary files /dev/null and b/Other/000_Notes/fierfeks_star_wars_battlefront_ii_modding_tutorial_3.5.doc differ diff --git a/Other/000_Notes/how_to_make_first_maps.doc b/Other/000_Notes/how_to_make_first_maps.doc new file mode 100644 index 0000000..be864b4 Binary files /dev/null and b/Other/000_Notes/how_to_make_first_maps.doc differ diff --git a/Other/NOTE.txt.TXT b/Other/NOTE.txt.TXT new file mode 100644 index 0000000..ed546c1 --- /dev/null +++ b/Other/NOTE.txt.TXT @@ -0,0 +1 @@ +Assets Here Are NOT Made By Me! they are made by the modding comunity. \ No newline at end of file diff --git a/Other/Spaceships_1.0_Final/Cis-Assaultship.obg b/Other/Spaceships_1.0_Final/Cis-Assaultship.obg new file mode 100644 index 0000000..012f66f --- /dev/null +++ b/Other/Spaceships_1.0_Final/Cis-Assaultship.obg @@ -0,0 +1,656 @@ + +Object("cis_turr_2", "cis_bldg_boxturret") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-5.493225, 29.078033, 632.323486); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("CIS_Gun6", "tur_bldg_spa_cis_chaingun") +{ + ChildRotation(0.710000, 0.000000, 0.704000, 0.000000); + ChildPosition(-5.628174, 30.231018, 609.562500); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_ship_1", "cis_fly_fedcruiser") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.221191, -88.839981, 163.826477); + Team(0); + NetworkId(-1); + GeometryFile("cis_fly_fedcruiser"); +} + +Object("cis_turr_3", "cis_bldg_boxturret") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-6.493225, 33.308014, 491.323486); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("CIS_Gun5", "tur_bldg_spa_cis_chaingun") +{ + ChildRotation(0.714000, 0.000000, 0.700000, 0.000000); + ChildPosition(34.440796, 31.834015, 394.945496); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("CIS_Gun4", "tur_bldg_spa_cis_recoilless") +{ + ChildRotation(0.713000, 0.000000, 0.701000, 0.000000); + ChildPosition(30.975769, 28.880035, 224.905487); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_ship_3", "cis_fly_fedcruiser3") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.239197, -88.830978, 164.103485); + Team(0); + NetworkId(-1); + GeometryFile("cis_fly_fedcruiser3"); +} + +Object("cis-comms", "spa2_prop_antenna_destruct") +{ + ChildRotation(0.001000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.318176, 30.070007, 327.608459); + Team(2); + NetworkId(-1); + GeometryFile("spa2_prop_antenna_destruct"); +} + +Object("cis_ship_2", "cis_fly_fedcruiser2") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.222229, -88.834976, 163.973480); + Team(0); + NetworkId(-1); + GeometryFile("cis_fly_fedcruiser2"); +} + +Object("cis-bridge", "cis_fedcruiser_destruct4") +{ + ChildRotation(0.001000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.318176, 67.265015, 78.686478); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct4"); +} + +Object("cis_turr_6", "cis_bldg_boxturret") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-8.493225, 84.075012, -1.676514); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("CIS_Gun3", "tur_bldg_spa_cis_recoilless") +{ + ChildRotation(0.712000, 0.000000, 0.702000, 0.000000); + ChildPosition(27.466797, 83.748016, -8.794525); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_turr_5", "cis_bldg_boxturret") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-8.493225, 84.061035, -78.676514); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_turr_4", "cis_bldg_boxturret") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-8.493225, 84.063019, -168.676529); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_ship_4", "cis_fly_fedcruiser4") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.221191, -88.800980, 164.255478); + Team(0); + NetworkId(-1); + GeometryFile("cis_fly_fedcruiser4"); +} + +Object("CIS_Gun2", "tur_bldg_spa_cis_recoilless") +{ + ChildRotation(0.713000, 0.000000, 0.701000, 0.000000); + ChildPosition(-6.517212, 83.450012, -199.231522); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("CIS_Gun1", "tur_bldg_spa_cis_chaingun") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-6.895203, 280.752045, -364.006531); + Team(0); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis_turr_1", "cis_bldg_boxturret") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.507202, 280.501007, -416.498535); + Team(2); + NetworkId(-1); + GeometryFile("cis_bldg_boxturret"); +} + +Object("cis-sensors", "cis_fedcruiser_destruct_sensorrly") +{ + ChildRotation(0.706000, -0.709000, 0.000000, 0.000000); + ChildPosition(-5.493225, 61.526031, -441.283508); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct_sensorrly"); +} + +Object("cis_fedcruiser_destruct_sensorprop", "cis_fedcruiser_destruct_sensorprop") +{ + ChildRotation(0.706000, -0.709000, 0.000000, 0.000000); + ChildPosition(-5.493225, 61.526031, -441.283508); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct_sensorprop"); +} + +Object("cis_drive_2", "cis_fedcruiser_destruct2") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-56.507202, -33.496979, -460.138550); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct2"); +} + +Object("cis_drive_1", "cis_fedcruiser_destruct1") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(42.855804, -33.388977, -459.345520); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct1"); +} + +Object("cis-life-ext", "cis_fedcruiser_destruct_lifesupport") +{ + ChildRotation(1.000000, -0.030000, 0.000000, 0.000000); + ChildPosition(-4.951172, -115.190979, 657.767456); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_destruct_lifesupport"); +} + +Object("cis_fedcruiser_hallway", "cis_fedcruiser_hallway") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.221191, -33.848984, -103.907516); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_hallway"); +} + +Object("cis-v4", "com_item_vehicle_spawn") +{ + ChildRotation(0.707000, 0.000000, 0.707000, 0.000000); + ChildPosition(61.030792, -29.114975, -61.470520); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("cis-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("cis_fly_droidgunship"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("cis_fly_droidgunship"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("cis-v3", "com_item_vehicle_spawn") +{ + ChildRotation(0.707000, 0.000000, 0.707000, 0.000000); + ChildPosition(61.251801, -29.114975, -89.434525); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("cis-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("cis_fly_greviousfighter"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("cis_fly_greviousfighter"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("cis-v2", "com_item_vehicle_spawn") +{ + ChildRotation(0.707000, 0.000000, 0.707000, 0.000000); + ChildPosition(61.100800, -29.114975, -117.872513); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("cis-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("cis_fly_tridroidfighter"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("cis_fly_tridroidfighter"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("cis-v1", "com_item_vehicle_spawn") +{ + ChildRotation(0.707000, 0.000000, 0.707000, 0.000000); + ChildPosition(61.752808, -29.114975, -146.234512); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("cis-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("cis_fly_droidfighter_sc"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("cis_fly_droidfighter_sc"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("cis-cp1", "com_bldg_controlzone_CTF") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-9.507202, -25.370972, -46.498520); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_controlzone"); + CaptureRegion(""); + ControlRegion("cis-cp1con"); + SpawnPath("cis-cp1spawn"); + TurretPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed_Alliance("0"); + ValueBleed_CIS("0"); + ValueBleed_Empire("0"); + ValueBleed_Republic("0"); + ValueBleed_Neutral("0"); + ValueBleed_Locals("0"); + Value_ATK_Alliance("0"); + Value_ATK_CIS("0"); + Value_ATK_Empire("0"); + Value_ATK_Republic("0"); + Value_ATK_Locals("0"); + Value_DEF_Alliance("0"); + Value_DEF_CIS("0"); + Value_DEF_Empire("0"); + Value_DEF_Republic("0"); + Value_DEF_Locals("0"); + VO_All_AllCapture("all_off_com_report_captured_commandpost"); + VO_All_AllLost("all_off_com_report_lost_commandpost"); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture("all_off_com_report_enemyCaptured_commandpost"); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture("imp_off_com_report_enemyCaptured_commandpost"); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture("imp_off_com_report_captured_commandpost"); + VO_Imp_ImpLost("imp_off_com_report_lost_commandpost"); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture("rep_off_com_report_captured_commandpost"); + VO_Rep_RepLost("rep_off_com_report_lost_commandpost"); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture("rep_off_com_report_enemyCaptured_commandpost"); + VO_Rep_CISLost(""); + VO_Rep_CISInDispute(""); + VO_Rep_CISSaved(""); + VO_Rep_CISInfo(""); + VO_CIS_RepCapture("cis_off_com_report_enemyCaptured_commandpost"); + VO_CIS_RepLost(""); + VO_CIS_RepInDispute(""); + VO_CIS_RepSaved(""); + VO_CIS_RepInfo(""); + VO_CIS_CISCapture("cis_off_com_report_captured_commandpost"); + VO_CIS_CISLost("cis_off_com_report_lost_commandpost"); + VO_CIS_CISInDispute(""); + VO_CIS_CISSaved(""); + VO_CIS_CISInfo(""); + SoldierBan(""); + HoverBan(""); + SmallBan(""); + MediumBan(""); + HugeBan(""); + FlyerBan(""); + AISpawnWeight(""); + HUDIndex(""); + HUDIndexDisplay("0"); +} + +Object("cis_fedcruiser_door1", "cis_fedcruiser_door1") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(1.360779, -25.362976, -41.136520); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("cis_fedcruiser_door2", "cis_fedcruiser_door1") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-20.187195, -25.368973, -41.150513); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("CIS_turrchair4", "spa_veh_turret_chair") +{ + ChildRotation(-0.238000, 0.000000, -0.971000, 0.000000); + ChildPosition(-15.701172, -25.552979, -9.012527); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun4"); + NextLinkedTerminal("CIS_turrchair5"); + PrevLinkedTerminal("CIS_turrchair3"); +} + +Object("CIS_turrchair3", "spa_veh_turret_chair") +{ + ChildRotation(0.933000, 0.000000, 0.361000, 0.000000); + ChildPosition(-16.222229, -25.586975, -25.218521); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun3"); + NextLinkedTerminal("CIS_turrchair4"); + PrevLinkedTerminal("CIS_turrchair2"); +} + +Object("CIS_turrchair1", "spa_veh_turret_chair") +{ + ChildRotation(0.937000, 0.000000, -0.349000, 0.000000); + ChildPosition(-5.346191, -25.552979, -25.102524); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun1"); + NextLinkedTerminal("CIS_turrchair2"); + PrevLinkedTerminal("CIS_turrchair6"); +} + +Object("CIS_turrchair5", "spa_veh_turret_chair") +{ + ChildRotation(0.711000, 0.000000, -0.703000, 0.000000); + ChildPosition(-0.717224, -25.593979, -17.831512); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun5"); + NextLinkedTerminal("CIS_turrchair6"); + PrevLinkedTerminal("CIS_turrchair4"); +} + +Object("CIS_turrchair2", "spa_veh_turret_chair") +{ + ChildRotation(0.352000, 0.000000, -0.936000, 0.000000); + ChildPosition(-5.247192, -25.605972, -9.687515); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun2"); + NextLinkedTerminal("CIS_turrchair3"); + PrevLinkedTerminal("CIS_turrchair1"); +} + +Object("CIS_turrchair6", "spa_veh_turret_chair") +{ + ChildRotation(0.711000, 0.000000, 0.703000, 0.000000); + ChildPosition(-19.665222, -25.612976, -17.123520); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("CIS_Gun6"); + NextLinkedTerminal("CIS_turrchair1"); + PrevLinkedTerminal("CIS_turrchair5"); +} + +Object("cis_fedcruiser_commandroom_server", "cis_fedcruiser_commandroom_server") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(-10.575195, -25.532974, -22.883514); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_server"); +} + +Object("cis-defense", "spa_prop_liquidgen") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.656189, -25.129974, -17.443527); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_liquidgen"); +} + +Object("cis_eng_door", "cis_fedcruiser_door1") +{ + ChildRotation(0.714000, 0.000000, -0.700000, 0.000000); + ChildPosition(8.031799, -25.356979, -13.191513); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("cis_shi_door", "cis_fedcruiser_door1") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.418213, -25.327972, 0.339478); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("cis_lif_door", "cis_fedcruiser_door1") +{ + ChildRotation(0.713000, 0.000000, -0.701000, 0.000000); + ChildPosition(-29.069214, -25.289978, -13.234512); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("CIS_roofgun2", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-22.634216, -22.109985, -6.967514); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("CIS_roofgun1", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(1.556824, -22.146973, -6.967514); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("cis_fedcruiser_commandroom_SG_prop", "cis_fedcruiser_commandroom_SG_prop") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.564209, -33.519974, 13.421478); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_prop"); +} + +Object("cis_fedcruiser_commandroom_shieldgen", "cis_fedcruiser_commandroom_shieldgen") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(-10.575195, -25.532974, -22.883514); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_shieldgen"); +} + +Object("cis-life-int", "spa_prop_console") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(-10.480225, -25.575974, -22.986526); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_console"); +} + +Object("CIS_roofgun3", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.711000, 0.000000, 0.703000, 0.000000); + ChildPosition(-46.017212, -20.952972, -12.886520); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("cis_fedcruiser_commandroom0", "cis_fedcruiser_commandroom") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(-10.575195, -25.532974, -22.883514); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom"); +} + +Object("cis_fedcruiser_commandroom_engine", "cis_fedcruiser_commandroom_engine") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(-10.575195, -25.532974, -22.883514); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_engine"); +} + +Object("CIS_roofgun4", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.708000, 0.000000, -0.706000, 0.000000); + ChildPosition(38.559784, -23.276978, -6.647522); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("cis-engines", "spa_prop_engine_tank") +{ + ChildRotation(0.000000, -0.001000, -1.000000, 0.000000); + ChildPosition(40.282806, -25.628983, -13.309525); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_engine_tank"); +} + +Object("cis_fedcruiser_shield_blue", "cis_fedcruiser_shield_blue") +{ + ChildRotation(0.000000, 0.000000, -1.000000, 0.000000); + ChildPosition(-6.221191, -33.125977, -103.907516); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_shield_blue"); +} + +Object("cis-shield", "cis_fedcruiser_commandroom_SG_blender") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.490173, -27.488983, 13.324478); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_blender"); +} diff --git a/Other/Spaceships_1.0_Final/IMP-Stardestroyer.obg b/Other/Spaceships_1.0_Final/IMP-Stardestroyer.obg new file mode 100644 index 0000000..8cf9ffb --- /dev/null +++ b/Other/Spaceships_1.0_Final/IMP-Stardestroyer.obg @@ -0,0 +1,769 @@ + +Object("imp_ship_6", "imp_cap_stardestroyer1") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-69.418976, -24.464569, 39.022888); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer1"); +} + +Object("imp_turr_1", "imp_bldg_boxturret") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-136.847992, 9.653473, 1005.528870); + Team(2); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_ship_5", "imp_cap_stardestroyer2") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-69.418976, -24.464661, 39.022842); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer2"); +} + +Object("sensors_spin0", "rep_assultship_destruct_sensorprop") +{ + ChildRotation(0.990300, 0.000000, -0.138956, 0.000000); + ChildPosition(37.083008, 43.923431, 601.531860); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorprop"); +} + +Object("imp-sensors", "rep_assultship_destruct_sensorrly") +{ + ChildRotation(0.990300, 0.000000, -0.138956, 0.000000); + ChildPosition(37.084015, 43.923431, 601.533875); + Team(2); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorrly"); +} + +Object("imp_RT01", "tur_bldg_spa_imp_recoilless") +{ + ChildRotation(0.708409, 0.000000, -0.705805, 0.000000); + ChildPosition(12.338013, 45.027374, 229.817856); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_bandturret"); +} + +Object("imp_turr_2", "imp_bldg_boxturret") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-163.389984, 5.903473, 183.377853); + Team(2); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_RT06", "tur_bldg_spa_imp_chaingun") +{ + ChildRotation(0.699435, 0.000000, -0.714699, 0.000000); + ChildPosition(-168.172974, 5.577423, 143.136856); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_turr_3", "imp_bldg_boxturret") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-168.552979, 5.071442, 102.425858); + Team(2); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_RT03", "tur_bldg_spa_imp_recoilless") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-168.172974, 5.035370, 58.422852); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_bandturret"); +} + +Object("imp_turr_4", "imp_bldg_boxturret") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-160.296967, 6.446442, 21.457851); + Team(2); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("spa1_prop_imp_shipturret1", "spa1_prop_imp_shipturret") +{ + ChildRotation(0.708438, 0.060949, -0.700419, 0.061795); + ChildPosition(-125.969971, 10.100281, -512.977112); + Team(2); + NetworkId(-1); + GeometryFile("spa1_prop_imp_shipturret"); +} + +Object("spa1_prop_imp_shipturret2", "spa1_prop_imp_shipturret") +{ + ChildRotation(0.708438, 0.060949, -0.700419, 0.061795); + ChildPosition(-125.969971, 10.164368, -407.977142); + Team(2); + NetworkId(-1); + GeometryFile("spa1_prop_imp_shipturret"); +} + +Object("imp_turr_5", "imp_bldg_boxturret") +{ + ChildRotation(0.708409, 0.000000, -0.705805, 0.000000); + ChildPosition(-157.141968, -32.346680, 0.991852); + Team(2); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_ship_4", "imp_cap_stardestroyer3") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-69.418945, -24.464569, 39.022850); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer3"); +} + +Object("imp_RT02", "tur_bldg_spa_imp_recoilless") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(159.395966, 96.724457, -170.000153); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_bandturret"); +} + +Object("imp_ship_1", "imp_cap_stardestroyer4") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-69.419037, -24.464508, 39.022903); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer4"); +} + +Object("imp_RT05", "tur_bldg_spa_imp_chaingun") +{ + ChildRotation(0.559440, 0.000000, -0.828874, 0.000000); + ChildPosition(304.167023, 189.358398, -340.290131); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp-bridge", "imp_cap_stardestroyer_dest_tower") +{ + ChildRotation(0.990300, 0.000000, -0.138956, 0.000000); + ChildPosition(397.220978, 357.380371, -671.977112); + Team(2); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_dest_tower"); +} + +Object("imp_ship_3", "imp_cap_stardestroyer_destruct3") +{ + ChildRotation(0.987290, 0.000000, -0.158941, 0.000000); + ChildPosition(507.843964, 358.094360, -659.257141); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_destruct2"); + CaptureRegion(""); + ControlRegion(""); + KillRegion(""); + SpawnPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed("10"); + Value_ATK_Alliance("20"); + Value_ATK_CIS("10"); + Value_ATK_Empire("10"); + Value_ATK_Republic("10"); + Value_DEF_Alliance("20"); + Value_DEF_CIS("10"); + Value_DEF_Empire("10"); + Value_DEF_Republic("10"); + Value_DEF_Locals("10"); + VO_All_AllCapture(""); + VO_All_AllLost(""); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture(""); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture(""); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture(""); + VO_Imp_ImpLost(""); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture(""); + VO_Rep_RepLost(""); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture(""); +} + +Object("imp_ship_2", "imp_cap_stardestroyer_destruct3") +{ + ChildRotation(0.631488, 0.000000, 0.775389, 0.000000); + ChildPosition(300.844025, 357.094360, -714.257141); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_destruct2"); + CaptureRegion(""); + ControlRegion(""); + KillRegion(""); + SpawnPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed("10"); + Value_ATK_Alliance("20"); + Value_ATK_CIS("10"); + Value_ATK_Empire("10"); + Value_ATK_Republic("10"); + Value_DEF_Alliance("20"); + Value_DEF_CIS("10"); + Value_DEF_Empire("10"); + Value_DEF_Republic("10"); + Value_DEF_Locals("10"); + VO_All_AllCapture(""); + VO_All_AllLost(""); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture(""); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture(""); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture(""); + VO_Imp_ImpLost(""); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture(""); + VO_Rep_RepLost(""); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture(""); +} + +Object("imp_drive_2", "imp_cap_dest_engine_1") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(426.844025, -41.905670, -806.257141); + Team(2); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_destruct4"); +} + +Object("imp_drive_1", "imp_cap_dest_engine_1") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(124.844025, -28.905670, -833.257141); + Team(2); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_destruct4"); +} + +Object("imp_drive_3", "imp_cap_dest_engine_1") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(709.844116, -26.905670, -680.257141); + Team(2); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_destruct4"); +} + +Object("imp_cap_stardestroyer_shield1", "imp_cap_stardestroyer_shield") +{ + ChildRotation(0.999952, 0.000000, 0.009987, 0.000000); + ChildPosition(-145.010986, -37.593658, 93.191849); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_shield"); +} + +Object("imp_cap_stardestroyer_hallway", "imp_cap_stardestroyer_hallway") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773651, 90.153854); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_hallway"); +} + +Object("imp-v4", "com_item_vehicle_spawn") +{ + ChildRotation(0.712420, 0.000000, -0.701756, 0.000000); + ChildPosition(-123.479980, -39.223663, 123.135849); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("imp-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("imp_fly_tiefighter_sc"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("imp_fly_tiefighter_sc"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("imp-v3", "com_item_vehicle_spawn") +{ + ChildRotation(0.712420, 0.000000, -0.701756, 0.000000); + ChildPosition(-123.479980, -39.223663, 103.135849); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("imp-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("imp_fly_tiebomber_sc"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("imp_fly_tiebomber_sc"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("imp-v2", "com_item_vehicle_spawn") +{ + ChildRotation(0.711434, 0.000000, -0.702756, 0.000000); + ChildPosition(-123.479980, -39.223663, 80.135849); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("imp-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("imp_fly_tieinterceptor"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("imp_fly_tieinterceptor"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("imp-v1", "com_item_vehicle_spawn") +{ + ChildRotation(0.712427, 0.000000, -0.701749, 0.000000); + ChildPosition(-123.479980, -39.223663, 57.135853); + Team(2); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("imp-cp1"); + SpawnCount("1"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("imp_fly_trooptrans"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("imp_fly_trooptrans"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("spa1_prop_impdoor2", "spa1_prop_impdoor") +{ + ChildRotation(0.712427, 0.000000, -0.701749, 0.000000); + ChildPosition(-64.935974, -39.627686, 100.408852); + Team(0); + NetworkId(-1); + GeometryFile("spa1_prop_impdoor"); +} + +Object("spa1_prop_impdoor3", "spa1_prop_impdoor") +{ + ChildRotation(0.717417, 0.000000, -0.696647, 0.000000); + ChildPosition(-65.297974, -39.642700, 78.828857); + Team(0); + NetworkId(-1); + GeometryFile("spa1_prop_impdoor"); +} + +Object("imp-cp1", "com_bldg_controlzone_CTF") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-69.479980, -39.615692, 90.135849); + Team(2); + NetworkId(-1); + GeometryFile("com_bldg_controlzone"); + CaptureRegion(""); + ControlRegion("imp-cp1con"); + SpawnPath("imp-cp1spawn"); + TurretPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed_Alliance("0"); + ValueBleed_CIS("0"); + ValueBleed_Empire("0"); + ValueBleed_Republic("0"); + ValueBleed_Neutral("0"); + ValueBleed_Locals("0"); + Value_ATK_Alliance("0"); + Value_ATK_CIS("0"); + Value_ATK_Empire("0"); + Value_ATK_Republic("0"); + Value_ATK_Locals("0"); + Value_DEF_Alliance("0"); + Value_DEF_CIS("0"); + Value_DEF_Empire("0"); + Value_DEF_Republic("0"); + Value_DEF_Locals("0"); + VO_All_AllCapture("all_off_com_report_captured_commandpost"); + VO_All_AllLost("all_off_com_report_lost_commandpost"); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture("all_off_com_report_enemyCaptured_commandpost"); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture("imp_off_com_report_enemyCaptured_commandpost"); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture("imp_off_com_report_captured_commandpost"); + VO_Imp_ImpLost("imp_off_com_report_lost_commandpost"); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture("rep_off_com_report_captured_commandpost"); + VO_Rep_RepLost("rep_off_com_report_lost_commandpost"); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture("rep_off_com_report_enemyCaptured_commandpost"); + VO_Rep_CISLost(""); + VO_Rep_CISInDispute(""); + VO_Rep_CISSaved(""); + VO_Rep_CISInfo(""); + VO_CIS_RepCapture("cis_off_com_report_enemyCaptured_commandpost"); + VO_CIS_RepLost(""); + VO_CIS_RepInDispute(""); + VO_CIS_RepSaved(""); + VO_CIS_RepInfo(""); + VO_CIS_CISCapture("cis_off_com_report_captured_commandpost"); + VO_CIS_CISLost("cis_off_com_report_lost_commandpost"); + VO_CIS_CISInDispute(""); + VO_CIS_CISSaved(""); + VO_CIS_CISInfo(""); + SoldierBan(""); + HoverBan(""); + SmallBan(""); + MediumBan(""); + HugeBan(""); + FlyerBan(""); + AISpawnWeight(""); + HUDIndex(""); + HUDIndexDisplay("0"); +} + +Object("IMP_turrchair1", "spa_veh_turret_chair") +{ + ChildRotation(0.708409, 0.000000, -0.705805, 0.000000); + ChildPosition(-33.313995, -39.837646, 89.735855); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT01"); + NextLinkedTerminal("IMP_turrchair2"); + PrevLinkedTerminal("IMP_turrchair6"); +} + +Object("IMP_turrchair2", "spa_veh_turret_chair") +{ + ChildRotation(0.924265, 0.000000, -0.381755, 0.000000); + ChildPosition(-35.858978, -39.837646, 84.225853); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT02"); + NextLinkedTerminal("IMP_turrchair3"); + PrevLinkedTerminal("IMP_turrchair1"); +} + +Object("IMP_turrchair6", "spa_veh_turret_chair") +{ + ChildRotation(0.925405, 0.000000, 0.378983, 0.000000); + ChildPosition(-47.419983, -39.837646, 84.289856); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT06"); + NextLinkedTerminal("IMP_turrchair1"); + PrevLinkedTerminal("IMP_turrchair5"); +} + +Object("IMP_turrchair4", "spa_veh_turret_chair") +{ + ChildRotation(0.710423, 0.000000, 0.703778, 0.000000); + ChildPosition(-49.847992, -39.837646, 90.161850); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT04"); + NextLinkedTerminal("IMP_turrchair5"); + PrevLinkedTerminal("IMP_turrchair3"); +} + +Object("IMP_turrchair3", "spa_veh_turret_chair") +{ + ChildRotation(-0.386989, 0.000000, -0.922086, 0.000000); + ChildPosition(-47.420990, -39.837646, 95.855850); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT03"); + NextLinkedTerminal("IMP_turrchair4"); + PrevLinkedTerminal("IMP_turrchair2"); +} + +Object("IMP_turrchair5", "spa_veh_turret_chair") +{ + ChildRotation(0.388950, 0.000000, -0.921261, 0.000000); + ChildPosition(-35.665985, -39.837646, 95.733856); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("imp_RT05"); + NextLinkedTerminal("IMP_turrchair6"); + PrevLinkedTerminal("IMP_turrchair4"); +} + +Object("imp-defense", "spa_prop_liquidgen") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-41.550995, -39.448700, 90.150848); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_liquidgen"); +} + +Object("imp_roof1", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(-31.533966, -36.323639, 78.050858); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("imp_roof0", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.708409, 0.000000, -0.705805, 0.000000); + ChildPosition(-31.533966, -36.323639, 101.575851); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("Impdoor03", "spa1_prop_impdoor") +{ + ChildRotation(0.999952, 0.000000, 0.009987, 0.000000); + ChildPosition(-37.100983, -39.643677, 108.614853); + Team(0); + NetworkId(-1); + GeometryFile("spa1_prop_impdoor"); +} + +Object("imp-life-int", "spa_prop_console") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773651, 90.153831); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_console"); +} + +Object("imp_cap_stardestroyer_server", "imp_cap_stardestroyer_server") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773651, 90.153931); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_server"); +} + +Object("Impdoor01", "spa1_prop_impdoor") +{ + ChildRotation(0.999952, 0.000000, 0.009987, 0.000000); + ChildPosition(-37.614990, -39.655640, 71.228851); + Team(0); + NetworkId(-1); + GeometryFile("spa1_prop_impdoor"); +} + +Object("Impdoor02", "spa1_prop_impdoor") +{ + ChildRotation(0.701435, 0.000000, 0.712736, 0.000000); + ChildPosition(-23.707977, -39.625671, 89.603851); + Team(0); + NetworkId(-1); + GeometryFile("spa1_prop_impdoor"); +} + +Object("imp_cap_stardestroyer_engine", "imp_cap_stardestroyer_engine") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773651, 90.153854); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_engine"); +} + +Object("imp_roof2", "tur_bldg_chaingun_roof") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-32.014984, -37.452637, 40.099854); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("imp_roof3", "tur_bldg_chaingun_roof") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-42.788971, -37.452637, 62.434853); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("imp-engines", "spa_prop_engine_tank") +{ + ChildRotation(0.710423, 0.000000, -0.703778, 0.000000); + ChildPosition(-38.256989, -39.700653, 39.265854); + Team(2); + NetworkId(-1); + GeometryFile("spa_prop_engine_tank"); +} + +Object("shieldfan_imp", "cis_fedcruiser_commandroom_SG_prop") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.607971, -47.139648, 89.507851); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_prop"); +} + +Object("imp_cap_stardestroyer_SG", "imp_cap_stardestroyer_SG") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773651, 90.153854); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_SG"); +} + +Object("imp-shield", "cis_fedcruiser_commandroom_SG_blender") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-10.607971, -41.074677, 89.507851); + Team(2); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_blender"); +} + +Object("imp-life-ext", "rep_assultship_destruct_lifesupport") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(288.439056, -151.972687, -297.353149); + Team(2); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_lifesupport"); +} + +Object("imp_RT04", "tur_bldg_spa_imp_chaingun") +{ + ChildRotation(0.707419, 0.000000, -0.706797, 0.000000); + ChildPosition(53.569031, 55.299469, 322.466858); + Team(0); + NetworkId(-1); + GeometryFile("imp_bldg_boxturret"); +} + +Object("imp_cap_stardestroyer_commandroom", "imp_cap_stardestroyer_commandroom") +{ + ChildRotation(0.713422, 0.000000, -0.700738, 0.000000); + ChildPosition(-46.971985, -39.773682, 90.153854); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_commandroom"); +} diff --git a/Other/Spaceships_1.0_Final/REB-Spaceship.obg b/Other/Spaceships_1.0_Final/REB-Spaceship.obg new file mode 100644 index 0000000..fdd45df --- /dev/null +++ b/Other/Spaceships_1.0_Final/REB-Spaceship.obg @@ -0,0 +1,656 @@ + +Object("all_ship_2", "all_cap_rebelcruiser") +{ + ChildRotation(1.000000, 0.000000, -0.001998, 0.000000); + ChildPosition(-200.837097, -22.222748, 3.640594); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser"); +} + +Object("All_Tur01", "spa1_prop_all_shipturret") +{ + ChildRotation(0.553326, -0.003985, 0.832949, -0.004003); + ChildPosition(123.887878, -13.169739, -565.859924); + Team(1); + NetworkId(-1); + GeometryFile("spa1_all_shipturret"); +} + +Object("All_Tur02", "spa1_prop_all_shipturret") +{ + ChildRotation(0.624311, -0.003994, 0.781163, -0.003002); + ChildPosition(178.289886, -11.679657, -423.252930); + Team(1); + NetworkId(-1); + GeometryFile("spa1_all_shipturret"); +} + +Object("all_RT01", "tur_bldg_spa_all_recoilless") +{ + ChildRotation(0.000000, 0.000000, -1.000002, 0.000000); + ChildPosition(165.877899, 26.825287, -340.499939); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_moncal_roundturret"); +} + +Object("all_RT04", "tur_bldg_spa_all_beam") +{ + ChildRotation(0.000000, 0.000000, -1.000002, 0.000000); + ChildPosition(107.065887, 44.253204, -242.570404); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_blisterturret"); +} + +Object("all-comms", "rep_assultship_destruct_commarray") +{ + ChildRotation(0.707319, 0.000000, 0.706898, 0.000000); + ChildPosition(-200.465088, 148.324310, 105.581543); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_commarray"); +} + +Object("all_turr_4", "all_bldg_moncal_roundturret") +{ + ChildRotation(-0.001004, 0.000000, -1.000003, 0.000000); + ChildPosition(-202.024109, 158.169281, 165.560608); + Team(1); + NetworkId(-1); + GeometryFile("all_bldg_moncal_roundturret"); +} + +Object("all_turr_3", "all_bldg_moncal_roundturret") +{ + ChildRotation(0.000000, 0.000000, -1.000002, 0.000000); + ChildPosition(-203.113098, 161.740204, 395.755554); + Team(1); + NetworkId(-1); + GeometryFile("all_bldg_moncal_roundturret"); +} + +Object("all-bridge", "all_cap_rebelcruiser_dest_tower") +{ + ChildRotation(-0.004010, 0.000000, -0.999994, 0.000000); + ChildPosition(-199.227112, 129.534271, -868.836426); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_dest_tower"); +} + +Object("all_RT06", "tur_bldg_spa_all_beam") +{ + ChildRotation(-0.009025, -0.001000, -0.999781, 0.019003); + ChildPosition(-198.604126, 40.277313, -1123.783447); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_blisterturret"); +} + +Object("all_RT03", "tur_bldg_spa_all_recoilless") +{ + ChildRotation(-0.001004, 0.000000, -1.000003, 0.000000); + ChildPosition(-197.542114, 18.731262, -1352.373291); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_moncal_roundturret"); +} + +Object("all_ship_1", "all_cap_rebelcruiser2") +{ + ChildRotation(1.000000, 0.000000, -0.001998, 0.000000); + ChildPosition(-200.837097, -22.222717, 3.643677); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser2"); +} + +Object("all_RT02", "tur_bldg_spa_all_recoilless") +{ + ChildRotation(0.999994, 0.000000, 0.003996, 0.000000); + ChildPosition(-204.736084, 217.551239, 886.195740); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_moncal_roundturret"); +} + +Object("all_RT05", "tur_bldg_spa_all_beam") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-205.998108, 178.787262, 1088.400635); + Team(0); + NetworkId(-1); + GeometryFile("all_bldg_blisterturret"); +} + +Object("sensors_spin1", "rep_assultship_destruct_sensorprop") +{ + ChildRotation(0.704331, 0.070858, 0.702754, 0.070976); + ChildPosition(-205.534119, 136.314423, 1274.896729); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorprop"); +} + +Object("all-sensors", "rep_assultship_destruct_sensorrly") +{ + ChildRotation(0.704331, 0.070858, 0.702754, 0.070976); + ChildPosition(-205.534119, 136.314301, 1274.896729); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorrly"); +} + +Object("all_drive_2", "all_cap_rebelcruiser_destruct3") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-332.253113, 18.723236, 1313.237793); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct3"); +} + +Object("all_drive_1", "all_cap_rebelcruiser_destruct4") +{ + ChildRotation(1.000001, 0.000000, 0.000999, 0.000000); + ChildPosition(-311.256104, -121.278748, 1343.237793); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct4"); +} + +Object("all_drive_5", "all_cap_rebelcruiser_destruct1") +{ + ChildRotation(1.000001, 0.000000, 0.000999, 0.000000); + ChildPosition(-79.253113, 18.723236, 1311.237793); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct1"); +} + +Object("all_drive_6", "all_cap_rebelcruiser_destruct2") +{ + ChildRotation(1.000001, 0.000000, 0.000999, 0.000000); + ChildPosition(-100.253113, -120.278748, 1350.237793); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct2"); +} + +Object("all_drive_4", "all_cap_rebelcruiser_destruct5") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(74.747894, -13.277802, 728.229675); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct5"); +} + +Object("all_drive_3", "all_cap_rebelcruiser_destruct6") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(-485.255127, -23.277771, 721.234680); + Team(1); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_destruct6"); +} + +Object("imp_cap_stardestroyer_shield0", "imp_cap_stardestroyer_shield") +{ + ChildRotation(0.997762, 0.000000, 0.066891, 0.000000); + ChildPosition(208.599899, -36.277740, -234.995422); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_shield"); +} + +Object("hallway", "all_cap_rebelcruiser_hallway") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.525787, -223.225128); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_hallway"); +} + +Object("all-v1", "com_item_vehicle_spawn") +{ + ChildRotation(0.654369, 0.000000, 0.756178, 0.000000); + ChildPosition(190.923889, -36.900726, -204.764709); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("all-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("all_fly_xwing_sc"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("all_fly_xwing_sc"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("all-v2", "com_item_vehicle_spawn") +{ + ChildRotation(0.654369, 0.000000, 0.756178, 0.000000); + ChildPosition(188.426880, -36.900726, -220.658752); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("all-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("all_fly_ywing_sc"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("all_fly_ywing_sc"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("all-v3", "com_item_vehicle_spawn") +{ + ChildRotation(0.653307, 0.000000, 0.757096, 0.000000); + ChildPosition(185.588898, -36.900726, -238.815674); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("all-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("all_fly_awing"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("all_fly_awing"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("all-v4", "com_item_vehicle_spawn") +{ + ChildRotation(0.653307, 0.000000, 0.757096, 0.000000); + ChildPosition(182.197906, -36.900726, -257.969940); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("all-cp1"); + SpawnCount("1"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK("all_fly_gunship_sc"); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK(""); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF(""); + ClassImpDEF("all_fly_gunship_sc"); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("all-cp1", "com_bldg_controlzone_CTF") +{ + ChildRotation(1.000002, 0.000000, 0.000000, 0.000000); + ChildPosition(131.152893, -33.324738, -225.541382); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_controlzone"); + CaptureRegion(""); + ControlRegion("all-cp1con"); + SpawnPath("all-cp1spawn"); + TurretPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed_Alliance("0"); + ValueBleed_CIS("0"); + ValueBleed_Empire("0"); + ValueBleed_Republic("0"); + ValueBleed_Neutral("0"); + ValueBleed_Locals("0"); + Value_ATK_Alliance("0"); + Value_ATK_CIS("0"); + Value_ATK_Empire("0"); + Value_ATK_Republic("0"); + Value_ATK_Locals("0"); + Value_DEF_Alliance("0"); + Value_DEF_CIS("0"); + Value_DEF_Empire("0"); + Value_DEF_Republic("0"); + Value_DEF_Locals("0"); + VO_All_AllCapture("all_off_com_report_captured_commandpost"); + VO_All_AllLost("all_off_com_report_lost_commandpost"); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture("all_off_com_report_enemyCaptured_commandpost"); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture("imp_off_com_report_enemyCaptured_commandpost"); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture("imp_off_com_report_captured_commandpost"); + VO_Imp_ImpLost("imp_off_com_report_lost_commandpost"); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture("rep_off_com_report_captured_commandpost"); + VO_Rep_RepLost("rep_off_com_report_lost_commandpost"); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture("rep_off_com_report_enemyCaptured_commandpost"); + VO_Rep_CISLost(""); + VO_Rep_CISInDispute(""); + VO_Rep_CISSaved(""); + VO_Rep_CISInfo(""); + VO_CIS_RepCapture("cis_off_com_report_enemyCaptured_commandpost"); + VO_CIS_RepLost(""); + VO_CIS_RepInDispute(""); + VO_CIS_RepSaved(""); + VO_CIS_RepInfo(""); + VO_CIS_CISCapture("cis_off_com_report_captured_commandpost"); + VO_CIS_CISLost("cis_off_com_report_lost_commandpost"); + VO_CIS_CISInDispute(""); + VO_CIS_CISSaved(""); + VO_CIS_CISInfo(""); + SoldierBan(""); + HoverBan(""); + SmallBan(""); + MediumBan(""); + HugeBan(""); + FlyerBan(""); + AISpawnWeight(""); + HUDIndex(""); + HUDIndexDisplay("0"); +} + +Object("ALL_Door01", "cis_fedcruiser_door1") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(129.667908, -33.300751, -214.386353); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("ALL_Door02", "cis_fedcruiser_door1") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(126.657898, -33.305756, -235.791321); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("ALL_turrchair2", "spa_veh_turret_chair") +{ + ChildRotation(0.911941, 0.000000, -0.410325, 0.000000); + ChildPosition(111.139893, -33.478760, -227.887024); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT02"); + NextLinkedTerminal("ALL_turrchair3"); + PrevLinkedTerminal("ALL_turrchair1"); +} + +Object("ALL_turrchair5", "spa_veh_turret_chair") +{ + ChildRotation(0.936104, 0.000000, 0.351728, 0.000000); + ChildPosition(99.419891, -33.481750, -228.730042); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT05"); + NextLinkedTerminal("ALL_turrchair6"); + PrevLinkedTerminal("ALL_turrchair4"); +} + +Object("ALL_turrchair1", "spa_veh_turret_chair") +{ + ChildRotation(0.847141, 0.000000, 0.531372, 0.000000); + ChildPosition(97.301880, -33.532776, -225.959808); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT01"); + NextLinkedTerminal("ALL_turrchair2"); + PrevLinkedTerminal("ALL_turrchair6"); +} + +Object("ALL_turrchair3", "spa_veh_turret_chair") +{ + ChildRotation(-0.410664, 0.000000, -0.911789, 0.000000); + ChildPosition(98.570892, -33.510803, -217.078552); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT03"); + NextLinkedTerminal("ALL_turrchair4"); + PrevLinkedTerminal("ALL_turrchair2"); +} + +Object("ALL_turrchair6", "spa_veh_turret_chair") +{ + ChildRotation(0.354545, 0.000000, -0.935041, 0.000000); + ChildPosition(110.200897, -33.338806, -216.216766); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT06"); + NextLinkedTerminal("ALL_turrchair1"); + PrevLinkedTerminal("ALL_turrchair5"); +} + +Object("ALL_turrchair4", "spa_veh_turret_chair") +{ + ChildRotation(0.534453, 0.000000, -0.845202, 0.000000); + ChildPosition(112.327881, -33.278748, -218.997833); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("all_RT04"); + NextLinkedTerminal("ALL_turrchair5"); + PrevLinkedTerminal("ALL_turrchair3"); +} + +Object("ALL_Door5", "cis_fedcruiser_door1") +{ + ChildRotation(0.997560, 0.000000, 0.069843, 0.000000); + ChildPosition(103.102905, -33.314789, -203.395386); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("ALL_Door4", "cis_fedcruiser_door1") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(87.126892, -33.304779, -219.889343); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("ALL_Door3", "cis_fedcruiser_door1") +{ + ChildRotation(0.997628, 0.000000, 0.068859, 0.000000); + ChildPosition(98.011902, -33.302765, -240.219391); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("tur_bldg_chaingun_roof1", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.707319, 0.000000, 0.706898, 0.000000); + ChildPosition(95.854889, -30.016754, -209.346222); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("tur_bldg_chaingun_roof", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.707319, 0.000000, 0.706898, 0.000000); + ChildPosition(92.975891, -30.100739, -229.687225); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("all-defense", "spa_prop_liquidgen") +{ + ChildRotation(0.985832, 0.000000, -0.167748, 0.000000); + ChildPosition(104.935883, -33.139740, -222.511322); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_liquidgen"); +} + +Object("shieldfan_all", "cis_fedcruiser_commandroom_SG_prop") +{ + ChildRotation(0.707319, 0.000000, 0.706898, 0.000000); + ChildPosition(74.151886, -41.009766, -218.130371); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_prop"); +} + +Object("all-shield", "cis_fedcruiser_commandroom_SG_blender") +{ + ChildRotation(0.707319, 0.000000, 0.706898, 0.000000); + ChildPosition(74.151886, -34.943787, -218.130371); + Team(1); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_blender"); +} + +Object("all_cap_rebelcruiser_SG", "all_cap_rebelcruiser_SG") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.535736, -223.219910); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_SG"); +} + +Object("tur_bldg_chaingun_roof4", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.053141, 0.000000, -0.998590, 0.000000); + ChildPosition(108.622894, -31.138733, -195.200409); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("all-engines", "spa_prop_engine_tank") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(107.483887, -33.498749, -171.597382); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_engine_tank"); +} + +Object("tur_bldg_chaingun_roof3", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.000000, 0.000000, -1.000002, 0.000000); + ChildPosition(101.414886, -31.138733, -172.077393); + Team(0); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("all_cap_rebelcruiser_engine", "all_cap_rebelcruiser_engine") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.535736, -223.224396); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_engine"); +} + +Object("all_cap_rebelcruiser_commandroom", "all_cap_rebelcruiser_commandroom") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.535767, -223.225830); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_commandroom"); +} + +Object("all-life-int", "spa_prop_console") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.498749, -223.225677); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_console"); +} + +Object("all_cap_rebelcruiser_server", "all_cap_rebelcruiser_server") +{ + ChildRotation(0.657349, 0.000000, 0.753590, 0.000000); + ChildPosition(110.131897, -33.535736, -223.227661); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_server"); +} + +Object("all_cap_rebelcruiser_door", "all_cap_rebelcruiser_door") +{ + ChildRotation(-0.087141, 0.000000, -0.996198, 0.000000); + ChildPosition(-597.948364, -36.349731, -241.490204); + Team(0); + NetworkId(-1); + GeometryFile("all_cap_rebelcruiser_door"); +} diff --git a/Other/Spaceships_1.0_Final/Readme.doc b/Other/Spaceships_1.0_Final/Readme.doc new file mode 100644 index 0000000..8af8373 Binary files /dev/null and b/Other/Spaceships_1.0_Final/Readme.doc differ diff --git a/Other/Spaceships_1.0_Final/Rep-Assaultship.obg b/Other/Spaceships_1.0_Final/Rep-Assaultship.obg new file mode 100644 index 0000000..68b0cc9 --- /dev/null +++ b/Other/Spaceships_1.0_Final/Rep-Assaultship.obg @@ -0,0 +1,656 @@ + +Object("rep-life-ext", "rep_assultship_destruct_lifesupport") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(35.984344, -41.676559, -489.989746); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_lifesupport"); +} + +Object("rep_ship_1", "rep_cap_assultship") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(34.771332, -23.949554, -78.006744); + Team(0); + NetworkId(-1); + GeometryFile("rep_cap_assultship"); +} + +Object("REP_gun02", "tur_bldg_spa_rep_beam") +{ + ChildRotation(0.711000, 0.000000, -0.704000, 0.000000); + ChildPosition(36.248322, 8.520447, -527.655762); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("REP_gun01", "tur_bldg_spa_rep_chaingun") +{ + ChildRotation(0.710000, 0.000000, -0.705000, 0.000000); + ChildPosition(36.248322, -0.593552, -648.999756); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("REP_gun03", "tur_bldg_spa_rep_beam") +{ + ChildRotation(0.711000, 0.000000, -0.704000, 0.000000); + ChildPosition(36.248322, 19.097443, -384.474731); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("REP_gun04", "tur_bldg_spa_rep_beam") +{ + ChildRotation(0.712000, 0.000000, -0.703000, 0.000000); + ChildPosition(36.248322, 30.725449, -202.809753); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_turr_1", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.710000, 0.000000, -0.705000, 0.000000); + ChildPosition(33.642334, 36.303452, -121.771744); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_ship_2", "rep_cap_assultship2") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(34.771332, -23.949554, -78.006744); + Team(0); + NetworkId(-1); + GeometryFile("rep_cap_assultship2"); +} + +Object("rep_turr_2", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.709000, 0.000000, -0.706000, 0.000000); + ChildPosition(-17.296661, 41.033447, -83.982742); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_turr_3", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.709000, 0.000000, -0.706000, 0.000000); + ChildPosition(-18.897675, 45.847443, 2.168259); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("REP_gun05", "tur_bldg_spa_rep_chaingun") +{ + ChildRotation(0.716000, 0.000000, -0.699000, 0.000000); + ChildPosition(-79.793671, 18.553452, -23.599743); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep-comms", "rep_assultship_destruct_commarray") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(33.846344, 41.571442, -50.989742); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_commarray"); +} + +Object("rep_turr_4", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.709000, 0.000000, -0.706000, 0.000000); + ChildPosition(-21.290680, 50.693451, 83.180260); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("REP_gun06", "tur_bldg_spa_rep_chaingun") +{ + ChildRotation(0.714000, 0.000000, -0.701000, 0.000000); + ChildPosition(-97.494659, 20.867447, 87.192253); + Team(0); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_turr_5", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.709000, 0.000000, -0.706000, 0.000000); + ChildPosition(-24.214661, 55.990448, 165.512268); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_turr_6", "rep_bldg_moncal_roundturret") +{ + ChildRotation(0.708000, 0.000000, -0.707000, 0.000000); + ChildPosition(-19.230652, 61.389435, 254.014252); + Team(1); + NetworkId(-1); + GeometryFile("rep_bldg_boxturret"); +} + +Object("rep_ship_3", "rep_cap_assultship3") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(34.771332, -23.949554, -78.006744); + Team(0); + NetworkId(-1); + GeometryFile("rep_cap_assultship3"); +} + +Object("rep_ship_4", "rep_cap_assultship4") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(34.771332, -23.949554, -78.006744); + Team(0); + NetworkId(-1); + GeometryFile("rep_cap_assultship4"); +} + +Object("rep_drive_1", "rep_assultship_destruct_engines") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(35.946320, -24.092560, -79.287743); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_engines"); +} + +Object("rep-bridge", "rep_assultship_destruct_towers") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(34.846344, 153.511444, 180.010254); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_towers"); +} + +Object("rep_assultship_destruct_sensorprop", "rep_assultship_destruct_sensorprop") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(33.383331, 114.294434, 249.993256); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorprop"); +} + +Object("rep-sensors", "rep_assultship_destruct_sensorrly") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(33.392334, 114.317444, 250.010254); + Team(1); + NetworkId(-1); + GeometryFile("rep_assultship_destruct_sensorrly"); +} + +Object("imp_cap_stardestroyer_shield", "imp_cap_stardestroyer_shield") +{ + ChildRotation(0.994000, 0.000000, -0.109000, 0.000000); + ChildPosition(-93.805664, -22.397552, 34.774254); + Team(0); + NetworkId(-1); + GeometryFile("imp_cap_stardestroyer_shield"); +} + +Object("rep-v1", "com_item_vehicle_spawn") +{ + ChildRotation(0.629000, 0.000000, -0.777000, 0.000000); + ChildPosition(-89.231659, -23.393555, 72.518257); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("rep-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("rep_fly_anakinstarfighter_sc"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("rep_fly_anakinstarfighter_sc"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("rep-v2", "com_item_vehicle_spawn") +{ + ChildRotation(0.629000, 0.000000, -0.777000, 0.000000); + ChildPosition(-82.231659, -23.393555, 48.518257); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("rep-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("rep_fly_arc170fighter_sc"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("rep_fly_arc170fighter_sc"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("rep-v3", "com_item_vehicle_spawn") +{ + ChildRotation(0.629000, 0.000000, -0.777000, 0.000000); + ChildPosition(-76.231659, -23.393555, 25.518257); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("rep-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("rep_fly_vwing"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("rep_fly_vwing"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("rep-v4", "com_item_vehicle_spawn") +{ + ChildRotation(0.629000, 0.000000, -0.777000, 0.000000); + ChildPosition(-71.227661, -23.393555, 1.518257); + Team(1); + NetworkId(-1); + GeometryFile("item_pointer"); + ControlZone("rep-cp1"); + SpawnCount("5"); + SpawnTime("5"); + ExpireTimeEnemy("20.0"); + ExpireTimeField("40.0"); + DecayTime("10.0"); + ClassNeutral(""); + ClassAllATK(""); + ClassCISATK(""); + ClassImpATK(""); + ClassRepATK("rep_fly_gunship_sc"); + ClassLocATK(""); + ClassHisATK(""); + ClassAllDEF(""); + ClassCISDEF("rep_fly_gunship_sc"); + ClassImpDEF(""); + ClassRepDEF(""); + ClassLocDEF(""); + ClassHisDEF(""); + ClassLocals(""); +} + +Object("rep-cp1", "com_bldg_controlzone_CTF") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(-19.607666, -19.901550, 50.990257); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_controlzone"); + CaptureRegion(""); + ControlRegion("rep-cp1con"); + SpawnPath("rep-cp1spawn"); + TurretPath(""); + AllyPath(""); + AllyCount("65536"); + Radius("0.0"); + ValueBleed_Alliance("0"); + ValueBleed_CIS("0"); + ValueBleed_Empire("0"); + ValueBleed_Republic("0"); + ValueBleed_Neutral("0"); + ValueBleed_Locals("0"); + Value_ATK_Alliance("0"); + Value_ATK_CIS("0"); + Value_ATK_Empire("0"); + Value_ATK_Republic("0"); + Value_ATK_Locals("0"); + Value_DEF_Alliance("0"); + Value_DEF_CIS("0"); + Value_DEF_Empire("0"); + Value_DEF_Republic("0"); + Value_DEF_Locals("0"); + VO_All_AllCapture("all_off_com_report_captured_commandpost"); + VO_All_AllLost("all_off_com_report_lost_commandpost"); + VO_All_AllInDispute(""); + VO_All_AllSaved(""); + VO_All_AllInfo(""); + VO_All_ImpCapture("all_off_com_report_enemyCaptured_commandpost"); + VO_All_ImpLost(""); + VO_All_ImpInDispute(""); + VO_All_ImpSaved(""); + VO_All_ImpInfo(""); + VO_Imp_AllCapture("imp_off_com_report_enemyCaptured_commandpost"); + VO_Imp_AllLost(""); + VO_Imp_AllInDispute(""); + VO_Imp_AllSaved(""); + VO_Imp_AllInfo(""); + VO_Imp_ImpCapture("imp_off_com_report_captured_commandpost"); + VO_Imp_ImpLost("imp_off_com_report_lost_commandpost"); + VO_Imp_ImpInDispute(""); + VO_Imp_ImpSaved(""); + VO_Imp_ImpInfo(""); + VO_Rep_RepCapture("rep_off_com_report_captured_commandpost"); + VO_Rep_RepLost("rep_off_com_report_lost_commandpost"); + VO_Rep_RepInDispute(""); + VO_Rep_RepSaved(""); + VO_Rep_RepInfo(""); + VO_Rep_CISCapture("rep_off_com_report_enemyCaptured_commandpost"); + VO_Rep_CISLost(""); + VO_Rep_CISInDispute(""); + VO_Rep_CISSaved(""); + VO_Rep_CISInfo(""); + VO_CIS_RepCapture("cis_off_com_report_enemyCaptured_commandpost"); + VO_CIS_RepLost(""); + VO_CIS_RepInDispute(""); + VO_CIS_RepSaved(""); + VO_CIS_RepInfo(""); + VO_CIS_CISCapture("cis_off_com_report_captured_commandpost"); + VO_CIS_CISLost("cis_off_com_report_lost_commandpost"); + VO_CIS_CISInDispute(""); + VO_CIS_CISSaved(""); + VO_CIS_CISInfo(""); + SoldierBan(""); + HoverBan(""); + SmallBan(""); + MediumBan(""); + HugeBan(""); + FlyerBan(""); + AISpawnWeight(""); + HUDIndex(""); + HUDIndexDisplay("0"); +} + +Object("cis_fedcruiser_door51", "cis_fedcruiser_door1") +{ + ChildRotation(0.784000, 0.000000, 0.621000, 0.000000); + ChildPosition(-12.953674, -19.884552, 41.861259); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("cis_fedcruiser_door52", "cis_fedcruiser_door1") +{ + ChildRotation(0.782000, 0.000000, 0.624000, 0.000000); + ChildPosition(-17.771667, -19.877548, 62.928261); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("rep_turrchair5", "spa_veh_turret_chair") +{ + ChildRotation(0.995000, 0.000000, -0.099000, 0.000000); + ChildPosition(9.567322, -20.081558, 49.053261); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun05"); + NextLinkedTerminal("rep_turrchair6"); + PrevLinkedTerminal("rep_turrchair4"); +} + +Object("rep_turrchair1", "spa_veh_turret_chair") +{ + ChildRotation(0.915000, 0.000000, 0.403000, 0.000000); + ChildPosition(0.862335, -20.081558, 52.638252); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun01"); + NextLinkedTerminal("rep_turrchair2"); + PrevLinkedTerminal("rep_turrchair6"); +} + +Object("rep_turrchair3", "spa_veh_turret_chair") +{ + ChildRotation(0.554000, 0.000000, 0.833000, 0.000000); + ChildPosition(-1.276672, -20.081558, 61.780251); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun03"); + NextLinkedTerminal("rep_turrchair4"); + PrevLinkedTerminal("rep_turrchair2"); +} + +Object("rep_turrchair6", "spa_veh_turret_chair") +{ + ChildRotation(-0.115000, 0.000000, -0.993000, 0.000000); + ChildPosition(5.419342, -20.140549, 67.907265); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun06"); + NextLinkedTerminal("rep_turrchair1"); + PrevLinkedTerminal("rep_turrchair5"); +} + +Object("rep_turrchair4", "spa_veh_turret_chair") +{ + ChildRotation(0.353000, 0.000000, -0.936000, 0.000000); + ChildPosition(14.185333, -20.081558, 66.029259); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun04"); + NextLinkedTerminal("rep_turrchair5"); + PrevLinkedTerminal("rep_turrchair3"); +} + +Object("rep_turrchair2", "spa_veh_turret_chair") +{ + ChildRotation(0.827000, 0.000000, -0.562000, 0.000000); + ChildPosition(16.624329, -20.081558, 55.397255); + Team(0); + NetworkId(-1); + GeometryFile("shared_turret_chair"); + RemoteGameObject("REP_gun02"); + NextLinkedTerminal("rep_turrchair3"); + PrevLinkedTerminal("rep_turrchair1"); +} + +Object("Rep_eng_door", "cis_fedcruiser_door1") +{ + ChildRotation(0.994000, 0.000000, -0.110000, 0.000000); + ChildPosition(15.635345, -19.814560, 41.060257); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("Rep_shi_door", "cis_fedcruiser_door1") +{ + ChildRotation(0.784000, 0.000000, 0.621000, 0.000000); + ChildPosition(24.779327, -19.820557, 62.095253); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("Rep_lif_door", "cis_fedcruiser_door1") +{ + ChildRotation(0.994000, 0.000000, -0.112000, 0.000000); + ChildPosition(7.347321, -19.845551, 77.221260); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_door1"); +} + +Object("REP_roofgun1", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.682000, 0.000000, -0.732000, 0.000000); + ChildPosition(20.009338, -16.488556, 49.244255); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("REP_roofgun2", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.596000, 0.000000, -0.803000, 0.000000); + ChildPosition(15.025330, -16.529556, 72.907265); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("rep-defense", "spa_prop_liquidgen") +{ + ChildRotation(1.000000, 0.000000, 0.000000, 0.000000); + ChildPosition(7.359344, -19.671555, 58.275261); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_liquidgen"); +} + +Object("REP_roofgun3", "tur_bldg_chaingun_roof") +{ + ChildRotation(-0.102000, 0.000000, -0.995000, 0.000000); + ChildPosition(4.109344, -15.419556, 94.455254); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("rep-life-int", "spa_prop_console") +{ + ChildRotation(0.624000, 0.001000, -0.782000, 0.001000); + ChildPosition(2.800323, -20.087555, 57.025261); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_console"); +} + +Object("rep_server", "rep_assultship_commandroom_server") +{ + ChildRotation(0.624000, 0.001000, -0.782000, 0.001000); + ChildPosition(2.090332, -20.093552, 57.016258); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_commandroom_server"); +} + +Object("rep_assultship_commandroom_SG1", "rep_assultship_commandroom_SG1") +{ + ChildRotation(0.624000, 0.001000, -0.782000, 0.001000); + ChildPosition(2.082336, -20.093552, 57.016258); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_commandroom_SG1"); +} + +Object("cis_fedcruiser_commandroom_SG_prop0", "cis_fedcruiser_commandroom_SG_prop") +{ + ChildRotation(0.640000, 0.001000, -0.769000, 0.001000); + ChildPosition(37.518341, -27.982559, 64.994255); + Team(0); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_prop"); +} + +Object("rep-shield", "cis_fedcruiser_commandroom_SG_blender") +{ + ChildRotation(0.641000, 0.001000, -0.768000, 0.001000); + ChildPosition(37.518341, -21.863556, 64.994255); + Team(1); + NetworkId(-1); + GeometryFile("cis_fedcruiser_commandroom_SG_blender"); +} + +Object("rep-engines", "spa_prop_engine_tank") +{ + ChildRotation(0.629000, 0.001000, -0.778000, 0.001000); + ChildPosition(22.675323, -19.930557, 9.173256); + Team(1); + NetworkId(-1); + GeometryFile("spa_prop_engine_tank"); +} + +Object("rep_engine", "rep_assultship_commandroom_engine") +{ + ChildRotation(0.624000, 0.001000, -0.782000, 0.001000); + ChildPosition(2.092346, -20.093552, 57.016258); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_commandroom_engine"); +} + +Object("REP_roofgun5", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.982000, 0.000000, 0.189000, 0.000000); + ChildPosition(11.216339, -16.405548, 25.855255); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("REP_roofgun4", "tur_bldg_chaingun_roof") +{ + ChildRotation(0.942000, 0.000000, -0.335000, 0.000000); + ChildPosition(26.797333, -16.406555, 17.026260); + Team(1); + NetworkId(-1); + GeometryFile("com_bldg_chaingun_roof"); +} + +Object("rep_command", "rep_assultship_commandroom") +{ + ChildRotation(0.624000, 0.001000, -0.782000, 0.001000); + ChildPosition(2.090332, -20.093552, 57.016258); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_commandroom"); +} + +Object("rep_assultship_hallway", "rep_assultship_hallway") +{ + ChildRotation(0.625000, 0.000000, -0.781000, 0.000000); + ChildPosition(-70.365662, -23.734558, 39.683258); + Team(0); + NetworkId(-1); + GeometryFile("rep_assultship_hallway"); +} diff --git a/Other/Terragen_Sky_Box_TGCs/skybox_cameras.tgc b/Other/Terragen_Sky_Box_TGCs/skybox_cameras.tgc new file mode 100644 index 0000000..44b8e80 --- /dev/null +++ b/Other/Terragen_Sky_Box_TGCs/skybox_cameras.tgc @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + diff --git a/Other/Terragen_Sky_Box_TGCs/skybox_render.tgc b/Other/Terragen_Sky_Box_TGCs/skybox_render.tgc new file mode 100644 index 0000000..e928bac --- /dev/null +++ b/Other/Terragen_Sky_Box_TGCs/skybox_render.tgc @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + diff --git a/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky.msh b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky.msh new file mode 100644 index 0000000..fd47e92 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.tga b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.tga new file mode 100644 index 0000000..657f052 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.xcf b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.xcf new file mode 100644 index 0000000..8ae5168 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Rainy_Sky/sky_rain.xcf differ diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/add_to_sky.sky new file mode 100644 index 0000000..7433d03 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/add_to_sky.sky @@ -0,0 +1,5 @@ + DomeModel() + { + Geometry("sky_clouds_moving"); + rotationspeed(0.004, 0,1.0,0); + } \ No newline at end of file diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_move.tga b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_move.tga new file mode 100644 index 0000000..28c5e54 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_move.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_moving.msh b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_moving.msh new file mode 100644 index 0000000..991be47 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Sky_Clods_Moving/sky_clouds_moving.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/add_to_sky.sky new file mode 100644 index 0000000..df6873b --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/add_to_sky.sky @@ -0,0 +1,4 @@ + DomeModel() + { + Geometry("zamzar_sky_Death_Star"); + } diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_Death_Star.msh b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_Death_Star.msh new file mode 100644 index 0000000..8ea1b38 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_Death_Star.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_death_star_1.tga b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_death_star_1.tga new file mode 100644 index 0000000..ac4fe23 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Sky_Death_Star/sky_death_star_1.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/add_to_sky.sky new file mode 100644 index 0000000..8577e27 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/add_to_sky.sky @@ -0,0 +1,17 @@ + exture("pol1_sky.tga"); + Angle(-90.000000); + Ambient(255.000000, 255.000000, 255.000000); + Softness(1); + SoftnessParam(60); + + + DomeModel() + { + Geometry("pol1_skydome"); + rotationspeed (0.001,0.0,1.0,0.0) + } + DomeModel() + { + Geometry("pol1_sky_roids"); + + } \ No newline at end of file diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky/sky_roids.msh b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/sky_roids.msh new file mode 100644 index 0000000..dc438f5 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/sky_roids.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_dome.msh b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_dome.msh new file mode 100644 index 0000000..51bb997 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_dome.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky.tga b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky.tga new file mode 100644 index 0000000..2355117 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky_roids.tga b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky_roids.tga new file mode 100644 index 0000000..a785f29 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky/star_sky_roids.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/add_to_sky.sky new file mode 100644 index 0000000..30013d3 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/add_to_sky.sky @@ -0,0 +1,6 @@ + DomeModel() + { + Geometry("sky_Lense_Flare"); + Offset(0.0); + MovementScale(0.995); + } diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_Lense_Flare.msh b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_Lense_Flare.msh new file mode 100644 index 0000000..7764185 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_Lense_Flare.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.tga b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.tga new file mode 100644 index 0000000..a10fb55 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.xcf b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.xcf new file mode 100644 index 0000000..0a6bc78 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome/Stary_Sky_Lenseflare/sky_lense_flare_.xcf differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome_Battle/add_to_sky.sky new file mode 100644 index 0000000..479a9ec --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome_Battle/add_to_sky.sky @@ -0,0 +1,79 @@ +//Big rep flyer +SkyObject() +{ + Geometry("rep_fly_assault_DOME"); + NumObjects(2); + Height(200, 300); + VelocityZ(20, 50); + Distance(1500); + InDirectionFactor(2); +} + +//Big imp flyer +SkyObject() +{ + Geometry("imp_stardest_DOME"); + NumObjects(2); + Height(200, 300); + VelocityZ(20, 50); + Distance(1500); + InDirectionFactor(2); +} + +//Big reb flyer +SkyObject() +{ + Geometry("reb_mon_cal_DOME"); + NumObjects(2); + Height(200, 300); + VelocityZ(20, 50); + Distance(1500); + InDirectionFactor(2); +} + +//Mid reb flyer +SkyObject() +{ + Geometry("reb_medfrig_DOME"); + NumObjects(2); + Height(200, 300); + VelocityZ(20, 50); + Distance(1500); + InDirectionFactor(2); +} + +//Rep fighters +SkyObject() +{ + Geometry("rep_fly_gunship_DOME"); + NumObjects(20); + Height(80, 140); + VelocityZ(80, 120); + VelocityY(-10, 10); + Distance(600); + InDirectionFactor(0.5); +} + +//CIS fighters +SkyObject() +{ + Geometry("cis_fly_droidfighter_DOME"); + NumObjects(20); + Height(80, 140); + VelocityZ(80, 100); + VelocityY(-10, 10); + Distance(300); + InDirectionFactor(0.5); +} + +//CIS rockets +SkyObject() +{ + Geometry("cis_fly_techounion_DOME"); + NumObjects(8); + Height(0, 0); + VelocityY(10, 12); + Acceleration(0.0, 2.0, 0.0); + Distance(1000); + LifeTime(80.0); +} \ No newline at end of file diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcoreship_dome.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcoreship_dome.tga new file mode 100644 index 0000000..3276ce7 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcoreship_dome.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcruiser_dome.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcruiser_dome.tga new file mode 100644 index 0000000..b5a5b9a Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_cap_fedcruiser_dome.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fed_core_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fed_core_DOME.msh new file mode 100644 index 0000000..c7c90e8 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fed_core_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fedcruiser_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fedcruiser_DOME.msh new file mode 100644 index 0000000..9f906f2 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fedcruiser_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidfighter_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidfighter_DOME.msh new file mode 100644 index 0000000..8d2df89 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidfighter_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidstarfighter_lowrez.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidstarfighter_lowrez.tga new file mode 100644 index 0000000..7257c7d Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_droidstarfighter_lowrez.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander.tga new file mode 100644 index 0000000..6609aec Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander_DOME.msh new file mode 100644 index 0000000..7c1c8d5 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_fedlander_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_technounion_lowrez.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_technounion_lowrez.tga new file mode 100644 index 0000000..2fe62f1 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/cis_fly_technounion_lowrez.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_cap_stardestroyer_dome.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_cap_stardestroyer_dome.tga new file mode 100644 index 0000000..e890472 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_cap_stardestroyer_dome.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_stardest_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_stardest_DOME.msh new file mode 100644 index 0000000..c405ba9 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/imp_stardest_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_cap_moncal_dome.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_cap_moncal_dome.tga new file mode 100644 index 0000000..af2f644 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_cap_moncal_dome.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_medfrig_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_medfrig_DOME.msh new file mode 100644 index 0000000..e1ee60c Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_medfrig_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_moncal_DOME.msh b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_moncal_DOME.msh new file mode 100644 index 0000000..2adedcc Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/reb_moncal_DOME.msh differ diff --git a/Sky_Dome_Parts/Sky_Dome_Battle/msh/rebl_prop_medicalfrigate_dome.tga b/Sky_Dome_Parts/Sky_Dome_Battle/msh/rebl_prop_medicalfrigate_dome.tga new file mode 100644 index 0000000..614bd04 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Battle/msh/rebl_prop_medicalfrigate_dome.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Rims/add_to_sky.sky b/Sky_Dome_Parts/Sky_Dome_Rims/add_to_sky.sky new file mode 100644 index 0000000..53b2993 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Dome_Rims/add_to_sky.sky @@ -0,0 +1,6 @@ + DomeModel() + { + Geometry("sky_dome_rim"); + Offset(0.0); + MovementScale(0.995); + } \ No newline at end of file diff --git a/Sky_Dome_Parts/Sky_Dome_Rims/gen_sky_horizin.tga b/Sky_Dome_Parts/Sky_Dome_Rims/gen_sky_horizin.tga new file mode 100644 index 0000000..6b12f40 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Rims/gen_sky_horizin.tga differ diff --git a/Sky_Dome_Parts/Sky_Dome_Rims/sky_dome_rim.msh b/Sky_Dome_Parts/Sky_Dome_Rims/sky_dome_rim.msh new file mode 100644 index 0000000..9c866e2 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Dome_Rims/sky_dome_rim.msh differ diff --git a/Sky_Dome_Parts/Sky_Explosions/add_to_sky.sky b/Sky_Dome_Parts/Sky_Explosions/add_to_sky.sky new file mode 100644 index 0000000..de387e9 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Explosions/add_to_sky.sky @@ -0,0 +1,22 @@ + DomeModel() + { + Geometry("sky_explosions"); + rotationspeed(0.003, 0,1.0,0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_1", 1.0); + + + Effect("spa_sfx_skydomeexplosions", "hp_sky_4", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_5", 1.0); + + Effect("spa_sfx_skydomeexplosions", "hp_sky_7", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_8", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_9", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_10", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_11", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_12", 1.0); + + Effect("spa_sfx_skydomeexplosions", "hp_sky_14", 1.0); + Effect("spa_sfx_skydomeexplosions", "hp_sky_15", 1.0); + + + } \ No newline at end of file diff --git a/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydome_animated_exp.tga b/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydome_animated_exp.tga new file mode 100644 index 0000000..8b4b94e Binary files /dev/null and b/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydome_animated_exp.tga differ diff --git a/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydomeexplosions.fx b/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydomeexplosions.fx new file mode 100644 index 0000000..ca1e150 --- /dev/null +++ b/Sky_Dome_Parts/Sky_Explosions/effects/spa_sfx_skydomeexplosions.fx @@ -0,0 +1,145 @@ +ParticleEmitter("Explosions") +{ + MaxParticles(-1.0000,-1.0000); + StartDelay(0.0000,0.0000); + BurstDelay(0.1000, 0.3000); + BurstCount(1.0000,2.0000); + MaxLodDist(2200.0000); + MinLodDist(2000.0000); + BoundingRadius(5.0); + SoundName("") + NoRegisterStep(); + Size(1.0000, 1.0000); + Hue(255.0000, 255.0000); + Saturation(255.0000, 255.0000); + Value(255.0000, 255.0000); + Alpha(255.0000, 255.0000); + Spawner() + { + Spread() + { + PositionX(-1.0000,1.0000); + PositionY(-1.0000,1.0000); + PositionZ(-1.0000,1.0000); + } + Offset() + { + PositionX(0.0000,0.0000); + PositionY(0.0000,0.0000); + PositionZ(0.0000,0.0000); + } + PositionScale(0.0000,2.0000); + VelocityScale(0.0000,0.0000); + InheritVelocityFactor(0.0000,0.0000); + Size(0, 0.0500, 0.4500); + Red(0, 255.0000, 255.0000); + Green(0, 255.0000, 255.0000); + Blue(0, 255.0000, 255.0000); + Alpha(0, 0.0000, 0.0000); + StartRotation(0, 0.0000, 360.0000); + RotationVelocity(0, 0.0000, 0.0000); + FadeInTime(0.0000); + } + Transformer() + { + LifeTime(0.7500); + Position() + { + LifeTime(0.8000) + } + Size(0) + { + LifeTime(0.7500) + Scale(2.0000); + } + Color(0) + { + LifeTime(0.0100) + Reach(255.0000,255.0000,255.0000,255.0000); + } + } + Geometry() + { + BlendMode("NORMAL"); + Type("ANIMATED"); + TimePerFrame(0.0500); + FrameSize(32.0000); + TotalFrames(16.0000); + Looping(0); + Texture("spa_sfx_skydome_animated_exp"); + } + ParticleEmitter("Lasers") + { + MaxParticles(-1.0000,-1.0000); + StartDelay(0.0000,0.0000); + BurstDelay(0.0750, 0.5750); + BurstCount(1.0000,1.0000); + MaxLodDist(50.0000); + MinLodDist(10.0000); + BoundingRadius(5.0); + SoundName("") + NoRegisterStep(); + Size(1.0000, 1.0000); + Red(255.0000, 255.0000); + Green(255.0000, 255.0000); + Blue(255.0000, 255.0000); + Alpha(255.0000, 255.0000); + Spawner() + { + Spread() + { + PositionX(-1.0000,1.0000); + PositionY(-1.0000,1.0000); + PositionZ(-1.0000,1.0000); + } + Offset() + { + PositionX(-2.0000,2.0000); + PositionY(-2.0000,2.0000); + PositionZ(-2.0000,2.0000); + } + PositionScale(0.0000,1.0000); + VelocityScale(3.0000,3.5000); + InheritVelocityFactor(0.0000,0.0000); + Size(0, 0.0250, 0.0250); + Red(0, 255.0000, 255.0000); + Green(0, 255.0000, 255.0000); + Blue(0, 255.0000, 255.0000); + Alpha(0, 0.0000, 0.0000); + StartRotation(0, 0.0000, 0.0000); + RotationVelocity(0, 0.0000, 0.0000); + FadeInTime(0.0000); + } + Transformer() + { + LifeTime(3.0000); + Position() + { + LifeTime(2.0000) + Scale(0.0000); + } + Size(0) + { + LifeTime(3.0000) + Scale(0.0000); + } + Color(0) + { + LifeTime(0.0100) + Move(0.0000,0.0000,0.0000,255.0000); + Next() + { + LifeTime(3.0000) + Reach(50.0000,50.0000,50.0000,0.0000); + } + } + } + Geometry() + { + BlendMode("ADDITIVE"); + Type("SPARK"); + SparkLength(0.0750); + Texture("com_sfx_laser_red"); + } + } +} diff --git a/Sky_Dome_Parts/Sky_Explosions/sky_explosions.msh b/Sky_Dome_Parts/Sky_Explosions/sky_explosions.msh new file mode 100644 index 0000000..a5b93a0 Binary files /dev/null and b/Sky_Dome_Parts/Sky_Explosions/sky_explosions.msh differ diff --git a/Usable_Textures/Clouds/rainy_Clouds_3.png b/Usable_Textures/Clouds/rainy_Clouds_3.png new file mode 100644 index 0000000..6c93854 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_Clouds_3.png differ diff --git a/Usable_Textures/Clouds/rainy_Clouds_4.png b/Usable_Textures/Clouds/rainy_Clouds_4.png new file mode 100644 index 0000000..5bde504 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_Clouds_4.png differ diff --git a/Usable_Textures/Clouds/rainy_Clouds_Large.png b/Usable_Textures/Clouds/rainy_Clouds_Large.png new file mode 100644 index 0000000..b27e944 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_Clouds_Large.png differ diff --git a/Usable_Textures/Clouds/rainy_Clouds_Whispy.png b/Usable_Textures/Clouds/rainy_Clouds_Whispy.png new file mode 100644 index 0000000..e9073f5 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_Clouds_Whispy.png differ diff --git a/Usable_Textures/Clouds/rainy_Clouds_Whispy_Bluish.png b/Usable_Textures/Clouds/rainy_Clouds_Whispy_Bluish.png new file mode 100644 index 0000000..0bfc138 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_Clouds_Whispy_Bluish.png differ diff --git a/Usable_Textures/Clouds/rainy_clouds.png b/Usable_Textures/Clouds/rainy_clouds.png new file mode 100644 index 0000000..6122867 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_clouds.png differ diff --git a/Usable_Textures/Clouds/rainy_clouds_2.png b/Usable_Textures/Clouds/rainy_clouds_2.png new file mode 100644 index 0000000..1bdad22 Binary files /dev/null and b/Usable_Textures/Clouds/rainy_clouds_2.png differ