Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Phobos

#61
Quote from: bboettcher on February 09, 2017, 10:46:54 AM
Thanks so much for helping me out! I was finally able to add my own re-textured Side!
The strange thing was that the Imperial base showed up Yellow, and were all labeled as killed Gammoreans?
Is this something to do with it being a dc:SIDE and it defaulting to gammorean stuff?  Where do I go to change this?
It probably has to do with the LUA and imp being set to team 3 instead of team 2. Post your mission LUA here and I'll see what needs to be changed.




Quote from: SleepKiller on May 27, 2017, 09:20:24 AM
Quote from: DylanRocket on May 27, 2017, 07:49:43 AM
The first two Battlefront games both use the Zero Engine. Renegade/Elite Squadron uses Asura Engine and EA's Battlefronts use the Frostbite engine.
Sorry this is incorrect and also an old pet peeve of mine that people constantly get wrong. (So I naturally can't help but be pretentious and correct you on it.)

The way SWBF used Zero was in the form of Zero Editor as an external tool for level creation. People have often taken this to mean that SWBF's engine must then be Zero but that is incorrect. The SWBF engine itself was nameless and distinct from Zero.

Not really incorrect, since Psych0fred already confirmed the engine was named ZeroEngine after it was developed. If you'd rather call it "The Nameless Engine Used In SWBF" go right ahead, but nobody is actually "getting it wrong" by calling it what the devs called it.

https://en.wikipedia.org/wiki/Zero_(game_engine)

Quote from: RepComm on February 02, 2014, 06:06:10 PM
If you "Look carefully." you will see that my original post had the ever so disgraceful term "Zero Engine," when the image has an temporarily edited version to say "SALLY" in it's place.
Lol I think pandemic would find naming the engine "sally" more of a disgrace than "zeroengine". What's next, hex editing ZeroEditor to say SallyEditor? :rofl:
#62
General / IMDb Forums Shutting Down
February 08, 2017, 05:58:05 PM
www.imdb.com/board/announcement

Quote
IMDb Message Boards Announcement

IMDb is the world's most popular and authoritative source for movie, TV and celebrity content. As part of our ongoing effort to continually evaluate and enhance the customer experience on IMDb, we have decided to disable IMDb's message boards on February 20, 2017. This includes the Private Message system. After in-depth discussion and examination, we have concluded that IMDb's message boards are no longer providing a positive, useful experience for the vast majority of our more than 250 million monthly users worldwide. The decision to retire a long-standing feature was made only after careful consideration and was based on data and traffic.

Increasingly, IMDb customers have migrated to IMDb's social media accounts as the primary place they choose to post comments and communicate with IMDb's editors and one another. IMDb's Facebook page (https://www.facebook.com/imdb) and official Twitter account (https://twitter.com/imdb) have an audience of more than 10 million engaged fans. IMDb also maintains official accounts on Snapchat (https://www.snapchat.com/add/imdblive), Pinterest (https://www.pinterest.com/imdbofficial/), YouTube (https://www.youtube.com/imdb), and Tumblr (http://imdb.tumblr.com/).

Because IMDb's message boards continue to be utilized by a small but passionate community of IMDb users, we announced our decision to disable our message boards on February 3, 2017 but will leave them open for two additional weeks so that users will have ample time to archive any message board content they'd like to keep for personal use. During this two-week transition period, which concludes on February 19, 2017, IMDb message board users can exchange contact information with any other board users they would like to remain in communication with (since once we shut down the IMDb message boards, users will no longer be able to send personal messages to one another). We regret any disappointment or frustration IMDb message board users may experience as a result of this decision.

IMDb is passionately committed to providing innovative ways for our hundreds of millions of users to engage and communicate with one another. We will continue to enhance our current offerings and launch new features in 2017 and beyond that will help our customers communicate and express themselves in meaningful ways while leveraging emerging technologies and opportunities.
#63
Quote from: bboettcher on February 08, 2017, 10:38:36 AM
Thanks for the quick reply!  For how short it was it made something click in my brain (hopefully correctly) :)
The proces doesn't seem quite so mysterious after looking at the TAT3 stuff REALLY in depth.  I couldn't see the connections between the LVL, REQ, ODF, MSH, and TGA files before. I think I've got at least a general idea of what's going on now?

So for a reskin: I would make a new side using the BFBuilder Pro (import side) - change the various .tgas I want changed, munge, take the new side's .lvl file and put it in my map's "Data\_lvl_pc\Side" folder.  Add the side via the mission.LUAs and it should work?

So my current understanding / guesswork has led me to believe the following order of events:

1. "addme" appends the level to the game's list and runs the scripts under "Common\Scripts". 
2. These scripts create the missions/eras by reading in the .LVL files for the Sound, Sides, and Level
          (made from ZeroEdit) and their required .REQ files.
3. The .REQ files are used to load in their .ODFs
4. The .ODFs load their respective .MSHs
5. The .MSHs load their respective .TGA files.
???

I don't currently have time to test it out (gotta get to classes)
But I'm attaching the tat3a.lua script found here:"DataTAT3\Common\Scripts\TAT\tat3a.lua"
with comments of my attempt at figuring out the various functions and any additional questions/clarifications I have.  I'll be attempting adding the new side later today when I'm back from school.


Here's the tat3a.lua with my comments in green
I'm kind of hoping for clarification where I'm right/wrong (hoping that's not too much to ask)
So thanks a TON for anyone willing to spend the time helping me out.
[spoiler]---------------------------------------------------------------------------
-- FUNCTION:    ScriptInit
-- PURPOSE:     This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES:       The name, 'ScriptInit' is a chosen convention, and each
--              mission script must contain a version of this function, as
--              it is called from C to start the mission.
---------------------------------------------------------------------------

function ScriptInit()
--  Empire Attacking (attacker is always #1)
    local ALL = 1
    local IMP = 2
--  These variables do not change
    local ATT = 1
    local DEF = 2

   -- my guess is that the AddMissionObjective function sets up
   -- the localization for the objectives added? I have no clue
   -- what the "red" / "orange" stands for or why it's important.

    AddMissionObjective(IMP, "red", "level.tat3.objectives.1");
    AddMissionObjective(IMP, "orange", "level.tat3.objectives.2");
    AddMissionObjective(IMP, "orange", "level.tat3.objectives.3");
    AddMissionObjective(ALL, "red", "level.tat3.objectives.1");
    AddMissionObjective(ALL, "orange", "level.tat3.objectives.2");
    AddMissionObjective(ALL, "orange", "level.tat3.objectives.3");
   
      SetTeamAggressiveness(IMP, 0.95)
SetTeamAggressiveness(ALL, 0.95)


   -- So ReadDataFile is the function you add in your
   -- .lvl files that you've created and their respective
   -- ".req" files? - I'm not 100% sure what's being
   -- referenced here.
   -- It looks like the arguments for ReadDataFile
   -- should be:
   --ReadDataFile(location of main .lvl file, comma separated list of reqs (w/o the .req) needed for that .lvl file)
   --I'm not sure about the 1st call to ReadDataFile though with the ";" seemingly out of place...

    ReadDataFile("dc:sound\\tat.lvl;tat3gcw")
    ReadDataFile("SIDE\\all.lvl",
        "all_inf_basicdesert",
        "all_inf_smuggler");

    ReadDataFile("SIDE\\imp.lvl",
        "imp_inf_basic_tie",
        "imp_inf_dark_trooper");

    ReadDataFile("dc:SIDE\\gam.lvl",
        "gam_inf_gamorreanguard")
   
    SetAttackingTeam(ATT);

--      Alliance Stats
    --SetTeamName(team, Name as seen ingame?)
   --SetTeamIcon(I would assume it's referencing a texture or something, but I can't find it.
    -- AddUnitClass looks like it's referencing ".odf" files and not ".reqs"
   -- Do these ODFs have to match up with the .reqs read from ReadDataFile above?

    SetTeamName(ALL, "Alliance")
    SetTeamIcon(ALL, "all_icon")
    AddUnitClass(ALL, "all_inf_soldierdesert",10)
    AddUnitClass(ALL, "all_inf_vanguard",1)
    AddUnitClass(ALL, "all_inf_pilot",2)
    AddUnitClass(ALL, "all_inf_marksman",2)
    AddUnitClass(ALL, "all_inf_smuggler",1)

--      Imperial Stats
    SetTeamName(IMP, "Empire")
    SetTeamIcon(IMP, "imp_icon")
    AddUnitClass(IMP, "imp_inf_storm_trooper",10)
    AddUnitClass(IMP, "imp_inf_shock_trooper",1)
    AddUnitClass(IMP, "imp_inf_pilottie",2)
    AddUnitClass(IMP, "imp_inf_scout_trooper",2)
    AddUnitClass(IMP, "imp_inf_dark_trooper",1)

   
--  Attacker Stats   
   -- These sections I'm not sure how the BleedThreshold works.
   -- I know it has to do with when a team isn't holding enough bases
   -- and starts losing reinforcements, but I'm not sure about these
   -- values that are being entered.

    SetUnitCount(ATT, 16)
    SetReinforcementCount(ATT, 200)
--    AddBleedThreshold(ATT, 31, 0.0)
--    AddBleedThreshold(ATT, 21, 0.75)
    AddBleedThreshold(ATT, 11, 0.75)
    AddBleedThreshold(ATT, 10, 1.5)
    AddBleedThreshold(ATT, 1, 3.0)

--  Defender Stats
    SetUnitCount(DEF, 16)
    SetReinforcementCount(DEF, 200)
--    AddBleedThreshold(DEF, 31, 0.0)
--    AddBleedThreshold(DEF, 21, 0.75)
    AddBleedThreshold(DEF, 11, 0.75)
    AddBleedThreshold(DEF, 10, 1.5)
    AddBleedThreshold(DEF, 1, 3.0)

--  Local Stats
    SetTeamName(3, "locals")
    AddUnitClass(3, "gam_inf_gamorreanguard",3)
    SetUnitCount(3, 3)
    SetTeamAsEnemy(3, ATT)
    SetTeamAsEnemy(3, DEF)

   
   
--  Level Stats
   
   --This section is a mystery to me. I've seen around that the
   --AddWalkerType(x,y) references walkers w/0 legs (droideka)
   --1 pair(atst), 2 pair(atat/spider?), and 3 pair(atte)
   -- I'm not sure why this section is clearing/adding walker types for
   -- Jabbas Palace though?
   --
   -- I'm also lost on what SetMemoryPoolSize() is doing and how I would
   -- be able to use it in a map
   -- Also I noticed there's another ReadDataFile("dc:TAT\\tat3.lvl") here
   -- and I'm curious as to why it's not up with the other ReadDataFile() calls

   ClearWalkers()
    AddWalkerType(0, 0)
    AddWalkerType(1, 4)
    AddWalkerType(2, 0)
    --SetMemoryPoolSize("EntityHover", 12)
    --SetMemoryPoolSize("EntityFlyer", 5)
--  SetMemoryPoolSize("EntityBuildingArmedDynamic", 16)
--  SetMemoryPoolSize("EntityTauntaun", 0)
--  SetMemoryPoolSize("MountedTurret", 22)
    SetMemoryPoolSize("PowerupItem", 60)
    SetMemoryPoolSize("SoundSpaceRegion", 81)
    SetMemoryPoolSize("EntityMine", 40)
    SetMemoryPoolSize("Aimer", 200)
    SetMemoryPoolSize("Obstacle", 725)
    SetSpawnDelay(10.0, 0.25)
    ReadDataFile("dc:TAT\\tat3.lvl")
    SetDenseEnvironment("true")
    --AddDeathRegion("Sarlac01")
    SetMaxFlyHeight(90)
    SetMaxPlayerFlyHeight(90)


--  Sound Stats
    OpenAudioStream("sound\\tat.lvl",  "tatgcw_music");
    OpenAudioStream("dc:sound\\tat.lvl",  "tat3");
    OpenAudioStream("dc:sound\\tat.lvl",  "tat3");
    OpenAudioStream("sound\\gcw.lvl",  "gcw_vo");
    OpenAudioStream("sound\\gcw.lvl",  "gcw_tac_vo");
    OpenAudioStream("dc:sound\\tat.lvl",  "tat3_emt");
    --OpenAudioStream("dc:sound\\tat.lvl",  "tat3_emt");

    SetBleedingVoiceOver(ALL, ALL, "all_off_com_report_us_overwhelmed", 1);
    SetBleedingVoiceOver(ALL, IMP, "all_off_com_report_enemy_losing",   1);
    SetBleedingVoiceOver(IMP, ALL, "imp_off_com_report_enemy_losing",   1);
    SetBleedingVoiceOver(IMP, IMP, "imp_off_com_report_us_overwhelmed", 1);

    SetLowReinforcementsVoiceOver(ALL, ALL, "all_off_defeat_im", .1, 1);
    SetLowReinforcementsVoiceOver(ALL, IMP, "all_off_victory_im", .1, 1);
    SetLowReinforcementsVoiceOver(IMP, IMP, "imp_off_defeat_im", .1, 1);
    SetLowReinforcementsVoiceOver(IMP, ALL, "imp_off_victory_im", .1, 1);

    SetOutOfBoundsVoiceOver(2, "Allleaving");
    SetOutOfBoundsVoiceOver(1, "Impleaving");

    SetAmbientMusic(ALL, 1.0, "all_tat_amb_start",  0,1);
    SetAmbientMusic(ALL, 0.99, "all_tat_amb_middle", 1,1);
    SetAmbientMusic(ALL, 0.1,"all_tat_amb_end",    2,1);
    SetAmbientMusic(IMP, 1.0, "imp_tat_amb_start",  0,1);
    SetAmbientMusic(IMP, 0.99, "imp_tat_amb_middle", 1,1);
    SetAmbientMusic(IMP, 0.1,"imp_tat_amb_end",    2,1);

    SetVictoryMusic(ALL, "all_tat_amb_victory");
    SetDefeatMusic (ALL, "all_tat_amb_defeat");
    SetVictoryMusic(IMP, "imp_tat_amb_victory");
    SetDefeatMusic (IMP, "imp_tat_amb_defeat");



    SetSoundEffect("ScopeDisplayZoomIn",  "binocularzoomin");
    SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout");
    --SetSoundEffect("WeaponUnableSelect",  "com_weap_inf_weaponchange_null");
    --SetSoundEffect("WeaponModeUnableSelect",  "com_weap_inf_modechange_null");
    SetSoundEffect("SpawnDisplayUnitChange",       "shell_select_unit");
    SetSoundEffect("SpawnDisplayUnitAccept",       "shell_menu_enter");
    SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change");
    SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter");
    SetSoundEffect("SpawnDisplayBack",             "shell_menu_exit");

    --SetPlanetaryBonusVoiceOver(IMP, IMP, 0, "imp_bonus_imp_medical");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 0, "imp_bonus_all_medical");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 1, "");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 1, "");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 2, "imp_bonus_imp_sensors");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 2, "imp_bonus_all_sensors");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 3, "imp_bonus_imp_hero");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 3, "imp_bonus_all_hero");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 4, "imp_bonus_imp_reserves");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 4, "imp_bonus_all_reserves");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 5, "imp_bonus_imp_sabotage");--sabotage
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 5, "imp_bonus_all_sabotage");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 6, "");
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 6, "");
    --SetPlanetaryBonusVoiceOver(IMP, IMP, 7, "imp_bonus_imp_training");--advanced training
    --SetPlanetaryBonusVoiceOver(IMP, ALL, 7, "imp_bonus_all_training");--advanced training

    --SetPlanetaryBonusVoiceOver(ALL, ALL, 0, "all_bonus_all_medical");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 0, "all_bonus_imp_medical");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 1, "");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 1, "");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 2, "all_bonus_all_sensors");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 2, "all_bonus_imp_sensors");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 3, "all_bonus_all_hero");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 3, "all_bonus_imp_hero");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 4, "all_bonus_all_reserves");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 4, "all_bonus_imp_reserves");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 5, "all_bonus_all_sabotage");--sabotage
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 5, "all_bonus_imp_sabotage");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 6, "");
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 6, "");
    --SetPlanetaryBonusVoiceOver(ALL, ALL, 7, "all_bonus_all_training");--advanced training
    --SetPlanetaryBonusVoiceOver(ALL, IMP, 7, "all_bonus_imp_training");--advanced training


--  Camera Stats
   --These are for the end-screen-shot at Victory/Defeat and you get
   --the coordinates from SPTest's dumpcamera functionality I think?

--Tat 3 - Jabbas' Palace
    AddCameraShot(0.685601, -0.253606, -0.639994, -0.236735, -65.939224, -0.176558, 127.400444);
    AddCameraShot(0.786944, 0.050288, -0.613719, 0.039218, -80.626396, 1.175180, 133.205551);
    AddCameraShot(0.997982, 0.061865, -0.014249, 0.000883, -65.227898, 1.322798, 123.976990);
    AddCameraShot(-0.367869, -0.027819, -0.926815, 0.070087, -19.548307, -5.736280, 163.360519);
    AddCameraShot(0.773980, -0.100127, -0.620077, -0.080217, -61.123989, -0.629283, 176.066025);
    AddCameraShot(0.978189, 0.012077, 0.207350, -0.002560, -88.388947, 5.674968, 153.745255);
    AddCameraShot(-0.144606, -0.010301, -0.986935, 0.070304, -106.872772, 2.066469, 102.783096);
    AddCameraShot(0.926756, -0.228578, -0.289446, -0.071390, -60.819584, -2.117482, 96.400620);
    AddCameraShot(0.873080, 0.134285, 0.463274, -0.071254, -52.071609, -8.430746, 67.122437);
    AddCameraShot(0.773398, -0.022789, -0.633236, -0.018659, -32.738083, -7.379394, 81.508003);
    AddCameraShot(0.090190, 0.005601, -0.993994, 0.061733, -15.379695, -9.939115, 72.110054);
    AddCameraShot(0.971737, -0.118739, -0.202524, -0.024747, -16.591295, -1.371236, 147.933029);
    AddCameraShot(0.894918, 0.098682, -0.432560, 0.047698, -20.577391, -10.683214, 128.752563);

end
[/spoiler]

I know these things have probably been laid out plain before, so I'm incredibly thankful for any/all help from you all.
It sounds like you already have a basic understanding of the mod files. Yes, basically the builders munge all of those filetypes, and the REQs determines which files are contained in the LVL.

All files referenced within side ODFs that are listed in the REQ should munge. This means secondary ODFs (such as _ord and _exp), MSH, and the TGA called on by MSH, along with .option files, effects, and munged animations. And for world LVLs, other files in the World1 folder are munged.

Addme.lua appends the map to the game's missionlist as an AddOn, there is a hardcoded limit of around 20-24 maps. Though it is possible to add more maps to the stock missionlist.LUA by editing the game's shell.lvl, this process isn't needed for most mod maps.

Regarding the mission.LUA you posted:
- The mission objectives can be hard-coded in the LUA by adding them in the quotes, OR you can reference a localization string stored within the core.lvl, which is useful if you want to edit CP names to, see this thread for more info http://www.swbfgamers.com/index.php?topic=11610
- I forget what the colors "red" and "orange" is for
- ReadDataFile is a LUA command that tells the game engine to read an LVL file (though it also works for .config files and some other munged formats), using the DC: command tells it to look in the AddOn folder for the LVL. It can also be stored in the root _LVL_PC folder, or a custom subfolder (as was done for ICW) which is useful if you're using the same SIDE files for multiple mod maps. 
- When you see the custom sound LVL, it's calling on a sub-LVL for the GCW sound era (these have their own sub-REQ files accordingly). Sound LVL modding is rather tricky, and should probably be learned after you understand more about modding sides, worlds, LUA, and other LVL files.
- SetTeamIcon loads the texture from stock common.lvl textures I think, you can probably add a new one there if needed.
- AddUnitClass does call on ODFs in the side LVL, but they must also be referenced in the side REQ in order to munge. And yes, for SIDE.lvl REQs called on in the ReadDataFileSection, such as imp_inf_basic_tie, these must be called in order to load into game memory the units listed in those REQs.
- BleedThreshhold is just something you have to tweak a few times to get the right feel for it, there is "autobleed" settings I discovered which drain a server reinforcements when the CPs are equal and nobody is in the server. You can also disable bleed, or make it very slow. I think the first number after the faction indicates the rate of bleed, the last number has to do with how imbalanced the CP ownership is for the current map. There are some LUA tutorials on here you can find by doing some additional searching
- The WalkerTypes are usually set to 0 on maps they aren't loaded for, one of them is for Dekas.
- The ReadDataFile mentioned down in the Level Stats section calls on the World LVL, it should not be called until after the sides are loaded.
- SetMemoryPoolSize lets you specify max settings for certain memory pools. However, these limits are hard-coded in the game EXE, and cannot be increased by modders, since the EXE source for SWBF1 (and SWBF2) can't be released. Modders can only set them as high as the LUA supports, anything higher will be ignored and limited to the EXE max limit. You can increase things like EntityMine and PowerUpItem, but sound is more limited. If not listed in the LUA, the default setting is used (for those it is 40). Also to check the limits in SPtest, type mem
- Yes, you can use dumpcamera with SPtest to generate custom camera values.

More threads with useful info about SPTest and LUA modding
http://www.swbfgamers.com/index.php?topic=5689
http://www.swbfgamers.com/index.php?topic=3641
http://www.swbfgamers.com/index.php?topic=979
http://www.swbfgamers.com/index.php?topic=9619
#64
I didn't see this ODF posted anywhere on SWBFGamers, the original post was here
http://www.secretsociety.com/forum/downloads/BF1/cis_hover_aat_odf_commented.txt
#66
Quote from: Antstafer on February 07, 2017, 06:23:52 AM
I'd like to apologize ahead of time if this answer is blatantly obvious, and was right in front of my face in the modding tutorials section/documentation, but I've looked through almost every post that has to do with modding, and I still can't find out how to do this. I imagine it has something to do with bfbuilder? I have all the bfbuilder stuff set up, and I want to edit the Assets/sides and convert them into the appropriate all/rep/cis/etc .lvls. I looked through some bfbuilder documentation and found nothing relating to actually munging and creating said files. I tried editing the sides in bfbuilder but apparently edit mode Isn't implemented yet for those.
You can either start a new project in BFBuilder Pro, using the import Side assets feature, and then munge your project. It will then create AddOn folder with the custom sides in the mod map subfolders. I think that after you import side assets with BFBuilder, you have to then right click your entire DataProject folder and disable read only, since by default the stock assets are set to read only. Edit mode should be functional then.

The other option is using the LVL toolbox v4 which has stock side builders preconfigured so you can easily edit the ODFs/TGAs and click munge.
http://www.swbfgamers.com/index.php?topic=4382.0
#67
Commented AAT.odf vehicle tutorial by psych0fred

Quote[GameObjectClass]
ClassLabel          = "hover" // Defines the class label for the game engine to expose properties
GeometryName        = "cis_hover_aat.msh"   // Defines the mesh for Zeroeditor when placed as an object

[Properties]

GeometryName        = "cis_hover_aat"   // Sets name of mesh file to use for vehicle

Explosion           = "cis_hover_aat_exp"   // Sets name of odf file to call when vehicle dies

// Some vehicles have a slow death, the ATAT for example has a long death animation attached to it
// -- the ATAT reaches critical health, crumbles to it's knees, then finally explodes; flyers can die
// -- but go spinning off before exploding...
//--in which case the ExplosionCritical and ExplosionDestruct are used

ExplosionCritical   = "cis_hover_aat_exp"   // Sets name of odf file to call when vehicle reaches critical health
ExplosionDestruct   = "cis_hover_aat_exp"   // Sets name of odf file to call when vehicle finally explodes

VehicleType         = "light"   // Defines the vehicle type for ???????
AISizeType          = "MEDIUM"  // Defines the size of the AI for planning graphs

MapTexture          = "aat_icon"    // Defines the tga file used on map for vehicle
MapScale            = 1.5   // Defines the scale of the icon on the map
HealthTexture       = "HUD_cis_aat_icon"    // Defines the tga used for the vehicle health icon

WaterEffect         = "waterwake_lg"    // Defines the common particle effect for when vehicle goes through water

FLYERSECTION        = "BODY"    // Defines the primary section of the vehicle occupied by pilot
VehiclePosition     = "common.vehiclepositions.pilot"   // Defines the pilot position for localization
FirstPerson         = "cishq\cishq;cis_1st_cockpit_AAT" // Defines the path to the fpm folder/lvl/sub-lvl
FirstPersonFOV      = "52" // Sets the first person field of view
CockpitTension      = 22    // Sets the tension of the cocpit camera

CollisionScale      = 4 // Sets the damage resulting from collision
CollisionThreshold  = 5 // Sets the threshold of impact before damage occuers
MaxHealth           = 6600.0    // Sets teh vehicle's max health
HealthType          = "vehicle" // Sets the health type for a vehicle, used for ?????????
//HitLocation       = "p_crithit 0"

SetAltitude         = 0.5   // Sets the default hover altitude
GravityScale        = 4.0   // Sets the mass of the vehicle
LiftSpring          = 4.0   // Sets the spring in the hover
LiftDamp            = 3.0   // Sets the cushion of the spring on subsequent bounces

Acceleration        = 5.25  // Sets the rate of acceleration m/s
Deceleration        = 7.0   // Sets the rate of decelleration m/s
Traction            = 20.0 // Sets the percent to decrease acceleration rate when starting from zero
ForwardSpeed        = 12.0 // Sets the maxspeed m/s
ReverseSpeed        = 10.0  // Sets the max reverse speed m/s
StrafeSpeed         = 4.5   // Sets the max strafe speed m/s

// The following sections tweak the bounce
AddSpringBody       = "-1.6 1.9 1.95 2.5"
BodySpringLength    = 0.3
AddSpringBody       = "1.6 1.9 1.95 2.5"
BodySpringLength    = 0.3

AddSpringBody       = "0.0 2.15 -1.6 3.5"
BodySpringLength    = 0.8
BodyOmegaXSpringFactor = 2

VelocitySpring      = 5
VelocityDamp        = 2.5
OmegaXSpring        = 1.0
OmegaXDamp          = 3.0
OmegaZSpring        = 4.0
OmegaZDamp          = 1.5


SpinRate            = 1.7   // Sets the rate of turn for the vehicle is turning but not moving
TurnRate            = 1.7   // Sets the rate of turn for the vehicle when turning while moving
TurnFilter          = 5.0   // Sets a tension in the rate of turn to make it ramp up
PitchRate           = 0.5   // Sets the rate of pitching the vehicle
PitchFilter         = 1.0   // Sets the rate ramping up the pitch when starting a tilt
PitchDamp           = 1.0   // Sets the rate slowing down the vehicle when stopping a tilt

//SpinRate            = 2.7
//TurnRate            = 1.7
//TurnFilter          = 5.0
//PitchRate           = 2.5
//PitchFilter         = 1.0
//PitchDamp           = 1.0


StrafeRollAngle     = 0.01  // Angle the vehicle rolls when strafing
ThrustPitchAngle    = 0.0   // Picth of the vehicle caused by thrusting forward
BankAngle           = -0.01 // Angle of the vehicle when banking
BankFilter          = 3     //low is slow - How quickly the bank returns to level
LevelSpring         = 2.0   //low is slow - the force the restores level
LevelDamp           = 1.0   //low is slow - the force that reduces the momentum of the rotation

PCPitchRate         = "15.0" // may be obsolete, otherwise these settings are used on PC
PCSpinRate          = "15.0"// may be obsolete, otherwise these settings are used on PC   
PCTurnRate          = "20.0"// may be obsolete, otherwise these settings are used on PC

//Camera settings for vehicle position
// Think of camera as fixed on one end of long stick balanced on a cone
//-- on one end is camera, other end is focal point, cone at center can be shifted
//-- camera is eyepoint; TrackOffset is focal point; Trackcenter is cone position; tilt value is tilt on pole
EyePointOffset      = "0.0 2.5 -2.0"  // Camera position from vehicle origin x,y,z
TrackCenter         = "0.0 5.0 0.0"   // Camera tilt axis from vehicle origin x,y,z
TrackOffset         = "0.0 0.0 10.0"  // Camera Focal Point from vehicle origin x,y,z   
TiltValue           = "5.0"           // How much camera can tilt
PitchLimits         = "-30 20" // How far camera swings when pitching in degrees
YawLimits           = "-90 90"  // How far camera swings when tilting in degrees

// Each body section or turret section can be occupied by a unit
// -- if a body or turret section has more than one weapon, they are defined by WEAPONSECTION headers
// -- when a section has more than one weapon, section 1 is the primary fire and section 2 the secondary fire

WEAPONSECTION       = 1
WeaponName          = "cis_weap_hover_aat_cannon" // Odf name of weapon
WeaponAmmo          = 0 // Amount of ammo or clips in weapon 0 is infinite

AimerNodeName       = "side_gun_1"  // Hardpoint name in mesh that acts as camera point for aimer
AimerPitchLimits    = "-30.0 90.0"  // Sets pitch movement limits on aimer in degrees
AimerYawLimits      = "-30.0 10.0"  // Sets yaw movement limits on aimer in degrees
BarrelNodeName      = "recoil_1"    // Sets name of object in mesh to use as gun barrel to animate recoil
BarrelRecoil        = 0.25          // Sets amount of recoil to apply to object defined as barrel
FirePointName       = "hp_gun_2"    // Sets the name of the hardpoint in the mesh where the shot comes from

NextAimer           = "-"  // Header for other barrels weapons with multiple barrels, causing alternating shots

AimerNodeName       = "side_gun_2"
AimerPitchLimits    = "-30.0 90.0"
AimerYawLimits      = "-10.0 30.0"
BarrelNodeName      = "recoil_2"
BarrelRecoil        = 0.25
FirePointName       = "hp_gun_1"

WEAPONSECTION       = 2     // Weaponsection 2 defines weapons fired using the secondary fire button
WeaponName          = "cis_weap_hover_aat_missile"
WeaponAmmo          = "9"

// The AAT has six missile tubes, three on each side. Each is separated with a nextaimer line
//--causing the shots to fire from teh barrels one by one rather than from all six at once
AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleR_1"

NextAimer           = "-"

AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleL_2"

NextAimer           = "-"

AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleR_2"

NextAimer           = "-"

AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleL_3"

NextAimer           = "-"

AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleR_3"

NextAimer           = "-"

AimerPitchLimits    = "-5 90"
AimerYawLimits      = "-20.0 20.0"
AimerNodeName       = "hp_missleL_1"

// Turret1 is the turret on the top of the AAT
FLYERSECTION        = "TURRET1" // Turret1 is the secondary positon a unit can man

FirstPerson         = "cis\cissccam;cis_1st_cockpit_securitycam"
VehiclePosition     = "common.vehiclepositions.gunner"
TurretNodeName      = "Gun_Body"
PitchLimits         = "-40.0 20.0"
YawLimits           = "-180.0 180.0"
PitchTurnFactor     = 0.0

PCPitchRate         = "15.0"
PCTurnRate          = "20.0"

TurnRate            = 1.5
TurnFilter          = 5.0
PitchRate           = 0.5
PitchFilter         = 1.0
PitchDamp           = 1.0

//PitchRate         = 0.8
//PitchFilter       = 2.75
//TurnRate          = 1.3
//TurnFilter        = 2.75

AimerNodeName       = "Main_Gun"
AimerPitchLimits    = "-30.0 90.0"
AimerYawLimits      = "0.0 0.0"

BarrelNodeName      = "recoil_3"
BarrelRecoil        = 0.75
FirePointName       = "hp_cannon_1"

EyePointOffset      = "0.0 2.0 -1.75"
TrackCenter         = "0.0 1.0 -2.0"
TrackOffset         = "0.0 0.0 3.0"
TiltValue           = "10.0"

// This section sets up the sounds triggered when manning the turret as well as when it moves
TurretYawSound         = "turret_whir_yaw_lp"
TurretYawSoundPitch    = "0.7"
TurretPitchSound       = "turret_whir_pitch_lp"
TurretPitchSoundPitch  = "0.7"
TurretAmbientSound     = ""
TurretActivateSound    = "vehicle_equip"
TurretDeactivateSound  = "vehicle_equip"
TurretStartSound       = ""
TurretStopSound        = ""

WeaponName              = "cis_weap_hover_aat_launcher"
WeaponAmmo              = 0

// This section define the collision geometry within the mesh to use when colliding with what kind of object
VehicleCollision        = "p_vehiclesphere"
SoldierCollision        = "CollisionMesh"
//SoldierCollision      = "p_sidegun1"
//SoldierCollision      = "p_sidegun2"
SoldierCollision        = "p_barrel"
SoldierCollision        = "p_turret"

OrdnanceCollision       = "CollisionMesh"
OrdnanceCollision       = "p_sidegun1"
OrdnanceCollision       = "p_sidegun2"
OrdnanceCollision       = "p_barrel"
OrdnanceCollision       = "p_turret"



// Chunks are the peices resulting from the vehicle's explosion
CHUNKSECTION            = "CHUNK1" // Defines the chunk
ChunkGeometryName       = "cis_hover_att_Chunk1"    // Defines the mesh file to use for the chunk
ChunkNodeName           = ""    // Defines the hardpoint in the mesh from which the chunk originates
ChunkTerrainCollisions  = "2"   // Defines the number of time the chunk bounces
ChunkTerrainEffect      = "dirtspray"   // Defines the particle effect attached to each bounce
ChunkPhysics            = "FULL"        // Defines the chunk behavior/mass
ChunkOmega              = "1.0 2.0 1.0" // ?? Defines chunk spin???
ChunkBounciness         = 0.35  // Defines rate of upward bounce
ChunkStickiness         = 0.45  // Defines how fast chunk accelerate in bounce
ChunkSpeed              = "15.0"  // Defines speed of moving chunk
ChunkUpFactor           = "25.00"   // Defines the upward speed of spawned chunk
ChunkTrailEffect        = "mediumsmoketrail"    // Defines the particle effect attached to chunk

// The next two lines define sounds to be triggered by chunks
ChunkInitialCollisionSound = "com_veh_collision_lg" //Played each time the chunk collides with something.
ChunkScrapeCollisionSound  = "" // Played as the chunk slides along another object.

CHUNKSECTION            = "CHUNK2"
ChunkGeometryName       = "cis_hover_att_Chunk2"
ChunkNodeName           = ""
ChunkTerrainCollisions  = "4"
ChunkTerrainEffect      = "dirtspray"
ChunkPhysics            = "FULL"
ChunkOmega              = "2.0 2.5 2.0"
ChunkBounciness         = 0.45
ChunkStickiness         = 0.25
ChunkSpeed              = "10.0"
ChunkUpFactor           = "0.00"
ChunkTrailEffect        = "mediumsmoketrail"

ChunkInitialCollisionSound = "com_veh_collision_lg" //Played each time the chunk collides with something.
ChunkScrapeCollisionSound  = "" // Played as the chunk slides along another object.

CHUNKSECTION            = "CHUNK3"
ChunkGeometryName       = "cis_hover_att_Chunk3"
ChunkNodeName           = ""
ChunkTerrainCollisions  = "3"
ChunkTerrainEffect      = "dirtspray"
ChunkTrailEffect        = "mediumsmoketrail"
ChunkPhysics            = "FULL"
ChunkOmega              = "2.0 1.0 2.0"
ChunkSpeed              = "12.0"

ChunkInitialCollisionSound = "com_veh_collision_lg" //Played each time the chunk collides with something.
ChunkScrapeCollisionSound  = "" // Played as the chunk slides along another object.

CHUNKSECTION            = "CHUNK4"
ChunkGeometryName       = "cis_hover_att_Chunk4"
ChunkNodeName           = ""
ChunkTerrainCollisions  = "0"
ChunkTerrainEffect      = "dirtspray"
ChunkTrailEffect        = "mediumsmoketrail"
ChunkPhysics            = "LEAF"
ChunkOmega              = "0.2 0.0 0.2"
ChunkSpeed              = "2.0"
ChunkSmokeEffect        = "smokeplume"
ChunkSmokeNodeName      = "hp_smoke"

ChunkInitialCollisionSound = "com_veh_collision_lg" //Played each time the chunk collides with something.
ChunkScrapeCollisionSound  = "" // Played as the chunk slides along another object.


// The next section defines damage particle effects

DamageStartPercent  = 70.0              // Health percentage where damage effect is turned on
DamageStopPercent   = 20.0              // Health percentage where damage effect is turned off
DamageEffect        = "vehiclespark"    // Particle effect to be spawned/turned on
DamageAttachPoint   = "hp_damage_2"     // Hardpoint in mesh where effect is attached
DamageEffectSound   = ""                // Sound that can be trigged at start of damage state
                                        // --looping sounds will stop when damage state changes
                                        // --sounds can also be attached to spawned particle effect

DamageStartPercent  = 70.0
DamageStopPercent   = 20.0
DamageEffect        = "vehiclespark"
DamageAttachPoint   = "hp_damage_4"

DamageStartPercent  = 60.0
DamageStopPercent   = 20.0
DamageEffect        = "vehiclespark"
DamageAttachPoint   = "hp_damage_3"

DamageStartPercent  = 50.0
DamageStopPercent   = 0.0
DamageEffect        = "vehiclesmoke"
DamageAttachPoint   = "hp_damage_2"

DamageStartPercent  = 19.0
DamageStopPercent   = 0.0
DamageEffect        = "vehicleflame"
DamageAttachPoint   = "hp_damage_2"

DamageStartPercent  = 30.0
DamageStopPercent   = 0.0
DamageEffect        = "vehiclesmoke"
DamageAttachPoint   = "hp_damage_1"

DamageStartPercent  = 10.0
DamageStopPercent   = 0.0
DamageEffect        = "vehicleflame"
DamageAttachPoint   = "hp_damage_3"
DamageEffectSound   = "cis_alert_loop"



EngineSound             = "cis_hover_aat_engine_parameterized" // Name of soundproperty to be used as looping engine
HurtSound               = "cis_hover_aat_hurt"    // Name of soundproperty to be triggered when vehicle takes damage
DeathSound              = "imp_weap_ord_exp_lg" // Name of soundproperty to be triggered when vehicle dies
TurnOnSound             = "cis_hover_aat_turn_on" // Name of soundproperty triggered when unit enters vehicle
TurningOffSound         = ""        // Name of soundproperty triggered when unit leaves vehicle
TurnOffSound            = "cis_hover_aat_turn_off" // Name of soundproperty triggered when vehile turns off
TurnOffTime             = "1.0" // Time after unit leaves vehicle before vehicle turns off
Music                   = ""    // Default music played when unit enters vehicle
RepMusic                = ""    // Music played when rep unit enters vehicle
CISMusic                = ""    // Music played when cis unit enters vehicle
ALLMusic                = ""    // Music played when all unit enters vehicle
IMPMusic                = ""    // Music played when imp unit enters vehicle
MusicSpeed              = ".25" // Speed vehicle must reach before music is triggered
MusicDelay              = "3.0" // Delay when speed reached before music is played
GroundedSound           = ""    // May be obsolete -- soundtriggered by hover bouncing against terrain
GroundedHeight          = ""    // May be obsolete -- height of vehicle that triggers groundedsound
BoostSound              = ""    // Soundproperty, speed threshold (%), going over or under (1 or 0)
FoleyFXGroup            = "metal_foley" // Defines the sound foley class to play for footsteps on object
VehicleCollisionSound   ="com_veh_collision_lg" // Name of soundproperty to trigger when vehicle collides with objects

#68
Quote from: Drunken_Master on February 02, 2017, 05:38:47 PM
I would like to see both a TWD mod night and a BF1 game day (because night some places is day here).  Quite a few showed up for the AR event last time.
Quote from: Anyder on February 03, 2017, 04:28:05 AM
Unfortunately TWD has only been developed for SWBF1 (and i do not know if it will ever be released because of all the attacks to our FC Servers), so it will be a "SWBF1-event" unless more events are organised.
v0.91 has been released and this is what would be hosted on the event server.

However as Anyder mentioned, there have been recent attacks against our root VPS and some players were banned. It is uncertain yet if future editions of TWD mod will be released publicly, or if MP is still going to be supported in future patches. TWD for BF2 would take a few years and require more modders to help develop.

For TWD mod night what are the best times to play for everyone interested? I think perhaps a Sunday afternoon (EST timezone) might work best.
#69
Quote from: Windguy432 on February 02, 2017, 10:00:07 AM
I am new to the SWBF modding community so i'm not sure if this is possible or not, but what I am trying to do is edit the core.lvl file in a mustafar map I downloaded (mus1), in order to change it's objectives and command post names since it currently has the objectives for Jabba's Palace and no command post names at all in game.

I was able to change the objectives through hex editing just fine (Which you can see in my attached picture, I changed "Beware of the Rancor" to "Beware of the Lava") it's just that I'm not sure how to change the names of the command posts since there aren't any listed there ingame, it's just blank (Which you can also see in the picture). I have found the names for command posts such as Throne room, Droid Repair Bay, etc in the core.lvl file but don't know how to make them appear ingame. Thanks
Welcome to SWBFGamers! :cheers:

For this type of mod, it might be easier to rebuild a custom core.lvl using Bamdur's addon core.lvl builder. I think Jabba is the default map used for the localization template.

This toolbox includes core.lvl builders -> http://www.swbfgamers.com/index.php?action=downloads;sa=view;down=525

Objectives (not CP names) can also be scripted in the mission LUA.
#70
Ok I've removed Hoth, Plains GCW and Citadel CW. Added Plains CW and Harbor CW. Autoaim, team damage, and heroes are disabled with 4 AI set to hard.

New maplist
bes1a bes1r bes2a bes2r end1a geo1r kam1c kas1i kas2i kas2c nab1c nab2a nab2c_h rhn1i rhn1r rhn2a tat1r tat1i tat2i tat2r yav1i yav1c yav2i

There are some imperial side mods such as improved 1.2 dark trooper shotgun and refuel. Also the GCW sides should have extended aiming range and use primary weapons. I think this is only in effect for imp side currently.
Also the server lobby says "missing map" on nab2c_h but players can still join the server.
#71
Quote from: JackDaniel on January 31, 2017, 06:59:23 PM
We have 2 servers but we use your server as well, the swbfspy server. I'm in the swbfspy server right now waiting for people to join. Will it be possible, maybe tomorrow, to lower the Ais to 4 or 5 though? Thx :)
if u are referring to the SWBF1Spy server, i can lower the AI settings tomorrow. let me know if u guys want any map changes as well (or other settings such as heroes/team damage/AA) i cant play in the server currently since my emulator won't connect to either SWBFGamers or Christian's DNS server :confused:

current maplist (randomized)
bes1a bes1r bes2a bes2r kas1i kas2i kas2c nab1i nab2a nab2c_h rhn1i rhn2a rhn2c tat1r tat1i tat2i tat2r yav1i yav1c yav2i end1a kam1c geo1r hot1i
#72
Welcome Center / Re: Hi!
January 26, 2017, 04:53:59 PM
Welcome to SWBFGamers :tu:
#73
Forum News and Forum Rules / Re: SWBFSpy Activity
January 26, 2017, 04:38:01 PM
Quote from: Anyder on January 23, 2017, 06:40:08 AM
During the Xmas holidays season, SWBFSpy's usage has increased by 20% compared to the previous months.

The amount of downloads increased a lot during this time as well, almost reaching 1000 downloads (SWBF1 Patch) and 1500 downloads (SWBF2 Patch) - http://www.swbfgamers.com/index.php?action=downloads;cat=54

Also, I would like to point out that the forum has now more than 12000 registered members!
:cheers:
Great to see more players downloading the patch. Long live SWBF1 and 2! :cheers:
#74
I'm not sure how much support the game engine has for custom-named sound effects added to a rebuilt stock sound\shell.lvl.

Calling on multiple shells in the shell_interface LUA probably won't work as I tried something similar once with the ifs_yoda script loading custom voiceovers in a LVL outside of the sound\shell and the game just ignored the file even though it was set up properly. That's interesting it plays the first track though.

Also if you have references in the config to WAV files that don't exist in the builder, there will be a munge error. I'd have to see the other files in your builder including the REQ to offer more advice about it, but if all else fails you might want to try adding your custom WAV tracks using the names of stock tracks. So basically "replacing" the stock sounds, like how I had to with the shell.mvs for adding new cutscenes.
#75
Quote from: Gistech on December 29, 2016, 02:38:29 AM
Any chance I could get some help building new shell music streams? So far, with help using the shell.lvl builder, I've managed to load a new music file but the issue here is that when I start the game I only get the first audio track defined in my

Either I'm doing something wrong with my scripting or the config file is not working.
Did you rebuild the shell.lvl in the SHELL\ENG folder or in the SOUND folder? If you can post your audio configs I'll take a look at them.

I modified the batch file for 64-bit munging like this
@echo off
@set path=Ext; C:\BattlefrontMods\DataPhobos=%Path%
echo \_build_pc
echo \_lvl_pc
echo start munging
pause
@set path=%Root-Path%Path%submunge
munge.bat


I haven't replaced the stock game music, though for rebuilding the shell.MVS I had to use names of stock cutscenes to add to the new campaign because the game engine ignores custom named BIKs. Also the fly through videos are hard-coded to repeat so I'm using historical campaign names.
Quote
// Historical Campaigns
..\..\_SOURCE_PC\shell\movies\bes1h01.bik
..\..\_SOURCE_PC\shell\movies\bes2h01.bik
..\..\_SOURCE_PC\shell\movies\end1h02.bik
..\..\_SOURCE_PC\shell\movies\end1h03.bik
..\..\_SOURCE_PC\shell\movies\geo1h01.bik
..\..\_SOURCE_PC\shell\movies\hot1h02.bik
..\..\_SOURCE_PC\shell\movies\kam1h01.bik
..\..\_SOURCE_PC\shell\movies\kam1h02.bik
..\..\_SOURCE_PC\shell\movies\nab1h01.bik
..\..\_SOURCE_PC\shell\movies\nab2h01.bik
..\..\_SOURCE_PC\shell\movies\tat1h01.bik
..\..\_SOURCE_PC\shell\movies\tat2h01.bik
..\..\_SOURCE_PC\shell\movies\yav1h01.bik
..\..\_SOURCE_PC\shell\movies\yav2h01.bik
..\..\_SOURCE_PC\shell\movies\kas2h01.bik
}

//// The Walking Dead Shell.MVS Seasons 1-2
// transition times used by all movies
MovieProperties()
{
    Name("transition_template");
    FadeInTime(0.0);
    FadeOutTime(0.5);
}

// TWD00
MovieProperties()
{
    Name("bes1h01");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("bes1h01", 1.0, 0);
    }
}

// TWD01
MovieProperties()
{
    Name("bes2h01");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("bes2h01", 1.0, 0);
    }
}

// TWD02
MovieProperties()
{
    Name("end1h02");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("end1h02", 1.0, 0);
    }
}

// TWD03
MovieProperties()
{
    Name("end1h03");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("end1h03", 1.0, 0);
    }
}

// TWD04
MovieProperties()
{
    Name("geo1h01");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("geo1h01", 1.0, 0);
    }
}

// TWD05
MovieProperties()
{
    Name("hot1h02");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("hot1h02", 1.0, 0);
    }
}

// TWD06
MovieProperties()
{
    Name("kam1h01");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("kam1h01", 1.0, 0);
    }
}

// TWD07
MovieProperties()
{
    Name("kam1h02");
    Inherit("transition_template");
    Movie("shell");
    SegmentList()
    {
        Segment("kam1h02", 1.0, 0);
    }
}