Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 9016 for code/trunk/data


Ignore:
Timestamp:
Feb 15, 2012, 11:51:58 PM (12 years ago)
Author:
jo
Message:

Merging presentation2011 branch to trunk. Please check for possible bugs.

Location:
code/trunk
Files:
57 edited
6 copied

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/data/defaultConfig/keybindings.ini

    r8706 r9016  
    7171KeyNumLock=
    7272KeyNumRow0=
    73 KeyNumRow1=
    74 KeyNumRow2=
     73KeyNumRow1="toggleFormationFlight"
     74KeyNumRow2="FFChangeMode"
    7575KeyNumRow3=
    7676KeyNumRow4=
  • code/trunk/data/gui/layouts/CreditsMenu.layout

    r8888 r9016  
    77        <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
    88        <Window Type="MenuWidgets/StaticText" Name="orxonox/CreditsWindow" >
    9             <Property Name="Text" Value="Keybindings" />
     9            <Property Name="Text" Value="Credits" />
    1010            <Property Name="Alpha" Value="0.8" />
    1111            <Property Name="InheritsAlpha" Value="False" />
     
    1515            <Property Name="UnifiedAreaRect" Value="{{0.15,0},{0.2125,0},{0.85,0},{0.6375,0}}" />
    1616            <Window Type="MenuWidgets/StaticText" Name="orxonox/CreditsMenuWrapper" >
    17                 <Property Name="TextColours" Value="FF4444FF" />
    1817                <Property Name="InheritsAlpha" Value="False" />
    1918                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     
    2726                    <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    2827                    <Property Name="HorzOverlapSize" Value="0.01" />
    29                     <Property Name="UnifiedAreaRect" Value="{{0.005,0},{0.01,0},{0.995,0},{0.99,0}}" />
     28                    <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{0.997,0},{0.997,0}}" />
    3029                    <Property Name="VertOverlapSize" Value="0.01" />
    3130                    <Property Name="HorzScrollPosition" Value="0" />
     
    3837                        <Property Name="VertFormatting" Value="TopAligned" />
    3938                        <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
    40                         <Property Name="Text">wird sowieso nicht gelesen
    41 Orxonox version 0.0.3
    42 
    43 Programming Language:  C++ - lua - tcl
    44 Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE
    45 Licence:  GNU General Public Licence - Creative Commons
    46 
    47 das ist mein text höhö
    48 
    49 http://www.orxonox.net
     39                        <Property Name="Text">Orxonox version 0.0.3
     40   
     41    Programming Language:  C++ - lua - tcl
     42    Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE
     43    Licence:  GNU General Public Licence - Creative Commons
     44   
     45    http://www.orxonox.net
     46   
     47    Credits:
    5048                      </Property>
    5149                    </Window>
     
    6159    </Window>
    6260</GUILayout>
    63 
    64 
    65 
    66 
    67 
  • code/trunk/data/gui/layouts/MiscConfigMenu.layout

    r7888 r9016  
    22
    33<GUILayout >
    4     <Window Type="DefaultWindow" Name="orxonox/MiscConfigMenu/Background" >
     4    <Window Type="MenuWidgets/StaticImage" Name="orxonox/MiscConfigMenu/Background" >
     5        <Property Name="FrameEnabled" Value="False" />
    56        <Property Name="InheritsAlpha" Value="False" />
    67        <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    78        <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
     9        <Property Name="BackgroundEnabled" Value="False" />
    810        <Window Type="MenuWidgets/StaticText" Name="orxonox/MicsConfigMenu/ConfigWindow" >
    911            <Property Name="Text" Value="Miscellaneous" />
     
    3436            </Window>
    3537        </Window>
    36         <Window Type="MenuWidgets/Button" Name="orxonox/MiscConfigMenu/MiscConfigBackButton" >
    37             <Property Name="Text" Value="Back" />
     38        <Window Type="MenuWidgets/Button" Name="orxonox/MiscConfigMenu/CancelButton" >
     39            <Property Name="Text" Value="Cancel" />
    3840            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    39             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.6625,0},{0.6,0},{0.7125,0}}" />
    40             <Event Name="Clicked" Function="MiscConfigMenu.MiscConfigBackButton_clicked"/>
     41            <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.725,0},{0.4,0},{0.775,0}}" />
     42            <Event Name="Clicked" Function="MiscConfigMenu.MiscConfigCancelButton_clicked"/>
     43        </Window>
     44        <Window Type="MenuWidgets/Button" Name="orxonox/MiscConfigMenu/OKButton" >
     45            <Property Name="Text" Value="OK" />
     46            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     47            <Property Name="UnifiedAreaRect" Value="{{0.6,0},{0.725,0},{0.75,0},{0.775,0}}" />
     48            <Event Name="Clicked" Function="MiscConfigMenu.MiscConfigOKButton_clicked"/>
    4149        </Window>
    4250    </Window>
  • code/trunk/data/gui/layouts/SingleplayerMenu.layout

    r7648 r9016  
    1515            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    1616            <Property Name="VertFormatting" Value="TopAligned" />
    17             <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.2875,0},{0.75,0},{0.7,0}}" />
    18             <Window Type="MenuWidgets/Listbox" Name="orxonox/SingleplayerLevelListbox" >
     17            <Property Name="UnifiedAreaRect" Value="{{0.2,0},{0.15,0},{0.8,0},{0.7,0}}" />
     18            <Window Type="MenuWidgets/TabControl" Name="orxonox/SingleplayerTabControl" >
     19                <Property Name="TabHeight" Value="{0,26.4388}" />
    1920                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    20                 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.15,0},{0.95,0},{0.85,0}}" />
     21                <Property Name="TabPanePosition" Value="Top" />
     22                <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.1,0},{0.95,0},{0.925,0}}" />
    2123            </Window>
    22             <Window Type="MenuWidgets/Checkbox" Name="orxonox/SingleplayerShowAllCheckbox" >
    23                 <Property Name="Text" Value="show all" />
     24            <Window Type="MenuWidgets/StaticImage" Name="orxonox/SingleplayerLevelImage" >
     25                <Property Name="AlwaysOnTop" Value="True" />
    2426                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    25                 <Property Name="UnifiedAreaRect" Value="{{0.65,0},{0.87,0},{0.8,0},{.97,0}}" />
    26                 <Event Name="CheckStateChanged" Function="SingleplayerMenu.SingleplayerShowAll_clicked"/>
     27                <Property Name="UnifiedAreaRect" Value="{{0.55,0},{0.25,0},{0.9,0},{0.675,0}}" />
     28            </Window>
     29            <Window Type="MenuWidgets/StaticText" Name="orxonox/SingleplayerLevelDescription" >
     30                <Property Name="AlwaysOnTop" Value="True" />
     31                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     32                <Property Name="VertScrollbar" Value="True" />
     33                <Property Name="HorzScrollbar" Value="True" />
     34                <Property Name="UnifiedAreaRect" Value="{{0.1,0},{0.725,0},{0.9,0},{0.875,0}}" />
    2735            </Window>
    2836        </Window>
     
    3038            <Property Name="Text" Value="Start" />
    3139            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    32             <Property Name="UnifiedAreaRect" Value="{{0.2875,0},{0.725,0},{0.4875,0},{0.775,0}}" />
     40            <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.725,0},{0.4,0},{0.775,0}}" />
    3341            <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerStartButton_clicked"/>
     42        </Window>
     43        <Window Type="MenuWidgets/Button" Name="orxonox/SingleplayerConfigButton" >
     44            <Property Name="Text" Value="Configure" />
     45            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     46            <Property Name="UnifiedAreaRect" Value="{{0.425,0},{0.725,0},{0.575,0},{0.775,0}}" />
     47            <Property Name="Disabled" Value="True" />
     48            <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerConfigButton_clicked"/>
    3449        </Window>
    3550        <Window Type="MenuWidgets/Button" Name="orxonox/SingleplayerBackButton" >
    3651            <Property Name="Text" Value="Back" />
    3752            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    38             <Property Name="UnifiedAreaRect" Value="{{0.5125,0},{0.725,0},{0.7125,0},{0.775,0}}" />
     53            <Property Name="UnifiedAreaRect" Value="{{0.6,0},{0.725,0},{0.75,0},{0.775,0}}" />
    3954            <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerBackButton_clicked"/>
    4055        </Window>
  • code/trunk/data/gui/scripts/CreditsMenu.lua

    r8888 r9016  
    1414function P.onShow()
    1515    local description = winMgr:getWindow("orxonox/CreditsText")
    16     description:setProperty("HorzFormatting", "WordWrapLeftAligned")
    17     description:setProperty("VertFormatting", "TopAligned")
    18     description:setText("                                   Orxonox version 0.0.3 \n \
    19       Programming Language:  C++ - lua - tcl  \
    20       Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE  \
    21       Licence:  GNU General Public Licence - Creative Commons \n  \
    22       http://www.orxonox.net \n \
    23       Credits:")
    2416
    25     description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0)))
    2617    height = getStaticTextWindowHeight(description)
    27     description:setHeight(CEGUI.UDim(0, height))
     18    description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(0.0, height)))
    2819end
    2920
  • code/trunk/data/gui/scripts/InGameMenu.lua

    r8079 r9016  
    4343-- events for ingamemenu
    4444function P.button_quit_clicked(e)
    45     openDecisionPopup( "Do you really want to quit the game?", InGameMenu.callback )
     45    openDecisionPopup( "Do you really want to quit the game?", InGameMenu.exitCallback )
    4646end
    4747
    4848function P.button_mainmenu_clicked(e)
    49     orxonox.execute("startMainMenu")
    50     hideMenuSheet("InGameMenu")
     49    openDecisionPopup( "Do you really want to return to the main menu?", InGameMenu.mainMenuCallback )
    5150end
    5251
     
    5958end
    6059
    61 function P.callback(doExit)
     60function P.mainMenuCallback(doExit)
     61    if doExit then
     62        orxonox.execute("startMainMenu")
     63        hideMenuSheet("InGameMenu")
     64    else
     65        P.onShow()
     66    end
     67end
     68
     69function P.exitCallback(doExit)
    6270    if doExit then
    6371        hideMenuSheet("InGameMenu")
  • code/trunk/data/gui/scripts/MiscConfigMenu.lua

    r8729 r9016  
    1111P.lineHeight = 0
    1212P.commandWidth = 0
    13 P.configWidth = 0
     13P.editboxWidth = 0
    1414P.resetWidth = 0
    1515P.spaceWidth = 0
     
    3636    table.insert(P.commandList, "ChatOverlay displayTime_")
    3737    table.insert(P.commandList, "Core bDevMode_")
     38    table.insert(P.commandList, "HUDNavigation MarkerLimit_")
     39    table.insert(P.commandList, "HUDNavigation showDistance")
    3840
    3941    P.nameList = {}
     
    5658    table.insert(P.nameList, "Chat: display time")
    5759    table.insert(P.nameList, "Developer's Mode")
     60    table.insert(P.nameList, "Marker Limit")
     61    table.insert(P.nameList, "Show Distance next to cursor")
    5862
    5963    P.linesList = {}
     
    7579    end
    7680
    77     P.sampleWindow:setText("configure")
    78     size = getMinTextSize(P.sampleWindow)
    79     P.configWidth = size[2]+20
    80 
    8181    P.sampleWindow:setText("reset")
    8282    size = getMinTextSize(P.sampleWindow)
    8383    P.resetWidth = size[2]+20
    8484
    85     P.spaceWidth = math.floor(1/8*P.configWidth)
     85    P.spaceWidth = 10
     86   
     87    local pane = tolua.cast(winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane"), "CEGUI::ScrollablePane")
     88    size = pane:getViewableArea()
     89    P.editboxWidth = size:getWidth() - P.commandWidth - P.resetWidth - 5*P.spaceWidth
    8690
    8791    P.createLines()
    8892
    8993    P:setButton(1, 1, {
    90             ["button"] = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigBackButton"),
    91             ["callback"]  = P.MiscConfigBackButton_clicked
     94            ["button"] = winMgr:getWindow("orxonox/MiscConfigMenu/CancelButton"),
     95            ["callback"]  = P.MiscConfigCancelButton_clicked
     96    })
     97   
     98    P:setButton(1, 2, {
     99            ["button"] = winMgr:getWindow("orxonox/MiscConfigMenu/OKButton"),
     100            ["callback"]  = P.MiscConfigOKButton_clicked
    92101    })
    93102end
     
    95104function P.createLine(k)
    96105    local offset = 0
     106    -- content window for the entire line
    97107    local line = winMgr:createWindow("DefaultWindow", "orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k)
    98108    line:setHeight(CEGUI.UDim(0, P.lineHeight))
    99109    line:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, P.lineHeight*(k-1))))
    100110
     111    -- config name
    101112    local command = winMgr:createWindow("MenuWidgets/StaticText", "orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Command")
    102113    command:setText(P.nameList[k])
     
    106117    offset = offset + P.commandWidth + P.spaceWidth
    107118
     119    -- config value (editable)
    108120    local configvalue = winMgr:createWindow("MenuWidgets/Editbox", "orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Configvalue")
    109121    configvalue:setProperty("ReadOnly", "set:False")
    110122    local value = orxonox.CommandExecutor:query("getConfig " .. P.commandList[k])
    111123    configvalue:setText(value)
    112     P.sampleWindow:setText(value)
    113     local size = getMinTextSize(P.sampleWindow)
    114     local configvalueWidth = 2*size[2]
    115     configvalue:setSize(CEGUI.UVector2(CEGUI.UDim(0, configvalueWidth), CEGUI.UDim(0.9, 0)))
     124    configvalue:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.editboxWidth), CEGUI.UDim(0.9, 0)))
    116125    configvalue:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.05, 0)))
     126    -- enable the reset button if the value changed
     127    orxonox.GUIManager:subscribeEventHelper(configvalue, "TextAccepted", P.name .. ".MiscConfigEditbox_textAccepted")
    117128    line:addChildWindow(configvalue)
    118     offset = offset + configvalueWidth + P.spaceWidth
    119 
    120     local config = winMgr:createWindow("MenuWidgets/Button", "orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Config")
    121     config:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.configWidth), CEGUI.UDim(0.9, 0)))
    122     config:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.05, 0)))
    123     config:setText("configure")
    124     orxonox.GUIManager:subscribeEventHelper(config, "Clicked", P.name .. ".MiscConfigConfigure_clicked")
    125     line:addChildWindow(config)
    126     offset = offset + P.configWidth + P.spaceWidth
    127 
     129    offset = offset + P.editboxWidth + P.spaceWidth
     130
     131    -- reset button (only available when value changed)
    128132    local reset = winMgr:createWindow("MenuWidgets/Button", "orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Reset")
    129133    reset:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.resetWidth), CEGUI.UDim(0.9, 0)))
    130134    reset:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.05, 0)))
    131135    reset:setText("reset")
    132     orxonox.GUIManager:subscribeEventHelper(reset, "Clicked", P.name .. ".MiscConfigReset_clicked")
     136    orxonox.GUIManager:subscribeEventHelper(reset, "Clicked", P.name .. ".MiscConfigResetButton_clicked")
    133137    line:addChildWindow(reset)
    134138    reset:setEnabled(false)
     
    153157end
    154158
    155 function P.MiscConfigReset_clicked(e)
     159function P.MiscConfigOKButton_clicked(e)
     160    for k,v in pairs(P.commandList) do
     161        -- save the changes
     162        local editbox = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Configvalue")
     163        orxonox.CommandExecutor:execute("config " .. P.commandList[k] .. " " .. editbox:getText())
     164        local resetButton = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. k .. "/Reset")
     165        resetButton:setEnabled(false)
     166    end
     167   
     168    hideMenuSheet("MiscConfigMenu")
     169end
     170
     171function P.MiscConfigCancelButton_clicked(e)
     172    hideMenuSheet("MiscConfigMenu")
     173end
     174
     175function P.MiscConfigEditbox_textAccepted(e)
    156176    local we = CEGUI.toWindowEventArgs(e)
    157177    local name = we.window:getName()
     
    160180    local commandNr = tonumber(match())
    161181
    162     -- TODO: Implement reset.
    163 end
    164 
    165 function P.MiscConfigConfigure_clicked(e)
     182    local resetButton = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. commandNr .. "/Reset")
     183    resetButton:setEnabled(true)
     184end
     185
     186function P.MiscConfigResetButton_clicked(e)
    166187    local we = CEGUI.toWindowEventArgs(e)
    167188    local name = we.window:getName()
     
    170191    local commandNr = tonumber(match())
    171192
    172     local window = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. commandNr .. "/Configvalue")
    173 
    174     orxonox.CommandExecutor:execute("config " .. P.commandList[commandNr] .. " " .. window:getText())
     193    -- reload the old value
     194    local editbox = winMgr:getWindow("orxonox/MiscConfigMenu/MiscConfigPane/ConfigCommand" .. commandNr .. "/Configvalue")
    175195    local value = orxonox.CommandExecutor:query("getConfig " .. P.commandList[commandNr])
    176     window:setText(value)
    177 end
    178 
    179 function P.MiscConfigBackButton_clicked(e)
    180     hideMenuSheet("MiscConfigMenu")
     196    editbox:setText(value)
     197   
     198    we.window:setEnabled(false)
    181199end
    182200
  • code/trunk/data/gui/scripts/SingleplayerMenu.lua

    r8706 r9016  
    44
    55P.levelList = {}
    6 P.itemList = {}
    7 P.showAll = false
     6P.activeTabIndexes = {}
     7P.scrollbarWidth = 13
    88
    99function P.onLoad()
    10     local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
    11     local button = tolua.cast(window,"CEGUI::Checkbox")
    12     button:setSelected(false)
    1310    P.createLevelList()
    14 
    15     --buttons are arranged in a 1x2 matrix
     11   
     12    -- create tabs with desired tab as argument (nil for all)
     13    P.createFilterTab("Gametypes", "gametype")
     14    P.createFilterTab("Missions", "mission")
     15    P.createFilterTab("Minigames", "minigame")
     16    P.createFilterTab("Showcases", "showcase")
     17    P.createFilterTab("Presentations", "presentation")
     18    P.createFilterTab("Tests", "test")
     19    P.createFilterTab("Show All", nil)
     20   
     21    -- update description and screenshot boxes
     22    P.SingleplayerSelectionChanged()
     23   
     24    --buttons are arranged in a 1x3 matrix
    1625    P:setButton(1, 1, {
    1726            ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
     
    2029
    2130    P:setButton(1, 2, {
     31            ["button"] = winMgr:getWindow("orxonox/SingleplayerConfigButton"),
     32            ["callback"]  = P.SingleplayerConfigButton_clicked
     33    })
     34
     35    P:setButton(1, 3, {
    2236            ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
    2337            ["callback"]  = P.SingleplayerBackButton_clicked
     
    2539end
    2640
    27 function P.onShow()
    28     if P.showAll ~= orxonox.GUIManager:inDevMode() then
    29         local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
    30         local button = tolua.cast(window,"CEGUI::Checkbox")
    31         P.showAll = not P.showAll
    32         button:setSelected(P.showAll)
    33         P.createLevelList()
    34     end
    35 end
    36 
    3741function P.createLevelList()
    3842    P.levelList = {}
    39     P.itemList = {}
    40     local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
    41     listbox:resetList()
    42     orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
    43     local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
    4443    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
    4544    local index = 0
     
    4847        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
    4948        if level ~= nil then
    50             if P.showAll or not level:hasTag("test") then
    51                 table.insert(P.levelList, level)
     49            local levelXMLFilename = level:getXMLFilename()
     50            -- create an imageset for each screenshot
     51            local imageName = level:getScreenshot()
     52            if imageName ~= "" then
     53                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, imageName)
     54            else
     55                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, "noscreenshot.png")
    5256            end
     57            table.insert(P.levelList, level)
    5358        end
    5459        index = index + 1
    5560    end
     61end
    5662
     63function P.createFilterTab(name, tag)
     64    -- create unique tab window name
     65    local tabName = "orxonox/SingleplayerLevelTab"
     66    if tag ~= nil then
     67        tabName = tabName..tag
     68    end
     69    -- create new tab window with desired name
     70    local listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName))
     71    listbox:setText(name)
     72    listbox:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}")
     73    listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.675,0}}")
     74    -- fill listbox with items
     75    listbox:resetList()
     76    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
     77    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
     78    local tabIndexes = {}
    5779    for k,v in pairs(P.levelList) do
    58         local item = CEGUI.createListboxTextItem(v:getName())
    59         item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
    60         listbox:addItem(item)
    61         if v:getXMLFilename() == preselect then
    62             listbox:setItemSelectState(item, true)
     80        -- only add level if it has desired tag
     81        if tag == nil or v:hasTag(tag) then
     82            local item = CEGUI.createListboxTextItem(v:getName())
     83            item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
     84            listbox:addItem(item)
     85            table.insert(tabIndexes, k)
     86            if v:getXMLFilename() == preselect then
     87                listbox:setItemSelectState(item, true)
     88            end
     89            orxonox.GUIManager:setTooltipTextHelper(item, v:getDescription())
    6390        end
    64         P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
    65         orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
     91    end
     92    table.insert(P.activeTabIndexes, tabIndexes)
     93    -- listen to selection changes
     94    orxonox.GUIManager:subscribeEventHelper(listbox, "ItemSelectionChanged", P.name..".SingleplayerSelectionChanged")
     95    local tabControl = winMgr:getWindow("orxonox/SingleplayerTabControl")
     96    orxonox.GUIManager:subscribeEventHelper(tabControl, "TabSelectionChanged", P.name..".SingleplayerSelectionChanged")
     97    if listbox:getItemCount() > 0 then
     98        tabControl:addChildWindow(tabName)
     99    end
     100end
     101
     102function P.SingleplayerGetSelectedLevel()
     103    -- choose the active listbox
     104    local tabControl = CEGUI.toTabControl(winMgr:getWindow("orxonox/SingleplayerTabControl"))
     105    local listbox = CEGUI.toListbox(tabControl:getTabContentsAtIndex(tabControl:getSelectedTabIndex()))
     106    local choice = listbox:getFirstSelectedItem()
     107    if choice ~= nil then
     108        -- get the right tab and the right index
     109        local tabIndexes = P.activeTabIndexes[tabControl:getSelectedTabIndex()+1]
     110        local index = tabIndexes[listbox:getItemIndex(choice)+1]
     111        return P.levelList[index]
     112    else
     113        return nil
     114    end
     115end
     116
     117function P.SingleplayerSelectionChanged(e)
     118    local levelImage = winMgr:getWindow("orxonox/SingleplayerLevelImage")
     119    local levelDescription = winMgr:getWindow("orxonox/SingleplayerLevelDescription")
     120    local configButton = winMgr:getWindow("orxonox/SingleplayerConfigButton")
     121    local level = P.SingleplayerGetSelectedLevel()
     122    if level ~= nil then
     123        local levelXMLFilename = level:getXMLFilename()
     124        local imageName = level:getScreenshot()
     125        -- set the screenshot and the description for the selected level
     126        levelImage:setProperty("Image", "set:"..levelXMLFilename..imageName.." image:full_image")
     127        levelDescription:setText(level:getDescription())
     128        -- only enable config button for "gametype" levels
     129        if level:hasTag("gametype") then
     130            configButton:setProperty("Disabled", "False")
     131        else
     132            configButton:setProperty("Disabled", "True")
     133        end
     134    else
     135        -- also take care of "no level selected"
     136        levelImage:setProperty("Image", nil)
     137        levelDescription:setText("")
     138        configButton:setProperty("Disabled", "True")
    66139    end
    67140end
    68141
    69142function P.SingleplayerStartButton_clicked(e)
    70     local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
    71     local choice = listbox:getFirstSelectedItem()
    72     if choice ~= nil then
    73         local index = listbox:getItemIndex(choice)
    74         local level = P.levelList[index+1]
    75         if level ~= nil then
    76             orxonox.execute("startGame " .. level:getXMLFilename())
    77             hideAllMenuSheets()
    78         end
     143    local level = P.SingleplayerGetSelectedLevel()
     144    if level ~= nil then
     145        orxonox.execute("startGame " .. level:getXMLFilename())
     146        hideAllMenuSheets()
    79147    end
    80148end
    81149
    82 function P.SingleplayerShowAll_clicked(e)
    83     local checkbox = tolua.cast(winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox"), "CEGUI::Checkbox")
    84     local show = checkbox:isSelected()
    85     if show ~= P.showAll then
    86         P.showAll = show
    87         P.createLevelList()
    88    end
     150function P.SingleplayerConfigButton_clicked(e)
     151    local level = P.SingleplayerGetSelectedLevel()
     152    if level ~= nil then
     153        local configMenu = showMenuSheet("SingleplayerConfigMenu")
     154        configMenu:loadConfig(level)
     155    end
    89156end
    90157
     
    94161
    95162return P
    96 
  • code/trunk/data/levels/FPSTest.oxw

    r8706 r9016  
    33 description = "Level to test First Person Shooter"
    44 tags = "test"
     5 screenshot = "fpstestlevel.png"
    56/>
    67
     
    1415?>
    1516
    16 <Level
    17  name         = "fps"
    18  description  = "tests"
    19 >
     17<Level>
    2018  <templates>
    2119    <Template link=lodtemplate_default />
  • code/trunk/data/levels/asteroids.oxw

    r8706 r9016  
     1<LevelInfo
     2 name = "Asteroids Race"
     3 description = "Reach the checkpoints and avoid asteroids."
     4 tags = "gametype"
     5 screenshot = "asteroids.png"
     6/>
     7
    18<?lua
    29  include("HUDTemplates3.oxo")
     
    714
    815<Level
    9  name         = "Asteroids Race"
    10  description  = "testmap for gametype asteroid race"
    11  gametype     =  Asteroids
     16 gametype = "Asteroids"
    1217>
    1318  <templates>
  • code/trunk/data/levels/docking.oxw

    r8706 r9016  
    22 name = "Transporter"
    33 description = "Level with a Transporter. Demonstrates the docking system."
    4  tags = ""
     4 tags = "showcase"
     5 screenshot = "transporter.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Transporter"
    16  description  = "Docking example level"
    17 >
     15<Level>
    1816  <templates>
    1917    <Template link="lodtemplate_default" />
  • code/trunk/data/levels/dynamicMatch.oxw

    r8706 r9016  
     1<LevelInfo
     2 name = "Dynamic Match"
     3 description = "Dynamicmatch: Take care of what you're shooting at."
     4 tags = "gametype"
     5 screenshot = "dynamicMatch.png"
     6/>
     7
    18<?lua
    29  include("HUDTemplates3.oxo")
     
    916
    1017<Level
    11  name         = "Dynamic Match"
    12  description  = "In progress -level for dynamicmatch"
    13  gametype     = "Dynamicmatch"
     18 gametype = "Dynamicmatch"
    1419>
    1520  <templates>
     
    3338
    3439<!-- -----------12-Spawnpoints around the planet------------- -->
     40<!-- inner Spawnpoints -->
    3541<TeamSpawnPoint team=0 position="1000,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff/>
    3642<TeamSpawnPoint team=0 position="-1000,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff/>
  • code/trunk/data/levels/earth.oxw

    r8706 r9016  
    33 description = "1:100 Scale Model of Earth with Gravity"
    44 tags = "showcase"
     5 screenshot = "earthdemonstration.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Planet Earth"
    16  description  = "1:100 Scale Model of Earth with Gravity"
    17 >
     15<Level>
    1816  <templates>
    1917    <Template link="lodtemplate_default" />
  • code/trunk/data/levels/emptyLevel.oxw

    r8706 r9016  
    33 description = "A level with absolutely nothing in it."
    44 tags = "test"
     5 screenshot = "emptylevel.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name         = "Sample"
    20  description  = "Just a few tests"
    21 >
     19<Level>
    2220  <templates>
    2321    <Template link=lodtemplate_default />
  • code/trunk/data/levels/events.oxw

    r8706 r9016  
    22  name = "Events showcase"
    33  description = "Level to test and showcase events."
    4   tags = "test, showcase"
     4  tags = "test, showcase"
     5  screenshot = "eventsshowcase.png"
    56/>
    67
     
    1314?>
    1415
    15 <Level
    16  name         = "Event testing"
    17  description  = "A simple level to test the event-system (with comments)"
    18 >
     16<Level>
    1917  <templates>
    2018    <Template link=lodtemplate_default />
  • code/trunk/data/levels/fightInOurBack.oxw

    r8891 r9016  
    22  name = "Fight in our Back"
    33  description = "Our fleet is far ahead of us. We need to get rid of all the enemies in its back, because we do not want our enemies to attack from everywhere. So let us clear this Sector!"
    4   tags = "singleplayer"
     4  screenshot = "fightinourback.png" 
     5  tags = "mission"
    56/>
    67
     
    110111  name="Fight in our back"
    111112  description="Our fleet is far ahead of us. We need to get rid of all the enemies in its back, because we do not want our enemies to attack from everywhere. So let us clear this Sector!"
    112   gametype=TeamDeathmatch
     113  gametype=Mission
    113114>
    114115  <templates>
     
    214215<?lua for i=0,0,1 do
    215216x=800
    216 health=2050
     217health=1500
    217218?>
    218219    <!--Transporter 1-->
     
    239240
    240241<?lua for j=0,1,1 do
    241 health=1600
     242health=1300
    242243x=800
    243244z=j*300
  • code/trunk/data/levels/includes/weaponSettingsSpacecruiser.oxi

    r8891 r9016  
    11    <weaponslots>
    2       <WeaponSlot position="-20,-15,-108" />
    3       <WeaponSlot position=" 20,-15,-108" />
    4       <WeaponSlot position="  0, -7,-110" />
    5       <WeaponSlot position="-14,-31,-184" />
    6       <WeaponSlot position=" 14,-31,-184" />
    7       <WeaponSlot position="-34,-30,-169" />
    8       <WeaponSlot position=" 34,-30,-169" />
    9 
     2      <WeaponSlot position="-20,10,2" />
     3      <WeaponSlot position=" 20,10,2" />
     4      <WeaponSlot position="  0,18,0" />
     5      <WeaponSlot position="-14,-6,-74" />
     6      <WeaponSlot position=" 14,-6,-74" />
     7      <WeaponSlot position="-34,-5,-59" />
     8      <WeaponSlot position=" 34,-5,-59" />
    109    </weaponslots>
    1110    <weaponsets>
  • code/trunk/data/levels/lastManStanding.oxw

    r8706 r9016  
    22 name = "Last Man Standing"
    33 description = "Be the sole survivor."
    4  tags = ""
     4 tags = "gametype"
     5 screenshot = "lastmanstanding.png"
    56/>
    67
     
    1617
    1718<Level
    18  name         = "Last Man Standing"
    19  description  = "testmap for gametype last man standing"
    20  gametype     =  "LastManStanding"
     19 gametype = "LastManStanding"
    2120>
    2221  <templates>
     
    5150                    <Model position="0,0,0" scale=140 mesh="asteroid_UV.mesh" shadow=true />
    5251                    <Model position="-160,40,28.4" scale=1 mesh="sphere.mesh" /><!--EasterEgg indicator-->
    53                     <PickupSpawner position="-160,40,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="15"><!--EasterEgg-->
     52                    <PickupSpawner position="-160,40,17" triggerDistance="20" respawnTime="5" maxSpawnedItems="15"><!--EasterEgg : invisible pickup is hidden inside the asteroid -->
    5453                        <pickup>
    5554                            <InvisiblePickup template=hugeinvisiblepickup />
  • code/trunk/data/levels/lastTeamStanding.oxw

    r8891 r9016  
    22 name = "Last Team Standing"
    33 description = "Survive as a team."
    4  tags = "singleplayer"
     4 tags = "gametype"
     5 screenshot = "lastteamstanding.png"
    56/>
    67<?lua
     
    1718 name         = "Last Team Standing"
    1819 description  = "testmap for gametype last team standing"
    19  gametype     =  "LastTeamStanding"
     20 gametype     =  "TeamGametype"
    2021>
    2122  <templates>
  • code/trunk/data/levels/lastTeamStandingII.oxw

    r8891 r9016  
    11<LevelInfo
    2  name = "On the fly"
    3  description = "Survive as a team."
    4  tags = ""
     2 name = "Last Team Standing II"
     3 description = "Last Team Standing in an abstract level."
     4 screenshot = "onthefly.png"
     5 tags = "gametype"
    56/>
    67<?lua
     
    1516
    1617<Level
    17  name         = "On the fly"
    18  description  = "testmap for gametype last team standing"
    1918 gametype     = "LastTeamStanding"
    2019>
     
    9594   </StaticEntity>
    9695<!-- END of CUBE-->
     96
    9797<!-------------- Centered Thin Gate -------------->
    9898
     
    412412    <TeamSpawnPoint team=3 position="845,350,835" direction="0,0,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
    413413    <TeamSpawnPoint team=3 position="845,-300,835" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
    414 <Bot />
     414<Bot /><!-- at least one bot is needed to stat the game properly. Else the game finishes. This could be avoided, if the menue allows a preselection of the number of players. -->
    415415
    416416  </Scene>
  • code/trunk/data/levels/missionOne.oxw

    r8891 r9016  
    11<LevelInfo
    22 name = "Mission One"
    3  description = "First guided steps in the orxonoxian universe."
    4  tags = "singleplayer"
     3 description = "First Guided Steps in the Orxonoxian Universe."
     4 screenshot = "missionOne.png"
     5 tags = "mission"
    56/>
    67
     
    2021
    2122<Level
    22  name         = "Mission One"
    23  description  = "How to steer a spaceship."
     23 gametype     = "Mission"
    2424>
    2525  <templates>
     
    4747    ?>
    4848
    49     <WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" /> <!-- AlphaCentauri.ogg-->
     49    <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" /> <!-- AlphaCentauri.ogg, Mars.ogg-->
    5050
    5151    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
    52     <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
    53 
    54 
    5552<!-- END OF INCLUDES & NECESSARITIES -->
    5653
     54<!-- SPAWNPOINT & START OF QUESTS via spawntrigger -->
     55    <EventMultiTrigger name=spawntrigger>
     56        <events>
     57            <trigger>
     58                <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff>
     59                  <EventTrigger invert=true>
     60                    <events>
     61                      <trigger>
     62                        <EventListener event="attack" />
     63                      </trigger>
     64                    </events>
     65                  </EventTrigger>
     66                </TeamSpawnPoint>
     67            </trigger>
     68        </events>
     69    </EventMultiTrigger>
     70
     71        <QuestEffectBeacon times=1>
     72            <effects>
     73                <AddQuest questId="missionOne.basicFlying" />
     74                <!--AddQuestHint hintId ="quest1hint3" /-->
     75            </effects>
     76            <events>
     77                <execute>
     78                    <EventListener event=spawntrigger />
     79                </execute>
     80            </events>
     81        </QuestEffectBeacon>
     82
     83        <QuestEffectBeacon times=1>
     84            <effects>
     85                <CompleteQuest questId="missionOne.basicFlying" />
     86            </effects>
     87            <events>
     88                <execute>
     89                    <EventListener event="flying4" />
     90                </execute>
     91            </events>
     92        </QuestEffectBeacon>
     93
     94        <QuestEffectBeacon times=1>
     95            <effects>
     96                <CompleteQuest questId="missionOne.navigation" />
     97            </effects>
     98            <events>
     99                <execute>
     100                    <EventListener event="navigationend" />
     101                </execute>
     102            </events>
     103        </QuestEffectBeacon>
     104
     105<!--helper trigger to end the weaponsystemI quest -->
     106    <DistanceTrigger name="boxend" position="0,0,0" distance=950 target="SpaceShip" stayActive="false" delay=0.1>
     107              <EventTrigger>
     108                <events>
     109                  <trigger>
     110                    <EventListener event="boxtrigger4" />
     111                  </trigger>
     112                </events>
     113              </EventTrigger>
     114    </DistanceTrigger>
     115
     116        <QuestEffectBeacon times=1>
     117            <effects>
     118                <CompleteQuest questId="missionOne.weaponsystemI" />
     119            </effects>
     120            <events>
     121                <execute>
     122                    <EventListener event="boxend" />
     123                </execute>
     124            </events>
     125        </QuestEffectBeacon>
     126
     127<!--helper trigger to end the weaponsystemII quest -->
     128    <DistanceTrigger name="piratesend" position="0,0,0" distance=2000 target="SpaceShip" stayActive="false" delay=0.1>
     129              <EventTrigger>
     130                <events>
     131                  <trigger>
     132                    <EventListener event="movingpirates2" />
     133                  </trigger>
     134                </events>
     135              </EventTrigger>
     136    </DistanceTrigger>
     137
     138        <QuestEffectBeacon times=1>
     139            <effects>
     140                <CompleteQuest questId="missionOne.weaponsystemII" />
     141            </effects>
     142            <events>
     143                <execute>
     144                    <EventListener event=piratesend />
     145                </execute>
     146            </events>
     147        </QuestEffectBeacon>
     148
     149<!--helper trigger to end the DuBallStation quest -->
     150    <DistanceTrigger name="duballend" position="-1000,-300,700" distance=2000 target="SpaceShip" stayActive="false" delay=0.1>
     151              <EventTrigger>
     152                <events>
     153                  <trigger>
     154                    <EventListener event="duball3" />
     155                  </trigger>
     156                </events>
     157              </EventTrigger>
     158    </DistanceTrigger>
     159
     160
     161        <QuestEffectBeacon times=1>
     162            <effects>
     163                <CompleteQuest questId="missionOne.DuballStation" />
     164            </effects>
     165            <events>
     166                <execute>
     167                    <EventListener event=duballend />
     168                </execute>
     169            </events>
     170        </QuestEffectBeacon>
     171
     172        <QuestEffectBeacon times=1> <!--  alternative quest end  -->
     173            <effects>
     174                <CompleteQuest questId="missionOne.DuballStation" />
     175            </effects>
     176            <events>
     177                <execute>
     178                    <EventListener event=toHydroFarmer />
     179                </execute>
     180            </events>
     181        </QuestEffectBeacon>
     182
     183<!--helper trigger to end the getHelp quest -->
     184    <DistanceTrigger name="getHelpEnd" position="-47000,-1000,1300" distance=1400 target="SpaceShip" stayActive="false" delay=0.1>
     185              <EventTrigger>
     186                <events>
     187                  <trigger>
     188                    <EventListener event="ondock" />
     189                  </trigger>
     190                </events>
     191              </EventTrigger>
     192    </DistanceTrigger>
     193
     194        <QuestEffectBeacon times=1>
     195            <effects>
     196                <CompleteQuest questId="missionOne.getHelp" />
     197            </effects>
     198            <events>
     199                <execute>
     200                    <EventListener event=getHelpEnd />
     201                </execute>
     202            </events>
     203        </QuestEffectBeacon>
     204
     205<!--helper trigger to end the getHome quest -->
     206    <DistanceTrigger name="getHomeEnd" position="0,0,0" distance=4000 target="SpaceShip" stayActive="false" delay=0.1>
     207              <EventTrigger>
     208                <events>
     209                  <trigger>
     210                    <EventListener event="attack" />
     211                  </trigger>
     212                </events>
     213              </EventTrigger>
     214    </DistanceTrigger>
     215
     216        <QuestEffectBeacon times=1>
     217            <effects>
     218                <CompleteQuest questId="missionOne.getHome" />
     219            </effects>
     220            <events>
     221                <execute>
     222                    <EventListener event=getHomeEnd />
     223                </execute>
     224            </events>
     225        </QuestEffectBeacon>
     226
     227<!--helper trigger to end the defence quest -->
     228    <DistanceTrigger name="defenceEnd" position="0,0,0" distance=4000 target="SpaceShip" stayActive="false" delay=0.1>
     229              <EventTrigger>
     230                <events>
     231                  <trigger>
     232                    <EventListener event="attacktrigger6" />
     233                  </trigger>
     234                </events>
     235              </EventTrigger>
     236    </DistanceTrigger>
     237
     238        <QuestEffectBeacon times=1>
     239            <effects>
     240                <CompleteQuest questId="missionOne.defence" />
     241            </effects>
     242            <events>
     243                <execute>
     244                    <EventListener event=defenceEnd />
     245                </execute>
     246            </events>
     247        </QuestEffectBeacon>
     248
     249<!-- End the quest after own destruction of spacecruiser -->
     250        <QuestEffectBeacon position="-100,0,0" times=1>
     251            <effects>
     252                <FailQuest questId="missionOne.getHelp" />
     253            </effects>
     254            <events>
     255                <execute>
     256                    <EventListener event="failQuest" />
     257                </execute>
     258            </events>
     259            <attached>
     260                <DistanceTrigger name="failQuest" position="-47000,-1000,1300" distance=2300 target="SpaceShip">
     261                  <EventTrigger>
     262                    <events>
     263                      <trigger>
     264                        <EventListener event="gameEnd" />
     265                      </trigger>
     266                    </events>
     267                  </EventTrigger>
     268                </DistanceTrigger>
     269            </attached>
     270        </QuestEffectBeacon>
     271
     272
     273
     274
    57275    <LocalQuest id="missionOne.basicFlying">
    58         <QuestDescription title="Flying" description="INSERT STORY HERE. The first thing you have to learn is flying. Use 'W' to accelerate and steer with your mouse. In order to know where to fly there are two detection systems. The navigation markers highlite important objects directly in the level. If you can't directly see those objects, there are arrows which indicate how you have to steer. The second device is the radar. There you get an overview of all objects near you. In order to find an object that you spotted on radar, you have to steer in a way that the corresponding dot is in the center of the radar. Now you can find the corresponding object straight ahead. Your goal is to fly to the first waypoint. It's that orange dot on the radar." failmessage="" completeMessage="Well done." />
     276        <QuestDescription title="Flying" description="Can you see the blinking light straight ahead? Your goal is to fly through it.
     277Use (W) to accelerate and steer with your mouse.
     278
     279Further flying moves:
     280break (S)
     281roll     (Q) and (E)
     282boost (Space)
     283
     284Whenever a new quest is added you can view it by pressing (F3). Quit this menu via (Esc)." failmessage="" completeMessage="" />
    59285        <complete-effects>
    60             <AddQuest questId="missionOne.weaponsystem" />
     286            <AddQuest questId="missionOne.navigation" />
    61287        </complete-effects>
    62288    </LocalQuest>
    63289
    64     <LocalQuest id="missionOne.weaponsystem">
    65         <QuestDescription title="Weaponsystem" description="INSERT STORY HERE." failmessage="" completeMessage="All right." />
    66         <subquests>
     290    <LocalQuest id="missionOne.navigation">
     291        <QuestDescription title="Navigation" description="The next goal is to find and move towards the test targets for your weaponsystem. The three arrows that just appeared down in the right corner of your screen indicate in which direction you have to turn your spacefighter to find your next targets.
     292
     293Alternative navigation: There's a green circle in the left corner - the radar. The red dots on the radar represent your targets. If you manage to move your spaceship in a way such that a dot is at the center of the radar, you will be able to see the concerning object straight ahead." failmessage="" completeMessage="" />
     294        <complete-effects>
     295            <AddQuest questId="missionOne.weaponsystemI" />
     296        </complete-effects>
     297    </LocalQuest>
     298
    67299            <LocalQuest id ="missionOne.weaponsystemI">
    68                 <QuestDescription title="Destroy Boxes" description="Test your four different weapons on the four boxes. The four weapons are laser (left click), plasma (right click), self targeting rockets (middle click) and manual rockets (press 'T'). Attention if you use manual rockets: Press 'T' only once to start the rocket. If you miss your target you can get out of the rocket, by clicking or pressing 'T' once more." failmessage="" completeMessage="" />
     300                <QuestDescription title="Destroy the Boxes" description="Test your four different weapons on the four boxes:
     3011. laser (left click)
     3022. plasma (right click)
     3033. target seeking rockets (middle click)
     3044. manual rockets (T)
     305
     306Attention if you use manual rockets: Press (T) only once to start the rocket. If you miss your target you can get out of the rocket, by clicking or pressing (T) once more." failmessage="" completeMessage="" />
     307                    <hints>
     308                        <QuestHint id="missionOne.weaponsystem.laser">
     309                            <QuestDescription title="Laser" description="The laser is a standard weapon. It is fast and precise but does not deal much damage." />
     310                        </QuestHint>
     311                        <QuestHint id="missionOne.weaponsystem.lightningGun">
     312                            <QuestDescription title="Lightninggun" description="That was the lightning gun. Its plasma munition is quite slow, but a normal spaceship can't take more than three hits of such a strong weapon. That could be your favourite weapon for close range combat or if you want to hit a really slow enemy." />
     313                        </QuestHint>
     314                        <QuestHint id="missionOne.weaponsystem.targetSeekingRocket">
     315                            <QuestDescription title="Target Seeking Rocket" description="The target seeking rockets follow slow targets on their own." />
     316                        </QuestHint>
     317                        <QuestHint id="missionOne.weaponsystem.manualrocket">
     318                            <QuestDescription title="Manual Rocket" description="Manual rockets are your most powerful weapon. But since you have to steer it to your target yourself, you will leave your spaceship unprotected for a while. The total amount of both manual and target seeking rockets is limited to 10." />
     319                        </QuestHint>
     320                    </hints>
    69321                <complete-effects>
    70322                    <AddQuest questId="missionOne.weaponsystemII" />
    71323                </complete-effects>
    72324            </LocalQuest>
     325
    73326            <LocalQuest id="missionOne.weaponsystemII">
    74                 <QuestDescription title="" description="" failmessage="" completeMessage="" />
     327                <QuestDescription title="Kill the pirates" description="Get rid of the patrolling pirates.
     328Find out which weapon is best to tackle moving targets. Get close enough." failmessage="" completeMessage="" />
    75329                <complete-effects>
    76330                    <AddQuest questId="missionOne.DuballStation" />
    77331                </complete-effects>
    78332            </LocalQuest>
    79         </subquests>
    80         <hints>
    81             <QuestHint id="missionOne.weaponsystem.laser">
    82               <QuestDescription title="Laser" description="The laser is a standard weapon. It is fast and precise but does not deal much damage." />
    83             </QuestHint>
    84             <QuestHint id="missionOne.weaponsystem.lightningGun">
    85               <QuestDescription title="Lightninggun" description="That was the lightning gun. Its plasma munition is quite slow, but a normal spaceship can't take more than three hits of such a strong weapon. That could be your favourite weapon for close range combat or if you want to hit a really slow enemy." />
    86             </QuestHint>
    87             <QuestHint id="missionOne.weaponsystem.targetSeekingRocket">
    88               <QuestDescription title="Target Seeking Rocket" description="The target seeking rockets follow slow targets on their own." />
    89             </QuestHint>
    90             <QuestHint id="missionOne.weaponsystem.manualrocket">
    91               <QuestDescription title="Manual Rocket" description="Manual rockets are your most powerful weapon. But since you have to steer it to your target yourself, you will leave your spaceship unprotected for a while. The total amount of both manual and target seeking rockets is limited to 10." />
    92             </QuestHint>
    93         </hints>
    94         <complete-effects>
    95         </complete-effects>
    96     </LocalQuest>
    97333
    98334    <LocalQuest id="missionOne.DuballStation">
    99         <QuestDescription title="Duball Space Station" description="Fly towards the Duball Space Station. The grey radar marker will lead you to its position." failmessage="" completeMessage="Well done." />
     335        <QuestDescription title="Duball Space Station" description="Fly towards the Duball Space Station. The grey radar marker will lead you to its position." failmessage="" completeMessage="" />
    100336        <complete-effects>
    101337            <AddQuest questId="missionOne.getHelp" />
     
    104340
    105341    <LocalQuest id="missionOne.getHelp">
    106         <QuestDescription title="Get Help" description="There are enemies approaching. You can't handle it on your own. Fortunately there's a shortcut to the next friendly unit. Use the portal (grey dot) to get near the Hydrogen Farmer. There you might get help - as far as we know there should be a stronger spaceship docked to the Hydrogen Farmer. In order to be able to use that stronger spaceship you have to dock to the Hydrogen Farmer. Simply fly to the center of the Hydrogen Farmer, which is between its three legs." failmessage="" completeMessage="Well done." />
     342        <QuestDescription title="Get Help" description="There are several enemies approaching. You can't handle it on your own. Fortunately there's a shortcut to the next friendly unit. Use the portal (grey dot) to get near the Hydrogen Farmer.
     343The Hydrogen Farmer is a large spaceship with three legs.
     344There you might get help - as far as we know there should be a strong spaceruiser docked to the Hydrogen Farmer. In order to be able to use that stronger spaceship, you have to dock to the Hydrogen Farmer.
     345Simply fly to the center of the Hydrogen Farmer, which is between its three legs.
     346
     347How to dock: Accept the dialogue, take your hands off the keyboard and watch." failmessage="" completeMessage="" />
    107348        <complete-effects>
    108349            <AddQuest questId="missionOne.getHome" />
     
    111352
    112353    <LocalQuest id="missionOne.getHome">
    113         <QuestDescription title="Return ASAP" description="" failmessage="" completeMessage="Well done." />
     354        <QuestDescription title="Return ASAP" description="So you managed to get the spacecruiser. Use the portal to return to the DuBall Space Station.
     355Hurry! Your help is desperately needed." failmessage="" completeMessage="" />
    114356        <complete-effects>
    115357            <AddQuest questId="missionOne.defence" />
     
    118360
    119361    <LocalQuest id="missionOne.defence">
    120         <QuestDescription title="Defence" description="" failmessage="" completeMessage="Well done." />
     362        <QuestDescription title="Defence" description="Seven enemies were detected that seem to launch a coordinated attack.
     363Do not hesitate to fight or you will be the target.
     364
     365Always take care of the enemy that is the closest to you." failmessage="" completeMessage="Yeah! You did it." />
    121366    </LocalQuest>
    122 
    123 
    124         <QuestEffectBeacon position="800,700,600" times="1">
    125             <effects>
    126                 <AddQuest questId="missionOne.basicFlying" />
    127             </effects>
    128             <events>
    129                 <execute>
    130                     <EventListener event="questStart"/>
    131                 </execute>
    132             </events>
    133             <attached>
    134                 <DistanceTrigger name="questStart" position="0,0,0" distance="50" target="Pawn" beaconMode="identify" targetname="PlayerDistanceTrigger" delay="2" />
    135             </attached>
    136         </QuestEffectBeacon>
    137 
    138 
    139 <!-- TUTORIAL-TODO: -->
    140 <!-- 1. Flying & manoeuvring (basic flying, using pickups, forcefields, docks & portals) --> <!-- "W","S","SPACE"-->
    141 <!-- 2. Aiming & Weapons (static targets, moving targets, dangerous targets)--> <!-- 3 Mouse buttons + "T"-->
    142 <!-- 3. Game handling (quests, knowing when a game is over :-), pausing, chat, ... ) --> <!--"F3", "F2", "ESC" -->
    143 <!-- 4. Extras (other things to discover) --> <!-- "Q","E","A","D","C", "CTRL", "", ... -->
    144 
    145 <!--
    146 
    147 "Lets start flying. Use W to accelerate and S to brake. The goal is to reach the spacestation which is displayed on the radar. If you want to be faster you can temporarily boost by hitting additionally the space button. If you use too much boost your engine heats up and you won't be able to use boost for a while. By the way boost could be useful during combat .."
    148 
    149 -->
    150 
    151     <DistanceTrigger name="spawndelaytrigger0" position="800,700,600" target="Pawn" distance=10 stayActive="true"/>
    152     <SimpleNotification message="Welcome to the Orxonox Tutorial.">
     367<!-- --------------------- END OF QUESTS -------------------------- -->
     368
     369
     370    <DistanceTrigger name="spawndelaytrigger0" position="800,700,600" target="Pawn" distance=10 stayActive="true" delay=2/>
     371    <SimpleNotification message="Press (F3) to see your mission briefing.">
    153372        <events>
    154373            <trigger>
     
    158377    </SimpleNotification>
    159378
    160 <BlinkingBillboard position="-900,640,600" frequency=0.4 amplitude=2 material="Flares/lensflare" colour="1,1,0">
     379<!-- Blinking Billboard should be replaced with WAYPOINT -->
     380<BlinkingBillboard position="-900,640,600" frequency=0.6 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
    161381          <events>
    162382            <visibility>
     
    184404          </events>
    185405</Billboard>
     406
    186407<!-------------------------------------- PART ZERO: How to fly --------------------------------------->
    187     <DistanceTrigger name="flying1" position="800,700,600" target="Pawn" distance=10 stayActive="true" delay=4/>
     408
     409    <DistanceTrigger name="flying1" position="800,700,600" target="Pawn" distance=10 stayActive="true" delay=6/>
    188410    <SimpleNotification message="Let's fly to the blinking light.">
    189411        <events>
     
    194416    </SimpleNotification>
    195417
    196     <DistanceTrigger name="flying2" position="800,700,600" target="Pawn" distance=10 stayActive="true" delay=8/>
    197     <SimpleNotification message="Use 'W' to accelerate and the mouse to steer.">
     418    <DistanceTrigger name="flying2" position="800,700,600" target="Pawn" distance=10 stayActive="true" delay=10/>
     419    <SimpleNotification message="Use (W) to accelerate and the mouse to steer.">
    198420        <events>
    199421            <trigger>
     
    203425    </SimpleNotification>
    204426
    205     <!--DistanceTrigger name="flying3" position="800,700,600" target="Pawn" distance=20 stayActive="true" delay=12/>
    206     <SimpleNotification message="Point with the mouse to the blinking light.">
    207         <events>
    208             <trigger>
    209                 <EventListener event="flying3" />
    210             </trigger>
    211         </events>
    212     </SimpleNotification-->
    213 
    214     <DistanceTrigger name="flying4" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=1/>
    215     <SimpleNotification message="Three red arrows just appeared.">
     427<!-- QUEST-Trigger && Message Trigger: navigationend is activated after flying4 was triggered -->
     428    <DistanceTrigger name="navigationend" position="0,0,0" distance=950 target="SpaceShip" stayActive="false" delay=1.1>
     429        <DistanceTrigger name="flying4" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=1/>
     430    </DistanceTrigger>
     431
     432
     433    <SimpleNotification message="Three arrows just appeared.">
    216434        <events>
    217435            <trigger>
     
    222440
    223441    <DistanceTrigger name="flying5" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=5/>
    224     <SimpleNotification message="Follow those red arrows.">
     442    <SimpleNotification message="Follow those arrows.">
    225443        <events>
    226444            <trigger>
     
    230448    </SimpleNotification>
    231449
    232 
    233 
    234450<!-------------------------------------- PART ONE : Destroy boxes --------------------------------------->
    235     <DistanceTrigger name="spawndelaytrigger1" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=9 />
    236     <SimpleNotification message="Destroy the four boxes.">
     451<!-- @ triggers: spawndelaytriggerX: textoutput only if no box was destroyed -->
     452    <Trigger name="spawndelaytrigger1" mode="and" stayActive="true">
     453        <DistanceTrigger position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=9 />
     454        <EventTrigger activations="1" invert="true">
     455          <events>
     456            <trigger>
     457              <EventListener event="boxtrigger1" />
     458            </trigger>
     459          </events>
     460        </EventTrigger>
     461    </Trigger>
     462
     463    <Trigger name="spawndelaytrigger2" mode="and" stayActive="true">
     464        <DistanceTrigger position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=13 />
     465        <EventTrigger activations="1" invert="true">
     466          <events>
     467            <trigger>
     468              <EventListener event="boxtrigger1" />
     469            </trigger>
     470          </events>
     471        </EventTrigger>
     472    </Trigger>
     473
     474    <Trigger name="spawndelaytrigger3" mode="and" stayActive="true">
     475        <DistanceTrigger position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=17 />
     476        <EventTrigger activations="1" invert="true">
     477          <events>
     478            <trigger>
     479              <EventListener event="boxtrigger1" />
     480            </trigger>
     481          </events>
     482        </EventTrigger>
     483    </Trigger>
     484
     485<!-- @Text: How to shoot-->
     486    <SimpleNotification message="Destroy the four boxes." broadcast="true">
    237487        <events>
    238488            <trigger>
     
    242492    </SimpleNotification>
    243493
    244     <DistanceTrigger name="spawndelaytrigger2" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=13 />
    245     <SimpleNotification message=" 1. Aim the a red cycle.">
     494    <SimpleNotification message=" 1. Aim the a red cycle." broadcast="true">
    246495        <events>
    247496            <trigger>
     
    251500    </SimpleNotification>
    252501
    253     <DistanceTrigger name="spawndelaytrigger3" position="-900,640,600" target="Pawn" distance=60 stayActive="true" delay=17 />
    254     <SimpleNotification message="2. Click! (hold the left mouse button)">
     502    <SimpleNotification message="2. Click! (hold the left mouse button)" broadcast="true">
    255503        <events>
    256504            <trigger>
     
    261509
    262510<!-- @Objects: 4 boxes (uncontrolled pawns) -->
    263                 <Pawn health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
    264                     <events>
    265                       <visibility>
    266                         <EventListener event="flying4" />
    267                       </visibility>
    268                     </events>
    269                     <attached>
    270                         <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
    271                     </attached>
    272                     <collisionShapes>
    273                         <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
    274                     </collisionShapes>
    275                 </Pawn>
    276 
    277                 <Pawn health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box visible="true">
    278                     <events>
    279                       <visibility>
    280                         <EventListener event="flying4" />
    281                       </visibility>
    282                     </events>
    283                     <attached>
    284                         <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
    285                     </attached>
    286                     <collisionShapes>
    287                         <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
    288                     </collisionShapes>
    289                 </Pawn>
    290                 <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
    291                     <events>
    292                       <visibility>
    293                         <EventListener event="flying4" />
    294                       </visibility>
    295                     </events>
    296                     <attached>
    297                         <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
    298                     </attached>
    299                     <collisionShapes>
    300                         <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
    301                     </collisionShapes>
    302                 </Pawn>
    303                 <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
    304                     <events>
    305                       <visibility>
    306                         <EventListener event="flying4" />
    307                       </visibility>
    308                     </events>
    309                     <attached>
    310                         <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
    311                     </attached>
    312                     <collisionShapes>
    313                         <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
    314                     </collisionShapes>
    315                 </Pawn>
     511    <Pawn team=1 health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box RVName = "Box 4" >
     512        <events>
     513          <visibility>
     514            <EventListener event="flying4" />
     515          </visibility>
     516        </events>
     517        <attached>
     518            <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
     519        </attached>
     520        <collisionShapes>
     521            <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
     522        </collisionShapes>
     523    </Pawn>
     524
     525    <Pawn team=1 health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box RVName = "Box 3">
     526        <events>
     527          <visibility>
     528            <EventListener event="flying4" />
     529          </visibility>
     530        </events>
     531        <attached>
     532           <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
     533        </attached>
     534        <collisionShapes>
     535            <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
     536        </collisionShapes>
     537    </Pawn>
     538
     539    <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1 RVName = "Box 2">
     540        <events>
     541          <visibility>
     542            <EventListener event="flying4" />
     543          </visibility>
     544        </events>
     545        <attached>
     546           <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
     547        </attached>
     548        <collisionShapes>
     549            <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
     550        </collisionShapes>
     551    </Pawn>
     552
     553    <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1 RVName = "Box 1">
     554        <events>
     555          <visibility>
     556            <EventListener event="flying4" />
     557          </visibility>
     558        </events>
     559        <attached>
     560            <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
     561        </attached>
     562        <collisionShapes>
     563           <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
     564        </collisionShapes>
     565    </Pawn>
    316566
    317567<!-- @Triggers: boxtrigger1 <-> one   box   destroyed
     
    365615    </SimpleNotification>
    366616
    367 
    368   <SimpleNotification message="Aim at the last target and press 'T'." broadcast="true">
     617  <SimpleNotification message="Aim at the last target and press (T)." broadcast="true">
    369618        <events>
    370619            <trigger>
     
    386635
    387636<!-- @Objects: 2 pirates moving in squares, nonlethal -->
    388                 <SpaceShip position="0,2000,200" lookat="0,0,0" name="movingtarget" >
     637                <SpaceShip position="0,2000,200" lookat="0,0,0" name="movingtarget" RVName="Pirate">
    389638                            <events>
    390639                                <visibility>
     
    396645                    </templates>
    397646                    <controller>
    398                       <WaypointController>
     647                      <WaypointController team=1>
    399648                         <waypoints>
    400649                          <Model mesh="cube.mesh" scale=8 position="  0,1700,-200" />
     
    407656                </SpaceShip>
    408657
    409                 <SpaceShip position="0,2000,400" lookat="0,0,0" name="movingtarget">
     658                <SpaceShip position="0,2000,400" lookat="0,0,0" name="movingtarget" RVName="Pirate">
    410659                            <events>
    411660                                <visibility>
     
    417666                  </templates>
    418667                  <controller>
    419                     <WaypointController>
     668                    <WaypointController team=1>
    420669                      <waypoints>
    421670                        <Model mesh="cube.mesh" scale=8 position="  0,2400,1000" />
     
    473722    </DistanceTrigger>
    474723
    475     <EventTrigger name="duball2" activations="1" stayactive="true" delay=4 >
    476       <events>
    477         <trigger>
    478           <EventListener event="duball1" />
    479         </trigger>
    480       </events>
    481     </EventTrigger>
    482 
    483     <EventTrigger name="duball3" activations="1" stayactive="true" delay=4 >
    484       <events>
    485         <trigger>
    486           <EventListener event="duball2" />
    487         </trigger>
    488       </events>
    489     </EventTrigger>
     724    <Trigger name="duball2" mode="and" stayActive="true">
     725        <EventTrigger activations="1" stayactive="true" delay=4 >
     726           <events>
     727              <trigger>
     728                 <EventListener event="duball1" />
     729              </trigger>
     730           </events>
     731        </EventTrigger>
     732        <EventTrigger activations="1" invert="true">
     733          <events>
     734            <trigger>
     735              <EventListener event="toHydroFarmer" />
     736            </trigger>
     737          </events>
     738        </EventTrigger>
     739    </Trigger>
     740
     741    <Trigger name="duball3" mode="and" stayActive="true">
     742        <EventTrigger activations="1" stayactive="true" delay=4 >
     743           <events>
     744              <trigger>
     745                 <EventListener event="duball2" />
     746              </trigger>
     747           </events>
     748        </EventTrigger>
     749        <EventTrigger activations="1" invert="true">
     750          <events>
     751            <trigger>
     752              <EventListener event="toHydroFarmer" />
     753            </trigger>
     754          </events>
     755        </EventTrigger>
     756    </Trigger>
     757
    490758
    491759    <SimpleNotification message="Welcome to the Duball Space Station!">
     
    520788        <Model scale=13 mesh="DuBall2.mesh" position = "100,0,0"/>
    521789        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "-100,0,0"/>
    522         <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "100,0,0"/>       
     790        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "100,0,0"/>
    523791      </attached>
    524792      <collisionShapes>
     
    657925
    658926
    659     <SimpleNotification message="Dock to the Hydrogen Farmer.">
     927    <SimpleNotification message="Dock to the Hydrogen Farmer." broadcast="true">
    660928        <events>
    661929            <trigger>
     
    665933    </SimpleNotification>
    666934
    667 <!-------------------------------------- PART FOUR : Get Help --------------------------------------->   
    668     <DistanceTrigger name="famer1" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=0 />
    669     <SimpleNotification message="We just received a message from DuBall.">
     935<!-------------------------------------- PART FOUR : Get Help --------------------------------------->
     936
     937    <Trigger name="famer1" mode="and" stayActive="true">
     938        <DistanceTrigger position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=0 />
     939        <EventTrigger name="notGameEnd" activations="1" invert="true">
     940          <events>
     941            <trigger>
     942              <EventListener event="gameEnd" />
     943            </trigger>
     944          </events>
     945        </EventTrigger>
     946    </Trigger>
     947
     948    <Trigger name="famer2" mode="and" stayActive="true">
     949        <DistanceTrigger position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=4 />
     950        <EventTrigger activations="1" invert="true">
     951          <events>
     952            <trigger>
     953              <EventListener event="gameEnd" />
     954            </trigger>
     955          </events>
     956        </EventTrigger>
     957    </Trigger>
     958
     959    <SimpleNotification message="We just received a message from DuBall." broadcast="true">
    670960        <events>
    671961            <trigger>
     
    675965    </SimpleNotification>
    676966
    677     <DistanceTrigger name="famer2" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=4 />
    678     <SimpleNotification message="We will lend you our strongest ship.">
     967
     968    <SimpleNotification message="We will lend you our strongest ship." broadcast="true">
    679969        <events>
    680970            <trigger>
     
    686976
    687977<!-- @Objects: HYDROGEN FARMER & DOCKING -->
    688     <SpaceShip position="-48900,100,0" roll=90 yaw=0 pitch=20 mass=10000 health=100000 name="HydroFarmer">
     978    <SpaceShip
     979        team     = 0
     980        position = "-48900,100,0"
     981        roll     = 90   yaw=0  pitch=20
     982        mass     = 10000
     983        health   = 100000 initialhealth=100000 maxhealth="100000"
     984        name     = "HydroFarmer"
     985        RVName   = "Hydrogen Farmer" >
    689986      <attached>
    690987        <!-- Docking -->
     
    7301027    </SpaceShip>
    7311028
    732     <Billboard position="-48900,0,0" material="Examples/Flare" colour="0.6,0,0" scale=3/>
    7331029    <Dock position="-48900,0,0" roll=90 yaw=180 >
    7341030        <animations>
     
    7421038                <EventListener event="dockMe" />
    7431039            </execute>
     1040            <activity>
     1041                <EventListener event=notGameEnd />
     1042            </activity>
    7441043        </events>
    7451044        <attached>
     
    7481047            />
    7491048        </attached>
     1049
    7501050    </Dock>
    7511051
    752     <SpaceShip template="spaceshipspacecruiser" position="-48900,800,0" orientation="-0.14, 0.68, 0.68, 0.223" health="300" maxhealth="400" initialhealth="300" name="cruiser" >
     1052<!--@Objects: SpaceCruiser as docking target -->
     1053    <SpaceShip
     1054        template            = "spaceshipspacecruiser"
     1055        team                = "0"
     1056        position            = "-48900,800,0"
     1057        orientation         = "-0.14, 0.68, 0.68, 0.223"
     1058        health              = "400"
     1059        initialhealth       = "400"
     1060        maxhealth           = "500"
     1061        shieldhealth        = "80"
     1062        initialshieldhealth = "80"
     1063        maxshieldhealth     = "120"
     1064        shieldabsorption    = "0.8"
     1065        reloadrate          = "1"
     1066        reloadwaittime      = "1"
     1067        name                = "cruiser"
     1068        RVName              = "Spacecruiser" >
    7531069      <attached>
    7541070        <DockingTarget name="spaceShip" />
     
    7561072    </SpaceShip>
    7571073
    758 <!-- TESTBOX-->
    759 
    760 <!-- TESTBOX-->
    761 
     1074
     1075<!-- cruiserKilled: if cuiser is killed & player hasn't taken control of spacecrusier -->
    7621076          <Trigger name="cruiserKilled" mode="and" stayActive="true">
    7631077            <EventTrigger  stayActive="true">
     
    7781092
    7791093
     1094<!-- triggers when either hydrofarmer or cruiser is killed -->
     1095            <Trigger mode=or name="gameEnd">
     1096                <EventTrigger activations="1">
     1097                  <events>
     1098                    <trigger>
     1099                      <EventListener event="HydroFarmer" />
     1100                    </trigger>
     1101                  </events>
     1102                </EventTrigger>
     1103                <EventTrigger activations="1">
     1104                  <events>
     1105                    <trigger>
     1106                      <EventListener event="cruiserKilled" />
     1107                    </trigger>
     1108                  </events>
     1109                </EventTrigger>
     1110            </Trigger>
     1111
     1112<!-- triggers delayed when either hydrofarmer or cruiser is killed -->
    7801113            <EventTrigger delay=4 name="earlyEnd">
    7811114              <events>
    7821115                <trigger>
    783                   <EventListener event="cruiserKilled" />
     1116                  <EventListener event="gameEnd" />
    7841117                </trigger>
    7851118              </events>
     
    7911124            </EventTrigger>
    7921125
    793             <EventTrigger delay=4 name="earlyEnd">
    794               <events>
    795                 <trigger>
    796                   <EventListener event="HydroFarmer" />
    797                 </trigger>
    798               </events>
    799               <events>
    800                 <activity>
    801                   <EventListener event="movingpirates2" />
    802                 </activity>
    803               </events>
    804             </EventTrigger>
    805 
    806 
    8071126
    8081127    <SimpleNotification message="Oh no! You killed the Hydrogen Farmer!" broadcast="true">
     
    8221141    </SimpleNotification>
    8231142
    824     <SimpleNotification message="Press 'Esc' and restart the mission." broadcast="true">
     1143    <SimpleNotification message="Press (Esc) and restart the mission." broadcast="true">
    8251144        <events>
    8261145            <trigger>
     
    8291148        </events>
    8301149    </SimpleNotification>
    831 
    8321150
    8331151<!-- hydrogen farmer & docking END -->
     
    8721190    >
    8731191      <!--attached>
    874         <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-50" /> 
     1192        <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-50" />
    8751193      </attached-->  <!-- Forcefield kills HYDROGEN FARMER-->
    8761194      <collisionShapes>
     
    8811199
    8821200<!-------------------------------------- The attack --------------------------------------->
    883 
    8841201<!-- TODO:
    8851202     - update spaceshipTransporter
    886      - bots do friendly fire (is drone function reusable?) 
     1203     - bots do friendly fire (is drone function reusable?)
    8871204-->
     1205
     1206<!-- Fallback Spawnpoint: on cruiserdeath caused by pirates. Unfortunately unstable behaviour concerning activity. -->
     1207    <TeamSpawnPoint team=0 position="2000,1500,-1500" direction="-1,-1,1" spawnclass=SpaceShip pawndesign=spaceshipspacecruiser>
     1208        <events>
     1209            <activity>
     1210                <EventListener event="attack" />
     1211            </activity>
     1212        </events>
     1213    </TeamSpawnPoint>
    8881214
    8891215<!-- @Triggers: toHydroFamer <-> first  portal usage
     
    8911217                attack       <-> second portal usage -->
    8921218
    893     <DistanceTrigger name="attack" position="-1400,-500,800" target="Pawn" distance=100 stayActive="true" >
     1219    <DistanceTrigger name="attack" position="-1400,-500,800" target="Pawn" distance=100 stayActive="true" mode="and">
    8941220        <EventTrigger name="ondock" activations="1" stayactive="true" delay=6>
    8951221          <events>
     
    8981224            </trigger>
    8991225          </events>
    900             <DistanceTrigger name="toHydroFarmer" position="-47000,-1000,1300" target="Pawn" distance=100 stayActive="true" />
     1226            <Trigger mode=and>
     1227              <DistanceTrigger name="toHydroFarmer" position="-47000,-1000,1300" target="Pawn" distance=100 stayActive="true" />
     1228              <EventTrigger activations="1" invert="true">
     1229                <events>
     1230                  <trigger>
     1231                    <EventListener event="gameEnd" />
     1232                  </trigger>
     1233                </events>
     1234              </EventTrigger>
     1235            </Trigger>
     1236        </EventTrigger>
     1237        <EventTrigger activations="1" invert="true">
     1238          <events>
     1239            <trigger>
     1240              <EventListener event="earlyEnd" />
     1241            </trigger>
     1242          </events>
    9011243        </EventTrigger>
    9021244    </DistanceTrigger>
    9031245
    904     <SimpleNotification message="Return before it's too late. Boost with 'Space'." broadcast="true">
     1246    <SimpleNotification message="Return before it's too late. Boost with (Space)." broadcast="true">
    9051247        <events>
    9061248            <trigger>
     
    9191261
    9201262
    921 
    9221263<!-- @Objects: 6 pirates, heading towards DuBall, attacking  -->
     1264<!-- TODO: re-hide pirates on early end-->
    9231265<!-- 1 -->
    9241266    <SpaceShip position="3000,-4000,4000" lookat="-1300,-600,900" name="attacker"visible="true">
     
    10651407        </controller>
    10661408    </SpaceShip>
     1409
    10671410
    10681411<!-- @Triggers: attacktriggerX <-> X enemies destroyed , X is an element of [1,6] -->
     
    11421485      </events>
    11431486    </SimpleNotification>
     1487
    11441488    <SimpleNotification message="One enemy left!" broadcast="true">
    11451489      <events>
     
    11491493      </events>
    11501494    </SimpleNotification>
     1495
    11511496    <SimpleNotification message="Well done. You finished this tutorial." broadcast="true">
    11521497      <events>
     
    11581503
    11591504<!-- @Triggers: postAttack <-> delayed attacktrigger6 -->
    1160     <EventTrigger name="postAttack1" activations="1" stayactive="true" delay=3>
     1505    <EventTrigger name="postAttack1" activations="1" stayactive="true" delay=4.1>
    11611506      <events>
    11621507        <trigger>
     
    11661511    </EventTrigger>
    11671512
    1168     <EventTrigger name="postAttack2" activations="1" stayactive="true" delay=6>
     1513    <EventTrigger name="postAttack2" activations="1" stayactive="true" delay=8.2>
    11691514      <events>
    11701515        <trigger>
     
    11741519    </EventTrigger>
    11751520
    1176     <SimpleNotification message="Either quit by pressing 'Esc' or ..." broadcast="true">
     1521    <SimpleNotification message="Either quit by pressing (Esc) or ..." broadcast="true">
    11771522      <events>
    11781523        <trigger>
     
    11921537<!-------------------------------------- |Bonus Part| --------------------------------------->
    11931538<!-- @Triggers: "bonusX" <->  delayed "attacktrigger6" -->
    1194     <EventTrigger name="bonus1" activations="1" stayactive="true" delay=10>
     1539    <EventTrigger name="bonus1" activations="1" stayactive="true" delay=12.3>
    11951540      <events>
    11961541        <trigger>
     
    11991544      </events>
    12001545    </EventTrigger>
    1201     <EventTrigger name="bonus2" activations="1" stayactive="true" delay=16>
     1546    <EventTrigger name="bonus2" activations="1" stayactive="true" delay=16.4>
    12021547      <events>
    12031548        <trigger>
     
    12131558      </events>
    12141559    </EventTrigger>
    1215     <EventTrigger name="bonus4" activations="1" stayactive="true" delay=28>
     1560    <EventTrigger name="bonus4" activations="1" stayactive="true" delay=28.1>
    12161561      <events>
    12171562        <trigger>
     
    12201565      </events>
    12211566    </EventTrigger>
    1222     <EventTrigger name="bonus5" activations="1" stayactive="true" delay=32.1>
     1567    <EventTrigger name="bonus5" activations="1" stayactive="true" delay=32.3>
    12231568      <events>
    12241569        <trigger>
     
    12271572      </events>
    12281573    </EventTrigger>
    1229     <EventTrigger name="bonus6" activations="1" stayactive="true" delay=36.2>
     1574    <EventTrigger name="bonus6" activations="1" stayactive="true" delay=36.5>
    12301575      <events>
    12311576        <trigger>
     
    12341579      </events>
    12351580    </EventTrigger>
    1236     <EventTrigger name="bonus7" activations="1" stayactive="true" delay=4>
     1581    <EventTrigger name="bonus7" activations="1" stayactive="true" delay=4.1>
    12371582      <events>
    12381583        <trigger>
     
    12441589
    12451590
    1246     <SimpleNotification message="Rotate your ship. Press 'Q' or 'E'. "  broadcast="true">
     1591    <SimpleNotification message="Rotate your ship. Press (Q) or (E). "  broadcast="true">
    12471592        <events>
    12481593            <trigger>
     
    12521597    </SimpleNotification>
    12531598
    1254     <SimpleNotification message="Switch the camera's position. Press 'C'. "  broadcast="true">
     1599    <SimpleNotification message="Switch the camera's position. Press (C). "  broadcast="true">
    12551600        <events>
    12561601            <trigger>
     
    12601605    </SimpleNotification>
    12611606
    1262     <SimpleNotification message="360° view: press 'Ctrl' + use the mouse "  broadcast="true">
     1607    <SimpleNotification message="360° view: press (Ctrl) + use the mouse "  broadcast="true">
    12631608        <events>
    12641609            <trigger>
     
    12921637    </SimpleNotification>
    12931638
    1294     <SimpleNotification message="Press 'Esc' and return to the main menu."  broadcast="true">
     1639    <SimpleNotification message="Press (Esc) and return to the main menu."  broadcast="true">
    12951640        <events>
    12961641            <trigger>
     
    13191664  </Scene>
    13201665</Level>
    1321 <!-- TODO:
    1322 ! Quest Interface
    1323 - Foolproof text messages (e.g. verspätete Nachrichten unterdrücken)
    1324 - Radar visibility & Hud Markers (done)
     1666
     1667<!-- TODO:
     1668- Story & more precise Questmessages; more quest hints; fail-quest;
     1669- Colouring: Show who is friend or foe via the colour
     1670- Waypoints: show the player the way
     1671- Foolproof text messages (e.g. verspätete Nachrichten unterdrücken ~done )
    13251672- End Tutorial, if either the Hydrogen Farmer or the SpaceCruiser gets destroyed. (~done)
    1326 
    13271673 -->
  • code/trunk/data/levels/myTestLevel.oxw

    r8706 r9016  
    33 description = "A level to test the Class SpaceBoundaries."
    44 tags = "test"
     5 screenshot = "mytestlevel.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name         = "Sample"
    20  description  = "Just a few tests"
    21 >
     19<Level>
    2220  <templates>
    2321    <Template link=lodtemplate_default />
  • code/trunk/data/levels/notifications.oxw

    r8706 r9016  
    33 description = "Level to test and showcase notifications."
    44 tags = "test, showcase"
     5 screenshot = "notificationsshowcase.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Presentation"
    16  description  = "A simple testlevel"
    17 >
     15<Level>
    1816    <templates>
    1917        <Template link=lodtemplate_default />
  • code/trunk/data/levels/pickups.oxw

    r8706 r9016  
    33 description = "Level to test and showcase pickups."
    44 tags = "test, showcase"
     5 screenshot = "pickupsshowcase.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name         = "Sample"
    20  description  = "Just a few tests"
    21 >
     19<Level>
    2220  <templates>
    2321    <Template link=lodtemplate_default />
  • code/trunk/data/levels/pirateAttack.oxw

    r8706 r9016  
    22 name = "Pirate Attack"
    33 description = "Dani's Testlevel"
    4  tags = "test"
     4 tags = "mission"
     5 screenshot = "pirateattack.png"
    56/>
    67
     
    2829name="Dani's Testlevel"
    2930description="Erste Versuche mit den Quests"
    30 gametype=TeamDeathmatch
     31gametype=Mission
    3132>
    3233
  • code/trunk/data/levels/planets.oxw

    r8891 r9016  
    33 description = "Demonstration of Planets"
    44 tags = "showcase"
     5 screenshot = "planetdemonstration.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Planet"
    16  description  = "Demonstration of Planets"
    17 >
     15<Level>
    1816  <templates>
    1917    <Template link="lodtemplate_default" />
  • code/trunk/data/levels/pong.oxw

    r8706 r9016  
    22 name = "Pong"
    33 description = "Pong in space!"
    4  tags = ""
     4 tags = "minigame"
     5 screenshot = "pong.png"
    56/>
    67
     
    4950
    5051<Level
    51  name         = "Presentation"
    52  description  = "A simple testlevel"
    53  gametype     = Pong
     52 gametype = "Pong"
    5453>
    5554  <templates>
  • code/trunk/data/levels/portals.oxw

    r8706 r9016  
    33 name = "Portals"
    44 description = "Level for testing portals"
    5  tags = "tutorial"
     5 tags = "test"
     6 screenshot = "portals.png"
    67/>
    78
     
    1415?>
    1516
    16 <Level
    17  name         = "Presentation"
    18  description  = "A simple testlevel"
    19 >
     17<Level>
    2018  <templates>
    2119    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentation.oxw

    r8706 r9016  
    33 description = "Presentation Level"
    44 tags = "presentation"
     5 screenshot = "presentation.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Sample"
    16  description  = "Just a few tests"
    17 >
     15<Level>
    1816  <templates>
    1917    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentation09.oxw

    r8706 r9016  
    33 description = "3rd Presentation level for Orxonox Convention X"
    44 tags = "presentation"
     5 screenshot = "presentationx3rd.png"
    56/>
    67
     
    1314?>
    1415
    15 <Level
    16  name         = "Presentation09"
    17  description  = "presentation level for Orxonox Convention X"
    18 
    19 >
     16<Level>
    2017  <templates>
    2118    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentation09b.oxw

    r8706 r9016  
    33 description = "2nd Presentation level for Orxonox Convention X"
    44 tags = "presentation"
     5 screenshot = "presentationx2.png"
    56/>
    67
     
    1617
    1718<Level
    18  name         = "Presentation09"
    19  description  = "presentation level for Orxonox Convention X"
    20  gametype     = TeamDeathmatch
     19 gametype = "TeamDeathmatch"
    2120>
    2221  <templates>
  • code/trunk/data/levels/presentationDM.oxw

    r8858 r9016  
    33 description = "Presentation Level"
    44 tags = "presentation"
     5 screenshot = "presentationdm.png"
    56/>
    67
     
    1415
    1516<Level
    16  name         = "Presentation"
    17  description  = "A simple testlevel"
    18  gametype     = Deathmatch
     17 gametype = "Deathmatch"
    1918>
    2019  <templates>
  • code/trunk/data/levels/presentationFS10.oxw

    r8706 r9016  
    33 description = "1st Presentation level for Orxonox Convention XI"
    44 tags = "presentation"
     5 screenshot = "presentationxi.png"
    56/>
    67
     
    1920
    2021<Level
    21  name         = "Sample"
    22  description  = "Just a few tests"
    23  gametype     = TeamDeathmatch
     22 gametype = "TeamDeathmatch"
    2423>
    2524  <templates>
  • code/trunk/data/levels/presentationFS102.oxw

    r8706 r9016  
    33 description = "2nd Presentation level for Orxonox Convention XI, FPS"
    44 tags = "presentation"
     5 screenshot = "presentationxifps1st.png"
    56/>
    67
     
    1415?>
    1516
    16 <Level
    17  name         = "fps"
    18  description  = "tests"
    19 >
     17<Level>
    2018  <templates>
    2119    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentationFS10Ed.oxw

    r8706 r9016  
    33 description = "3rd Presentation level for Orxonox Convention XI, FPS"
    44 tags = "presentation"
     5 screenshot = "presentationxifps2nd.png"
    56/>
    67
     
    1415?>
    1516
    16 <Level
    17  name         = "fps"
    18  description  = "tests"
    19 >
     17<Level>
    2018  <templates>
    2119    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentationFS11.oxw

    r8706 r9016  
    22 name = "Presentation FS11"
    33 description = "Presentation level spring semester '11"
    4  tags = "test"
     4 tags = "presentation"
     5 screenshot = "presentationfs11.png"
    56/>
    67
     
    2122?>
    2223
    23 <Level
    24  name         = "Sample"
    25  description  = "Just a few tests"
    26 >
     24<Level>
    2725  <templates>
    2826    <Template link=lodtemplate_default />
  • code/trunk/data/levels/presentationHS09.oxw

    r8706 r9016  
    33 description = "1st Presentation level for Orxonox Convention X"
    44 tags = "presentation"
     5 screenshot = "presentationx1st.png"
    56/>
    67
     
    1617
    1718<Level
    18  name         = "Presentation09"
    19  description  = "presentation level for Orxonox Convention X"
    20  gametype     = TeamDeathmatch
     19 gametype = "TeamDeathmatch"
    2120 hasPhysics = true
    2221>
  • code/trunk/data/levels/presentationHS09b.oxw

    r8706 r9016  
    33 description = "2nd Presentation level for Orxonox Convention X"
    44 tags = "presentation"
     5 screenshot = "presentationx2nd.png"
    56/>
    67
     
    2223
    2324<Level
    24  name         = "Sample"
    25  description  = "Just a few tests"
    26  gametype     = TeamDeathmatch
     25 gametype = "TeamDeathmatch"
    2726>
    2827  <templates>
  • code/trunk/data/levels/princessAeryn.oxw

    r8706 r9016  
    22 name = "The Tale of Princess Aeryn"
    33 description = "The Tale of the elusive but beautiful Princess Aeryn"
    4  tags = ""
     4 tags = "mission"
     5 screenshot = "thetaleofprincessaeryn.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name     = "The Tale of Princess Aeryn"
    20  description  = "The Tale of Princess Aeryn"
    21 >
     19<Level>
    2220
    2321  <templates>
  • code/trunk/data/levels/quests.oxw

    r8706 r9016  
    33 description = "Level to test and showcase quests."
    44 tags = "test, showcase"
     5 screenshot = "questsshowcase.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Questsystem"
    16  description  = "Just a few tests"
    17 >
     15<Level>
    1816    <templates>
    1917        <Template link=lodtemplate_default />
  • code/trunk/data/levels/screenshot.oxw

    r8706 r9016  
    22 name = "Screenshot"
    33 description = "Level to make awesome screenshots in."
    4  tags = "test"
     4 tags = "test, showcase"
     5 screenshot = "screenshot.png"
    56/>
    67
     
    1516
    1617<Level
    17  name         = "Waypoints"
    18  description  = "Testing waypoings for AI controlled spaceships."
    19  gametype     = TeamDeathmatch
     18 gametype = "TeamDeathmatch"
    2019>
    2120  <templates>
  • code/trunk/data/levels/shieldTest.oxw

    r8706 r9016  
    33 description = "A simple Level with one shielded drone to shoot at"
    44 tags = "test"
     5 screenshot = "shieldtestlevel.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "shieldTL"
    16  description  = "LEVEL-DESCRIPTION"
    17 >
     15<Level>
    1816
    1917<templates>
  • code/trunk/data/levels/sound.oxw

    r8706 r9016  
    22 name = "Sound showcase"
    33 description = "Level to test and showcase sound."
    4  tags = "test"
     4 tags = "test, showcase"
     5 screenshot = "soundshowcase.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name         = "Sample"
    20  description  = "Just a few tests"
    21 >
     19<Level>
    2220  <templates>
    2321    <Template link=lodtemplate_default />
  • code/trunk/data/levels/spaceRace.oxw

    r8706 r9016  
    11<LevelInfo
    2  name = "Space Race"
    3  description = "Test level for the gametype Space Race."
    4  tags = "test"
     2 name = "Old Space Race"
     3 description = "Have a furious Race in Space: Reach the checkpoints as fast as possible."
     4 tags = "gametype"
     5 screenshot = "spacerace.png"
    56/>
    67
     
    1718
    1819<Level
    19  name         = "Space Race"
    20  description  = "Test level for the gametype Space Race."
    21  gametype     = SpaceRace
     20 gametype = "OldSpaceRace"
    2221>
    2322  <templates>
     
    5352   
    5453    <!-- ------------------CheckPoints----------------- -->
    55     <RaceCheckPoint name="checkpoint1" position="0,-2000,1000" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="0" islast="false">
    56         <attached>
    57             <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
    58         </attached>
    59         <collisionShapes>
    60             <BoxCollisionShape position="0,0,55"      halfExtents="55, 10, 10" />
    61             <BoxCollisionShape position="0,0,-55"     halfExtents="55, 10, 10" />
    62             <BoxCollisionShape position="55,0,0"      halfExtents="10, 10, 55" />
    63             <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    64         </collisionShapes>
    65     </RaceCheckPoint>
    66 
    67     <RaceCheckPoint name="checkpoint2" position="0,-900,2300" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="1" islast="false">
     54    <OldRaceCheckPoint name="checkpoint1" position="0,-2000,1000" direction="0,-1,1" collisionType="static" scale="1" distance="40" checkpointindex="0" islast="false">
     55        <attached>
     56            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     57        </attached>
     58        <collisionShapes>
     59            <BoxCollisionShape position="0,0,55"      halfExtents="55, 10, 10" />
     60            <BoxCollisionShape position="0,0,-55"     halfExtents="55, 10, 10" />
     61            <BoxCollisionShape position="55,0,0"      halfExtents="10, 10, 55" />
     62            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
     63        </collisionShapes>
     64    </OldRaceCheckPoint>
     65
     66    <OldRaceCheckPoint name="checkpoint2" position="0,-900,2300" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="1" islast="false">
    6867        <attached>
    6968            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    9796            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    9897        </collisionShapes>
    99     </RaceCheckPoint>
    100 
    101     <RaceCheckPoint name="checkpoint3" position="0,700,2700" stayActive="true" direction="0,0,1" collisionType="static" scale="1" distance="40" checkpointindex="2" islast="false">
     98    </OldRaceCheckPoint>
     99
     100    <OldRaceCheckPoint name="checkpoint3" position="0,700,2700" stayActive="true" direction="0,0,1" collisionType="static" scale="1" distance="40" checkpointindex="2" islast="false">
    102101        <attached>
    103102            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    131130            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    132131        </collisionShapes>
    133     </RaceCheckPoint>
    134 
    135     <RaceCheckPoint name="checkpoint4" position="0,2100,2300" stayActive="true" direction="0,1,1" collisionType="static" scale="1" distance="40" checkpointindex="3" islast="false">
     132    </OldRaceCheckPoint>
     133
     134    <OldRaceCheckPoint name="checkpoint4" position="0,2100,2300" stayActive="true" direction="0,1,1" collisionType="static" scale="1" distance="40" checkpointindex="3" islast="false">
    136135        <attached>
    137136            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    166165            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    167166        </collisionShapes>
    168     </RaceCheckPoint>
    169 
    170     <RaceCheckPoint name="checkpoint5" position="0,2200,500" stayActive="true" direction="0,1,0" collisionType="static" scale="1" distance="40" checkpointindex="4" islast="false">
     167    </OldRaceCheckPoint>
     168
     169    <OldRaceCheckPoint name="checkpoint5" position="0,2200,500" stayActive="true" direction="0,1,0" collisionType="static" scale="1" distance="40" checkpointindex="4" islast="false">
    171170        <attached>
    172171        <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    201200            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    202201        </collisionShapes>
    203     </RaceCheckPoint>
    204 
    205     <RaceCheckPoint name="checkpoint6" position="0,1500,-800" stayActive="true" direction="0,1,-1" collisionType="static" scale="1" distance="40" checkpointindex="5" islast="false">
     202    </OldRaceCheckPoint>
     203
     204    <OldRaceCheckPoint name="checkpoint6" position="0,1500,-800" stayActive="true" direction="0,1,-1" collisionType="static" scale="1" distance="40" checkpointindex="5" islast="false">
    206205        <attached>
    207206            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    236235            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    237236        </collisionShapes>
    238     </RaceCheckPoint>
    239 
    240     <RaceCheckPoint name="checkpoint7" position="0,200,-1900" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="6" islast="false">
     237    </OldRaceCheckPoint>
     238
     239    <OldRaceCheckPoint name="checkpoint7" position="0,200,-1900" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="6" islast="false">
    241240        <attached>
    242241            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    271270            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    272271        </collisionShapes>
    273     </RaceCheckPoint>
    274 
    275     <RaceCheckPoint name="checkpoint8" position="0,-700,-1400" stayActive="true" direction="0,-1,-1" collisionType="static" scale="1" distance="40" checkpointindex="7" islast="false">
     272    </OldRaceCheckPoint>
     273
     274    <OldRaceCheckPoint name="checkpoint8" position="0,-700,-1400" stayActive="true" direction="0,-1,-1" collisionType="static" scale="1" distance="40" checkpointindex="7" islast="false">
    276275        <attached>
    277276        <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    306305            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    307306        </collisionShapes>
    308     </RaceCheckPoint>
    309 
    310     <RaceCheckPoint name="checkpoint9" position="0,-1300,-800" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="8" islast="false">
     307    </OldRaceCheckPoint>
     308
     309    <OldRaceCheckPoint name="checkpoint9" position="0,-1300,-800" stayActive="true" collisionType="static" scale="1" distance="40" checkpointindex="8" islast="false">
    311310        <attached>
    312311            <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    332331            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    333332        </collisionShapes>
    334     </RaceCheckPoint>
    335 
    336     <RaceCheckPoint name="checkpoint10" position="0,-2100,0" collisionType="static" scale="1" distance="40" checkpointindex="9" islast="true" timelimit="150">
     333    </OldRaceCheckPoint>
     334
     335    <OldRaceCheckPoint name="checkpoint10" position="0,-2100,0" collisionType="static" scale="1" distance="40" checkpointindex="9" islast="true" timelimit="150">
    337336        <attached>
    338337        <   Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
     
    344343            <BoxCollisionShape position="-55,0,0"     halfExtents="10, 10, 55" />
    345344        </collisionShapes>
    346     </RaceCheckPoint>
     345    </OldRaceCheckPoint>
    347346
    348347    <!-- ------------------Planet----------------- -->
  • code/trunk/data/levels/teamBaseMatch.oxw

    r8706 r9016  
    11<LevelInfo
    22 name = "Teambase Match"
    3  description = "Fight for the bases."
    4  tags = ""
     3 description = "Fight for the bases. Capture bases by shooting at them and defend them against attackers."
     4 tags = "gametype"
     5 screenshot = "teambasematch.png"
    56/>
    67
     
    1516
    1617<Level
    17  name         = "Presentation"
    18  description  = "A simple testlevel"
    19  gametype     = TeamBaseMatch
     18 gametype = "TeamBaseMatch"
    2019>
    2120
  • code/trunk/data/levels/teamDeathMatch.oxw

    r8706 r9016  
    22 name = "Team Deathmatch"
    33 description = "Fight against each other in teams."
    4  tags = ""
     4 tags = "gametype"
     5 screenshot = "teamdeathmatch.png"
    56/>
    67
     
    1516
    1617<Level
    17  name         = "Waypoints"
    18  description  = "Testing waypoings for AI controlled spaceships."
    19  gametype     = TeamDeathmatch
     18 gametype = "TeamDeathmatch"
    2019>
    2120  <templates>
  • code/trunk/data/levels/templates/spaceshipSpacecruiser.oxt

    r8891 r9016  
    1111   initialhealth     = 300
    1212
    13    shieldhealth        = 60
    14    initialshieldhealth = 60
    15    maxshieldhealth     = 80
    16    shieldabsorption    = 0.8
     13   shieldhealth        = 75
     14   initialshieldhealth = 75
     15   maxshieldhealth     = 90
     16   shieldabsorption    = 0.9
    1717   reloadrate          = 1
    1818   reloadwaittime      = 1
     
    4545    </engines>
    4646    <attached>
    47       <Model position="12,-30,-120" yaw=90 pitch=-90 roll=0 scale=6 mesh="spacecruiser.mesh" />
     47      <Model position="12,-5,-10" yaw=90 pitch=-90 roll=0 scale=6 mesh="spacecruiser.mesh" />
    4848      <!--Model mesh="cube.mesh" mass=10 position="0,-30,-108" scale3D="38,6,62" />
    4949      <Model mesh="cube.mesh" mass=10 position="0,-20,-108" scale3D="20,6,40" />
     
    5757    </attached>
    5858    <collisionShapes>
    59       <BoxCollisionShape position="0,-30,-108"   halfExtents="38,6,62" />
    60       <BoxCollisionShape position="0,-20,-108"   halfExtents="20,6,40" />
    61       <BoxCollisionShape position="-16,-35,-112" halfExtents="15,5,57" roll=-14 pitch=3.5/>
    62       <BoxCollisionShape position="16,-35,-112"   halfExtents="15,5,57" roll=14 pitch=3.5/>
    63       <BoxCollisionShape position="19,-21.5,-108" halfExtents="18,5,52" roll=-21 />
    64       <BoxCollisionShape position="-19,-21.5,-108"halfExtents="18,5,52" roll=21 />
    65       <BoxCollisionShape position="0,-21,-169"halfExtents="18,1,16" pitch=-30x />
     59      <BoxCollisionShape position="0,-5,2"     halfExtents="38,6,62" />
     60      <BoxCollisionShape position="0,5,2"      halfExtents="20,6,40" />
     61      <BoxCollisionShape position="-16,-10,-2" halfExtents="15,5,57" roll=-14 pitch=3.5/>
     62      <BoxCollisionShape position="16,-10,-2"  halfExtents="15,5,57" roll=14 pitch=3.5/>
     63      <BoxCollisionShape position="19,3.5,2"  halfExtents="18,5,52" roll=-21 />
     64      <BoxCollisionShape position="-19,4.5,2"  halfExtents="18,5,52" roll=21 />
     65      <BoxCollisionShape position="0,4,-59"    halfExtents="18,1,16" pitch=-30/>
    6666
    6767    </collisionShapes>
    6868<?lua
    69   include("includes/weaponSettingsSpacecruiser.oxi")
     69  include("../includes/weaponSettingsSpacecruiser.oxi")
    7070?>
    7171  </SpaceShip>
     
    7575  <SpaceShip>
    7676    <camerapositions>
    77       <CameraPosition position="0,10,  40" drag=true mouselook=true />
    78       <CameraPosition position="0,20,  80" drag=true mouselook=true />
    79       <CameraPosition position="0,30, 120" drag=true mouselook=true />
    80       <CameraPosition position="0,20,-260" drag=true mouselook=true yaw=180/>
    81       <CameraPosition position="0,30,-350" drag=true mouselook=true yaw=180/>
    82       <!--CameraPosition position="0,150,-25" pitch=-90 drag=true />
    83       <CameraPosition position="0,0,-40" yaw=180 drag=true />
    84       <CameraPosition position="0,3,-14" yaw=0 />
    85       <CameraPosition position="-50,5,-8" yaw=-90 drag=true />
    86       <CameraPosition position="50,5,-8" yaw=90 drag=true /-->
     77      <CameraPosition position="0,40, 170" drag=true mouselook=true />
     78      <CameraPosition position="0,55, 230" drag=true mouselook=true />
     79      <CameraPosition position="0,65, 460" drag=true mouselook=true />
    8780    </camerapositions>
    8881  </SpaceShip>
     
    9386   boostfactor    = 2
    9487
    95    speedfront     = 150
    96    speedback      =  50
    97    speedleftright =  50
    98    speedupdown    =  50
     88   speedfront     = 200
     89   speedback      =  70
     90   speedleftright =  70
     91   speedupdown    =  70
    9992
    10093   defEngineSndNormal = "sounds/Engine_low.ogg"
     
    111104    </EffectContainer>
    112105    <EffectContainer condition="not idle">
    113       <FadingBillboard mainstate=activity active=false scale=0.1 position="20, -25, -40" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
    114       <FadingBillboard mainstate=activity active=false scale=0.1 position="-20, -25, -40" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
     106      <FadingBillboard mainstate=activity active=false scale=0.1 position="20,  0, 70" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
     107      <FadingBillboard mainstate=activity active=false scale=0.1 position="-20, 0, 70" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
    115108    </EffectContainer>
    116109    <EffectContainer condition="normal or brake">
     
    118111    </EffectContainer>
    119112    <EffectContainer condition="normal or boost">
    120       <Backlight mainstate=activity active=false scale=0.4 name=bltest position=" 20, -25, -40" colour="0.2, 0.65, 1.0, 1.0" width=15 length=1300 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
    121       <Backlight mainstate=activity active=false scale=0.4 name=bltest position="-20, -25, -40" colour="0.2, 0.65, 1.0, 1.0" width=15 length=1300 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
     113      <Backlight mainstate=activity active=false scale=0.4 name=bltest position=" 20, 0, 70" colour="0.2, 0.65, 1.0, 1.0" width=15 length=1300 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
     114      <Backlight mainstate=activity active=false scale=0.4 name=bltest position="-20, 0, 70" colour="0.2, 0.65, 1.0, 1.0" width=15 length=1300 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
    122115    </EffectContainer>
    123116    <EffectContainer condition="boost">
    124       <Backlight mainstate=activity active=false scale=0.4 name=bltest position=" 20, -25, -40" colour="0.6, 0.75, 0.8, 0.7" width=40 length=800 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
    125       <Backlight mainstate=activity active=false scale=0.4 name=bltest position="-20, -25, -40" colour="0.6, 0.75, 0.8, 0.7" width=40 length=800 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
     117      <Backlight mainstate=activity active=false scale=0.4 name=bltest position=" 20, 0, 70" colour="0.6, 0.75, 0.8, 0.7" width=40 length=800 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
     118      <Backlight mainstate=activity active=false scale=0.4 name=bltest position="-20, 0, 70" colour="0.6, 0.75, 0.8, 0.7" width=40 length=800 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
    126119    </EffectContainer>
    127120<!--    <EffectContainer condition="brake">
    128       <FadingBillboard mainstate=activity active=false scale=0.3 position=" 20, -25, -40" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
    129       <FadingBillboard mainstate=activity active=false scale=0.3 position="-20, -25, -40" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
    130       <FadingBillboard mainstate=activity active=false scale=0.15 position="20, -25, -40" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
    131       <FadingBillboard mainstate=activity active=false scale=0.15 position="-20, -25, -40" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
     121      <FadingBillboard mainstate=activity active=false scale=0.3 position=" 20,  0, 70" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
     122      <FadingBillboard mainstate=activity active=false scale=0.3 position="-20,  0, 70" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
     123      <FadingBillboard mainstate=activity active=false scale=0.15 position="20,  0, 70" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
     124      <FadingBillboard mainstate=activity active=false scale=0.15 position="-20, 0, 70" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
    132125    </EffectContainer>
    133126-->
  • code/trunk/data/levels/testStars.oxw

    r8706 r9016  
    33 description = "Level to test stars"
    44 tags = "test"
     5 screenshot = "starstestlevel.png"
    56/>
    67
     
    1617?>
    1718
    18 <Level
    19  name         = "Sample"
    20  description  = "Just a few tests"
    21 >
     19<Level>
    2220  <templates>
    2321    <Template link=lodtemplate_default />
  • code/trunk/data/levels/testSwallow.oxw

    r8706 r9016  
    33 description = "Level to test the swallow spaceship."
    44 tags = "test"
     5 screenshot = "swallowtestlevel.png"
    56/>
    67
     
    1314?>
    1415
    15 <Level
    16  name         = "Presentation_swallow"
    17  description  = "presentation level for Orxonox Convention X"
    18 
    19 >
     16<Level>
    2017
    2118  <templates>
  • code/trunk/data/levels/tetris.oxw

    r8706 r9016  
    22 name = "Tetris"
    33 description = "Tetris in space!"
    4  tags = ""
     4 tags = "minigame"
     5 screenshot = "tetris.png"
    56/>
    67
     
    3031
    3132<Level
    32  name         = "Presentation"
    33  description  = "A simple testlevel"
    34  gametype     = "Tetris"
     33 gametype = "Tetris"
    3534>
    3635  <templates>
  • code/trunk/data/levels/theTimeMachine.oxw

    r8706 r9016  
    22 name = "The Time Machine"
    33 description = "A simple level. The only goal is to defeat as much enemies as you can."
    4  tags = "singleplayer"
     4 tags = "gametype"
     5 screenshot = "thetimemachine.png"
    56/>
    67
     
    6162
    6263<Level
    63     name="The Time Machine"
    64     description="A simple level. The only goal is to defeat as much enemies as you can."
    65     gametype=TeamDeathmatch
     64 gametype = "TeamDeathmatch"
    6665>
    6766    <templates>
  • code/trunk/data/levels/tutorial.oxw

    r8706 r9016  
    33 description = "Level for the coding tutorial."
    44 tags = "tutorial"
     5 screenshot = "codingtutorial.png"
    56/>
    67
     
    1213?>
    1314
    14 <Level
    15  name         = "Presentation"
    16  description  = "A simple testlevel"
    17 >
     15<Level>
    1816  <templates>
    1917    <Template link=lodtemplate_default />
  • code/trunk/data/levels/underAttack.oxw

    r8706 r9016  
     1<LevelInfo
     2 name = "Under Attack"
     3 description = "Fight the transporter."
     4 tags = "gametype"
     5 screenshot = "underattack.png"
     6/>
     7
    18<?lua
    29  include("HUDTemplates3.oxo")
    310  include("stats.oxo")
    4   include("underAttackHUD.oxo")
    511  include("templates/spaceshipAssff.oxt")
    612  include("templates/lodInformation.oxt")
    713?>
     14<!--OUTDATED: include("underAttackHUD.oxo") -->
    815
    916<Level
    10  name         = "UnderAttack testing"
    11  description  = "A simple testlevel"
    12  gametype     = UnderAttack
     17 gametype = "UnderAttack"
    1318>
    1419  <templates>
     
    5156      maxhealth         = 10000
    5257      initialhealth     = 10000
     58      RVName            = "Transporter"
    5359    >
    5460
  • code/trunk/data/levels/waypoints.oxw

    r8706 r9016  
    33 description = "Testing waypoings for AI controlled spaceships."
    44 tags = "test"
     5 screenshot = "waypointstestlevel.png"
    56/>
    67
     
    1415?>
    1516
    16 <Level
    17  name         = "Waypoints"
    18  description  = "Testing waypoings for AI controlled spaceships."
    19 >
     17<Level>
    2018  <templates>
    2119    <Template link=lodtemplate_default />
  • code/trunk/data/overlays/HUDTemplates3.oxo

    r8706 r9016  
    7878    </HUDBoostBar>
    7979
     80    <HUDEnemyHealthBar
     81     name              = "EnemyHealthBar"
     82     background        = "Orxonox/HealthBarBackground"
     83     size              = "0.35, 0.0875"
     84     position          = "1.0 , 0.1 "
     85     pickpoint         = "1, 1"
     86     bartexture        = "healthbar_bar.png"
     87     textfont          = "VeraMono"
     88     textusebarcolour  = true
     89     textsize          = 0.039
     90     textoffset        = "0.315, 0.05"
     91     textpickpoint     = "0, 0"
     92     textalign         = "right"
     93     correctaspect     = false
     94     textcorrectaspect = false
     95    >
     96      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     97      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
     98      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
     99    </HUDEnemyHealthBar>
     100
    80101    <HUDNavigation
    81102     name          = "Navigation"
  • code/trunk/data/overlays/underAttackHUD.oxo

    r7679 r9016  
    1 <Template name="UnderAttackHUD">
     1< Template name="UnderAttackHUD">
    22  <OverlayGroup name="UnderAttackHUD" scale = "1, 1">
    3     <UnderAttackHealthBar
     3    <OUTDATED-- UnderAttackHealthBar
    44     name                 = "HealthBar"
    55     background           = "Orxonox/HealthBarBackground"
Note: See TracChangeset for help on using the changeset viewer.