Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 11052


Ignore:
Timestamp:
Jan 9, 2016, 6:26:20 PM (9 years ago)
Author:
landauf
Message:

merged branch presentationHS15 back to trunk

Location:
code/trunk
Files:
5 deleted
200 edited
69 copied

Legend:

Unmodified
Added
Removed
  • code/trunk

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

    r10262 r11052  
    44campaignMissions_[2] = "pirateAttack.oxw"
    55campaignMissions_[3] = "iJohnVane_TriptoArea51.oxw"
     6campaignMissions_[4] = "iiJohnVane_Area51UnderFire.oxw"
     7campaignMissions_[5] = "iiiJohnVane_EscapeTheBastards.oxw"
     8campaignMissions_[6] = "expeditionSector.oxw"
     9campaignMissions_[7] = "shuttleAttack.oxw"
     10campaignMissions_[8] = "shuttleRetaliation.oxw"
  • code/trunk/data/gui/layouts/CampaignMenu.layout

    r10262 r11052  
    88        <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1.0,0},{1.0,0}}" />
    99        <Property Name="BackgroundEnabled" Value="False" />
    10         <Window Type="MenuWidgets/Button" Name="orxonox/MissionOneButton" >
    11             <Property Name="Text" Value="Mission 1" />
     10        <Window Type="MenuWidgets/Button" Name="orxonox/Mission1Button" >
     11            <Property Name="Text" Value="Mission One" />
    1212            <Property Name="Visible" Value="False"/>
    1313            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    14             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.2875,0},{0.6,0},{0.3375,0}}" />
    15             <Event Name="Clicked" Function="CampaignMenu.MissionOneButton_clicked"/>
     14            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.1,0},{0.65,0},{0.15,0}}" />
     15            <Event Name="Clicked" Function="CampaignMenu.Mission1Button_clicked"/>
    1616        </Window>
    17         <Window Type="MenuWidgets/Button" Name="orxonox/MissionTwoButton" >
    18             <Property Name="Text" Value="Mission 2" />
     17        <Window Type="MenuWidgets/Button" Name="orxonox/Mission2Button" >
     18            <Property Name="Text" Value="Fight in our Back" />
    1919            <Property Name="Visible" Value="False"/>
    2020            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    21             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.3625,0},{0.6,0},{0.4125,0}}" />
     21            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.18,0},{0.65,0},{0.23,0}}" />
    2222            <Property Name="Disabled" Value="True" />
    23             <Event Name="Clicked" Function="CampaignMenu.MissionTwoButton_clicked"/>
     23            <Event Name="Clicked" Function="CampaignMenu.Mission2Button_clicked"/>
    2424        </Window>
    25         <Window Type="MenuWidgets/Button" Name="orxonox/MissionThreeButton" >
    26             <Property Name="Text" Value="Mission 3" />
     25        <Window Type="MenuWidgets/Button" Name="orxonox/Mission3Button" >
     26            <Property Name="Text" Value="Pirate Attack" />
    2727            <Property Name="Visible" Value="False"/>
    2828            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    29             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.4375,0},{0.6,0},{0.4875,0}}" />
     29            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.26,0},{0.65,0},{0.31,0}}" />
    3030            <Property Name="Disabled" Value="True" />
    31             <Event Name="Clicked" Function="CampaignMenu.MissionThreeButton_clicked"/>
     31            <Event Name="Clicked" Function="CampaignMenu.Mission3Button_clicked"/>
    3232        </Window>
    33         <Window Type="MenuWidgets/Button" Name="orxonox/MissionFourButton" >
    34             <Property Name="Text" Value="Mission 4" />
     33        <Window Type="MenuWidgets/Button" Name="orxonox/Mission4Button" >
     34            <Property Name="Text" Value="Trip to Area 51" />
    3535            <Property Name="Visible" Value="False"/>
    3636            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    37             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.5125,0},{0.6,0},{0.5625,0}}" />
     37            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.34,0},{0.65,0},{0.39,0}}" />
    3838            <Property Name="Disabled" Value="True" />
    39             <Event Name="Clicked" Function="CampaignMenu.MissionFourButton_clicked"/>
     39            <Event Name="Clicked" Function="CampaignMenu.Mission4Button_clicked"/>
    4040        </Window>
     41        <Window Type="MenuWidgets/Button" Name="orxonox/Mission5Button" >
     42            <Property Name="Text" Value="Area 51 under Fire" />
     43            <Property Name="Visible" Value="False"/>
     44            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     45            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.42,0},{0.65,0},{0.47,0}}" />
     46            <Property Name="Disabled" Value="True" />
     47            <Event Name="Clicked" Function="CampaignMenu.Mission5Button_clicked"/>
     48        </Window>
     49        <Window Type="MenuWidgets/Button" Name="orxonox/Mission6Button" >
     50            <Property Name="Text" Value="Escape the Bastards" />
     51            <Property Name="Visible" Value="False"/>
     52            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     53            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.50,0},{0.65,0},{0.55,0}}" />
     54            <Property Name="Disabled" Value="True" />
     55            <Event Name="Clicked" Function="CampaignMenu.Mission6Button_clicked"/>
     56        </Window>
     57        <Window Type="MenuWidgets/Button" Name="orxonox/Mission7Button" >
     58            <Property Name="Text" Value="Expedition to Sector 5C" />
     59            <Property Name="Visible" Value="False"/>
     60            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     61            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.58,0},{0.65,0},{0.63,0}}" />
     62            <Property Name="Disabled" Value="True" />
     63            <Event Name="Clicked" Function="CampaignMenu.Mission7Button_clicked"/>
     64        </Window>
     65        <Window Type="MenuWidgets/Button" Name="orxonox/Mission8Button" >
     66            <Property Name="Text" Value="Shuttle under Attack" />
     67            <Property Name="Visible" Value="False"/>
     68            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     69            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.66,0},{0.65,0},{0.71,0}}" />
     70            <Property Name="Disabled" Value="True" />
     71            <Event Name="Clicked" Function="CampaignMenu.Mission8Button_clicked"/>
     72        </Window>
     73        <Window Type="MenuWidgets/Button" Name="orxonox/Mission9Button" >
     74            <Property Name="Text" Value="Retaliation" />
     75            <Property Name="Visible" Value="False"/>
     76            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     77            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.74,0},{0.65,0},{0.79,0}}" />
     78            <Property Name="Disabled" Value="True" />
     79            <Event Name="Clicked" Function="CampaignMenu.Mission9Button_clicked"/>
     80        </Window>
     81
     82
    4183        <Window Type="MenuWidgets/Button" Name="orxonox/CampaignMenuBackButton" >
    4284            <Property Name="Text" Value="Back" />
    4385            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    44             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.8,0},{0.6,0},{0.85,0}}" />
     86            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.85,0},{0.65,0},{0.9,0}}" />
    4587            <Event Name="Clicked" Function="CampaignMenu.CampaignMenuBackButton_clicked"/>
    4688        </Window>
  • code/trunk/data/gui/layouts/InGameMenu.layout

    r7801 r11052  
    99            <Property Name="Text" Value="Return to Game" />
    1010            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
     11            <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.2875,0},{0.6,0},{0.3375,0}}" />
     12            <Property Name="Alpha" Value="0.9" />
     13            <Event Name="Clicked" Function="InGameMenu.button_return_clicked"/>
     14        </Window>
     15        <Window Type="MenuWidgets/Button" Name="orxonox/InGameMenu_ReloadLevelButton" >
     16            <Property Name="Text" Value="Reload level" />
     17            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    1118            <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.3625,0},{0.6,0},{0.4125,0}}" />
    1219            <Property Name="Alpha" Value="0.9" />
    13             <Event Name="Clicked" Function="InGameMenu.button_return_clicked"/>
     20            <Event Name="Clicked" Function="InGameMenu.button_reloadLevel_clicked"/>
    1421        </Window>
    1522        <Window Type="MenuWidgets/Button" Name="orxonox/InGameMenu_MainMenuButton" >
    1623            <Property Name="Text" Value="Main Menu" />
    1724            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    18             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.4625,0},{0.6,0},{0.5125,0}}" />
     25            <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.4375,0},{0.6,0},{0.4875,0}}" />
    1926            <Property Name="Alpha" Value="0.9" />
    2027            <Event Name="Clicked" Function="InGameMenu.button_mainmenu_clicked"/>
     
    2330            <Property Name="Text" Value="Settings" />
    2431            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    25             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.5625,0},{0.6,0},{0.6125,0}}" />
     32            <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.5125,0},{0.6,0},{0.5625,0}}" />
    2633            <Property Name="Alpha" Value="0.9" />
    2734            <Event Name="Clicked" Function="InGameMenu.button_settings_clicked"/>
     
    3037            <Property Name="Text" Value="Quit" />
    3138            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
    32             <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.6625,0},{0.6,0},{0.7125,0}}" />
     39            <Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.5875,0},{0.6,0},{0.6375,0}}" />
    3340            <Property Name="Alpha" Value="0.9" />
    3441            <Event Name="Clicked" Function="InGameMenu.button_quit_clicked"/>
  • code/trunk/data/gui/scripts/CampaignMenu.lua

    r10262 r11052  
    88
    99function P.updateButtons()
    10     P.updateButton(0, winMgr:getWindow("orxonox/MissionOneButton"))
    11     P.updateButton(1, winMgr:getWindow("orxonox/MissionTwoButton"))
    12     P.updateButton(2, winMgr:getWindow("orxonox/MissionThreeButton"))
    13     P.updateButton(3, winMgr:getWindow("orxonox/MissionFourButton"))
     10    P.updateButton(0, winMgr:getWindow("orxonox/Mission1Button"))
     11    P.updateButton(1, winMgr:getWindow("orxonox/Mission2Button"))
     12    P.updateButton(2, winMgr:getWindow("orxonox/Mission3Button"))
     13    P.updateButton(3, winMgr:getWindow("orxonox/Mission4Button"))
     14    P.updateButton(4, winMgr:getWindow("orxonox/Mission5Button"))
     15    P.updateButton(5, winMgr:getWindow("orxonox/Mission6Button"))
     16    P.updateButton(6, winMgr:getWindow("orxonox/Mission7Button"))
     17    P.updateButton(7, winMgr:getWindow("orxonox/Mission8Button"))
     18    P.updateButton(8, winMgr:getWindow("orxonox/Mission9Button"))
     19
    1420
    1521    if (P.getIndexOfLastFinishedMission() == orxonox.LevelManager:getInstance():getNumberOfCampaignMissions() - 1) then
     
    5460end
    5561
    56 function P.MissionOneButton_clicked(e)
     62function P.Mission1Button_clicked(e)
    5763    P.loadLevel(P.FindLevel(0))
    5864end
    5965
    60 function P.MissionTwoButton_clicked(e)
     66function P.Mission2Button_clicked(e)
    6167    P.loadLevel(P.FindLevel(1))
    6268end
    6369
    64 function P.MissionThreeButton_clicked(e)
     70function P.Mission3Button_clicked(e)
    6571    P.loadLevel(P.FindLevel(2))
    6672end
    6773
    68 function P.MissionFourButton_clicked(e)
     74function P.Mission4Button_clicked(e)
    6975    P.loadLevel(P.FindLevel(3))
     76end
     77
     78function P.Mission5Button_clicked(e)
     79    P.loadLevel(P.FindLevel(4))
     80end
     81
     82function P.Mission6Button_clicked(e)
     83    P.loadLevel(P.FindLevel(5))
     84end
     85
     86function P.Mission7Button_clicked(e)
     87    P.loadLevel(P.FindLevel(6))
     88end
     89
     90function P.Mission8Button_clicked(e)
     91    P.loadLevel(P.FindLevel(7))
     92end
     93
     94function P.Mission9Button_clicked(e)
     95    P.loadLevel(P.FindLevel(8))
    7096end
    7197
  • code/trunk/data/gui/scripts/InGameMenu.lua

    r9016 r11052  
    77    P.multiplayerMode = "startClient"
    88
    9     --button are arranged in a 4x1 matrix, the left lower item is nil
     9    --button are arranged in a 5x1 matrix, the left lower item is nil
    1010    P:setButton(1, 1, {
    1111            ["button"] = winMgr:getWindow("orxonox/InGameMenu_ReturnButton"),
     
    1414
    1515    P:setButton(2, 1, {
     16            ["button"] = winMgr:getWindow("orxonox/InGameMenu_ReloadLevelButton"),
     17            ["callback"]  = P.button_reloadLevel_clicked
     18    })
     19
     20    P:setButton(3, 1, {
    1621            ["button"] = winMgr:getWindow("orxonox/InGameMenu_MainMenuButton"),
    1722            ["callback"]  = P.button_mainmenu_clicked
    1823    })
    1924
    20     P:setButton(3, 1, {
     25    P:setButton(4, 1, {
    2126            ["button"] = winMgr:getWindow("orxonox/InGameMenu_SettingsButton"),
    2227            ["callback"]  = P.button_settings_clicked
    2328    })
    2429
    25     P:setButton(4, 1, {
     30    P:setButton(5, 1, {
    2631            ["button"] = winMgr:getWindow("orxonox/InGameMenu_QuitButton"),
    2732            ["callback"]  = P.button_quit_clicked
     
    5459end
    5560
     61function P.button_reloadLevel_clicked(e)
     62    hideMenuSheet("InGameMenu")
     63    orxonox.execute("reloadLevel")
     64end
     65
    5666function P.button_return_clicked(e)
    5767    hideMenuSheet("InGameMenu")
  • code/trunk/data/gui/scripts/SheetManager.lua

    r8729 r11052  
    2424        cursor:show()
    2525    end
     26end
     27
     28function getLoadedSheets()
     29    local names = ""
     30    for name, sheet in pairs(loadedSheets) do
     31        names = names .. name
     32        names = names .. ","
     33    end
     34    return names
    2635end
    2736
  • code/trunk/data/levels/FPS_Level_HS14.oxw

    r10262 r11052  
    6767        maxshieldhealth     = "50"
    6868        shieldabsorption    = "0.8"
    69         reloadrate          = "100"
    70         reloadwaittime      = "0.1"
     69        shieldrechargerate  = "100"
     70        shieldrechargewaittime = "0.1"
    7171        name                = "Tanis1"
    7272        radarname           = "Light Destroyer" >
     
    197197        maxshieldhealth     = "200"
    198198        shieldabsorption    = "0.8"
    199         reloadrate          = "1"
    200         reloadwaittime      = "1"
     199        shieldrechargerate  = "1"
     200        shieldrechargewaittime = "1"
    201201        name                = "Tanis0"
    202202        radarname           = "Tanis big ship" >
     
    216216        maxshieldhealth     = "50"
    217217        shieldabsorption    = "0.8"
    218         reloadrate          = "1"
    219         reloadwaittime      = "1"
     218        shieldrechargerate  = "1"
     219        shieldrechargewaittime = "1"
    220220        name                = "Tanis0"
    221221        radarname           = "Pirate1" >
     
    239239        maxshieldhealth     = "50"
    240240        shieldabsorption    = "0.8"
    241         reloadrate          = "1"
    242         reloadwaittime      = "1"
     241        shieldrechargerate  = "1"
     242        shieldrechargewaittime = "1"
    243243        name                = "Tanis0"
    244244        radarname           = "Pirate2" >
  • code/trunk/data/levels/HeavyCruiser.oxw

    r9943 r11052  
    553553
    554554    <Pawn team=1 health=1000 initialhealth=1000 maxhealth=1000 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=10000 name=HeavyCruiser_body radarname = "HeavyCruiser" >
     555        <explosion>
     556            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_sparks2" scale=2.5 />
     557            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flame2" scale=2.5 />
     558            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" scale=12 />
     559            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" scale=2.5 />
     560
     561            <ExplosionPart offset="50,50,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_sparks2" scale=2.5 delay=0.3 />
     562            <ExplosionPart offset="50,50,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flame2" scale=2.5 delay=0.3 />
     563            <ExplosionPart offset="50,50,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" scale=12 delay=0.3 />
     564            <ExplosionPart offset="50,50,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" scale=2.5 delay=0.3 />
     565
     566            <ExplosionPart offset="50,-50,-50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_sparks2" scale=2.5 delay=0.6 />
     567            <ExplosionPart offset="50,-50,-50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flame2" scale=2.5 delay=0.6 />
     568            <ExplosionPart offset="50,-50,-50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" scale=12 delay=0.6 />
     569            <ExplosionPart offset="50,-50,-50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" scale=2.5 delay=0.6 />
     570
     571            <ExplosionPart offset="-50,0,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_sparks2" scale=2.5 delay=0.9 />
     572            <ExplosionPart offset="-50,0,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flame2" scale=2.5 delay=0.9 />
     573            <ExplosionPart offset="-50,0,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" scale=12 delay=0.9 />
     574            <ExplosionPart offset="-50,0,50" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" scale=2.5 delay=0.9 />
     575        </explosion>
    555576        <attached>
    556577            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_body.mesh" scale="40" />
     
    718739
    719740    <Pawn team=1 health=300 initialhealth=300 maxhealth=300 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmL radarname = "HIDDEN" >
     741
     742        <explosion>
     743            <ExplosionPart offset="-140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     744            <ExplosionPart offset="-140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     745            <ExplosionPart offset="-140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     746        </explosion>
    720747
    721748        <attached>
     
    758785
    759786    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmLfront radarname = "HIDDEN" >
     787
     788        <explosion>
     789            <ExplosionPart offset="-141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     790            <ExplosionPart offset="-141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     791            <ExplosionPart offset="-141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     792        </explosion>
     793
    760794        <attached>
    761795            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmLfront.mesh" scale="40" />
     
    772806
    773807    <Pawn team=1 health=300 initialhealth=300 maxhealth=300 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmR radarname = "HIDDEN" >
     808        <explosion>
     809            <ExplosionPart offset="140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     810            <ExplosionPart offset="140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     811            <ExplosionPart offset="140,0,115" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     812        </explosion>
    774813        <attached>
    775814            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmR.mesh" scale="40" />
     
    811850
    812851    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=sidearmRfront radarname = "HIDDEN" >
     852        <explosion>
     853            <ExplosionPart offset="141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     854            <ExplosionPart offset="141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     855            <ExplosionPart offset="141,15,-53" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     856        </explosion>
    813857        <attached>
    814858            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmRfront.mesh" scale="40" />
     
    825869
    826870    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_frontL radarname = "HIDDEN" >
     871        <explosion>
     872            <ExplosionPart offset="-80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     873            <ExplosionPart offset="-80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     874            <ExplosionPart offset="-80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     875        </explosion>
    827876        <attached>
    828877            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_frontL.mesh" scale="40" />
     
    836885
    837886    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_frontR radarname = "HIDDEN" >
     887        <explosion>
     888            <ExplosionPart offset="80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     889            <ExplosionPart offset="80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     890            <ExplosionPart offset="80,33,-320" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     891        </explosion>
    838892        <attached>
    839893            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_frontR.mesh" scale="40" />
     
    847901
    848902    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_partL radarname = "HIDDEN" >
     903        <explosion>
     904            <ExplosionPart offset="-94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     905            <ExplosionPart offset="-94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     906            <ExplosionPart offset="-94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     907        </explosion>
    849908        <attached>
    850909            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_partL.mesh" scale="40" />
     
    858917
    859918    <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_partR radarname = "HIDDEN" >
     919        <explosion>
     920            <ExplosionPart offset="94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     921            <ExplosionPart offset="94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     922            <ExplosionPart offset="94,33,-179" minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     923        </explosion>
    860924        <attached>
    861925            <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_partR.mesh" scale="40" />
  • code/trunk/data/levels/emptyLevel.oxw

    r10629 r11052  
    1313
    1414<?lua
    15   include("templates/spaceshipAssff2.oxt")
    16   include("templates/spaceshipPirate.oxt")
    1715  include("templates/spaceshipEscort.oxt")
    18   include("templates/spaceshipRing.oxt")
    19   include("templates/spaceshipSwallow.oxt")
    2016?>
    2117
  • code/trunk/data/levels/iJohnVane_TriptoArea51.oxw

    r10274 r11052  
    169169        maxshieldhealth     = "120"
    170170        shieldabsorption    = "0.8"
    171         reloadrate          = "1"
    172         reloadwaittime      = "1"
     171        shieldrechargerate  = "1"
     172        shieldrechargewaittime = "1"
    173173        name                = "cruiser"
    174174        radarname           = "Spacecruiser" >
  • code/trunk/data/levels/iiiJohnVane_EscapeTheBastards.oxw

    r9992 r11052  
    288288                    </WaypointController>
    289289        </controller>
     290        <explosion >
     291            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     292            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     293            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     294        </explosion>
    290295    </Pawn>
    291296
  • code/trunk/data/levels/includes/invaderWeapon.oxi

    r9943 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    2525        </links>
    2626      </WeaponPack>
    27     </weapons>
     27    </weaponpacks>
     28    <munition>
     29      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=0.5/>
     30    </munition>
  • code/trunk/data/levels/includes/invaderWeaponEnemy.oxi

    r9943 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    2525        </links>
    2626      </WeaponPack>
    27     </weapons>
     27    </weaponpacks>
     28    <munition>
     29      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=0.5/>
     30    </munition>
  • code/trunk/data/levels/includes/pickups.oxi

    r9348 r11052  
    7878/>
    7979
     80<PickupRepresentation
     81    name = "destroy"
     82    pickupName = "Destroy Pickup"
     83    pickupDescription = "Destroy all pickups you have."
     84    spawnerTemplate = "destroypickupRepresentation"
     85    inventoryRepresentation = "detroyPickup"
     86/>
     87
     88<PickupRepresentation
     89    name = "destroycarrier"
     90    pickupName = "Destroy Carrier Pickup"
     91    pickupDescription = "destroys you."
     92    spawnerTemplate = "destroycarrierpickupRepresentation"
     93    inventoryRepresentation = "destroyCarrierPickup"
     94/>
     95
    8096<!-- Speed pickups -->
    8197
     
    138154/>
    139155
     156<!-- Munition pickups -->
     157
     158<PickupRepresentation
     159    name = "smallmunitionpickup"
     160    pickupName = "Small munition"
     161    pickupDescription = "Gives a small amount of munition."
     162    spawnerTemplate = "smallmunitionpickupRepresentation"
     163    inventoryRepresentation = "SmallMunition"
     164/>
     165
     166<PickupRepresentation
     167    name = "mediummunitionpickup"
     168    pickupName = "Medium munition"
     169    pickupDescription = "Gives a medium amount of munition."
     170    spawnerTemplate = "mediummunitionpickupRepresentation"
     171    inventoryRepresentation = "MediumMunition"
     172/>
     173
     174<PickupRepresentation
     175    name = "hugemunitionpickup"
     176    pickupName = "Huge munition"
     177    pickupDescription = "Gives a huge amount of munition."
     178    spawnerTemplate = "hugemunitionpickupRepresentation"
     179    inventoryRepresentation = "HugeMunition"
     180/>
     181
    140182<!-- Pickup Collection pickups -->
    141183
     
    175217
    176218<PickupRepresentation
    177     name = "largedamageboostpickup"
    178     pickupName = "Large DamageBoost Pickup"
     219    name = "hugedamageboostpickup"
     220    pickupName = "Huge DamageBoost Pickup"
    179221    pickupDescription = "Multiplies the ship damage with 7."
    180     spawnerTemplate = "largedamageboostpickupRepresentation"
    181     inventoryRepresentation = "LargeDamageBoost"
     222    spawnerTemplate = "hugedamageboostpickupRepresentation"
     223    inventoryRepresentation = "HugeDamageBoost"
    182224/>
    183225
     
    207249    inventoryRepresentation = "HugeShrink"
    208250/>
     251
     252<!-- Boost Pickup -->
     253
     254<PickupRepresentation
     255    name = "smallboostpickup"
     256    pickupName = "Small Boost"
     257    pickupDescription = "Restores the boost by a bit"
     258    spawnerTemplate = "smallboostpickupRepresentation"
     259    inventoryRepresentation = "SmallBoost"
     260/>
     261
     262<PickupRepresentation
     263    name = "mediumboostpickup"
     264    pickupName = "Medium Boost"
     265    pickupDescription = "Restores the boost"
     266    spawnerTemplate = "mediumboostpickupRepresentation"
     267    inventoryRepresentation = "MediumBoost"
     268/>
     269
     270<PickupRepresentation
     271    name = "hugeboostpickup"
     272    pickupName = "Huge Boost"
     273    pickupDescription = "Restores the boost considerably"
     274    spawnerTemplate = "hugeboostpickupRepresentation"
     275    inventoryRepresentation = "HugeBoost"
     276/>
  • code/trunk/data/levels/includes/weaponSettingsAssff.oxi

    r10677 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2424            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
    2525          </attached>
    26           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    27           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     26          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     27          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    2828          <LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    2929        </Weapon>
     
    3434            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-104" yaw="-90" position="0,1.3,0.3" scale=0.6 />
    3535          </attached>
    36           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    37           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     36          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     37          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    3838          <LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" damage=23 />
    3939        </Weapon>
    4040        <Weapon>
    4141          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
    42           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     42          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=8 />
    4343        </Weapon>
    4444      </WeaponPack>
    45     </weapons>
     45    </weaponpacks>
     46    <munition>
     47      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=2 replenishinterval=7.5/>
     48      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     49      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     50    </munition>
  • code/trunk/data/levels/includes/weaponSettingsAssff2.oxi

    r10677 r11052  
    99      <WeaponSet firemode=2 />
    1010      <WeaponSet firemode=3 />
    11     </weaponsets>
    12     <weapons>
     11    </weaponsets> 
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2323            <BlinkingBillboard position="-1.9, -.5, -5.5" material="PE/lensflare" colour="0.128, 0.28, 1" amplitude=0.25 frequency=16 quadratic=0 />
    2424          </attached>
    25           <HsW01 mode=0 munitionpershot=0 delay=0.125 healthamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
    26           <HsW01 mode=0 munitionpershot=0 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
     25          <HsW01 mode=0 munitionpershot=1 delay=0.125 healthamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
     26          <HsW01 mode=0 munitionpershot=1 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
    2727          <LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" shielddamage=23 />
    2828        </Weapon>
     
    3232            <BlinkingBillboard position="1.9, -.5, -5.5" material="PE/lensflare" colour="0.128, 0.28, 1" amplitude=0.25 frequency=16 quadratic=0 />
    3333          </attached>
    34           <HsW01 mode=0 munitionpershot=0 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
    35           <HsW01 mode=0 munitionpershot=0 delay=0.125 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
     34          <HsW01 mode=0 munitionpershot=1 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
     35          <HsW01 mode=0 munitionpershot=1 delay=0.125 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
    3636          <LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" shielddamage=23 />
    3737        </Weapon>
    3838        <Weapon>
    3939          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=50 />
    40           <RocketFire mode=3 muzzleoffset="0,0,0" damage=100 />
     40          <RocketFire mode=3 muzzleoffset="0,0,0" damage=100 fuel=10 />
    4141        </Weapon>
    4242      </WeaponPack>
    43     </weapons>
     43    </weaponpacks>
     44    <munition>
     45      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     46      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     47      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     48    </munition>
  • code/trunk/data/levels/includes/weaponSettingsCollateral.oxi

    r9664 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2525            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="90" yaw="-90" position="-1.5, 1, -0.3" scale=0.6 /> <!-- MACHINE GUN -->
    2626          </attached>
    27           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    28           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    29           <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
     27          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     28          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     29          <LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    3030        </Weapon>
    3131
     
    3636            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="90" yaw="-90" position="1.8, 1, -0.3" scale=0.6 /> <!-- MACHINE GUN -->
    3737          </attached>
    38           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    39           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     38          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     39          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    4040          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    4141        </Weapon>
    4242        <Weapon>
    4343          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    44           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     44          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    4545        </Weapon>
    4646      </WeaponPack>
    47     </weapons>
     47    </weaponpacks>
     48    <munition>
     49      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     50      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     51      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     52    </munition>
  • code/trunk/data/levels/includes/weaponSettingsEscort.oxi

    r9763 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    1414        </links>
    1515        <Weapon>
    16           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="LaserBeam2.mesh" />
    17           <!--HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" projectileMesh="LaserBeam2.mesh" /-->
     16          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="LaserBeam2.mesh" />
    1817        </Weapon>
    1918        <Weapon>
    20           <HsW01 mode=0 munitionpershot=0 delay=0     damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="LaserBeam2.mesh" />
    21           <!--HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" projectileMesh="LaserBeam2.mesh" /-->
     19          <HsW01 mode=0 munitionpershot=1 delay=0     damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="LaserBeam2.mesh" />
    2220        </Weapon>
    2321      </WeaponPack>
     
    2725        </links>
    2826      </WeaponPack>
    29     </weapons>
     27    </weaponpacks>
     28    <munition>
     29      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     30    </munition>
  • code/trunk/data/levels/includes/weaponSettingsFPS.oxi

    r9348 r11052  
    1111      <WeaponSet firemode=1 />
    1212    </weaponsets>
    13     <weapons>
     13    <weaponpacks>
    1414      <WeaponPack firemode=0>
    1515        <links>
     
    4949        /-->
    5050      </WeaponPack>
    51     </weapons>
     51    </weaponpacks>
     52    <munition>
     53      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=5 replenishamount=1 replenishinterval=7.5/>
     54      <LightningMunition initialmagazines=2 maxmagazines=2 munitionpermagazine=8 />
     55    </munition>
  • code/trunk/data/levels/includes/weaponSettingsFPS_HS14.oxi

    r10262 r11052  
    1111      <WeaponSet firemode=1 />
    1212    </weaponsets>
    13     <weapons>
     13    <weaponpacks>
    1414      <WeaponPack firemode=0>
    1515        <links>
     
    4949        /-->
    5050      </WeaponPack>
    51     </weapons>
     51    </weaponpacks>
     52    <munition>
     53      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=5 replenishamount=1 replenishinterval=7.5/>
     54      <LightningMunition initialmagazines=2 maxmagazines=2 munitionpermagazine=8 />
     55    </munition>
  • code/trunk/data/levels/includes/weaponSettingsFS15.oxi

    r10622 r11052  
    1212  <WeaponSet firemode=4 />
    1313</weaponsets>
    14 <weapons>
     14<weaponpacks>
    1515  <WeaponPack>
    1616    <links>
     
    3838      <GravityBombFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    3939      <RocketFireOld mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
    40       <RocketFire mode=4 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     40      <RocketFire mode=4 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    4141    </Weapon>
    4242  </WeaponPack>
     
    4949    </Weapon-->
    5050  </WeaponPack>
    51 </weapons>
     51</weaponpacks>
     52<munition>
     53  <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     54  <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     55  <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     56  <GravityBombMunition initialmagazines=3 maxmagazines=3 munitionpermagazine=1 />
     57</munition>
  • code/trunk/data/levels/includes/weaponSettingsGhost.oxi

    r8857 r11052  
    1111      <WeaponSet firemode=2 />
    1212    </weaponsets>
    13     <weapons>
     13    <weaponpacks>
    1414      <WeaponPack>
    1515        <links>
     
    1919        </links>
    2020        <Weapon>
    21           <HsW01 mode=0 munitionpershot=0 healthdamage=3.14159 delay=0 material="Flares/point_lensflare" />
    22           <HsW01 mode=0 munitionpershot=0 healthdamage=3.14159 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
     21          <HsW01 mode=0 munitionpershot=1 healthdamage=3.14159 delay=0 material="Flares/point_lensflare" />
     22          <HsW01 mode=0 munitionpershot=1 healthdamage=3.14159 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
    2323          <LightningGun mode=1 muzzleoffset="0,0,0" damage=30 shielddamage=10 />
    2424        </Weapon>
    2525        <Weapon>
    26           <HsW01 mode=0 munitionpershot=0 damage=3.14159 delay=0  material="Flares/point_lensflare" />
    27           <HsW01 mode=0 munitionpershot=0 damage=3.14159 delay=0.125 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
     26          <HsW01 mode=0 munitionpershot=1 damage=3.14159 delay=0  material="Flares/point_lensflare" />
     27          <HsW01 mode=0 munitionpershot=1 damage=3.14159 delay=0.125 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
    2828          <LightningGun mode=1 muzzleoffset="0,0,0" damage=30 shielddamage=10 />
    2929        </Weapon>
    3030        <Weapon>
    31           <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=50 />
     31          <SimpleRocketFire mode=2 munitionpershot=1 muzzleoffset="0,0,0" damage=50 />
    3232        </Weapon>
    3333        <Weapon>
    34           <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=50 delay=0.1 />
     34          <SimpleRocketFire mode=2 munitionpershot=1 muzzleoffset="0,0,0" damage=50 delay=0.1 />
    3535        </Weapon>
    3636      </WeaponPack>
    37     </weapons>
     37    </weaponpacks>
     38    <munition>
     39      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     40      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     41      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     42    </munition>
  • code/trunk/data/levels/includes/weaponSettingsH2.oxi

    r7679 r11052  
    88      <WeaponSet firemode=1 />
    99    </weaponsets>
    10     <weapons>
     10    <weaponpacks>
    1111      <WeaponPack>
    1212        <links>
     
    1818            <Model mesh="hs-w01s.mesh" roll="180" position="0.1, 0.0, 0.0" scale=2 />
    1919          </attached>
    20           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.8, 0.9,-4" />
    21           <HsW01 mode=0 munitionpershot=0 delay=0     damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.8, 0.9,-4" />
     20          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.8, 0.9,-4" />
     21          <HsW01 mode=0 munitionpershot=1 delay=0     damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.8, 0.9,-4" />
    2222        </Weapon>
    2323        <Weapon>
     
    2626            <Model mesh="hs-w01s.mesh" roll="180" position="-0.1, 0.0, 0.0" scale=2 />
    2727          </attached>
    28           <HsW01 mode=0 munitionpershot=0 delay=0     damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.8, 0.9, -4.0" />
    29           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.8, 0.9, -4.0" />
     28          <HsW01 mode=0 munitionpershot=1 delay=0     damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.8, 0.9, -4.0" />
     29          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.8, 0.9, -4.0" />
    3030        </Weapon>
    3131      </WeaponPack>
     
    4242        </Weapon>
    4343      </WeaponPack>
    44     </weapons>
     44    </weaponpacks>
     45    <munition>
     46      <LaserMunition initialmagazines=10 maxmagazines=10 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     47    </munition>
    4548
  • code/trunk/data/levels/includes/weaponSettingsHXY.oxi

    r8755 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    2424        </Weapon>
    2525      </WeaponPack>
    26     </weapons>
     26    </weaponpacks>
     27    <munition>
     28      <LaserMunition initialmagazines=10 maxmagazines=10 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     29      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     30    </munition>
  • code/trunk/data/levels/includes/weaponSettingsHeartAttack.oxi

    r10622 r11052  
    1111      <WeaponSet firemode=3 />
    1212    </weaponsets>
    13     <weapons>
     13    <weaponpacks>
    1414      <WeaponPack>
    1515        <links>
     
    2020        </links>
    2121        <Weapon>
    22           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -11.4, 0, -5" />
    23           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -11.4, 0, -5" />
    24           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 11.4, 0, -5" />
    25           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 11.4, 0, -5" />
     22          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -11.4, 0, -5" />
     23          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -11.4, 0, -5" />
     24          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 11.4, 0, -5" />
     25          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 11.4, 0, -5" />
    2626        </Weapon>
    2727        <Weapon>
    28           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -15, 1.6, -2" />
    29           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -15, 1.6, -2" />
    30           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 15, 1.6, -2" />
    31           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 15, 1.6, -2" />
     28          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -15, 1.6, -2" />
     29          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" -15, 1.6, -2" />
     30          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 15, 1.6, -2" />
     31          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 15, 1.6, -2" />
    3232        </Weapon>
    3333        <Weapon>
    34           <LaserFire mode=1 munitionpershot=0 muzzleoffset="2.2,6,16" damage=30 shielddamage=20 />
    35           <LaserFire mode=1 munitionpershot=0 muzzleoffset="-2.2,6,16" damage=30 shielddamage=20 />
    36           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     34          <LaserFire mode=1 munitionpershot=1 muzzleoffset="2.2,6,16" damage=30 shielddamage=20 />
     35          <LaserFire mode=1 munitionpershot=1 muzzleoffset="-2.2,6,16" damage=30 shielddamage=20 />
     36          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    3737          <GravityBombFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    3838        </Weapon>
     
    4040        </Weapon>
    4141      </WeaponPack>
    42       <WeaponPack>
    43         <links>
    44           <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
    45         </links>
    46         <!--Weapon>
    47           <EnergyDrink mode=0 munitionpershot=0 delay=0  material="Flares/point_lensflare"muzzleoffset="2,-0.2,-1" />
    48         </Weapon-->
    49       </WeaponPack>
    50     </weapons>
     42    </weaponpacks>
     43    <munition>
     44      <LaserMunition initialmagazines=20 maxmagazines=20 munitionpermagazine=10 replenishamount=1 replenishinterval=6.0/>
     45      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     46      <RocketMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=1 />
     47      <GravityBombMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     48    </munition>
  • code/trunk/data/levels/includes/weaponSettingsHeavyCruiser.oxi

    r9943 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2424            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
    2525          </attached>
    26           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    27           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     26          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     27          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    2828          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    2929        </Weapon>
     
    3434            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,-10.3" scale=0.6 />
    3535          </attached>
    36           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    37           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     36          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     37          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    3838          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    3939        </Weapon>
    4040        <Weapon>
    4141          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    42           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     42          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    4343        </Weapon>
    4444      </WeaponPack>
    45       <WeaponPack>
    46         <links>
    47           <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
    48         </links>
    49         <!--Weapon>
    50           <EnergyDrink mode=0 munitionpershot=0 delay=0  material="Flares/point_lensflare"muzzleoffset="2,-0.2,-1" />
    51         </Weapon-->
    52       </WeaponPack>
    53     </weapons>
     45    </weaponpacks>
     46    <munition>
     47      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=5.0/>
     48      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     49      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     50    </munition>
  • code/trunk/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi

    r9943 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2121          <attached>
    2222          </attached>
    23           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    24           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     23          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     24          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    2525          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    2626        </Weapon>
     
    2828          <attached>
    2929          </attached>
    30           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    31           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     30          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     31          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    3232          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    3333        </Weapon>
    3434        <Weapon>
    3535          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    36           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     36          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    3737        </Weapon>
    3838      </WeaponPack>
     
    4545        </Weapon-->
    4646      </WeaponPack>
    47     </weapons>
     47    </weaponpacks>
     48    <munition>
     49      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=7.0/>
     50      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     51      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     52    </munition>
  • code/trunk/data/levels/includes/weaponSettingsImmTest.oxi

    r8706 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    4444        <Weapon>
    4545          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" shielddamage=50 />
    46           <RocketFire mode=3 muzzleoffset="0,0,0" healthdamage=80 shielddamage=20 />
     46          <RocketFire mode=3 muzzleoffset="0,0,0" healthdamage=80 shielddamage=20 fuel=10 />
    4747        </Weapon>
    4848      </WeaponPack>
     
    5555        </Weapon-->
    5656      </WeaponPack>
    57     </weapons>
     57    </weaponpacks>
     58    <munition>
     59      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=7.0/>
     60      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     61      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     62    </munition>
  • code/trunk/data/levels/includes/weaponSettingsPirate.oxi

    r7679 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    1414        </links>
    1515        <Weapon>
    16           <HsW01 mode=0 munitionpershot=0 delay=0     damage=2.5 material="Flares/point_lensflare" />
    17           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
     16          <HsW01 mode=0 munitionpershot=1 delay=0     damage=2.5 material="Flares/point_lensflare" />
     17          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
    1818        </Weapon>
    1919        <Weapon>
    20           <HsW01 mode=0 munitionpershot=0 delay=0     damage=2.5 material="Flares/point_lensflare" />
    21           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
     20          <HsW01 mode=0 munitionpershot=1 delay=0     damage=2.5 material="Flares/point_lensflare" />
     21          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=2.5 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
    2222        </Weapon>
    2323      </WeaponPack>
    24     </weapons>
     24    </weaponpacks>
     25    <munition>
     26      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=7.0/>
     27    </munition>
  • code/trunk/data/levels/includes/weaponSettingsRing.oxi

    r10650 r11052  
    1 <weaponslots>
    2   <WeaponSlot position="11,0,-7" />
    3   <WeaponSlot position="0,0,-7" />
    4   <WeaponSlot position="-11,0,-7" />
    5 </weaponslots>
    6 <weaponsets>
    7   <WeaponSet firemode=0 />
    8   <WeaponSet firemode=1 />
    9 </weaponsets>
    10 <weapons>
    11   <WeaponPack>
    12     <links>
    13       <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
    14       <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
    15     </links>
    16     <Weapon>
    17       <IceGun mode=0 munitionpershot=0 delay=0.125 damage=9.3 muzzleoffset="11,0,-3" freezefactor=0.5 freezetime=2.0 />
    18     </Weapon>
    19     <Weapon>
    20       <IceGun mode=0 munitionpershot=0 delay=0.125 damage=9.3 muzzleoffset=" -11,0,-3" freezefactor=0.5 freezetime=2.0 />
    21     </Weapon>
    22     <Weapon>
    23       <GravityBombFire mode=1 munitionpershot=0 delay=0.125 damage=3 muzzleoffset="0,0,-7"/>
    24     </Weapon>
    25   </WeaponPack>
    26 </weapons>
     1    <weaponslots>
     2      <WeaponSlot position="11,0,-7" />
     3      <WeaponSlot position="-11,0,-7" />
     4      <WeaponSlot position="0,0,-7" />
     5    </weaponslots>
     6    <weaponsets>
     7      <WeaponSet firemode=0 />
     8      <WeaponSet firemode=1 />
     9      <WeaponSet firemode=2 />
     10    </weaponsets>
     11    <weaponpacks>
     12      <WeaponPack>
     13        <links>
     14          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
     15          <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
     16          <DefaultWeaponmodeLink firemode=2 weaponmode=2 />
     17        </links>
     18        <Weapon>
     19          <LaserFire mode=0 munitionpershot=1 damage=10 shielddamage=5 />
     20          <IceGun mode=1 munitionpershot=1 delay=0.125 damage=9.3 muzzleoffset="11,0,-3" freezefactor=0.5 freezetime=2.0 />
     21        </Weapon>
     22        <Weapon>
     23          <LaserFire mode=0 munitionpershot=1 damage=10 shielddamage=5 />
     24          <IceGun mode=1 munitionpershot=1 delay=0.125 damage=9.3 muzzleoffset=" -11,0,-3" freezefactor=0.5 freezetime=2.0 />
     25        </Weapon>
     26        <Weapon>
     27          <GravityBombFire mode=2 munitionpershot=1 delay=0.125 damage=3 muzzleoffset="0,0,-7"/>
     28        </Weapon>
     29      </WeaponPack>
     30    </weaponpacks>
     31    <munition>
     32      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     33      <GravityBombMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=1 />
     34      <IceMunition initialmagazines=16 maxmagazines=16 munitionpermagazine=1 />
     35    </munition>
  • code/trunk/data/levels/includes/weaponSettingsSpacecruiser.oxi

    r9348 r11052  
    1414      <WeaponSet firemode=3 />
    1515    </weaponsets>
    16     <weapons>
     16    <weaponpacks>
    1717      <WeaponPack>
    1818        <links>
     
    2828            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
    2929          </attached>
    30           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    31           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     30          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     31          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    3232          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    3333        </Weapon>
     
    3838            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-104" yaw="-90" position="0,1.3,0.3" scale=0.6 />
    3939          </attached>
    40           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    41           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     40          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     41          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    4242          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    4343        </Weapon>
    4444        <Weapon>
    4545          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    46           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     46          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    4747        </Weapon>
    4848        <Weapon>
     
    5252            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
    5353          </attached>
    54           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    55           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     54          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     55          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    5656          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    5757        </Weapon>
     
    6262            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-104" yaw="-90" position="0,1.3,0.3" scale=0.6 />
    6363          </attached>
    64           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    65           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     64          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     65          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    6666          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    6767        </Weapon>
     
    7272            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
    7373          </attached>
    74           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    75           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     74          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     75          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    7676          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    7777        </Weapon>
     
    8282            <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-104" yaw="-90" position="0,1.3,0.3" scale=0.6 />
    8383          </attached>
    84           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    85           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     84          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     85          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    8686          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    8787        </Weapon>
    8888      </WeaponPack>
    89     </weapons>
     89    </weaponpacks>
     90    <munition>
     91      <LaserMunition initialmagazines=20 maxmagazines=20 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     92      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     93      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     94    </munition>
  • code/trunk/data/levels/includes/weaponSettingsSwallow.oxi

    r10629 r11052  
    22      <WeaponSlot position=" 8,1.66,-17.5" />
    33      <WeaponSlot position="-8,1.66,-17.5" />
     4      <WeaponSlot position="0,1.66,-17.5" />
    45    </weaponslots>
    56    <weaponsets>
     
    78      <WeaponSet firemode=1 />
    89    </weaponsets>
    9     <weapons>
     10    <weaponpacks>
    1011      <WeaponPack>
    1112        <links>
     
    1415        </links>
    1516        <Weapon>
    16           <SplitGun mode=0 munitionpershot=0 damage=6.0 muzzleoffset="0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
     17          <SplitGun mode=0 munitionpershot=1 damage=6.0 muzzleoffset="0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
     18          <LaserFire mode=1 munitionpershot=1 damage=10.0 muzzleoffset="0.5,0.6,1.7" />
    1719        </Weapon>
    1820        <Weapon>
    19           <SplitGun mode=0 munitionpershot=0 damage=6.0 muzzleoffset="-0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
    20         </Weapon>
     21          <SplitGun mode=0 munitionpershot=1 damage=6.0 muzzleoffset="-0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
     22          <LaserFire mode=1 munitionpershot=1 damage=10.0 muzzleoffset="-0.5,0.6,1.7" />
     23        </Weapon>       
    2124      </WeaponPack>
    22     </weapons>
     25    </weaponpacks>
     26    <munition>
     27      <LaserMunition initialmagazines=20 maxmagazines=20 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     28      <SplitMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     29    </munition>
  • code/trunk/data/levels/includes/weaponSettingsTransporter.oxi

    r8891 r11052  
    77      <WeaponSet firemode=1 />
    88    </weaponsets>
    9     <weapons>
     9    <weaponpacks>
    1010      <WeaponPack>
    1111        <links>
     
    1414        </links>
    1515        <Weapon>
    16           <HsW01 mode=0 munitionpershot=0 delay=0.1   damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    17           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     16          <HsW01 mode=0 munitionpershot=1 delay=0.1   damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     17          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    1818          <LightningGun mode=1 muzzleoffset="0,0,0"   damage=3.14159 shielddamage=20 />
    1919        </Weapon>
    2020        <Weapon>
    21           <HsW01 mode=0 munitionpershot=0 delay=0.1   damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    22           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     21          <HsW01 mode=0 munitionpershot=1 delay=0.1   damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     22          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    2323          <LightningGun mode=1 muzzleoffset="0,0,0"   damage=3.14159 shielddamage=20 />
    2424        </Weapon>
    2525      </WeaponPack>
    26     </weapons>
     26    </weaponpacks>
     27    <munition>
     28      <LaserMunition initialmagazines=20 maxmagazines=20 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     29      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     30    </munition>
  • code/trunk/data/levels/includes/weaponSettingsTurret.oxi

    r10216 r11052  
    55      <WeaponSet firemode=0 />
    66    </weaponsets>
    7     <weapons>
     7    <weaponpacks>
    88      <WeaponPack>
    99        <links>
     
    2020        </Weapon>
    2121      </WeaponPack>
    22     </weapons>
     22    </weaponpacks>
     23    <munition>
     24      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     25    </munition>
  • code/trunk/data/levels/includes/weaponSettingsTurret1.oxi

    r10262 r11052  
    55      <WeaponSet firemode=0 />
    66    </weaponsets>
    7     <weapons>
     7    <weaponpacks>
    88      <WeaponPack>
    99        <links>
     
    2020        </Weapon>
    2121      </WeaponPack>
    22     </weapons>
     22    </weaponpacks>
     23    <munition>
     24      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     25    </munition>
  • code/trunk/data/levels/includes/weaponSettingsbigship.oxi

    r9664 r11052  
    1010      <WeaponSet firemode=3 />
    1111    </weaponsets>
    12     <weapons>
     12    <weaponpacks>
    1313      <WeaponPack>
    1414        <links>
     
    2121          <attached>
    2222          </attached>
    23           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
    24           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
     23          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
     24          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
    2525          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
    2626        </Weapon>
     
    2929           
    3030          </attached>
    31           <HsW01 mode=0 munitionpershot=0 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
    32           <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
     31          <HsW01 mode=0 munitionpershot=1 delay=0     damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
     32          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
    3333          <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
    3434        </Weapon>
    3535        <Weapon>
    3636          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
    37           <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
     37          <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 fuel=10 />
    3838        </Weapon>
    3939      </WeaponPack>
     
    4646        </Weapon-->
    4747      </WeaponPack>
    48     </weapons>
     48    </weaponpacks>
     49    <munition>
     50      <LaserMunition initialmagazines=12 maxmagazines=12 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
     51      <LightningMunition initialmagazines=4 maxmagazines=4 munitionpermagazine=8 />
     52      <RocketMunition initialmagazines=5 maxmagazines=5 munitionpermagazine=1 />
     53    </munition>
  • code/trunk/data/levels/kecks.oxw

    r10262 r11052  
    348348
    349349
    350                         <Pawn health=20 position="0, 112900, 0" direction="0,-1,0" name="boxDestroyed" collisionType=dynamic mass=100000  radarname = "Gravitation Box" >
     350                        <Pawn health=20 position="0, 112900, 0" direction="0,-1,0" name="boxDestroyed" collisionType=dynamic mass=100000  radarname = "Gravitation Box" explosionchunks=0 >
    351351                                <attached>
    352352                                        <Model position="0,0,0" scale="10" mesh="CuboidBody.mesh"  />
     
    359359                                        </WaypointController>
    360360                                </controller>
     361                                <explosion >
     362                        <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     363                        <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     364                        <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     365                        </explosion>
    361366                         </Pawn>
    362367
  • code/trunk/data/levels/missionOne.oxw

    r9985 r11052  
    526526            </WaypointController>
    527527        </controller>
     528        <explosion >
     529            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     530            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     531            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     532        </explosion>
    528533    </Pawn>
    529534
     
    544549            </WaypointController>
    545550        </controller>
     551        <explosion >
     552            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     553            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     554            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     555        </explosion>
    546556    </Pawn>
    547557
     
    562572            <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
    563573        </collisionShapes>
     574        <explosion >
     575            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     576            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     577            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     578        </explosion>
    564579    </Pawn>
    565580
     
    580595            </WaypointController>
    581596        </controller>
     597        <explosion >
     598            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     599            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     600            <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     601        </explosion>
    582602    </Pawn>
    583603
     
    10801100        maxshieldhealth     = "120"
    10811101        shieldabsorption    = "0.8"
    1082         reloadrate          = "1"
    1083         reloadwaittime      = "1"
     1102        shieldrechargerate  = "1"
     1103        shieldrechargewaittime = "1"
    10841104        name                = "cruiser"
    10851105        radarname           = "Spacecruiser" >
     
    16591679
    16601680<!-- @Triggers: HACK. The attacktrigger6 Event is created, but does not trigger the Script.
    1661 (WTF?) TODO: looks like a BUG 
     1681(WTF?) TODO: looks like a BUG
    16621682Thus a distanceTrigger is created, that gets enabled, when the inner trigger gets activated.
    16631683Due to the large radius it is likely that it actually gets triggered.
    16641684-->
    16651685
    1666   <DistanceTrigger name="testDistanceTrigger" position="0,0,0" distance=10000 target="SpaceShip" stayActive="true" delay=37.0>
     1686  <DistanceTrigger name="testDistanceTrigger" position="0,0,0" distance=10000 target="Pawn" stayActive="true" delay=37.0>
    16671687    <EventTrigger name="testEventTrigger" activations="1" stayactive="true" delay=0.1>
    16681688      <events>
  • code/trunk/data/levels/notifications.oxw

    r9348 r11052  
    1919    <?lua include("includes/notifications.oxi") ?>
    2020
     21    <NotificationQueueCEGUI
     22      name="narrative"
     23      targets="simpleNotification,commandNotification"
     24      size=3
     25      displayTime=3.9
     26      position="0.2, 0, 0.1, 0"
     27      fontSize="23"
     28      fontColor="0.3, 1, 0.2, 0.8"
     29      alignment="HorzCentred"
     30      displaySize="0.6, 0, 0, 0"
     31      />
     32
    2133    <Scene
    2234        ambientlight = "0.5, 0.5, 0.5"
     
    2537
    2638    <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" />
     39    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
    2740
    28     <CommandNotification preMessage="Open the PickupInventory by pressing '" postMessage="'." command="OrxonoxOverlay toggleVisibility PickupInventory">
     41    <CommandNotification preMessage="Open the PickupInventory by pressing '" postMessage="'." command="OrxonoxOverlay show PickupInventory">
    2942        <events>
    3043            <trigger>
     
    4457    <Billboard position="0,0,100" colour="1.0,0,1.0" material="Examples/Flare" />
    4558
    46     <?lua
    47       for i = 1, 10, 1 do
    48     ?>
    49         <SpawnPoint position="<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
    50     <?lua end ?>
    51 
    5259  </Scene>
    5360</Level>
  • code/trunk/data/levels/pickups.oxw

    r9939 r11052  
    3636    <SpawnPoint position="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
    3737
     38    <!-- Boost pickup -->
     39   
     40    <PickupSpawner pickup=smallboostpickup position="-25,-125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     41    <PickupSpawner pickup=mediumboostpickup position="0,-125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     42    <PickupSpawner pickup=hugeboostpickup position="25,-125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     43
     44    <!-- DamageBoost pickup -->
     45   
     46    <PickupSpawner pickup=smalldamageboostpickup position="-25,-100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     47    <PickupSpawner pickup=mediumdamageboostpickup position="0,-100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     48    <PickupSpawner pickup=hugedamageboostpickup position="25,-100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     49
     50    <!-- Munition pickups -->
     51
     52    <PickupSpawner pickup=smallmunitionpickup position="-25,-75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     53    <PickupSpawner pickup=mediummunitionpickup position="0,-75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     54    <PickupSpawner pickup=hugemunitionpickup position="25,-75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />   
     55
     56    <!-- Shrink pickup -->
     57
     58    <PickupSpawner pickup=smallshrinkpickup position="-25,-50,-125" triggerDistance="20" respawnTime="60" maxSpawnedItems="5" />
     59    <PickupSpawner pickup=mediumshrinkpickup position="0,-50,-125" triggerDistance="20" respawnTime="60" maxSpawnedItems="5" />
     60    <PickupSpawner pickup=hugeshrinkpickup position="25,-50,-125" triggerDistance="20" respawnTime="60" maxSpawnedItems="5" />   
     61
    3862    <!-- Shield pickups -->
    3963
     
    6387
    6488    <!-- Meta pickups -->
    65 
    66     <Template name=usemetapickup baseclass=MetaPickup>
    67       <MetaPickup representation="use" metaType="use" />
    68     </Template>
    69    
    70     <Template name=dropmetapickup baseclass=MetaPickup>
    71       <MetaPickup representation="drop" metaType="drop" />
    72     </Template>
    73    
    74     <Template name=destroymetapickup baseclass=MetaPickup>
    75       <MetaPickup metaType="destroy" />
    76     </Template>
    77    
    78     <Template name=destroycarriermetapickup baseclass=MetaPickup>
    79       <MetaPickup metaType="destroyCarrier" />
    80     </Template>
    8189   
    8290    <PickupSpawner pickup=usemetapickup position="-25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
     
    9199    <!-- Drone pickup -->
    92100   
    93     <PickupSpawner pickup=dronepickup position="-50,50,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    94    
    95     <!-- DamageBoost pickup -->
    96    
    97     <PickupSpawner pickup=smalldamageboostpickup position="-50,75,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    98     <PickupSpawner pickup=mediumdamageboostpickup position="-50,100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    99     <PickupSpawner pickup=largedamageboostpickup position="-50,125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
     101    <PickupSpawner pickup=dronepickup position="-25,100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
    100102   
    101103    <!-- Other pickups -->
     
    103105    <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
    104106    <PickupRepresentation
    105       name = "MediumHealth"
    106       pickupName = "Medium Health Pack"
    107       pickupDescription = "Once used adds a medium amout of health to the ship."
     107      name = "ContinousHealth"
     108      pickupName = "Continous Health Pack"
     109      pickupDescription = "While useing adds a medium amout of health to the ship."
    108110      spawnerTemplate = "mediumhealthpickupRepresentation"
    109111      inventoryRepresentation = "MediumHealth"
     
    111113
    112114    <Template name=continuoushealthpickup baseclass=HealthPickup>
    113       <HealthPickup representation="MediumHealth" health=500 activationType=immediate healthRate=10 durationType=continuous />
     115      <HealthPickup representation="ContinousHealth" health=500 activationType=immediate healthRate=10 durationType=continuous />
    114116    </Template>
    115117   
    116118    <PickupSpawner pickup=continuoushealthpickup position="-50,0,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    117 
    118     <PickupSpawner pickup="smallshrinkpickup" position="-25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    119     <PickupSpawner pickup="mediumshrinkpickup" position="0,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    120     <PickupSpawner pickup="hugeshrinkpickup" position="25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5" />
    121119   
    122120    <!-- @Objects: 4 boxes (uncontrolled pawns) -->
     
    177175    </Pawn>
    178176
    179     <!--StaticEntity position="0,-200,0" direction="0,-1,0" collisionType=static mass=500 friction=0.01 >
    180       <attached>
    181         <Model position="0,0,0" mesh="cube.mesh" scale3D="10,10,10" />
    182       </attached>
    183       <collisionShapes>
    184         <BoxCollisionShape position="0,0,0" halfExtents="10,10,10" />
    185       </collisionShapes>
    186   </StaticEntity-->
    187 
    188177  </Scene>
    189178</Level>
  • code/trunk/data/levels/presentationHS13.oxw

    r10258 r11052  
    162162        maxshieldhealth     = "120"
    163163        shieldabsorption    = "0.8"
    164         reloadrate          = "1"
    165         reloadwaittime      = "1"
     164        shieldrechargerate  = "1"
     165        shieldrechargewaittime = "1"
    166166        name                = "Tanis1"
    167167        radarname           = "Tanis Cruiser" >
  • code/trunk/data/levels/shieldTest.oxw

    r9016 r11052  
    4343    shieldabsorption= 1
    4444
    45     reloadrate= "10"
    46     reloadwaittime= 1
     45    shieldrechargerate = "10"
     46    shieldrechargewaittime = 1
    4747
    4848>
  • code/trunk/data/levels/templates/FPS.oxt

    r10258 r11052  
    2424      <BoxCollisionShape position="0,-25,0" halfExtents="15,20,15" />
    2525    </collisionShapes>
     26    <explosion >
     27      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     28      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     29      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     30    </explosion>
    2631
    2732    <camerapositions>
  • code/trunk/data/levels/templates/FPS_HS14.oxt

    r10262 r11052  
    2929      <CameraPosition position="-1,1,2.2" drag=false mouselook=true />
    3030    </camerapositions>
     31    <explosion >
     32      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     33      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     34      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     35    </explosion>
    3136
    3237    <?lua
  • code/trunk/data/levels/templates/HeavyCruiser.oxt

    r10216 r11052  
    1919   maxshieldhealth     = 50
    2020   shieldabsorption    = 0.8
    21    reloadrate          = 1
    22    reloadwaittime      = 1
     21   shieldrechargerate  = 1
     22   shieldrechargewaittime = 1
    2323
    2424   primaryThrust     = 300
     
    383383        <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="HOOK, frontR"/> -->
    384384    </collisionShapes>
     385    <explosion >
     386      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     387      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     388      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     389    </explosion>
    385390<?lua
    386391  include("../includes/weaponSettingsHeavyCruiser.oxi")
  • code/trunk/data/levels/templates/HeavyCruiserBody.oxt

    r9943 r11052  
    1717   maxshieldhealth     = 500
    1818   shieldabsorption    = 0.8
    19    reloadrate          = 1
    20    reloadwaittime      = 1
     19   shieldrechargerate  = 1
     20   shieldrechargewaittime = 1
    2121
    2222   primaryThrust     = 300
     
    210210        <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="frontR, HOOK"/> -->
    211211    </collisionShapes>
     212    <explosion >
     213      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     214      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     215      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     216    </explosion>
    212217<?lua
    213218  include("../includes/weaponSettingsHeavyCruiserBody.oxi")
  • code/trunk/data/levels/templates/ModularSpaceShipTest.oxt

    r10262 r11052  
    1515   maxshieldhealth     = 50
    1616   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 100
     
    116116        <BoxCollisionShape position="0,0,0" halfExtents="30,30,30" />
    117117    </collisionShapes>
     118
     119    <explosion >
     120      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     121      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     122      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     123    </explosion>
    118124<?lua
    119125  include("../includes/weaponSettingsAssff.oxi")
  • code/trunk/data/levels/templates/bigship.oxt

    r9664 r11052  
    1515   maxshieldhealth     = 50
    1616   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 30
     
    8383     
    8484    </collisionShapes>
     85
     86    <explosion >
     87      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     88      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     89      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     90
     91      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     92      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     93      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     94      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     95      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     96    </explosion>
    8597<?lua
    8698  include("../includes/weaponSettingsbigship.oxi")
  • code/trunk/data/levels/templates/enemyInvader.oxt

    r9954 r11052  
    1515   maxshieldhealth     = 10
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 150
     
    5555      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
    5656    </collisionShapes>
     57    <explosion >
     58      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     59      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     61
     62      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     63      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     65      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     66      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     67    </explosion>
    5768<?lua
    5869  include("../includes/invaderWeapon.oxi")
     
    7788   maxshieldhealth     = 20
    7889   shieldabsorption    = 0.9
    79    reloadrate          = 1
    80    reloadwaittime      = 1
     90   shieldrechargerate  = 1
     91   shieldrechargewaittime = 1
    8192
    8293   primaryThrust     = 150
  • code/trunk/data/levels/templates/pickupRepresentationTemplates.oxt

    r9348 r11052  
     1<!-- Boost pickups: -->
     2
     3<Template name=smallboostpickupRepresentation>
     4    <PickupRepresentation>
     5        <spawner-representation>
     6            <StaticEntity>
     7                <attached>
     8                    <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Sphere2" scale=0.1>
     9                        <attached>
     10                            <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Flash" scale=0.3 />
     11                        </attached>
     12                    </Billboard>
     13                </attached>
     14            </StaticEntity>
     15        </spawner-representation>
     16    </PickupRepresentation>
     17</Template>
     18
     19<Template name=smallboostpickup baseclass=BoostPickup>
     20  <BoostPickup
     21    representation = "smallboostpickup"
     22    boostrefill = 0.5
     23    activationType = "immediate"
     24    durationType = "once"
     25  />
     26</Template>
     27
     28<Template name=mediumboostpickupRepresentation>
     29    <PickupRepresentation>
     30        <spawner-representation>
     31            <StaticEntity>
     32                <attached>
     33                    <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Sphere2" scale=0.1>
     34                        <attached>
     35                            <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Flash" scale=0.5 />
     36                        </attached>
     37                    </Billboard>
     38                </attached>
     39            </StaticEntity>
     40        </spawner-representation>
     41    </PickupRepresentation>
     42</Template>
     43
     44<Template name=mediumboostpickup baseclass=BoostPickup>
     45  <BoostPickup
     46    representation = "mediumboostpickup"
     47    boostrefill = 0.75
     48    activationType = "immediate"
     49    durationType = "once"
     50  />
     51</Template>
     52
     53<Template name=hugeboostpickupRepresentation>
     54    <PickupRepresentation>
     55        <spawner-representation>
     56            <StaticEntity>
     57                <attached>
     58                    <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Sphere2" scale=0.1>
     59                        <attached>
     60                            <Billboard position="0,0,0" colour="0.0,1.0,0.8" material="Flash" scale=0.7 />
     61                        </attached>
     62                    </Billboard>
     63                </attached>
     64            </StaticEntity>
     65        </spawner-representation>
     66    </PickupRepresentation>
     67</Template>
     68
     69<Template name=hugeboostpickup baseclass=BoostPickup>
     70  <BoostPickup
     71    representation = "hugeboostpickup"
     72    boostrefill = 1.0
     73    activationType = "immediate"
     74    durationType = "once"
     75  />
     76</Template>
     77
    178<!-- Shield pickups: -->
    279
     
    189266</Template>
    190267
     268<!-- Munition pickups: -->
     269
     270<Template name=smallmunitionpickupRepresentation>
     271    <PickupRepresentation>
     272        <spawner-representation>
     273            <StaticEntity>
     274                <attached>
     275                    <Billboard position="0,0,0" colour="0.59,0.30,0.16" material="Sphere2" scale=0.1>
     276                        <attached>
     277                            <Billboard position="0,0,0" colour="0.47,0.24,0.13" material="Munition" scale=0.3 />
     278                        </attached>
     279                    </Billboard>
     280                </attached>
     281            </StaticEntity>
     282        </spawner-representation>
     283    </PickupRepresentation>
     284</Template>
     285
     286<Template name=smallmunitionpickup baseclass=MunitionPickup>
     287  <MunitionPickup
     288    representation = "smallmunitionpickup"
     289    activationType = "immediate"
     290    durationType = "once"
     291  >
     292    <munitioncontainers>
     293        <MunitionContainer munitiontype="LaserMunition" munitionamount=16 magazinesamount=0 />
     294        <MunitionContainer munitiontype="FusionMunition" munitionamount=8 magazinesamount=0 />
     295        <MunitionContainer munitiontype="LightningMunition" munitionamount=8 magazinesamount=0 />
     296    </munitioncontainers>
     297  </MunitionPickup>
     298</Template>
     299
     300<Template name=mediummunitionpickupRepresentation>
     301    <PickupRepresentation>
     302        <spawner-representation>
     303            <StaticEntity>
     304                <attached>
     305                    <Billboard position="0,0,0" colour="0.59,0.30,0.16" material="Sphere2" scale=0.1>
     306                        <attached>
     307                            <Billboard position="0,0,0" colour="0.47,0.24,0.13" material="Munition" scale=0.5 />
     308                        </attached>
     309                    </Billboard>
     310                </attached>
     311            </StaticEntity>
     312        </spawner-representation>
     313    </PickupRepresentation>
     314</Template>
     315
     316<Template name=mediummunitionpickup baseclass=MunitionPickup>
     317  <MunitionPickup
     318    representation = "mediummunitionpickup"
     319    activationType = "immediate"
     320    durationType = "once"
     321  >
     322    <munitioncontainers>
     323        <MunitionContainer munitiontype="LaserMunition" munitionamount=32 magazinesamount=0 />
     324        <MunitionContainer munitiontype="FusionMunition" munitionamount=16 magazinesamount=0 />
     325        <MunitionContainer munitiontype="LightningMunition" munitionamount=16 magazinesamount=0 />       
     326        <MunitionContainer munitiontype="SplitMunition" munitionamount=8 magazinesamount=0 />
     327        <MunitionContainer munitiontype="RocketMunition" munitionamount=0 magazinesamount=2 />
     328        <MunitionContainer munitiontype="MineMunition" munitionamount=0 magazinesamount=2 />
     329    </munitioncontainers>
     330  </MunitionPickup>
     331</Template>
     332
     333<Template name=hugemunitionpickupRepresentation>
     334    <PickupRepresentation>
     335        <spawner-representation>
     336            <StaticEntity>
     337                <attached>
     338                    <Billboard position="0,0,0" colour="0.59,0.30,0.16" material="Sphere2" scale=0.1>
     339                        <attached>
     340                            <Billboard position="0,0,0" colour="0.47,0.24,0.13" material="Munition" scale=0.7 />
     341                        </attached>
     342                    </Billboard>
     343                </attached>
     344            </StaticEntity>
     345        </spawner-representation>
     346    </PickupRepresentation>
     347</Template>
     348
     349<Template name=hugemunitionpickup baseclass=MunitionPickup>
     350  <MunitionPickup
     351    representation = "hugemunitionpickup"
     352    activationType = "immediate"
     353    durationType = "once"
     354  >
     355    <munitioncontainers>
     356        <MunitionContainer munitiontype="LaserMunition" munitionamount=64 magazinesamount=0 />
     357        <MunitionContainer munitiontype="FusionMunition" munitionamount=32 magazinesamount=0 />
     358        <MunitionContainer munitiontype="LightningMunition" munitionamount=32 magazinesamount=0 />       
     359        <MunitionContainer munitiontype="SplitMunition" munitionamount=16 magazinesamount=0 />
     360        <MunitionContainer munitiontype="RocketMunition" munitionamount=0 magazinesamount=10 />
     361        <MunitionContainer munitiontype="IceMunition" munitionamount=0 magazinesamount=10 />
     362        <MunitionContainer munitiontype="GravityBombMunition" munitionamount=0 magazinesamount=10 />
     363        <MunitionContainer munitiontype="MineMunition" munitionamount=0 magazinesamount=10 />
     364    </munitioncontainers>
     365  </MunitionPickup>
     366</Template>
     367
    191368<!-- Meta pickups: -->
    192369
     
    196373            <StaticEntity>
    197374                <attached>
    198                     <Billboard position="0,0,0" colour="0.60,0.97,0.23" material="Sphere2" scale=0.1>
    199                         <attached>
    200                             <Billboard position="0,0,0" colour="0.40,0.81,0.10" material="Arrow" scale=0.65 />
    201                         </attached>
    202                     </Billboard>
    203                 </attached>
    204             </StaticEntity>
    205         </spawner-representation>
    206     </PickupRepresentation>
     375                    <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Sphere2" scale=0.1>
     376                        <attached>
     377                            <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="ArrowUp" scale=0.65 />
     378                        </attached>
     379                    </Billboard>
     380                </attached>
     381            </StaticEntity>
     382        </spawner-representation>
     383    </PickupRepresentation>
     384</Template>
     385
     386<Template name=usemetapickup baseclass=MetaPickup>
     387  <MetaPickup representation="use" metaType="use" />
    207388</Template>
    208389
     
    212393            <StaticEntity>
    213394                <attached>
    214                     <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1>
    215                         <attached>
    216                             <Billboard position="0,0,0" colour="0.95,0.20,0.10" material="Arrow" scale=0.65 />
    217                         </attached>
    218                     </Billboard>
    219                 </attached>
    220             </StaticEntity>
    221         </spawner-representation>
    222     </PickupRepresentation>
     395                    <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Sphere2" scale=0.1>
     396                        <attached>
     397                            <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="ArrowDown" scale=0.65 />
     398                        </attached>
     399                    </Billboard>
     400                </attached>
     401            </StaticEntity>
     402        </spawner-representation>
     403    </PickupRepresentation>
     404</Template>
     405
     406<Template name=dropmetapickup baseclass=MetaPickup>
     407  <MetaPickup representation="drop" metaType="drop" />
     408</Template>
     409
     410<Template name=destroypickupRepresentation>
     411    <PickupRepresentation>
     412        <spawner-representation>
     413            <StaticEntity>
     414                <attached>
     415                    <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Sphere2" scale=0.1>
     416                        <attached>
     417                            <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Splash" scale=0.65 />
     418                        </attached>
     419                    </Billboard>
     420                </attached>
     421            </StaticEntity>
     422        </spawner-representation>
     423    </PickupRepresentation>
     424</Template>
     425
     426<Template name=destroymetapickup baseclass=MetaPickup>
     427  <MetaPickup representation="destroy" metaType="destroy" />
     428</Template>
     429
     430<Template name=destroycarrierpickupRepresentation>
     431    <PickupRepresentation>
     432        <spawner-representation>
     433            <StaticEntity>
     434                <attached>
     435                    <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Sphere2" scale=0.1>
     436                        <attached>
     437                            <Billboard position="0,0,0" colour="0.6,0.⁰,0.8" material="Asterisk" scale=0.65 />
     438                        </attached>
     439                    </Billboard>
     440                </attached>
     441            </StaticEntity>
     442        </spawner-representation>
     443    </PickupRepresentation>
     444</Template>
     445
     446<Template name=destroycarriermetapickup baseclass=MetaPickup>
     447  <MetaPickup representation="destroycarrier" metaType="destroyCarrier" />
    223448</Template>
    224449
     
    232457                    <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 >
    233458                        <attached>
    234                             <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageSmall" scale=0.7 />
     459                            <Billboard position="0,0,0" colour="0.70,0.10,0.10" material="Damage" scale=0.3 />
    235460                        </attached>
    236461                    </Billboard>
     
    258483                    <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 >
    259484                        <attached>
    260                             <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageMedium" scale=0.7 />
     485                            <Billboard position="0,0,0" colour="0.70,0.10,0.10" material="Damage" scale=0.5 />
    261486                        </attached>
    262487                    </Billboard>
     
    277502</Template>
    278503
    279 <Template name=largedamageboostpickupRepresentation>
     504<Template name=hugedamageboostpickupRepresentation>
    280505    <PickupRepresentation>
    281506        <spawner-representation>
     
    284509                    <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 >
    285510                        <attached>
    286                             <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageLarge" scale=0.7 />
    287                         </attached>
    288                     </Billboard>
    289                 </attached>
    290             </StaticEntity>
    291         </spawner-representation>
    292     </PickupRepresentation>
    293 </Template>
    294 
    295 <Template name=largedamageboostpickup baseclass=DamageBoostPickup>
     511                            <Billboard position="0,0,0" colour="0.70,0.10,0.10" material="Damage" scale=0.7 />                           
     512                        </attached>
     513                    </Billboard>
     514                </attached>
     515            </StaticEntity>
     516        </spawner-representation>
     517    </PickupRepresentation>
     518</Template>
     519
     520<Template name=hugedamageboostpickup baseclass=DamageBoostPickup>
    296521  <DamageBoostPickup
    297     representation = "largedamageboostpickup"
     522    representation = "hugedamageboostpickup"
    298523    duration = 10.0
    299524    damageMultiplier = 7.0
     
    498723                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
    499724                        <attached>
    500                             <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.4 />
     725                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.35 />
    501726                        </attached>
    502727                    </Billboard>
     
    524749                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
    525750                        <attached>
    526                             <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.7 />
     751                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.55 />
    527752                        </attached>
    528753                    </Billboard>
     
    550775                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
    551776                        <attached>
    552                             <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=1.0 />
     777                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.75 />
    553778                        </attached>
    554779                    </Billboard>
     
    609834        </attached>
    610835        <collisionShapes>
    611             <BoxCollisionShape position="0,0,0"      halfExtents="1, 1, 1" />
     836            <SphereCollisionShape position="0,0,0" radius=5 />
    612837        </collisionShapes>
    613838        <weaponslots>
    614             <WeaponSlot position="    0,   0,0" />
     839            <WeaponSlot position="0,0,0" />
    615840        </weaponslots>
    616841        <weaponsets>
    617842            <WeaponSet firemode=0 />
    618843        </weaponsets>
    619         <weapons>
     844        <weaponpacks>
    620845            <WeaponPack>
    621846                <links>
     
    631856                </Weapon>
    632857            </WeaponPack>
    633         </weapons>
     858        </weaponpacks>
     859        <munition>
     860            <LaserMunition initialmagazines=2 maxmagazines=2 munitionpermagazine=10 replenishamount=1 replenishinterval=0.5/>
     861        </munition>
    634862    </Drone>
    635863</Template>
  • code/trunk/data/levels/templates/spaceshipAssff.oxt

    r9939 r11052  
    55   spawnparticlesource    = "Orxonox/fairytwirl"
    66   spawnparticleduration  = 3
    7    explosionchunks        = 6
    87
    98   health            = 100
     
    1514   maxshieldhealth     = 50
    1615   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     16   shieldrechargerate  = 1
     17   shieldrechargewaittime = 1
    1918
    2019   primaryThrust     = 100
     
    5756      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    5857    </collisionShapes>
     58    <explosion>
     59      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     61      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     62
     63      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     65      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     66      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     67    </explosion>
    5968<?lua
    6069  include("../includes/weaponSettingsAssff.oxi")
  • code/trunk/data/levels/templates/spaceshipAssff2.oxt

    r8860 r11052  
    1515   maxshieldhealth     = 150
    1616   shieldabsorption    = 0.95
    17    reloadrate          = 5
    18    reloadwaittime      = 0.5
     17   shieldrechargerate  = 5
     18   shieldrechargewaittime = 0.5
    1919
    2020   primaryThrust     = 100
     
    3737   linearDamping     = 0.7
    3838   angularDamping    = 0.9999999
     39
     40   explosionSound = "sounds/Explosion2.ogg"
    3941  >
    4042    <engines>
     
    5557      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    5658    </collisionShapes>
     59    <explosion >
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     61      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     62      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     63
     64      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     65      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     66      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     67      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     68      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     69    </explosion>
    5770<?lua
    5871  include("../includes/weaponSettingsAssff2.oxi")
  • code/trunk/data/levels/templates/spaceshipCollateralDamage.oxt

    r9664 r11052  
    1616   maxshieldhealth     = 50
    1717   shieldabsorption    = 0.8
    18    reloadrate          = 1
    19    reloadwaittime      = 1
     18   shieldrechargerate  = 1
     19   shieldrechargewaittime = 1
    2020
    2121   primaryThrust     = 100
     
    6262
    6363    </collisionShapes>
     64
     65    <explosion >
     66      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     67      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     68      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     69
     70      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     71      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     72      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     73      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     74      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     75    </explosion>
    6476
    6577
  • code/trunk/data/levels/templates/spaceshipDodgeRace.oxt

    r10262 r11052  
    1515   maxshieldhealth     = 20
    1616   shieldabsorption    = 0.1
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 150
     
    6060      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
    6161    </collisionShapes>
     62    <explosion >
     63      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     64      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     65      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     66
     67      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     68      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     69      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     70      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     71      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     72    </explosion>
    6273<?lua
    6374  include("../includes/invaderWeapon.oxi")
  • code/trunk/data/levels/templates/spaceshipEscort.oxt

    r9664 r11052  
    55   spawnparticlesource    = "Orxonox/fairytwirl"
    66   spawnparticleduration  = 3
    7    explosionchunks        = 4
     7   explosionchunks        = 10
    88
    99   health            = 80
     
    1515   maxshieldhealth     = 60
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 150
     
    5656      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
    5757    </collisionShapes>
     58    <explosion>
     59      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     61      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     62
     63      <ExplosionPart mesh="explosionparts/escort_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64      <ExplosionPart mesh="explosionparts/escort_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     65      <ExplosionPart mesh="explosionparts/escort_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     66      <ExplosionPart mesh="explosionparts/escort_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     67      <ExplosionPart mesh="explosionparts/escort_part_5.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     68      <ExplosionPart mesh="explosionparts/escort_part_6.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     69    </explosion>
    5870<?lua
    5971  include("../includes/weaponSettingsEscort.oxi")
     
    92104    <EffectContainer condition="idle">
    93105      <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
     106       />
     107      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=150 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
     108      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=15 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
    94109    </EffectContainer>
    95110    <EffectContainer condition="not idle">
     
    101116    </EffectContainer>
    102117    <EffectContainer condition="normal or boost">
    103       <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
    104       <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
     118      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=5 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
     119      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
    105120    </EffectContainer>
     121
    106122    <EffectContainer condition="boost">
    107123      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
  • code/trunk/data/levels/templates/spaceshipGhost.oxt

    r8858 r11052  
    1515   maxshieldhealth     = 150
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 3
    18    reloadwaittime      = 0.0
     17   shieldrechargerate  = 3
     18   shieldrechargewaittime = 0.0
    1919
    2020   primaryThrust     = 600
     
    5252      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    5353    </collisionShapes>
     54    <explosion >
     55      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     56      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     57      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     58
     59      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     60      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     61      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     62      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     63      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64    </explosion>
    5465<?lua
    5566  include("../includes/weaponSettingsGhost.oxi")
  • code/trunk/data/levels/templates/spaceshipH2.oxt

    r8858 r11052  
    4141      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    4242    </collisionShapes>
     43    <explosion >
     44      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     45      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     46      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     47
     48      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     49      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     50      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     51      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     52      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     53    </explosion>
    4354
    4455  </SpaceShip>
  • code/trunk/data/levels/templates/spaceshipHXY.oxt

    r8858 r11052  
    3535      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    3636    </collisionShapes>
     37    <explosion >
     38      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     39      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     40      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     41
     42      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     43      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     44      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     45      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     46      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     47    </explosion>
    3748
    3849<?lua
  • code/trunk/data/levels/templates/spaceshipHXYSL.oxt

    r8858 r11052  
    3434      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    3535    </collisionShapes>
     36    <explosion >
     37      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     38      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     39      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     40
     41      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     42      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     43      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     44      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     45      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     46    </explosion>
    3647
    3748<?lua
  • code/trunk/data/levels/templates/spaceshipHeartAttack.oxt

    r10622 r11052  
    1515   maxshieldhealth     = 800
    1616   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 40
     
    6363      <BoxCollisionShape position="-5,5,4.3"  halfExtents="1.4, 1.5, 1.4" />
    6464    </collisionShapes>
     65    <explosion >
     66      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     67      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     68      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     69
     70      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     71      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     72      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     73      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     74      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     75    </explosion>
    6576<?lua
    6677  include("../includes/weaponSettingsHeartAttack.oxi")
  • code/trunk/data/levels/templates/spaceshipInvader.oxt

    r9943 r11052  
    1515   maxshieldhealth     = 60
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 150
     
    5959      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
    6060    </collisionShapes>
     61    <explosion >
     62      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     63      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     64      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     65
     66      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     67      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     68      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     69      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     70      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     71    </explosion>
    6172<?lua
    6273  include("../includes/invaderWeapon.oxi")
  • code/trunk/data/levels/templates/spaceshipPirate.oxt

    r8858 r11052  
    1515   maxshieldhealth     = 40
    1616   shieldabsorption    = 0.6
    17    reloadrate          = 2
    18    reloadwaittime      = 0.5
     17   shieldrechargerate  = 2
     18   shieldrechargewaittime = 0.5
    1919
    2020   primaryThrust     = 100
     
    5353      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    5454    </collisionShapes>
     55    <explosion>
     56      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     57      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" scale=2 />
     58      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     59
     60      <ExplosionPart mesh="explosionparts/pirate_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     61      <ExplosionPart mesh="explosionparts/pirate_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     62      <ExplosionPart mesh="explosionparts/pirate_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     63      <ExplosionPart mesh="explosionparts/pirate_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64    </explosion>
    5565
    5666<?lua
  • code/trunk/data/levels/templates/spaceshipRace.oxt

    r9348 r11052  
    1515   maxshieldhealth     = 50
    1616   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 100
     
    5757
    5858    </collisionShapes>
     59    <explosion >
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     61      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     62      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     63
     64      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     65      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     66      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     67      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     68      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     69    </explosion>
    5970<?lua
    6071  include("../includes/weaponSettingsAssff.oxi")
  • code/trunk/data/levels/templates/spaceshipRing.oxt

    r10622 r11052  
    1515   maxshieldhealth     = 60
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 150
     
    5353      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
    5454    </collisionShapes>
     55    <explosion >
     56      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     57      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     58      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     59
     60      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     61      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     62      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     63      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     64      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     65    </explosion>
    5566<?lua
    5667  include("../includes/weaponSettingsRing.oxi")
  • code/trunk/data/levels/templates/spaceshipSpacecruiser.oxt

    r9348 r11052  
    1515   maxshieldhealth     = 90
    1616   shieldabsorption    = 0.9
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 90
     
    6666
    6767    </collisionShapes>
     68    <explosion >
     69      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     70      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     71      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     72
     73      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     74      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     75      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     76      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     77      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     78    </explosion>
    6879<?lua
    6980  include("../includes/weaponSettingsSpacecruiser.oxi")
  • code/trunk/data/levels/templates/spaceshipSwallow.oxt

    r8858 r11052  
    1515   maxshieldhealth     = 80
    1616   shieldabsorption    = 0.75
    17    reloadrate          = 1.5
    18    reloadwaittime      = 0.2
     17   shieldrechargerate  = 1.5
     18   shieldrechargewaittime = 0.2
    1919
    2020   primaryThrust     = 600;
     
    4949      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    5050    </collisionShapes>
     51    <explosion >
     52      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     53      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     54      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     55
     56      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     57      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     58      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     59      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     60      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     61    </explosion>
    5162<?lua
    5263  include("../includes/weaponSettingsSwallow.oxi")
  • code/trunk/data/levels/templates/spaceshipTransporter.oxt

    r8858 r11052  
    3434      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    3535    </collisionShapes>
     36    <explosion >
     37      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     38      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     39      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     40
     41      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     42      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     43      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     44      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     45      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     46    </explosion>
    3647
    3748<?lua
  • code/trunk/data/levels/templates/spaceshipTransporterSL.oxt

    r8858 r11052  
    3434      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
    3535    </collisionShapes>
     36    <explosion >
     37      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     38      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     39      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     40
     41      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     42      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     43      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     44      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     45      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     46    </explosion>
    3647
    3748<?lua
  • code/trunk/data/levels/templates/spaceshipTurret.oxt

    r9664 r11052  
    1515   maxshieldhealth     = 50
    1616   shieldabsorption    = 0.8
    17    reloadrate          = 1
    18    reloadwaittime      = 1
     17   shieldrechargerate  = 1
     18   shieldrechargewaittime = 1
    1919
    2020   primaryThrust     = 100
     
    4444        <SphereCollisionShape radius="10"   position = "0,0,0"/>
    4545    </collisionShapes>
     46    <explosion >
     47      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
     48      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
     49      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
     50
     51      <ExplosionPart minspeed=0 maxspeed=0 effect1="Orxonox/explosion2b" effect2="Orxonox/smoke6" />
     52      <ExplosionPart mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     53      <ExplosionPart mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     54      <ExplosionPart mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     55      <ExplosionPart mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
     56    </explosion>
    4657<?lua
    4758  include("../includes/weaponSettingsTurret.oxi")
  • code/trunk/data/levels/templates/towerdefensetower.oxt

    r10622 r11052  
    44
    55        explosionchunks        = 6
    6         reloadrate=10
    7         reloadwaittime=5
     6        shieldrechargerate=10
     7        shieldrechargewaittime=5
    88        collisionType="none"
    99        pitch="0"
  • code/trunk/data/levels/towerDefense.oxw

    r10629 r11052  
    3939  <TowerDefenseTower
    4040  explosionchunks=6
    41   reloadrate=10
    42   reloadwaittime=5
     41  shieldrechargerate=10
     42  shieldrechargewaittime=5
    4343  collisionType="none"
    4444  pitch="0"
     
    6060      <WeaponSet firemode=0 />
    6161    </weaponsets>
    62     <weapons>
     62    <weaponpacks>
    6363      <WeaponPack>
    6464        <links>
     
    6969        </Weapon>
    7070      </WeaponPack>
    71     </weapons>
     71    </weaponpacks>
     72    <munition>
     73      <LaserMunition initialmagazines=1 maxmagazines=1 munitionpermagazine=10 replenishamount=1 replenishinterval=0.3/>
     74    </munition>
    7275  </TowerDefenseTower>
    7376</Template>
     
    7679  <TowerDefenseTower
    7780  explosionchunks=6
    78   reloadrate=10
    79   reloadwaittime=5
     81  shieldrechargerate=10
     82  shieldrechargewaittime=5
    8083  collisionType="none"
    8184  pitch="0"
     
    97100      <WeaponSet firemode=0 />
    98101    </weaponsets>
    99     <weapons>
     102    <weaponpacks>
    100103      <WeaponPack>
    101104        <links>
     
    106109        </Weapon>
    107110      </WeaponPack>
    108     </weapons>
     111    </weaponpacks>
     112    <munition>
     113      <LightningMunition initialmagazines=1 maxmagazines=1 munitionpermagazine=10/>
     114    </munition>
    109115    <attached>
    110116      <Backlight position="0,0,0" scale=2.0 colour="0.4, 0.0, 1.0" width=10 length=10 lifetime=0.3 elements=20 trailmaterial="Trail/backlighttrail" material="Examples/Flare" loop=1 />
     
    116122  <TowerDefenseTower
    117123  explosionchunks=6
    118   reloadrate=10
    119   reloadwaittime=5
     124  shieldrechargerate=10
     125  shieldrechargewaittime=5
    120126  collisionType="none"
    121127  pitch="0"
     
    137143      <WeaponSet firemode=0 />
    138144    </weaponsets>
    139     <weapons>
     145    <weaponpacks>
    140146      <WeaponPack>
    141147        <links>
     
    146152        </Weapon>
    147153      </WeaponPack>
    148     </weapons>
     154    </weaponpacks>
     155    <munition>
     156      <SplitMunition initialmagazines=1 maxmagazines=1 munitionpermagazine=10/>
     157    </munition>
    149158  </TowerDefenseTower>
    150159</Template>
     
    153162  <TowerDefenseTower
    154163  explosionchunks=6
    155   reloadrate=10
    156   reloadwaittime=5
     164  shieldrechargerate=10
     165  shieldrechargewaittime=5
    157166  collisionType="none"
    158167  pitch="0"
     
    174183      <WeaponSet firemode=0 />
    175184    </weaponsets>
    176     <weapons>
     185    <weaponpacks>
    177186      <WeaponPack>
    178187        <links>
     
    180189        </links>
    181190        <Weapon>
    182           <RocketFire mode=0 munitionpershot=0 muzzleoffset="0,0,0" damage=2 shielddamage=4 /> 
     191          <RocketFire mode=0 munitionpershot=0 muzzleoffset="0,0,0" damage=2 shielddamage=4 fuel=10/> 
    183192        </Weapon>
    184193      </WeaponPack>
    185     </weapons>
     194    </weaponpacks>
     195    <munition>
     196      <RocketMunition initialmagazines=1 maxmagazines=1 munitionpermagazine=10/>
     197    </munition>
    186198      <attached>
    187199      <ParticleSpawner position="0,0,0" source="Orxonox/sparks" lifetime=3.0 autostart=1 loop=1 />
     
    193205  <TowerDefenseTower
    194206  explosionchunks=6
    195   reloadrate=10
    196   reloadwaittime=5
     207  shieldrechargerate=10
     208  shieldrechargewaittime=5
    197209  collisionType="none"
    198210  pitch="0"
     
    214226      <WeaponSet firemode=0 />
    215227    </weaponsets>
    216     <weapons>
     228    <weaponpacks>
    217229      <WeaponPack>
    218230        <links>
     
    223235        </Weapon>
    224236      </WeaponPack>
    225     </weapons>
     237    </weaponpacks>
     238    <munition>
     239      <IceMunition initialmagazines=1 maxmagazines=1 munitionpermagazine=10/>
     240    </munition>
    226241  </TowerDefenseTower>
    227242</Template>
     
    243258   maxshieldhealth     = 15
    244259   shieldabsorption    = 0.8
    245    reloadrate          = 1
    246    reloadwaittime      = 1
     260   shieldrechargerate  = 1
     261   shieldrechargewaittime = 1
    247262
    248263   primaryThrust     = 1000
     
    308323   maxshieldhealth     = 0
    309324   shieldabsorption    = 0.8
    310    reloadrate          = 1
    311    reloadwaittime      = 1
     325   shieldrechargerate = 1
     326   shieldrechargewaittime = 1
    312327
    313328   primaryThrust     = 100
     
    381396   maxshieldhealth     = 5
    382397   shieldabsorption    = 0.8
    383    reloadrate          = 1
    384    reloadwaittime      = 1
     398   shieldrechargerate  = 1
     399   shieldrechargewaittime = 1
    385400
    386401   primaryThrust     = 100
  • code/trunk/data/overlays/HUDTemplates3.oxo

    r10292 r11052  
    2727</Template>
    2828
     29<Template name="rockethud">
     30  <OverlayGroup name = "rockethud" scale = "1, 1">
     31    <HUDRocketFuelBar
     32     name          = "RocketFuelBar1"
     33     background    = "Orxonox/BarBackground"
     34     size          = "0.40, 0.04"
     35     position      = "0.0 , 1.0 "
     36     pickpoint     = "0, 1"
     37     correctaspect = true
     38     iconmaterial  = "Orxonox/BarIconFuel"
     39    >
     40      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     41      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
     42      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
     43    </HUDRocketFuelBar>
     44  </OverlayGroup>
     45</Template>
     46
    2947<Template name="spaceshiphud">
    3048  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
     
    3452     name              = "HealthBar1"
    3553     background        = "Orxonox/HealthBarBackground"
    36      size              = "0.35, 0.0875"
    37      position          = "0.0 , 0.9 "
     54     size              = "0.40, 0.08"
     55     position          = "0.0 , 0.85 "
    3856     pickpoint         = "0, 1"
    3957     bartexture        = "healthbar_bar.png"
    4058     textfont          = "VeraMono"
    4159     textusebarcolour  = true
    42      textsize          = 0.039
    43      textoffset        = "0.315, 0.05"
     60     textscale          = 0.4
     61     textoffset        = "0.325, -0.825"
    4462     textpickpoint     = "0, 0"
    4563     textalign         = "right"
    46      correctaspect     = false
    47      textcorrectaspect = false
     64     correctaspect     = true
     65     iconmaterial      = "Orxonox/BarIconHealth"
    4866    >
    4967      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     
    5169      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
    5270    </HUDHealthBar>
     71
     72    <HUDShieldBar
     73     name          = "ShieldBar1"
     74     background    = "Orxonox/BarBackground"
     75     size          = "0.40, 0.04"
     76     position      = "0.0 , 0.9 "
     77     pickpoint     = "0, 1"
     78     correctaspect = true
     79     iconmaterial  = "Orxonox/BarIconShield"
     80    >
     81      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     82      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
     83      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
     84    </HUDShieldBar>   
    5385
    5486    <HUDSpeedBar
    5587     name          = "SpeedBar1"
    5688     background    = "Orxonox/BarBackground"
    57      size          = "0.35, 0.05"
     89     size          = "0.40, 0.04"
    5890     position      = "0.0 , 0.95 "
    5991     pickpoint     = "0, 1"
    60      correctaspect = false
     92     correctaspect = true
     93     iconmaterial  = "Orxonox/BarIconSpeed"
    6194    >
    6295      <BarColour position = 0.0 colour = "0.7,0.5,0.2" />
     
    67100    <HUDBoostBar
    68101     name          = "BoostBar1"
    69      backgroundtex = "bar1.png"
    70      size          = "0.35, 0.05"
     102     background    = "Orxonox/BarBackground"
     103     size          = "0.40, 0.04"
    71104     position      = "0.0 , 1.0 "
    72105     pickpoint     = "0, 1"
    73      correctaspect = false
     106     correctaspect = true
     107     iconmaterial  = "Orxonox/BarIconBoost"
    74108    >
    75109      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     
    81115     name              = "EnemyHealthBar"
    82116     background        = "Orxonox/HealthBarBackground"
    83      size              = "0.35, 0.0875"
    84      position          = "1 ,0.1"
    85      pickpoint         = "1, 1"
     117     size              = "0.4, 0.08"
     118     position          = "1 ,0"
     119     pickpoint         = "1, 0"
    86120     bartexture        = "healthbar_bar.png"
    87121     textfont          = "VeraMono"
    88122     textusebarcolour  = true
    89      textsize          = 0.039
    90      textoffset        = "0.315, 0.05"
     123     textscale         = 0.4
     124     textoffset        = "-0.675, 0.175"
    91125     textpickpoint     = "0, 0"
    92126     textalign         = "right"
    93      correctaspect     = false
    94      textcorrectaspect = false
     127     correctaspect     = true
     128     iconmaterial      = "Orxonox/BarIconHealth"
    95129    >
    96130      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     
    98132      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
    99133    </HUDEnemyHealthBar>
     134
     135    <HUDEnemyShieldBar
     136     name          = "EnemyShieldBar1"
     137     background    = "Orxonox/BarBackground"
     138     size          = "0.40, 0.04"
     139     position      = "1.0 , 0.1 "
     140     pickpoint     = "1, 0"
     141     correctaspect = true
     142     iconmaterial  = "Orxonox/BarIconShield"
     143    >
     144      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
     145      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
     146      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
     147    </HUDEnemyShieldBar>   
    100148
    101149    <HUDNavigation
     
    127175     mapAngle3D                         = 0.6435011
    128176    />
     177
     178    <HUDWeaponSystem
     179     name                   = "WeaponSystem"
     180     correctaspect          = true
     181     position               = "0.01, 0.01"
     182     pickpoint              = "0, 0"
     183     visible                = "true"
     184     weaponModeHUDSize      = "0.09, 0.03"
     185    />
    129186   
    130187    <HUDTimer
  • code/trunk/data/overlays/InvaderHUD.oxo

    r9953 r11052  
    9999     textfont          = "VeraMono"
    100100     textusebarcolour  = true
    101      textsize          = 0.039
    102      textoffset        = "0.315, 0.05"
     101     textscale          = 0.4
     102     textoffset        = "0.325, -0.825"
    103103     textpickpoint     = "0, 0"
    104104     textalign         = "right"
    105      correctaspect     = false
    106      textcorrectaspect = false
     105     correctaspect     = true
     106     iconmaterial      = "Orxonox/BarIconHealth"
    107107    >
    108108      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
  • code/trunk/data/overlays/jumpHUD.oxo

    r10262 r11052  
    3737     showFuel = false
    3838     showMessages = true
    39     />   
    40 
    41   <HUDBar
    42      name          = "SpeedBar1"
    43      background    = "Orxonox/BarBackground"
    44      size          = "0.35, 0.05"
    45      position      = "0.0 , 1.0 "
    46      pickpoint     = "0, 1"
    47      correctaspect = false
    48 
    49      initialvalue = 50
    50 
    51      >
    52       <BarColour position = 0.0 colour = "0.7,0.5,0.2" />
    53       <BarColour position = 0.5 colour = "0.2,0.7,0.2" />
    54       <BarColour position = 1.0 colour = "0.7,0.2,0.2" />
    55     </HUDBar>
     39    />
    5640
    5741  </OverlayGroup>
  • code/trunk/data/particle/engineglow.particle

    r5781 r11052  
    1 
    21particle_system Orxonox/engineglow
    32{
    4         quota   200
    5         material        PE/bigFlame
    6         particle_width  12
    7         particle_height 12
    8         cull_each       false
    9         renderer        billboard
    10         billboard_type  point
     3        material PE/glowEffect
     4        particle_width 100.0
     5        particle_height 100.0
     6        quota 2000
     7        cull_each false
     8        sorted false
     9        local_space false
     10        iteration_interval 0.0
     11        nonvisible_update_timeout 0.0
     12        billboard_type point
     13        billboard_origin center
     14        billboard_rotation_type texcoord
     15        point_rendering false
     16        accurate_facing false
    1117
    12         emitter HollowEllipsoid
     18        emitter Ring
    1319        {
    14                 angle   0
    15                 colour  0.46875 0.8125 0.93359375 1
    16                 colour_range_start      .6640625 .91796875 .92578125 1
    17                 colour_range_end        .08203125 .7578125 .98046875 1
    18                 direction       0 1 0
    19                 emission_rate   45
    20                 position        0 0 0
    21                 velocity        5
    22                 velocity_min    4
    23                 velocity_max    6
    24                 time_to_live    0.5
    25                 time_to_live_min        0.2
    26                 time_to_live_max        0.9
    27                 duration        0
    28                 duration_min    0
    29                 duration_max    0
    30                 repeat_delay    0
    31                 repeat_delay_min        0
    32                 repeat_delay_max        0
    33                 width   4
    34                 height  2.5
    35                 depth   1.3
    36                 inner_width     0.5
    37                 inner_height    0.3
    38                 inner_depth     0.2
     20                position 0.0 0.0 0.0
     21                direction 0.0 0.0 1.0
     22                angle 0
     23                width 150
     24                height 150
     25                depth 1
     26                inner_width 0.99
     27                inner_height 0.99
     28                emission_rate 30
     29                velocity_min 20
     30                velocity_max 20
     31                time_to_live_min 5
     32                time_to_live_max 5
     33                duration_min 0
     34                duration_max 0
     35                repeat_delay_min 0
     36                repeat_delay_max 0
     37                colour_range_start 0.666667 1 0 1
     38                colour_range_end 0 1 0 1
     39        }
     40
     41        emitter Ring
     42        {
     43                position 0.0 0.0 0.0
     44                direction 0.0 0.0 1.0
     45                angle 0
     46                width 130
     47                height 130
     48                depth 0
     49                inner_width 0.99
     50                inner_height 0.99
     51                emission_rate 10
     52                velocity_min 200
     53                velocity_max 200
     54                time_to_live_min 0.75
     55                time_to_live_max 0.75
     56                duration_min 0
     57                duration_max 0
     58                repeat_delay_min 0
     59                repeat_delay_max 0
     60                colour_range_start 1 1 0 1
     61                colour_range_end 1 1 0.498039 1
     62        }
     63
     64        emitter Ring
     65        {
     66                position 0.0 0.0 0.0
     67                direction 0.0 0.0 1.0
     68                angle 0
     69                width 80
     70                height 80
     71                depth 0
     72                inner_width 0.99
     73                inner_height 0.99
     74                emission_rate 57.89
     75                velocity_min 250
     76                velocity_max 250
     77                time_to_live_min 1
     78                time_to_live_max 1
     79                duration_min 0
     80                duration_max 0
     81                repeat_delay_min 0
     82                repeat_delay_max 0
     83                colour_range_start 1 0.333333 0 1
     84                colour_range_end 1 0.333333 0 1
     85        }
     86
     87        emitter Ring
     88        {
     89                position 0.0 0.0 0.0
     90                direction 0.0 0.0 1.0
     91                angle 0
     92                width 50
     93                height 50
     94                depth 0
     95                inner_width 0.01
     96                inner_height 0.5
     97                emission_rate 37.89
     98                velocity_min 300
     99                velocity_max 300
     100                time_to_live_min 1.5
     101                time_to_live_max 1.5
     102                duration_min 0
     103                duration_max 0
     104                repeat_delay_min 0
     105                repeat_delay_max 0
     106                colour_range_start 1 0 0 1
     107                colour_range_end 1 0 0 1
     108        }
     109
     110        affector Scaler
     111        {
     112                rate -20
    39113        }
    40114}
  • code/trunk/data/particle/rocketfire.particle

    r6417 r11052  
    11particle_system Orxonox/rocketfire
    22{
    3         quota   300
    4         material        PE/explosion
    5         particle_width  15
    6         particle_height 5
    7         cull_each       false
    8         renderer        billboard
    9         sorted  false
    10         local_space     false
    11         iteration_interval      0
    12         nonvisible_update_timeout       0
    13         billboard_type  point
    14         billboard_origin        center
    15         billboard_rotation_type texcoord
    16         common_up_vector        0 1 0
    17         point_rendering false
    18         accurate_facing false
     3        material PE/glowEffect
     4        particle_width 2
     5        particle_height 2
     6        quota 10000
     7        cull_each true
     8        sorted true
     9        local_space true
     10        iteration_interval 0.0
     11        nonvisible_update_timeout 0.0
     12        billboard_type point
     13        billboard_origin center
     14        billboard_rotation_type texcoord
     15        point_rendering false
     16        accurate_facing false
    1917
    2018        emitter Ellipsoid
    2119        {
    22                 angle   2
    23                 colour  1 0.682759 1 1
    24                 colour_range_start      1 0.682759 1 1
    25                 colour_range_end        1 0.682759 1 1
    26                 direction       0 0 1
    27                 emission_rate   1200
    28                 position        0 0 3
    29                 velocity        10
    30                 velocity_min    10
    31                 velocity_max    48
    32                 time_to_live    0.1
    33                 time_to_live_min        0.1
    34                 time_to_live_max        0.2
    35                 duration        0
    36                 duration_min    0
    37                 duration_max    0
    38                 repeat_delay    0
    39                 repeat_delay_min        0
    40                 repeat_delay_max        0
    41                 width   1.5
    42                 height  1.5
    43                 depth   10
     20                position 0.05 0.0 2.0
     21                direction 0.0 0.0 1.0
     22                angle 0
     23                width 0
     24                height 0
     25                depth 0
     26                emission_rate 1200
     27                velocity_min 10
     28                velocity_max 20
     29                time_to_live_min 0.1
     30                time_to_live_max 0.1
     31                duration_min 0
     32                duration_max 0
     33                repeat_delay_min 0
     34                repeat_delay_max 0
     35                colour_range_start 1 0.333333 0 1
     36                colour_range_end 1 0 0 1
     37        }
     38        emitter Ellipsoid
     39        {
     40                position 0.05 0.0 2.0
     41                direction 0.0 0.0 1.0
     42                angle 0
     43                width 0
     44                height 0
     45                depth 0
     46                emission_rate 100
     47                velocity_min 5
     48                velocity_max 10
     49                time_to_live_min 0.1
     50                time_to_live_max 0.1
     51                duration_min 0
     52                duration_max 0
     53                repeat_delay_min 0
     54                repeat_delay_max 0
     55                colour_range_start 0.2 0.5 0.65
     56                colour_range_end 0.25 0.55 0.7
    4457        }
    4558
    4659        affector Scaler
    4760        {
    48                 rate    -20
     61                rate -8
    4962        }
    5063}
  • code/trunk/src/libraries/core/CoreConfig.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/CoreConfig.h

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/GUIManager.cc

    r10624 r11052  
    3636#include <OgreRenderWindow.h>
    3737
     38extern "C" {
     39#include <lua.h>
     40}
     41
    3842#if CEGUI_VERSION >= 0x000800
    3943#   include <CEGUI/DefaultLogger.h>
     
    251255    /*static*/ const std::string GUIManager::defaultScheme_ = "TaharezGreen"; //Alternative: Orxonox (not fully complete yet, see the graphics menu)
    252256
    253     SetConsoleCommand("showGUI", &GUIManager::showGUI).defaultValue(1, false).defaultValue(2, false);
    254     SetConsoleCommand("hideGUI", &GUIManager::hideGUI);
    255     SetConsoleCommand("toggleGUI", &GUIManager::toggleGUI).defaultValue(1, false).defaultValue(2, false);
     257    namespace autocompletion
     258    {
     259        /**
     260            @brief Returns the names of all currently existing OverlayGroups.
     261        */
     262        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(guinames)();
     263        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION(guinames)()
     264        {
     265            ArgumentCompletionList names;
     266            const std::vector<std::string> guis = GUIManager::getInstance().getLoadedGUIs();
     267            for (size_t i = 0; i < guis.size(); ++i)
     268                names.push_back(ArgumentCompletionListElement(guis[i], getLowercase(guis[i])));
     269            return names;
     270        }
     271    }
     272
     273    SetConsoleCommand("showGUI", &GUIManager::showGUI).defaultValue(1, false).defaultValue(2, false)
     274            .argumentCompleter(0, autocompletion::guinames());
     275    SetConsoleCommand("hideGUI", &GUIManager::hideGUI)
     276            .argumentCompleter(0, autocompletion::guinames());
     277    SetConsoleCommand("toggleGUI", &GUIManager::toggleGUI).defaultValue(1, false).defaultValue(2, false)
     278            .argumentCompleter(0, autocompletion::guinames());
    256279
    257280    RegisterAbstractClass(GUIManager).inheritsFrom<WindowEventListener>();
     
    489512    {
    490513        this->luaState_->doString(str, rootFileInfo_);
     514    }
     515
     516    std::vector<std::string> GUIManager::getLoadedGUIs()
     517    {
     518        // TODO: is there a better way to read back a return value from lua? i.e. by using LuaState?
     519        lua_State* L = this->luaState_->getInternalLuaState();
     520
     521        // push function
     522        lua_getglobal(L, "getLoadedSheets");
     523
     524        // do the call (0 arguments, 1 result)
     525        if (lua_pcall(L, 0, 1, 0) != 0)
     526          orxout(internal_error) << "error running function: " << lua_tostring(L, -1) << endl;
     527
     528        // retrieve result
     529        if (!lua_isstring(L, -1))
     530          orxout(internal_error) << "function must return a string" << endl;
     531        std::string value = lua_tostring(L, -1);
     532        lua_pop(L, 1);
     533
     534        SubString tokens(value, ",");
     535        return tokens.getAllStrings();
    491536    }
    492537
  • code/trunk/src/libraries/core/GUIManager.h

    r9675 r11052  
    107107        void preUpdate(const Clock& time);
    108108
     109        std::vector<std::string> getLoadedGUIs();
     110
    109111        void loadGUI(const std::string& name);
    110112        static void showGUI(const std::string& name, bool bHidePrevious = false, bool bNoInput = false);
  • code/trunk/src/libraries/core/GameConfig.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/GameConfig.h

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/command/ArgumentCompletionFunctions.h

    r7401 r11052  
    161161*/
    162162#define ARGUMENT_COMPLETION_FUNCTION_DECLARATION(functionname) \
    163     _CoreExport ArgumentCompleter* functionname(); \
    164     _CoreExport ArgumentCompletionList acf_##functionname
     163    ArgumentCompleter* functionname(); \
     164    ArgumentCompletionList acf_##functionname
    165165
    166166/**
     
    196196    namespace autocompletion
    197197    {
    198         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(fallback)();
    199         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(groupsandcommands)(const std::string& fragment);
    200         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(subcommands)(const std::string& fragment, const std::string& group);
    201         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(command)(const std::string& fragment);
    202         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(hiddencommand)(const std::string& fragment);
    203         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(files)(const std::string& fragment);
    204         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingssections)();
    205         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingsentries)(const std::string& fragment, const std::string& section);
    206         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingsvalue)(const std::string& fragment, const std::string& entry, const std::string& section);
    207         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(tclthreads)();
     198        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(fallback)();
     199        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(groupsandcommands)(const std::string& fragment);
     200        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(subcommands)(const std::string& fragment, const std::string& group);
     201        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(command)(const std::string& fragment);
     202        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(hiddencommand)(const std::string& fragment);
     203        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(files)(const std::string& fragment);
     204        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingssections)();
     205        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingsentries)(const std::string& fragment, const std::string& section);
     206        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingsvalue)(const std::string& fragment, const std::string& entry, const std::string& section);
     207        _CoreExport ARGUMENT_COMPLETION_FUNCTION_DECLARATION(tclthreads)();
    208208    }
    209209}
  • code/trunk/src/libraries/core/command/ConsoleCommandIncludes.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/command/ConsoleCommandManager.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/commandline/CMakeLists.txt

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/input/KeyBinder.cc

    r10624 r11052  
    359359    /**
    360360    @brief
     361        Return the first key name for a specific command in a human readable form
     362    */
     363    const std::string& KeyBinder::getBindingReadable(const std::string& commandName)
     364    {
     365        const std::string& binding = this->getBinding(commandName);
     366
     367        SubString substring = SubString(binding, ".");
     368        std::string name;
     369        std::string group;
     370        switch(substring.size())
     371        {
     372            case 0:
     373                return binding;
     374            case 1:
     375                return binding;
     376            case 2:
     377                group = substring[0];
     378            default:
     379                name = substring.subSet(1).join(".");
     380        }
     381
     382        std::stringstream stream;
     383        if(group.compare("Keys") == 0)
     384            stream << "Key " << name.substr(3);
     385        else if(group.compare("MouseButtons") == 0)
     386            stream << "Mouse " << name;
     387        else if(group.compare("JoyStickButtons") == 0)
     388            stream << "Joystick " << name;
     389        else if(group.compare("JoyStickAxes") == 0)
     390            stream << "Joystick Axis" << name.substr(5, 6) << name.substr(name.find("Axis")+6);
     391        else if(group.compare("MouseAxes") == 0)
     392            stream << "Mouse " << name.substr(1,3) << " " << name.substr(0, 1) << "-Axis";
     393        else
     394            return binding;
     395
     396        return *(new std::string(stream.str()));
     397    }
     398
     399    /**
     400    @brief
    361401        Get the number of different key bindings of a specific command.
    362402    @param commandName
  • code/trunk/src/libraries/core/input/KeyBinder.h

    r9978 r11052  
    6868        const std::string& getBinding(const std::string& commandName); //tolua_export
    6969        const std::string& getBinding(const std::string& commandName, unsigned int index); //tolua_export
     70        const std::string& getBindingReadable(const std::string& commandName); //tolua_export
    7071        unsigned int getNumberOfBindings(const std::string& commandName); //tolua_export
    7172
  • code/trunk/src/libraries/core/singleton/ScopedSingletonIncludes.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/core/singleton/ScopedSingletonIncludes.h

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/network/NetworkFunctionIncludes.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/network/NetworkFunctionIncludes.h

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/network/NetworkFunctionManager.cc

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/network/NetworkFunctionManager.h

    • Property svn:eol-style set to native
  • code/trunk/src/libraries/tools/ParticleInterface.cc

    r10624 r11052  
    233233            this->particleSystem_->setKeepParticlesInLocalSpace(keep);
    234234    }
     235
     236    void ParticleInterface::setDimensions(float scale)
     237    {
     238        this->particleSystem_->setDefaultDimensions(scale * this->particleSystem_->getDefaultWidth(), scale * this->particleSystem_->getDefaultHeight());
     239    }
    235240}
  • code/trunk/src/libraries/tools/ParticleInterface.h

    r10624 r11052  
    7575            void setDetailLevel(unsigned int level);
    7676
     77            void setDimensions(float scale);
     78
    7779        protected:
    7880            virtual void changedTimeFactor(float factor_new, float factor_old);
  • code/trunk/src/libraries/util/Math.cc

    r10630 r11052  
    161161         - If the other object is exactly above me, the function returns <tt>Vector2(0, 0.5)</tt>.
    162162    */
    163     orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition)
     163    orxonox::Vector2 get2DViewCoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition)
    164164    {
    165165        orxonox::Vector3 distance = otherposition - myposition;
  • code/trunk/src/libraries/util/Math.h

    r9939 r11052  
    9191    _UtilExport float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition);
    9292    _UtilExport orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
    93     _UtilExport orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
     93    _UtilExport orxonox::Vector2 get2DViewCoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
    9494    _UtilExport orxonox::Vector2 get3DProjection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle, const float detectionlimit);
    9595    _UtilExport bool isObjectHigherThanShipOnMap(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle);
  • code/trunk/src/modules/CMakeLists.txt

    r10258 r11052  
    4343ADD_SUBDIRECTORY(mini4dgame)
    4444ADD_SUBDIRECTORY(dodgerace)
     45ADD_SUBDIRECTORY(hover)
  • code/trunk/src/modules/docking/DockingController.cc

    r9667 r11052  
    6161
    6262        float distance = (this->dock_->getWorldPosition() - entity->getPosition()).length();
    63         Vector2 coord = get2DViewcoordinates(     // I don't understand this too
     63        Vector2 coord = get2DViewCoordinates(     // I don't understand this too
    6464            entity->getPosition(),
    6565            entity->getOrientation() * WorldEntity::FRONT,
  • code/trunk/src/modules/dodgerace/DodgeRace.cc

    r10624 r11052  
    7171            for (int i = 0; i < 7; i++)
    7272            {
    73                 BigExplosion* chunk = new BigExplosion(this->center_->getContext());
    74                 chunk->setPosition(Vector3(600, 0, 100.f * i - 300));
    75                 chunk->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
    76                 chunk->setScale(20);
     73                WeakPtr<ExplosionPart> chunk5 = new ExplosionPart(this->center_->getContext());
     74                chunk5->setPosition(Vector3(600, 0, 100.f * i - 300));
     75                chunk5->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
     76                chunk5->setScale(10);
     77                chunk5->setEffect1("Orxonox/explosion2b");
     78                chunk5->setEffect2("Orxonox/smoke6");
     79                chunk5->Explode();
     80
    7781            }
    7882        }
  • code/trunk/src/modules/dodgerace/DodgeRace.h

    r10624 r11052  
    5656
    5757#include "core/command/ConsoleCommand.h"
    58 #include "worldentities/BigExplosion.h"
    5958
    6059#include "gametypes/Deathmatch.h"
  • code/trunk/src/modules/invader/Invader.cc

    r10624 r11052  
    5151
    5252#include "core/command/ConsoleCommand.h"
    53 #include "worldentities/BigExplosion.h"
     53#include "worldentities/ExplosionPart.h"
    5454
    5555namespace orxonox
     
    8282            for (int i = 0; i < 7; i++)
    8383            {
    84                 BigExplosion* chunk = new BigExplosion(this->center_->getContext());
    85                 chunk->setPosition(Vector3(600, 0, 100.f * i - 300));
    86                 chunk->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
    87                 chunk->setScale(20);
     84
     85                WeakPtr<ExplosionPart> chunk5 = new ExplosionPart(this->center_->getContext());
     86                chunk5->setPosition(this->center_->getPosition());
     87                chunk5->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
     88                chunk5->setScale(10);
     89                chunk5->setEffect1("Orxonox/explosion2b");
     90                chunk5->setEffect2("Orxonox/smoke6");
     91                chunk5->setMinSpeed(0);
     92                chunk5->setMaxSpeed(0);
     93                chunk5->Explode();
     94
    8895            }
    8996        }
  • code/trunk/src/modules/notifications/dispatchers/CommandNotification.cc

    r9667 r11052  
    101101        std::stringstream stream;
    102102        stream << this->getPreMessage();
    103         stream << this->bindingNiceifyer(KeyBinderManager::getInstance().getCurrent()->getBinding(this->getCommand()));
     103        stream << KeyBinderManager::getInstance().getCurrent()->getBindingReadable(this->getCommand());
    104104        stream << this->getPostMessage();
    105105        return *(new std::string(stream.str()));
    106106    }
    107 
    108     /**
    109     @brief
    110         Transforms the input binding into a human readable form.
    111     @param binding
    112         The binding to be transformed
    113     @return
    114         Returns a human readable version of the input binding.
    115     */
    116     //TODO: Move to KeyBinderManager...
    117     const std::string& CommandNotification::bindingNiceifyer(const std::string& binding)
    118     {
    119         SubString substring = SubString(binding, ".");
    120         std::string name;
    121         std::string group;
    122         switch(substring.size())
    123         {
    124             case 0:
    125                 return binding;
    126             case 1:
    127                 return binding;
    128             case 2:
    129                 group = substring[0];
    130             default:
    131                 name = substring.subSet(1).join(".");
    132         }
    133 
    134         std::stringstream stream;
    135         if(group.compare("Keys") == 0)
    136             stream << "Key " << name.substr(3);
    137         else if(group.compare("MouseButtons") == 0)
    138             stream << "Mouse " << name;
    139         else if(group.compare("JoyStickButtons") == 0)
    140             stream << "Joystick " << name;
    141         else if(group.compare("JoyStickAxes") == 0)
    142             stream << "Joystick Axis" << name.substr(5, 6) << name.substr(name.find("Axis")+6);
    143         else if(group.compare("MouseAxes") == 0)
    144             stream << "Mouse " << name.substr(1,3) << " " << name.substr(0, 1) << "-Axis";
    145         else
    146             return binding;
    147 
    148         return *(new std::string(stream.str()));
    149     }
    150 
    151107}
  • code/trunk/src/modules/notifications/dispatchers/CommandNotification.h

    r9667 r11052  
    122122            void setPostMessage(const std::string& message)
    123123                 { this->postMessage_ = message; }
    124 
    125             const std::string& bindingNiceifyer(const std::string& binding); //!< Transforms the input binding into a human readable form.
    126 
    127124    };
    128125
  • code/trunk/src/modules/objects/Turret.h

    r10622 r11052  
    103103
    104104            inline void setRotationThrust(float rotationthrust)
    105                 { this->rotationThrust_ = rotationthrust; }
     105                { this->rotationThrust_ = rotationthrust; }
    106106
    107107            inline float getRotationThrust()
    108                 { return this->rotationThrust_; }
     108                { return this->rotationThrust_; }
    109109
    110110        protected:
  • code/trunk/src/modules/overlays/OverlaysPrereqs.h

    r9939 r11052  
    9090    class HUDRadar;
    9191    class HUDSpeedBar;
     92    class HUDShieldBar;
    9293    class HUDBoostBar;
     94    class HUDRocketFuelBar;
     95    class HUDEnemyHealthBar;
     96    class HUDEnemyShieldBar;
     97    class HUDWeaponSystem;
     98    class HUDWeapon;
     99    class HUDWeaponMode;
    93100    class HUDTimer;
    94101    class HUDAimAssistant;
  • code/trunk/src/modules/overlays/hud/CMakeLists.txt

    r9939 r11052  
    55  HUDSpeedBar.cc
    66  HUDBoostBar.cc
     7  HUDShieldBar.cc
    78  HUDHealthBar.cc
     9  HUDRocketFuelBar.cc
    810  HUDTimer.cc
    911  HUDEnemyHealthBar.cc
     12  HUDEnemyShieldBar.cc
     13  HUDWeaponMode.cc
     14  HUDWeapon.cc
     15  HUDWeaponSystem.cc
    1016  ChatOverlay.cc
    1117  AnnounceMessage.cc
  • code/trunk/src/modules/overlays/hud/HUDBar.cc

    r9667 r11052  
    4747    RegisterClass(BarColour);
    4848
    49     BarColour::BarColour(Context* context)
    50         : BaseObject(context)
     49    BarColour::BarColour(Context* context) : BaseObject(context)
    5150    {
    5251        RegisterObject(BarColour);
    53 
     52       
    5453        this->setColour(ColourValue(1.0, 1.0, 1.0, 1.0));
    5554        this->setPosition(0.0);
     
    6968    RegisterClass(HUDBar);
    7069
    71     HUDBar::HUDBar(Context* context)
    72         : OrxonoxOverlay(context), right2Left_(false), autoColour_(false)
     70    HUDBar::HUDBar(Context* context) : OrxonoxOverlay(context), right2Left_(false), autoColour_(false)
    7371    {
    7472        RegisterObject(HUDBar);
     
    8886        this->bar_->setMaterialName(materialname);
    8987
     88        this->bar_->setPosition(0.0f,0.0f);
     89        this->bar_->setDimensions(1.0f,1.0f);
     90
     91        this->bUseIcon_ = false;
    9092        this->value_ = 1.0f;  // initialize with 1.0f to trigger a change when calling setValue(0.0f) on the line below
    9193        this->setAutoColour(true);
     
    9597
    9698        this->background_->addChild(bar_);
     99
     100        this->icon_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDBar_icon_" + getUniqueNumberString()));
     101        this->icon_->setPosition(0.06f,0.0f);
     102        this->icon_->setDimensions(0.1f,1.0f);
     103        this->background_->addChild(this->icon_);
    97104    }
    98105
     
    115122        XMLPortParam(HUDBar, "autocolour",   setAutoColour,  getAutoColour,  xmlelement, mode);
    116123        XMLPortParam(HUDBar, "bartexture",   setBarTexture,  getBarTexture, xmlelement, mode);
     124        XMLPortParam(HUDBar, "iconmaterial", setIconMaterial, getIconMaterial, xmlelement, mode);
    117125        XMLPortObject(HUDBar, BarColour, "", addColour, getColour, xmlelement, mode);
    118126    }
     
    161169        }
    162170
     171        float height = this->bar_->getHeight();
     172        float top = this->bar_->getTop();
     173
    163174        // set value
    164175        if (this->right2Left_)
    165176        {
    166177            // backward case
    167             this->bar_->setPosition(0.06f + 0.88f * (1 - this->value_), 0.0f);
    168             this->bar_->setDimensions(0.88f * this->value_, 1.0f);
     178            if (this->bUseIcon_)
     179            {
     180                this->bar_->setPosition(0.16f + 0.78f * (1 - this->value_), top);
     181                this->bar_->setDimensions(0.78f * this->value_, height);
     182            }
     183            else
     184            {
     185                this->bar_->setPosition(0.06f + 0.88f * (1 - this->value_), top);
     186                this->bar_->setDimensions(0.88f * this->value_, height);
     187            }
    169188        }
    170189        else
    171190        {
    172191            // default case
    173             this->bar_->setPosition(0.06f, 0.0f);
    174             this->bar_->setDimensions(0.88f * this->value_, 1.0f);
    175         }
     192            if (this->bUseIcon_)
     193            {
     194                this->bar_->setPosition(0.16f, top);
     195                this->bar_->setDimensions(0.78f * this->value_, height);
     196            }
     197            else
     198            {
     199                this->bar_->setPosition(0.06f, top);
     200                this->bar_->setDimensions(0.88f * this->value_, height);
     201            }
     202        }
     203
    176204        if (this->value_ != 0)
    177205            this->bar_->setTiling(this->value_, 1.0);
     
    208236        return this->textureUnitState_->getTextureName();
    209237    }
     238
     239    void HUDBar::setIconMaterial(const std::string& iconMaterial)
     240    {
     241        this->bUseIcon_ = true;
     242        this->icon_->setMaterialName(iconMaterial);
     243        valueChanged();
     244    }
     245
     246    const std::string& HUDBar::getIconMaterial() const
     247    {
     248        return this->icon_->getMaterialName();
     249    }
    210250}
  • code/trunk/src/modules/overlays/hud/HUDBar.h

    r9667 r11052  
    3737#include <map>
    3838#include <vector>
     39#include <OgrePanelOverlayElement.h>
    3940
    4041#include "util/Math.h"
     
    5152        virtual ~BarColour() { }
    5253
    53         virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     54        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);     
    5455
    5556        void setColour(const ColourValue& colour) { this->colour_ = colour; }
     
    115116        const std::string& getBarTexture() const;
    116117
     118        void setIconMaterial(const std::string& iconMaterial);
     119        const std::string& getIconMaterial() const;
     120
    117121        inline const ColourValue& getCurrentBarColour() const
    118122            { return this->currentColour_; }
    119123
     124        inline void setIconPosition(Vector2 position)
     125            { this->icon_->setPosition(position.x, position.y); }
     126        inline void setIconDimensions(Vector2 dimensions)
     127            { this->icon_->setDimensions(dimensions.x, dimensions.y); }
     128
    120129    protected:
    121130        virtual void valueChanged();
    122 
    123131    private:
    124132        void addColour(BarColour* colour);
     
    129137        float value_;                       //!< progress of bar
    130138        ColourValue currentColour_;
     139        bool bUseIcon_;
    131140
    132141        Ogre::PanelOverlayElement* bar_;
    133142        Ogre::TextureUnitState* textureUnitState_;
     143        Ogre::PanelOverlayElement* icon_;
    134144        std::map<float, ColourValue> colours_;
    135145        std::vector<BarColour*> barColours_;
  • code/trunk/src/modules/overlays/hud/HUDBoostBar.cc

    r9667 r11052  
    5959            if (this->owner_->isBoostCoolingDown())
    6060            {
    61                 this->setBackgroundColour(ColourValue(0.7f, 0.2f, 0.2f));
     61                //this->setBackgroundColour(ColourValue(0.7f, 0.2f, 0.2f));
    6262                if (this->flashDt_ <= 0.0f)
    6363                {
     
    7272                this->flashDt_ = 0.0f;
    7373                this->show();
    74                 this->setBackgroundColour(ColourValue(0.2f, 0.7f, 0.2f));
     74                //this->setBackgroundColour(ColourValue(0.2f, 0.7f, 0.2f));
    7575            }
    7676
  • code/trunk/src/modules/overlays/hud/HUDHealthBar.cc

    r9667 r11052  
    4545        this->owner_ = 0;
    4646        this->bUseBarColour_ = false;
     47        this->textOffset_ = Vector2(0.0f, 0.0f);
     48        this->textScale_ = 1.0f;
     49
     50        this->setIconPosition(Vector2(0.05f,0.5f));
     51        this->setIconDimensions(Vector2(0.1f,0.5f));
    4752
    4853        this->textoverlay_ = new OverlayText(this->getContext());
     
    5156
    5257        this->textoverlay_->setCaption("");
     58        this->textoverlay_->setAspectCorrection(false);
     59
     60        positionText();
    5361    }
    5462
     
    5866        {
    5967            this->textoverlay_->destroy();
    60             this->textoverlay_ = 0;
     68            this->textoverlay_ = NULL;
    6169        }
    6270    }
     
    7078        XMLPortParam(HUDHealthBar, "textusebarcolour",  setTextUseBarColour,     getTextUseBarColour,     xmlelement, mode).defaultValues(false);
    7179        XMLPortParam(HUDHealthBar, "textcolour",        setTextColour,           getTextColour,           xmlelement, mode).defaultValues(ColourValue(1.0, 1.0, 1.0, 1.0));
    72         XMLPortParam(HUDHealthBar, "textsize",          setTextSize,             getTextSize,             xmlelement, mode).defaultValues(1.0f);
    7380        XMLPortParam(HUDHealthBar, "textalign",         setTextAlignmentString,  getTextAlignmentString,  xmlelement, mode).defaultValues("left");
    7481        XMLPortParam(HUDHealthBar, "textoffset",        setTextOffset,           getTextOffset,           xmlelement, mode).defaultValues(Vector2::ZERO);
     82        XMLPortParam(HUDHealthBar, "textscale",         setTextScale,            getTextScale,            xmlelement, mode).defaultValues(1.0f);
    7583        XMLPortParam(HUDHealthBar, "textpickpoint",     setTextPickPoint,        getTextPickPoint,        xmlelement, mode).defaultValues(Vector2::ZERO);
    7684        XMLPortParam(HUDHealthBar, "textrotation",      setTextRotation,         getTextRotation,         xmlelement, mode).defaultValues(0.0f);
    77         XMLPortParam(HUDHealthBar, "textcorrectaspect", setTextAspectCorrection, getTextAspectCorrection, xmlelement, mode).defaultValues(true);
    7885        XMLPortParam(HUDHealthBar, "textspacewidth",    setTextSpaceWidth,       getTextSpaceWidth,       xmlelement, mode).defaultValues(true);
    7986    }
     
    139146            this->textoverlay_->setColour(this->textColour_);
    140147    }
     148
     149    void HUDHealthBar::positionText()
     150    {
     151        this->textoverlay_->setPosition(this->getPosition() + this->textOffset_*this->getActualSize());
     152        this->textoverlay_->setTextSize(this->getActualSize().y*this->textScale_);
     153    }
     154
     155    void HUDHealthBar::positionChanged()
     156    {
     157        HUDBar::positionChanged();
     158        positionText();
     159    }
     160
     161    void HUDHealthBar::sizeChanged()
     162    {
     163        HUDBar::sizeChanged();
     164        positionText();
     165    }   
    141166}
  • code/trunk/src/modules/overlays/hud/HUDHealthBar.h

    r10624 r11052  
    7575                { return this->textoverlay_->getAlignmentString(); }
    7676
    77             inline void setTextSize(float size)
    78                 { this->textoverlay_->setTextSize(size); }
    79             inline float getTextSize() const
    80                 { return this->textoverlay_->getTextSize(); }
    81 
    8277            inline void setTextVisible(bool bVisible)
    8378                { this->textoverlay_->setVisible(bVisible); }
    8479            inline bool getTextVisible() const
    8580                { return this->textoverlay_->isVisible(); }
     81
     82            inline void setTextScale(float scale)
     83                { this->textScale_ = scale;
     84                  positionText();
     85                }
     86            inline float getTextScale() const
     87                { return this->textScale_; }
    8688
    8789            inline void setTextPickPoint(const Vector2& pickpoint)
     
    9193
    9294            inline void setTextOffset(const Vector2& position)
    93                 { this->textoverlay_->setPosition(this->getPosition() + (position - this->getPickPoint()) * this->getSize()); }
     95                { this->textOffset_ = position;
     96                  this->positionText();
     97                }
    9498            inline Vector2 getTextOffset() const
    95                 { return (this->textoverlay_->getPosition() - this->getPosition()) / this->getSize() + this->getPickPoint(); }
    96 
    97             inline void setTextAspectCorrection(bool correct)
    98                 { this->textoverlay_->setAspectCorrection(correct); }
    99             inline bool getTextAspectCorrection() const
    100                 { return this->textoverlay_->getAspectCorrection(); }
     99                { return this->textOffset_; }
    101100
    102101            inline void setTextRotation(const Degree& angle)
     
    112111            inline void setHealthBarOwner(Pawn* owner)
    113112                { this->owner_ = owner; }
    114 
     113        protected:
     114            virtual void positionChanged();
     115            virtual void sizeChanged();
    115116        private:
     117            virtual void positionText();
    116118            WeakPtr<Pawn> owner_;
    117119            StrongPtr<OverlayText> textoverlay_;
    118120            bool bUseBarColour_;
    119121            ColourValue textColour_;
     122            Vector2 textOffset_;
     123            float textScale_;
    120124    };
    121125}
  • code/trunk/src/modules/overlays/hud/HUDRadar.cc

    r9945 r11052  
    240240            }
    241241            else
    242                 coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
     242                coord = get2DViewCoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
    243243
    244244            coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
  • code/trunk/src/modules/pickup/PickupPrereqs.h

    r9348 r11052  
    8585    class ShrinkPickup;
    8686    class DamageBoostPickup;
     87    class MunitionPickup;
     88    class MunitionContainer;
    8789}
    8890
  • code/trunk/src/modules/pickup/PickupRepresentation.cc

    r9667 r11052  
    187187        Billboard* icon = new Billboard(spawner->getContext());
    188188        icon->setColour(ColourValue(0.89f, 0.79f, 0.08f));
    189         icon->setMaterial("asterisk");
     189        icon->setMaterial("Unknown");
    190190        icon->setScale(0.5);
    191191        sphere->attach(icon);
  • code/trunk/src/modules/pickup/items/CMakeLists.txt

    r9348 r11052  
    88  ShrinkPickup.cc
    99  DamageBoostPickup.cc
     10  BoostPickup.cc
     11  MunitionPickup.cc
     12  MunitionContainer.cc
    1013)
  • code/trunk/src/modules/pickup/items/DronePickup.h

    r9667 r11052  
    4343#include "tools/interfaces/Tickable.h"
    4444
    45 namespace orxonox {
     45namespace orxonox
     46{
    4647
    4748    /**
     
    8081            std::string droneTemplate_; //!< The name of the template, based upon which the Drone is created.
    8182            Pawn* carrierToPawnHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.
    82 
    83 
    84 
    8583    };
    8684}
  • code/trunk/src/modules/towerdefense/TowerDefenseField.cc

    • Property svn:eol-style set to native
  • code/trunk/src/modules/towerdefense/TowerDefenseField.h

    • Property svn:eol-style set to native
  • code/trunk/src/modules/towerdefense/TowerDefenseSelecter.cc

    r10629 r11052  
    8888            {
    8989                moveDownPressed_ = false;
    90                 selectedPos_->Set(selecterPosX, selecterPosY - 1);
     90                selectedPos_->Set(selecterPosX, selecterPosY - 1);
    9191                updatePosition();
    9292            }
     
    100100            {
    101101                moveRightPressed_ = false;
    102                 selectedPos_->Set(selecterPosX + 1, selecterPosY);
     102                selectedPos_->Set(selecterPosX + 1, selecterPosY);
    103103                updatePosition();
    104104            }
  • code/trunk/src/modules/towerdefense/TowerDefenseTower.cc

    r10727 r11052  
    6161        {
    6262            upgrade++;
    63             float reloadrate = getReloadRate();
    64             float reloadwaittime = getReloadWaitTime();
    6563            this->setDamageMultiplier((upgrade+1)*2.0f);
     64
    6665            //this->setRotationThrust(2*this->getRotationThrust());
    67             reloadrate = 0.5f*reloadrate;
    68             reloadwaittime = 0.5f*reloadwaittime;
    69             setReloadRate(reloadrate);
    70             setReloadWaitTime(reloadwaittime);
    7166            //this->addTemplate("towerturret1");
    7267        }
  • code/trunk/src/modules/weapons/IceGunFreezer.cc

    • Property svn:eol-style set to native
  • code/trunk/src/modules/weapons/IceGunFreezer.h

    • Property svn:eol-style set to native
  • code/trunk/src/modules/weapons/WeaponsPrereqs.h

    r10622 r11052  
    6969{
    7070    class MuzzleFlash;
     71    class IceGunFreezer;
     72    class RocketController;
    7173
    7274    // munitions
    7375    class FusionMunition;
    7476    class LaserMunition;
    75     class ReplenishingMunition;
    7677    class RocketMunition;
    7778    class GravityBombMuntion;
     79    class IceMunition;
     80    class LightningMunition;
     81    class SplitMunition;
    7882
    7983    // projectiles
     
    8185    class LightningGunProjectile;
    8286    class ParticleProjectile;
     87    class IceProjectile;
     88    class SplitProjectile;
    8389    class Projectile;
     90    class BasicProjectile;
    8491    class Rocket;
    8592    class RocketOld;
     
    9198    class FusionFire;
    9299    class HsW01;
     100    class IceGun;
     101    class SplitGun;
    93102    class LaserFire;
    94103    class LightningGun;
     104    class MineGun;
    95105    class RocketFire;
    96106    class RocketFireOld;
  • code/trunk/src/modules/weapons/munitions/CMakeLists.txt

    r10629 r11052  
    11ADD_SOURCE_FILES(WEAPONS_SRC_FILES
    2   ReplenishingMunition.cc
    32  LaserMunition.cc
     3  LightningMunition.cc
    44  FusionMunition.cc
    55  RocketMunition.cc
     
    77  IceMunition.cc
    88  SplitMunition.cc
     9  MineMunition.cc
    910)
  • code/trunk/src/modules/weapons/munitions/FusionMunition.cc

    r9667 r11052  
    2828
    2929/**
    30     @file FusionMunition.h
     30    @file FusionMunition.cc
    3131    @brief Implementation of the FusionMunition class.
    3232*/
     
    3434#include "FusionMunition.h"
    3535#include "core/CoreIncludes.h"
     36#include "core/XMLPort.h"
    3637
    3738namespace orxonox
     
    4546        this->maxMunitionPerMagazine_ = 10;
    4647        this->maxMagazines_ = 10;
    47         this->magazines_ = 10;
     48        this->unassignedMagazines_ = 10;
    4849
    49         this->bUseSeparateMagazines_ = true;
    50         this->bStackMunition_ = false;
     50        this->deployment_ = MunitionDeployment::Separate;
     51
    5152        this->reloadTime_ = 1.0f;
    5253
    5354        this->bAllowMunitionRefilling_ = true;
    5455        this->bAllowMultiMunitionRemovementUnderflow_ = true;
     56
     57        this->reloadTime_ = 0.5f;
     58    }
     59
     60    void FusionMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     61    {
     62        SUPER(FusionMunition, XMLPort, xmlelement, mode);
    5563    }
    5664}
  • code/trunk/src/modules/weapons/munitions/FusionMunition.h

    r9667 r11052  
    5353            FusionMunition(Context* context);
    5454            virtual ~FusionMunition() {}
     55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    5556    };
    5657}
  • code/trunk/src/modules/weapons/munitions/GravityBombMunition.cc

    r10622 r11052  
    77#include "GravityBombMunition.h"
    88#include "core/CoreIncludes.h"
     9#include "core/XMLPort.h"
    910
    1011namespace orxonox
     
    1718        this->maxMunitionPerMagazine_ = 1;
    1819        this->maxMagazines_ = 30;
    19         this->magazines_ = 15;
     20        this->unassignedMagazines_ = 15;
    2021
    21         this->bUseSeparateMagazines_ = false;
    22         this->bStackMunition_ = true;
     22        this->deployment_ = MunitionDeployment::Stack;
    2323
    2424        this->bAllowMunitionRefilling_ = true;
    2525        this->bAllowMultiMunitionRemovementUnderflow_ = false;
     26
     27        this->reloadTime_ = 0.0f;
    2628    }
    2729
     30    void GravityBombMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     31    {
     32        SUPER(GravityBombMunition, XMLPort, xmlelement, mode);
     33    }
    2834}
    2935
  • code/trunk/src/modules/weapons/munitions/GravityBombMunition.h

    r10622 r11052  
    2828            GravityBombMunition(Context* context);
    2929            virtual ~GravityBombMunition() {}
     30            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    3031    };
    3132
  • code/trunk/src/modules/weapons/munitions/IceMunition.cc

    • Property svn:eol-style set to native
    r10629 r11052  
    2828
    2929/**
    30     @file IceMunition.h
     30    @file IceMunition.cc
    3131    @brief Implementation of the IceMunition class.
    3232*/
     
    3434#include "IceMunition.h"
    3535#include "core/CoreIncludes.h"
     36#include "core/XMLPort.h"
    3637
    3738namespace orxonox
     
    4546        this->maxMunitionPerMagazine_ = 1;
    4647        this->maxMagazines_ = 50;
    47         this->magazines_ = 25;
     48        this->unassignedMagazines_ = 25;
    4849
    49         this->bUseSeparateMagazines_ = false;
    50         this->bStackMunition_ = true;
     50        this->deployment_ = MunitionDeployment::Stack;
    5151
    52         this->bAllowMunitionRefilling_ = false;
     52        this->bAllowMunitionRefilling_ = true;
    5353        this->bAllowMultiMunitionRemovementUnderflow_ = false;
     54
     55        this->reloadTime_ = 0.5f;
     56    }
     57
     58    void IceMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     59    {
     60        SUPER(IceMunition, XMLPort, xmlelement, mode);
    5461    }
    5562}
  • code/trunk/src/modules/weapons/munitions/IceMunition.h

    • Property svn:eol-style set to native
    r10629 r11052  
    5353            IceMunition(Context* context);
    5454            virtual ~IceMunition() {}
     55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    5556    };
    5657}
  • code/trunk/src/modules/weapons/munitions/LaserMunition.cc

    r9667 r11052  
    2828
    2929/**
    30     @file LaserMunition.h
     30    @file LaserMunition.cc
    3131    @brief Implementation of the LaserMunition class.
    3232*/
     
    3434#include "LaserMunition.h"
    3535#include "core/CoreIncludes.h"
     36#include "core/XMLPort.h"
    3637
    3738namespace orxonox
     
    4445
    4546        this->maxMunitionPerMagazine_ = 20;
    46         this->maxMagazines_ = 1;
    47         this->magazines_ = 1;
     47        this->maxMagazines_ = 10;
     48        this->unassignedMagazines_ = 10;
    4849
    49         this->bUseSeparateMagazines_ = false;
    50         this->bStackMunition_ = true;
     50        this->deployment_ = MunitionDeployment::Separate;
    5151
    5252        this->bAllowMunitionRefilling_ = true;
    5353        this->bAllowMultiMunitionRemovementUnderflow_ = true;
    5454
    55         this->replenishInterval_ = 0.5f;
    56         this->replenishMunitionAmount_ = 1;
     55        this->replenishInterval_ = 7.0f;
     56        this->replenishAmount_ = 1;
     57
     58        this->reloadTime_ = 0.5f;
     59    }
     60
     61    void LaserMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     62    {
     63        SUPER(LaserMunition, XMLPort, xmlelement, mode);
    5764    }
    5865}
  • code/trunk/src/modules/weapons/munitions/LaserMunition.h

    r9667 r11052  
    3636
    3737#include "weapons/WeaponsPrereqs.h"
    38 #include "ReplenishingMunition.h"
     38#include "weaponsystem/ReplenishingMunition.h"
    3939
    4040namespace orxonox
     
    5353            LaserMunition(Context* context);
    5454            virtual ~LaserMunition() {}
     55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    5556    };
    5657}
  • code/trunk/src/modules/weapons/munitions/RocketMunition.cc

    r9667 r11052  
    2828
    2929/**
    30     @file RocketMunition.h
     30    @file RocketMunition.cc
    3131    @brief Implementation of the RocketMunition class.
    3232*/
     
    3434#include "RocketMunition.h"
    3535#include "core/CoreIncludes.h"
     36#include "core/XMLPort.h"
    3637
    3738namespace orxonox
     
    4546        this->maxMunitionPerMagazine_ = 1;
    4647        this->maxMagazines_ = 30;
    47         this->magazines_ = 10;
     48        this->unassignedMagazines_ = 10;
    4849
    49         this->bUseSeparateMagazines_ = false;
    50         this->bStackMunition_ = true;
     50        this->deployment_ = MunitionDeployment::Stack;
    5151
    52         this->bAllowMunitionRefilling_ = false;
     52        this->bAllowMunitionRefilling_ = true;
    5353        this->bAllowMultiMunitionRemovementUnderflow_ = false;
     54
     55        this->reloadTime_ = 0.5f;
     56    }
     57
     58    void RocketMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     59    {
     60        SUPER(RocketMunition, XMLPort, xmlelement, mode);
    5461    }
    5562}
  • code/trunk/src/modules/weapons/munitions/RocketMunition.h

    r9667 r11052  
    5353            RocketMunition(Context* context);
    5454            virtual ~RocketMunition() {}
     55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    5556    };
    5657}
  • code/trunk/src/modules/weapons/munitions/SplitMunition.cc

    • Property svn:eol-style set to native
    r10629 r11052  
    2828
    2929/**
    30     @file SplitMunition.h
     30    @file SplitMunition.cc
    3131    @brief Implementation of the SplitMunition class.
    3232*/
     
    3434#include "SplitMunition.h"
    3535#include "core/CoreIncludes.h"
     36#include "core/XMLPort.h"
    3637
    3738namespace orxonox
     
    4344        RegisterObject(SplitMunition);
    4445
    45         this->maxMunitionPerMagazine_ = 1;
    46         this->maxMagazines_ = 100;
    47         this->magazines_ = 25;
     46        this->maxMunitionPerMagazine_ = 5;
     47        this->maxMagazines_ = 10;
     48        this->unassignedMagazines_ = 5;
    4849
    49         this->bUseSeparateMagazines_ = false;
    50         this->bStackMunition_ = true;
     50        this->deployment_ = MunitionDeployment::Share;
    5151
    5252        this->bAllowMunitionRefilling_ = true;
    5353        this->bAllowMultiMunitionRemovementUnderflow_ = false;
     54
     55        this->reloadTime_ = 0.5f;
     56    }
     57
     58    void SplitMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     59    {
     60        SUPER(SplitMunition, XMLPort, xmlelement, mode);
    5461    }
    5562}
  • code/trunk/src/modules/weapons/munitions/SplitMunition.h

    • Property svn:eol-style set to native
    r10629 r11052  
    5353            SplitMunition(Context* context);
    5454            virtual ~SplitMunition() {}
     55            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    5556    };
    5657}
  • code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc

    r10293 r11052  
    6868    @brief
    6969        The function called when a projectile hits another thing.
    70         Calls the hit-function, starts the reload countdown, displays visual hit effects defined in Pawn.
     70        Calls the hit-function, starts the shield recharge countdown, displays visual hit effects defined in Pawn.
    7171        Needs to be called in the collidesAgainst() function by every Class directly inheriting from BasicProjectile.
    7272    @param otherObject
     
    9797            {
    9898                victim->hit(this->getShooter(), contactPoint, cs, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
    99                 victim->startReloadCountdown();
     99                victim->startShieldRechargeCountdown();
    100100            }
    101101
  • code/trunk/src/modules/weapons/projectiles/CMakeLists.txt

    r10629 r11052  
    1212  GravityBomb.cc
    1313  GravityBombField.cc
     14  MineProjectile.cc
    1415)
  • code/trunk/src/modules/weapons/projectiles/GravityBombField.cc

    r10622 r11052  
    164164        if (lifetime_ <= -4)
    165165        {
    166             orxout(debug_output) << "Timeout. Destroying field." << endl;
    167166            this->destroy();
    168167        }
  • code/trunk/src/modules/weapons/projectiles/IceGunProjectile.cc

    • Property svn:eol-style set to native
    r10629 r11052  
    3434#include "IceGunProjectile.h"
    3535
     36#include <OgreSceneManager.h>
     37#include <OgreSceneNode.h>
     38
    3639#include "core/CoreIncludes.h"
    3740#include "graphics/Model.h"
     41#include "graphics/ParticleSpawner.h"
     42#include "Scene.h"
     43#include "core/command/Executor.h"
     44#include "tools/ParticleInterface.h"
    3845
    3946namespace orxonox
    4047{
    4148    RegisterClass(IceGunProjectile);
     49
     50    const float IceGunProjectile::particleDestructionDelay_ = 15.0f;
    4251
    4352    IceGunProjectile::IceGunProjectile(Context* context) : Projectile(context)
     
    5564        this->attach(model);
    5665        model->setPosition(Vector3(0,0,0));
     66
     67        // Add effect.
     68        spawner_ = new ParticleSpawner(this->getContext());
     69        this->attach(spawner_);
     70        spawner_->setOrientation(this->getOrientation());
     71        spawner_->setSource("Orxonox/ice");
     72        spawner_->setDeleteWithParent(false);
     73        spawner_->setDestroydelay(particleDestructionDelay_);
     74    }
     75
     76    IceGunProjectile::~IceGunProjectile()
     77    {
     78        if (this->isInitialized())
     79        {
     80            const Vector3& pos = spawner_->getWorldPosition();
     81            const Quaternion& rot = spawner_->getWorldOrientation();
     82            this->detach(spawner_);
     83            spawner_->setPosition(pos);
     84            spawner_->setOrientation(rot);
     85            this->getScene()->getRootSceneNode()->addChild(const_cast<Ogre::SceneNode*>(spawner_->getNode()));
     86            this->spawner_->stop(true);
     87        }
    5788    }
    5889
  • code/trunk/src/modules/weapons/projectiles/IceGunProjectile.h

    • Property svn:eol-style set to native
    r10629 r11052  
    5656        public:
    5757            IceGunProjectile(Context* context);
    58             virtual ~IceGunProjectile() {}
     58            virtual ~IceGunProjectile();
    5959
    6060            virtual void setFreezeTime(float freezeTime);
     
    6363        protected:
    6464            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
    65         private:         
     65            static const float particleDestructionDelay_;
     66        private:
     67            ParticleSpawner* spawner_;
    6668            float freezeTime_; //The duration of the freezing effect on a target
    6769            float freezeFactor_; //The strength of the freezing effect
  • code/trunk/src/modules/weapons/projectiles/Projectile.h

    r10629 r11052  
    6969        protected:
    7070            virtual void setCollisionShapeRadius(float radius);
     71            float lifetime_; //!< The time the projectile exists.
    7172
    7273        private:
    73             float lifetime_; //!< The time the projectile exists.
    7474            Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
    75             WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.           
     75            WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.
    7676    };
    7777}
  • code/trunk/src/modules/weapons/projectiles/Rocket.cc

    r10622 r11052  
    6666
    6767        this->localAngularVelocity_ = 0;
    68         this->lifetime_ = 100.0f;
     68        this->lifetime_ = 20.0f;
    6969
    7070        if (GameMode::isMaster())
     
    7676            Model* model = new Model(this->getContext());
    7777            model->setMeshSource("rocket.mesh");
    78             model->scale(0.7f);
     78            model->scale(1.0f);
    7979            this->attach(model);
    8080
     
    100100            this->attachCollisionShape(collisionShape);
    101101
    102             this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
    103 
    104102            // Add sound
    105103            this->defSndWpnEngine_ = new WorldSound(this->getContext());
     
    114112            this->defSndWpnLaunch_->setVolume(1.0f);
    115113            this->attach(defSndWpnLaunch_);
     114
     115            this->setHudTemplate("rockethud");
    116116        }
    117117        else
     
    320320    }
    321321
     322    float Rocket::getFuel() const
     323    {
     324        return this->destroyTimer_.getRemainingTime();
     325    }
     326
     327    void Rocket::setMaxFuel(float fuel)
     328    {
     329        this->lifetime_ = fuel;
     330        this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
     331    }
    322332}
  • code/trunk/src/modules/weapons/projectiles/Rocket.h

    r10216 r11052  
    118118            virtual void fired(unsigned int firemode);
    119119
     120            /**
     121            @brief Set the maximum lifetime of the rocket.
     122            */
     123            virtual void setMaxFuel(float fuel);
     124            /**
     125            @brief Get the maximum lifetime of the rocket.
     126            */
     127            inline float getMaxFuel() const
     128                { return lifetime_; }
     129            virtual float getFuel() const;
     130
    120131        private:
    121132            Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.
  • code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc

    r10299 r11052  
    7676            Model* model = new Model(this->getContext());
    7777            model->setMeshSource("rocket.mesh");
    78             model->scale(0.7f);
     78            model->scale(1.0f);
    7979            this->attach(model);
    8080
  • code/trunk/src/modules/weapons/projectiles/SplitGunProjectile.cc

    • Property svn:eol-style set to native
  • code/trunk/src/modules/weapons/projectiles/SplitGunProjectile.h

    • Property svn:eol-style set to native
  • code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt

    r10629 r11052  
    1111  SimpleRocketFire.cc
    1212  GravityBombFire.cc
     13  MineGun.cc
    1314)
  • code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc

    r10622 r11052  
    6363        this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&EnergyDrink::shot, this)));
    6464        this->delayTimer_.stopTimer();
     65
     66        hudImageString_ = "Orxonox/WSHUD_WM_EnergyDrink";
    6567    }
    6668
  • code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc

    r10622 r11052  
    5858
    5959        this->setMunitionName("FusionMunition");
     60
     61        hudImageString_ = "Orxonox/WSHUD_WM_FusionFire";
    6062    }
    6163
  • code/trunk/src/modules/weapons/weaponmodes/GravityBombFire.cc

    r10622 r11052  
    3131        this->setMunitionName("GravityBombMunition");
    3232        this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.8);    ///< sets sound of the bomb as it is fired.
     33
     34        hudImageString_ = "Orxonox/WSHUD_WM_GravityBombFire";
    3335    }
    3436
  • code/trunk/src/modules/weapons/weaponmodes/HsW01.cc

    r10296 r11052  
    6969
    7070        this->setDefaultSound(this->sound_);
     71
     72        hudImageString_ = "Orxonox/WSHUD_WM_HsW01";
    7173    }
    7274
  • code/trunk/src/modules/weapons/weaponmodes/IceGun.cc

    • Property svn:eol-style set to native
    r10629 r11052  
    5959        this->setFreezeFactor(0.5);
    6060
    61         this->setMunitionName("LaserMunition");
     61        this->setMunitionName("IceMunition");
    6262        this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
     63
     64        hudImageString_ = "Orxonox/WSHUD_WM_IceGun";
    6365    }
    6466
  • code/trunk/src/modules/weapons/weaponmodes/IceGun.h

    • Property svn:eol-style set to native
  • code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc

    r10622 r11052  
    5656
    5757        this->setMunitionName("LaserMunition");
     58
     59        hudImageString_ = "Orxonox/WSHUD_WM_LaserFire";
    5860    }
    5961
  • code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc

    r10296 r11052  
    5454        this->speed_ = 750.0f;
    5555
    56         this->setMunitionName("LaserMunition");
     56        this->setMunitionName("LightningMunition");
    5757        this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
     58
     59        hudImageString_ = "Orxonox/WSHUD_WM_LightningGun";
    5860    }
    5961
  • code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc

    r10296 r11052  
    4141#include "weaponsystem/WeaponSystem.h"
    4242#include "worldentities/pawns/Pawn.h"
    43 
     43#include "core/XMLPort.h"
    4444#include "weapons/projectiles/Rocket.h"
    4545
     
    5656        this->damage_ = 0.0f;
    5757        this->speed_ = 500.0f;
     58        this->fuel_ = 10.0f;
    5859
    5960        this->setMunitionName("RocketMunition");
    6061        // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
     62
     63        hudImageString_ = "Orxonox/WSHUD_WM_RocketFire";
    6164    }
    6265
    6366    RocketFire::~RocketFire()
    6467    {
     68    }
     69
     70    /**
     71    @brief
     72        XMLPort for the RocketFire. You can define the maximum lifetime of the rockets
     73    */
     74    void RocketFire::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     75    {
     76        SUPER(RocketFire, XMLPort, xmlelement, mode);
     77
     78        XMLPortParam(RocketFire, "fuel", setFuel, getFuel, xmlelement, mode);
    6579    }
    6680
     
    7791        rocket->setPosition(this->getMuzzlePosition());
    7892        rocket->setVelocity(this->getMuzzleDirection() * this->speed_);
    79         rocket->scale(2);
     93        rocket->scale(1.0f);
    8094
    8195        rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
     
    8397        rocket->setShieldDamage(this->getShieldDamage());
    8498        rocket->setHealthDamage(this->getHealthDamage());
     99        rocket->setMaxFuel(this->fuel_);
    85100    }
    86101}
  • code/trunk/src/modules/weapons/weaponmodes/RocketFire.h

    r9667 r11052  
    5454            virtual ~RocketFire();
    5555
     56            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     57
    5658            virtual void fire();
     59            inline void setFuel(float fuel)
     60                { this->fuel_ = fuel; }
     61            inline float getFuel() const
     62                { return this->fuel_; }
    5763
    5864        private:
    5965            float speed_; //!< The speed of the Rocket.
     66            float fuel_; //!< The maximum lifetime of the rocket
    6067    };
    6168}
  • code/trunk/src/modules/weapons/weaponmodes/RocketFireOld.cc

    r10622 r11052  
    5959        this->setMunitionName("RocketMunition");
    6060        // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
     61
     62        hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
    6163    }
    6264
  • code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc

    r9667 r11052  
    6464        this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.4f);
    6565        // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
     66
     67        hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
    6668    }
    6769
     
    8385        rocket->setVelocity(this->getMuzzleDirection()*this->speed_);
    8486        rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
     87        rocket->scale(1.0f);
    8588
    8689        rocket->setDamage(this->damage_);
     
    8992
    9093        WorldEntity* pawn = static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget();
    91         if (pawn) controller->setTarget(pawn);
     94        if (pawn)
     95            controller->setTarget(pawn);
    9296    }
    9397}
  • code/trunk/src/modules/weapons/weaponmodes/SplitGun.cc

    • Property svn:eol-style set to native
    r10629 r11052  
    3535
    3636#include "core/CoreIncludes.h"
    37 #include "core/XMLPort.h"   
     37#include "core/XMLPort.h"
    3838#include "weaponsystem/Weapon.h"
    3939#include "weaponsystem/WeaponPack.h"
     
    6262        this->setMunitionName("SplitMunition");
    6363        this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
     64
     65        hudImageString_ = "Orxonox/WSHUD_WM_SplitGun";
    6466    }
    6567
  • code/trunk/src/modules/weapons/weaponmodes/SplitGun.h

    • Property svn:eol-style set to native
  • code/trunk/src/orxonox/OrxonoxPrereqs.h

    r10624 r11052  
    167167    class DefaultWeaponmodeLink;
    168168    class Munition;
     169    class ReplenishingMunition;
    169170    class Weapon;
    170171    class WeaponMode;
     
    175176
    176177    // worldentities
    177     class BigExplosion;
    178178    class CameraPosition;
    179179    class ControllableEntity;
  • code/trunk/src/orxonox/controllers/ArtificialController.cc

    r10631 r11052  
    9494            return;
    9595
    96         static const float hardcoded_projectile_speed = 750;
    97 
    98         this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getWorldPosition(), hardcoded_projectile_speed, this->target_->getWorldPosition(), this->target_->getVelocity());
     96        static const float HARDCODED_PROJECTILE_SPEED = 750;
     97
     98        this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getWorldPosition(), HARDCODED_PROJECTILE_SPEED, this->target_->getWorldPosition(), this->target_->getVelocity());
    9999        this->bHasTargetPosition_ = (this->targetPosition_ != Vector3::ZERO);
    100100
  • code/trunk/src/orxonox/controllers/CMakeLists.txt

    r10216 r11052  
    1111  FormationController.cc
    1212  ControllerDirector.cc
     13  DivisionController.cc
     14  WingmanController.cc
     15  SectionController.cc
     16  CommonController.cc
     17  ActionpointController.cc
     18  FlyingController.cc
     19  FightingController.cc
     20  MasterController.cc
    1321)
  • code/trunk/src/orxonox/controllers/FormationController.cc

    r10631 r11052  
    277277        }
    278278
    279         Vector2 coord = get2DViewcoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
     279        Vector2 coord = get2DViewCoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
    280280        float distance = (target - this->getControllableEntity()->getPosition()).length();
    281281        float rotateX = clamp(coord.x * 10, -1.0f, 1.0f);
     
    970970        if (controller)
    971971        {
     972            if (controller->getIdentifier()->getName() == "MasterController")
     973                return true;
    972974            FormationController* ac = orxonox_cast<FormationController*>(controller);
    973975            if (ac)
     
    981983        if (controller)
    982984        {
     985            if (controller->getIdentifier()->getName() == "MasterController")
     986                return true;
    983987            FormationController* ac = orxonox_cast<FormationController*>(controller);
    984988            if (ac)
     
    10691073            return;
    10701074
    1071         Vector2 coord = get2DViewcoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
     1075        Vector2 coord = get2DViewCoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
    10721076        float distance = (target - this->getControllableEntity()->getPosition()).length();
    10731077
  • code/trunk/src/orxonox/controllers/HumanController.cc

    r10624 r11052  
    199199    @brief
    200200        Starts the boosting mode.
    201         Resets the boosting timeout and ells the ControllableEntity to boost (or not boost anymore).
     201        Resets the boosting timeout and tells the ControllableEntity to boost (or not boost anymore).
    202202    */
    203203    void HumanController::startBoosting(void)
  • code/trunk/src/orxonox/gametypes/Dynamicmatch.cc

    r10624 r11052  
    8686    }
    8787
     88    Dynamicmatch::~Dynamicmatch()
     89    {
     90        for (std::set<Timer*>::iterator it = this->piggyTimers_.begin(); it != this->piggyTimers_.end(); ++it)
     91            delete (*it);
     92    }
     93
    8894    void Dynamicmatch::setConfigValues()
    8995    {
     
    312318            spaceship->addSpeedFactor(5);
    313319            ExecutorPtr executor = createExecutor(createFunctor(&Dynamicmatch::resetSpeedFactor, this));
    314             executor->setDefaultValue(0, spaceship);
    315             new Timer(10, false, executor, true);
     320            Timer* timer = new Timer(10, false, executor);
     321            executor->setDefaultValue(0, spaceship); // TODO: use WeakPtr because spaceship can be destroyed in the meantime
     322            executor->setDefaultValue(1, timer);
     323            this->piggyTimers_.insert(timer);
    316324        }
    317325    }
     
    590598    }
    591599
    592     void Dynamicmatch::resetSpeedFactor(SpaceShip* spaceship)// helper function
     600    void Dynamicmatch::resetSpeedFactor(SpaceShip* spaceship, Timer* timer)// helper function
    593601    {
    594602        if (spaceship)
     
    596604            spaceship->addSpeedFactor(1.0f/5.0f);
    597605        }
     606
     607        this->piggyTimers_.erase(timer);
     608        delete timer;
    598609    }
    599610
  • code/trunk/src/orxonox/gametypes/Dynamicmatch.h

    r10624 r11052  
    3333
    3434#include <map>
     35#include <set>
    3536#include <vector>
    3637
     
    4546        public:
    4647            Dynamicmatch(Context* context);
    47             virtual ~Dynamicmatch() {}
     48            virtual ~Dynamicmatch();
    4849
    4950            bool notEnoughPigs;
     
    7778            virtual void rewardPig();
    7879            void grantPigBoost(SpaceShip* spaceship); // Grant the piggy a boost.
    79             void resetSpeedFactor(SpaceShip* spaceship);
     80            void resetSpeedFactor(SpaceShip* spaceship, Timer* timer);
    8081            void tick (float dt);// used to end the game
    8182            SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const;
     
    8889            std::map< PlayerInfo*, int > playerParty_; //player's parties are recorded here
    8990            std::vector<ColourValue> partyColours_; //aus TeamDeathmatch
     91            std::set<Timer*> piggyTimers_;
    9092            unsigned int numberOf[3]; //array to count number of chasers, pigs, killers
    9193            float pointsPerTime;
  • code/trunk/src/orxonox/infos/PlayerInfo.cc

    r10624 r11052  
    202202
    203203        this->changedControllableEntity();
     204
     205         // HACK-ish
     206        if(this->isHumanPlayer())
     207            entity->createHud();
    204208    }
    205209
     
    252256        if( !entity || this->previousControllableEntity_.size() == 0 )
    253257            return;
     258
     259        entity->destroyHud(); // HACK-ish
    254260
    255261        this->controllableEntity_->setController(0);
  • code/trunk/src/orxonox/items/ShipPart.cc

    r10624 r11052  
    4141#include "worldentities/StaticEntity.h"
    4242#include "items/PartDestructionEvent.h"
    43 #include "worldentities/BigExplosion.h"
    4443#include "chat/ChatManager.h"
    4544
     
    105104    void ShipPart::explode()
    106105    {
    107         BigExplosion* chunk = new BigExplosion(this->getContext());
    108         chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * (this->explosionPosition_));
    109         //chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * Vector3(this->entityList_[0]->getLocalInertia()));
    110         chunk->setVelocity(this->parent_->getVelocity());
     106        // BigExplosion* chunk = new BigExplosion(this->getContext());
     107        // chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * (this->explosionPosition_));
     108        // //chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * Vector3(this->entityList_[0]->getLocalInertia()));
     109        // chunk->setVelocity(this->parent_->getVelocity());
    111110
    112111        // this->explosionSound_->setPosition(this->parent_->getPosition());
  • code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc

    r10624 r11052  
    450450        tempTx->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, colour);
    451451    }
     452
     453    void OrxonoxOverlay::setZOrder(unsigned short order)
     454    {
     455        if (this->overlay_)
     456        {
     457            this->overlay_->setZOrder(order);
     458        }
     459    }
    452460}
  • code/trunk/src/orxonox/overlays/OrxonoxOverlay.h

    r9667 r11052  
    6565          only for displaying a picture).
    6666        - Reacts to changes of the window aspect
    67         - Last but not least: On demand you can tell the overlay to automatically resale to correct for
     67        - Last but not least: On demand you can tell the overlay to automatically rescale to correct for
    6868          aspect distortion. E.g. if you play 1024x768 you wouldn't want a round object to be oval.
    6969          Remark: This can (due to the Ogre::Overlay transformation order) only work for angle that are
     
    186186        virtual void changedOverlayGroup()
    187187            { this->changedVisibility(); }
     188        virtual void setZOrder(unsigned short order);
    188189
    189190    protected:
  • code/trunk/src/orxonox/overlays/OverlayGroup.cc

    r10624 r11052  
    4242namespace orxonox
    4343{
     44    namespace autocompletion
     45    {
     46        /**
     47            @brief Returns the names of all currently existing OverlayGroups.
     48        */
     49        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(overlaygroupnames)();
     50        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION(overlaygroupnames)()
     51        {
     52            ArgumentCompletionList names;
     53            for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
     54                names.push_back(ArgumentCompletionListElement(it->getName(), getLowercase(it->getName())));
     55            return names;
     56        }
     57    }
     58
     59    SetConsoleCommand("OverlayGroup", "toggleVisibility", &OverlayGroup::toggleVisibility).argumentCompleter(0, autocompletion::overlaygroupnames());
     60    SetConsoleCommand("OverlayGroup", "show",             &OverlayGroup::show            ).argumentCompleter(0, autocompletion::overlaygroupnames());
     61    SetConsoleCommand("OverlayGroup", "scaleGroup",       &OverlayGroup::scaleGroup      ).argumentCompleter(0, autocompletion::overlaygroupnames());
     62    SetConsoleCommand("OverlayGroup", "scrollGroup",      &OverlayGroup::scrollGroup     ).argumentCompleter(0, autocompletion::overlaygroupnames());
     63
    4464    RegisterClass(OverlayGroup);
    45 
    46     SetConsoleCommand("OverlayGroup", "toggleVisibility", &OverlayGroup::toggleVisibility);
    47     SetConsoleCommand("OverlayGroup", "show", &OverlayGroup::show);
    48     SetConsoleCommand("OverlayGroup", "scaleGroup",       &OverlayGroup::scaleGroup);
    49     SetConsoleCommand("OverlayGroup", "scrollGroup",      &OverlayGroup::scrollGroup);
    5065
    5166    OverlayGroup::OverlayGroup(Context* context)
  • code/trunk/src/orxonox/weaponsystem/CMakeLists.txt

    r5781 r11052  
    11ADD_SOURCE_FILES(ORXONOX_SRC_FILES
    22  Munition.cc
     3  ReplenishingMunition.cc
    34  Weapon.cc
    45  WeaponMode.cc
  • code/trunk/src/orxonox/weaponsystem/Munition.cc

    r9667 r11052  
    2424 *      Fabian 'x3n' Landau
    2525 *   Co-authors:
    26  *      ...
     26 *      Fabien Vultier
    2727 *
    2828 */
     
    3232#include "core/CoreIncludes.h"
    3333#include "core/command/Executor.h"
     34#include "core/XMLPort.h"
    3435
    3536namespace orxonox
     
    4344        this->maxMunitionPerMagazine_ = 10;
    4445        this->maxMagazines_ = 10;
    45         this->magazines_ = 10;
    46 
    47         this->bUseSeparateMagazines_ = false;
    48         this->bStackMunition_ = true;
     46        this->unassignedMagazines_ = 10;
     47
     48        this->deployment_ = MunitionDeployment::Stack;
    4949        this->bAllowMunitionRefilling_ = true;
    5050        this->bAllowMultiMunitionRemovementUnderflow_ = true;
    5151
    52         this->reloadTime_ = 0;
     52        this->reloadTime_ = 0.5f;
     53
     54        this->lastFilledWeaponMode_ = NULL;
    5355    }
    5456
    5557    Munition::~Munition()
    5658    {
    57         for (std::map<WeaponMode*, Magazine*>::iterator it = this->currentMagazines_.begin(); it != this->currentMagazines_.end(); ++it)
     59        for (std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
    5860            delete it->second;
    5961    }
    6062
     63    void Munition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     64    {
     65        SUPER(Munition, XMLPort, xmlelement, mode);
     66
     67        XMLPortParam(Munition, "initialmagazines", setNumMagazines, getNumMagazines, xmlelement, mode);
     68        XMLPortParam(Munition, "maxmagazines", setMaxMagazines, getMaxMagazines, xmlelement, mode);
     69        XMLPortParam(Munition, "munitionpermagazine", setMaxMunitionPerMagazine, getMaxMunitionPerMagazine, xmlelement, mode);
     70    }
     71
    6172    Munition::Magazine* Munition::getMagazine(WeaponMode* user) const
    6273    {
    63         if (this->bUseSeparateMagazines_)
     74        if (deployment_ == MunitionDeployment::Separate)
    6475        {
    6576            // For separated magazines we definitively need a given user
     
    6879
    6980            // Use the map to get the magazine assigned to the given user
    70             std::map<WeaponMode*, Magazine*>::const_iterator it = this->currentMagazines_.find(user);
    71             if (it != this->currentMagazines_.end())
     81            std::map<WeaponMode*, Magazine*>::const_iterator it = this->assignedMagazines_.find(user);
     82            if (it != this->assignedMagazines_.end())
    7283                return it->second;
    7384        }
     
    7586        {
    7687            // We don't use separate magazines for each user, so just take the first magazine
    77             if (this->currentMagazines_.size() > 0)
    78                 return this->currentMagazines_.begin()->second;
     88            if (this->assignedMagazines_.size() > 0)
     89                return this->assignedMagazines_.begin()->second;
    7990        }
    8091
     
    8798        if (magazine)
    8899        {
    89             if (this->bStackMunition_)
     100            if (deployment_ == MunitionDeployment::Stack)
    90101                // With stacked munition every magazine contributes to the total amount
    91                 return this->maxMunitionPerMagazine_ * this->magazines_ + magazine->munition_;
     102                return this->maxMunitionPerMagazine_ * this->unassignedMagazines_ + magazine->munition_;
    92103            else
    93104                // Wihtout stacked munition we just consider the current magazine
     
    109120    unsigned int Munition::getNumMagazines() const
    110121    {
    111         if (this->bStackMunition_)
     122        if (deployment_ == MunitionDeployment::Stack)
    112123        {
    113124            // If we stack munition and the current magazine is still full, it counts too
    114125            Magazine* magazine = this->getMagazine(0);
    115126            if (magazine && magazine->munition_ == this->maxMunitionPerMagazine_)
    116                 return this->magazines_ + 1;
    117         }
    118 
    119         return this->magazines_;
     127                return this->unassignedMagazines_ + 1;
     128        }
     129
     130        return this->unassignedMagazines_;
     131    }
     132
     133    void Munition::setNumMagazines(unsigned int numMagazines)
     134    {
     135        this->unassignedMagazines_ = numMagazines;
    120136    }
    121137
    122138    unsigned int Munition::getMaxMunition() const
    123139    {
    124         if (this->bStackMunition_)
     140        if (deployment_ == MunitionDeployment::Stack)
    125141            return this->maxMunitionPerMagazine_ * this->maxMagazines_;
    126142        else
     
    135151            unsigned int munition = magazine->munition_;
    136152
    137             // If we stack munition, we con't care about the current magazine - we just need enough munition in total
    138             if (this->bStackMunition_)
    139                 munition += this->maxMunitionPerMagazine_ * this->magazines_;
     153            // If we stack munition, we don't care about the current magazine - we just need enough munition in total
     154            if (deployment_ == MunitionDeployment::Stack)
     155            {
     156                munition += this->maxMunitionPerMagazine_ * this->unassignedMagazines_;
     157            }
    140158
    141159            if (munition == 0)
     160            {
    142161                // Absolutely no munition - no chance to take munition
    143162                return false;
     163            }
    144164            else if (this->bAllowMultiMunitionRemovementUnderflow_)
     165            {
    145166                // We're not empty AND we allow underflow, so this will always work
    146167                return true;
     168            }
    147169            else
     170            {
    148171                // We don't allow underflow, so we have to check the amount
    149172                return (munition >= amount);
     173            }
     174
    150175        }
    151176        return false;
     
    169194            {
    170195                // Not enough munition
    171                 if (this->bStackMunition_)
     196                if (deployment_ == MunitionDeployment::Stack)
    172197                {
    173198                    // We stack munition, so just take what we can and then load the next magazine
     
    175200                    magazine->munition_ = 0;
    176201
    177                     if (this->reload(0))
     202                    if (this->reload(NULL))
    178203                        // Successfully reloaded, continue recursively
    179204                        return this->takeMunition(amount, 0);
     
    199224    {
    200225        // As long as we have enough magazines (and don't stack munition) we can reload
    201         return (this->magazines_ > 0 && !this->bStackMunition_);
     226        return (this->unassignedMagazines_ > 0 && deployment_ != MunitionDeployment::Stack);
    202227    }
    203228
     
    207232        if (magazine)
    208233        {
    209             if (this->bStackMunition_)
     234            if (deployment_ == MunitionDeployment::Stack)
    210235                // With stacked munition, we never have to reload
    211236                return false;
     
    227252
    228253        // Check if we actually can reload
    229         if (this->magazines_ == 0)
     254        if (this->unassignedMagazines_ == 0)
    230255            return false;
    231256
    232257        // If we use separate magazines for each user, we definitively need a user given
    233         if (this->bUseSeparateMagazines_ && !user)
     258        if (deployment_ == MunitionDeployment::Separate && !user)
    234259            return false;
    235260
    236261        // If we don't use separate magazines, set user to 0
    237         if (!this->bUseSeparateMagazines_)
    238             user = 0;
     262        if (deployment_ != MunitionDeployment::Separate)
     263        {
     264            user = NULL;
     265        }
    239266
    240267        // Remove the current magazine for the given user
    241         std::map<WeaponMode*, Magazine*>::iterator it = this->currentMagazines_.find(user);
    242         if (it != this->currentMagazines_.end())
    243         {
     268        std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.find(user);
     269        if (it != this->assignedMagazines_.end())
     270        {
     271            if (it->first == lastFilledWeaponMode_)
     272            {
     273                lastFilledWeaponMode_ = NULL;
     274            }           
    244275            delete it->second;
    245             this->currentMagazines_.erase(it);
     276            this->assignedMagazines_.erase(it);
    246277        }
    247278
    248279        // Load a new magazine
    249         this->currentMagazines_[user] = new Magazine(this, bUseReloadTime);
    250         this->magazines_--;
     280        this->assignedMagazines_[user] = new Magazine(this, bUseReloadTime);
     281        this->unassignedMagazines_--;
    251282
    252283        return true;
     
    260291            return false;
    261292
    262         if (this->bStackMunition_)
     293        if (deployment_ == MunitionDeployment::Stack)
    263294        {
    264295            // If we stack munition, we can always add munition until we reach the limit
     
    268299        {
    269300            // Return true if any of the current magazines is not full (loading counts as full although it returns 0 munition)
    270             for (std::map<WeaponMode*, Magazine*>::const_iterator it = this->currentMagazines_.begin(); it != this->currentMagazines_.end(); ++it)
     301            for (std::map<WeaponMode*, Magazine*>::const_iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
    271302                if (it->second->munition_ < this->maxMunitionPerMagazine_ && it->second->bLoaded_)
    272303                    return true;
     
    281312            return false;
    282313
    283         if (this->bStackMunition_)
     314        if (deployment_ == MunitionDeployment::Stack)
    284315        {
    285316            // Stacking munition means, if a magazine gets full, the munition adds to a new magazine
    286             Magazine* magazine = this->getMagazine(0);
     317            Magazine* magazine = this->getMagazine(NULL);
    287318            if (magazine)
    288319            {
     
    294325                {
    295326                    magazine->munition_ -= this->maxMunitionPerMagazine_;
    296                     this->magazines_++;
     327                    this->unassignedMagazines_++;
    297328                }
    298329
    299                 // If we reached the limit, reduze both magazines and munition to the maximum
    300                 if (this->magazines_ >= this->maxMagazines_)
    301                 {
    302                     this->magazines_ = this->maxMagazines_ - 1;
     330                // If we reached the limit, reduce both magazines and munition to the maximum
     331                if (this->unassignedMagazines_ >= this->maxMagazines_)
     332                {
     333                    this->unassignedMagazines_ = this->maxMagazines_;
    303334                    magazine->munition_ = this->maxMunitionPerMagazine_;
    304335                }
     
    312343        else
    313344        {
     345            std::map<WeaponMode*, Magazine*>::iterator it;
     346
     347            // If the pointer to the weapon mode whose magazine got munition added to is NULL, then set the iterator to the beginning of the map
     348            // Otherwise set it to the next weapon mode
     349            if (lastFilledWeaponMode_ == NULL)
     350            {
     351                it = this->assignedMagazines_.begin();
     352            }
     353            else
     354            {
     355                it = this->assignedMagazines_.find(lastFilledWeaponMode_);
     356                ++ it;
     357            }
     358
    314359            // Share the munition equally to the current magazines
     360            bool firstLoop = true;
    315361            while (amount > 0)
    316362            {
    317363                bool change = false;
    318                 for (std::map<WeaponMode*, Magazine*>::iterator it = this->currentMagazines_.begin(); it != this->currentMagazines_.end(); ++it)
     364                while (it != this->assignedMagazines_.end())
    319365                {
    320366                    // Add munition if the magazine isn't full (but only to loaded magazines)
     
    323369                        it->second->munition_++;
    324370                        amount--;
     371                        lastFilledWeaponMode_ = it->first;
    325372                        change = true;
    326373                    }
     374
     375                    ++it;
    327376                }
    328377
    329378                // If there was no change in a loop, all magazines are full (or locked due to loading)
    330                 if (!change)
     379                // Because the first loop does not start at the beginning of the map we have to treat is separately
     380                if (!change && !firstLoop)
     381                {
    331382                    break;
     383                }                   
     384
     385                it = this->assignedMagazines_.begin();
     386                firstLoop = false;
    332387            }
    333388
     
    340395        // TODO: 'amount' is not used
    341396
    342         if (this->bStackMunition_)
     397        if (deployment_ == MunitionDeployment::Stack)
    343398            // If we stack munition, we can always add new magazines because they contribute directly to the munition
    344399            return (this->getNumMunition(0) < this->getMaxMunition());
    345400        else
    346401            // If we don't stack munition, we're more limited
    347             return ((this->currentMagazines_.size() + this->magazines_) < this->maxMagazines_);
    348     }
    349 
    350     bool Munition::addMagazines(unsigned int amount)
    351     {
     402            return ((this->assignedMagazines_.size() + this->unassignedMagazines_) < this->maxMagazines_);
     403    }
     404
     405    unsigned int Munition::addMagazines(unsigned int amount)
     406    {
     407        unsigned int addedMagazines = 0;
     408
    352409        if (!this->canAddMagazines(amount))
    353             return false;
     410            return 0;
    354411
    355412        // Calculate how many magazines are needed
    356         int needed_magazines = this->maxMagazines_ - this->magazines_ - this->currentMagazines_.size();
     413        int needed_magazines = this->maxMagazines_ - this->unassignedMagazines_ - this->assignedMagazines_.size();
    357414
    358415        // If zero or less magazines are needed, we definitively don't need more magazines (unless we stack munition - then a magazine contributes directly to the munition)
    359         if (needed_magazines <= 0 && !this->bStackMunition_)
    360             return false;
     416        if (needed_magazines <= 0 && deployment_ != MunitionDeployment::Stack)
     417            return 0;
    361418
    362419        if (amount <= static_cast<unsigned int>(needed_magazines))
    363420        {
    364421            // We need more magazines than we get, so just add them
    365             this->magazines_ += amount;
     422            this->unassignedMagazines_ += amount;
     423            addedMagazines = amount;
    366424        }
    367425        else
    368426        {
    369427            // We get more magazines than we need, so just add the needed amount
    370             this->magazines_ += needed_magazines;
    371             if (this->bStackMunition_)
     428            this->unassignedMagazines_ += needed_magazines;
     429            addedMagazines = needed_magazines;
     430            if (deployment_ == MunitionDeployment::Stack)
    372431            {
    373432                // We stack munition, so the additional amount contributes directly to the munition of the current magazine
     
    378437        }
    379438
    380         return true;
     439        // Reload as many empty magazines as possible
     440        // Double loop and break is needed because the reload function changes the assigned magazines. This may confuse the iterator.
     441        for (unsigned int i = 0; i < addedMagazines; ++i)
     442        {
     443            for (std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
     444            {
     445                if (needReload(it->first))
     446                {
     447                    reload(it->first);
     448                    break;
     449                }
     450            }
     451        }
     452
     453        return addedMagazines;
    381454    }
    382455
    383456    bool Munition::canRemoveMagazines(unsigned int amount) const
    384457    {
    385         if (this->bStackMunition_)
    386         {
    387             if (this->magazines_ >= amount)
     458        if (deployment_ == MunitionDeployment::Stack)
     459        {
     460            if (this->unassignedMagazines_ >= amount)
    388461            {
    389462                // We have enough magazines
    390463                return true;
    391464            }
    392             else if (this->magazines_ == amount - 1)
     465            else if (this->unassignedMagazines_ == amount - 1)
    393466            {
    394467                // We lack one magazine, check if the current magazine is still full, if yes we're fine
     
    406479        {
    407480            // In case we're not stacking munition, just check the number of magazines
    408             return (this->magazines_ >= amount);
     481            return (this->unassignedMagazines_ >= amount);
    409482        }
    410483
     
    417490            return false;
    418491
    419         if (this->magazines_ >= amount)
     492        if (this->unassignedMagazines_ >= amount)
    420493        {
    421494            // We have enough magazines, just remove the amount
    422             this->magazines_ -= amount;
    423         }
    424         else if (this->bStackMunition_)
     495            this->unassignedMagazines_ -= amount;
     496        }
     497        else if (deployment_ == MunitionDeployment::Stack)
    425498        {
    426499            // We don't have enough magazines, but we're stacking munition, so additionally remove the bullets from the current magazine
    427             this->magazines_ = 0;
     500            this->unassignedMagazines_ = 0;
    428501            Magazine* magazine = this->getMagazine(0);
    429502            if (magazine)
     
    437510    {
    438511        // If we use separate magazines, we need a user
    439         if (this->bUseSeparateMagazines_ && !user)
     512        if (deployment_ == MunitionDeployment::Separate && !user)
    440513            return false;
    441514
    442515        // If we don't use separate magazines, set user to 0
    443         if (!this->bUseSeparateMagazines_)
    444             user = 0;
     516        if (deployment_ != MunitionDeployment::Separate)
     517            user = NULL;
    445518
    446519        // Remove the current magazine for the given user
    447         std::map<WeaponMode*, Magazine*>::iterator it = this->currentMagazines_.find(user);
    448         if (it != this->currentMagazines_.end())
    449         {
     520        std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.find(user);
     521        if (it != this->assignedMagazines_.end())
     522        {
     523            if (it->first == lastFilledWeaponMode_)
     524            {
     525                lastFilledWeaponMode_ = NULL;
     526            }
    450527            delete it->second;
    451             this->currentMagazines_.erase(it);
     528            this->assignedMagazines_.erase(it);           
    452529            return true;
    453530        }
     
    465542        this->bLoaded_ = false;
    466543
    467         if (bUseReloadTime && munition->reloadTime_ > 0 && !munition->bStackMunition_)
     544        if (bUseReloadTime && munition->reloadTime_ > 0 && munition->deployment_ != MunitionDeployment::Stack)
    468545        {
    469546            const ExecutorPtr& executor = createExecutor(createFunctor(&Magazine::loaded, this));
  • code/trunk/src/orxonox/weaponsystem/Munition.h

    r9667 r11052  
    2424 *      Fabian 'x3n' Landau
    2525 *   Co-authors:
    26  *      ...
     26 *      Fabien Vultier
    2727 *
    2828 */
     
    3939namespace orxonox
    4040{
     41    namespace MunitionDeployment
     42    {
     43        enum Value
     44        {
     45            Separate, // Every comsuming weapon mode has its own magazine. It is possible that one weapon mode is out of ammo while another still has some.
     46            Share, // All comsuming weapon modes take their munition from the same magazine. If this magazine is empty a new one is loaded.
     47            Stack // There is only one magazine where all the munition is stored. Use this deployment mode for heavy weapons loke rockets, bombs, ...
     48        };
     49    }
     50
    4151    class _OrxonoxExport Munition : public BaseObject
    42     {
     52    {       
    4353        struct Magazine
    4454        {
     
    5969            virtual ~Munition();
    6070
     71            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     72
    6173            unsigned int getNumMunition(WeaponMode* user) const;
    6274            unsigned int getNumMunitionInCurrentMagazine(WeaponMode* user) const;
     
    6880            inline unsigned int getMaxMunitionPerMagazine() const
    6981                { return this->maxMunitionPerMagazine_; }
     82            inline MunitionDeployment::Value getMunitionDeployment() const
     83                { return deployment_; }
     84
    7085
    7186            bool canTakeMunition(unsigned int amount, WeaponMode* user) const;
     
    8297
    8398            bool canAddMagazines(unsigned int amount) const;
    84             bool addMagazines(unsigned int amount);
     99            /**
     100            @brief Try to add magazines.
     101            @param amount The amount of magazines tried to add.
     102            @return The amount of magazines sucessfully added.
     103            */
     104            unsigned int addMagazines(unsigned int amount);
    85105
    86106            bool canRemoveMagazines(unsigned int amount) const;
     
    92112            unsigned int maxMunitionPerMagazine_;
    93113            unsigned int maxMagazines_;
    94             unsigned int magazines_;
    95             std::map<WeaponMode*, Magazine*> currentMagazines_;
     114            unsigned int unassignedMagazines_; // Number of magazines that are not assigned to a weapon mode. These are alway treated as full.
     115            std::map<WeaponMode*, Magazine*> assignedMagazines_; // Maps weapon modes to magazines that are currently used.
    96116
    97             bool bUseSeparateMagazines_;
    98             bool bStackMunition_;
     117            MunitionDeployment::Value deployment_; // Defines the behaviour how munition and magazines are distributed to the consuming weapon modes.
     118
    99119            bool bAllowMunitionRefilling_;
    100120            bool bAllowMultiMunitionRemovementUnderflow_;
    101121
    102             float reloadTime_;
     122            float reloadTime_; // The time needed to replace a magazine by a new one.
     123            WeaponMode* lastFilledWeaponMode_; // Pointer to the weapon mode that got the last munition during the last call of addMunition.
    103124
    104125        private:
    105126            Magazine* getMagazine(WeaponMode* user) const;
     127            inline void setMaxMagazines(unsigned int maxMagazines)
     128                { this->maxMagazines_ = maxMagazines; }
     129            inline void setMaxMunitionPerMagazine(unsigned int maxMunitionPerMagazine)
     130                { this->maxMunitionPerMagazine_ = maxMunitionPerMagazine; }
     131            void setNumMagazines(unsigned int numMagazines);
    106132    };
    107133}
  • code/trunk/src/orxonox/weaponsystem/Weapon.cc

    r10650 r11052  
    134134    }
    135135
     136    /**
     137    @brief
     138        Reload all @ref orxonox::WeaponMode weapon modes of this weapon.
     139    */
    136140    void Weapon::reload()
    137141    {
     
    151155            it->second->setWeapon(this);
    152156    }
     157
     158    void Weapon::updateMunition()
     159    {
     160        for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
     161            it->second->updateMunition();
     162    }
    153163}
  • code/trunk/src/orxonox/weaponsystem/Weapon.h

    r10650 r11052  
    5757            void addWeaponmode(WeaponMode* weaponmode);
    5858            WeaponMode* getWeaponmode(unsigned int index) const;
     59            inline std::multimap<unsigned int, WeaponMode*>* getAllWeaponmodes()
     60                { return &weaponmodes_; }
     61            inline int getNumWeaponModes() const
     62                { return weaponmodes_.size(); }
    5963
    6064            /**
     
    7579            inline WeaponSlot * getWeaponSlot() const
    7680                { return this->weaponSlot_; }
     81            void updateMunition();
    7782
    7883        private:
  • code/trunk/src/orxonox/weaponsystem/WeaponMode.cc

    r10650 r11052  
    7575        this->muzzleOrientation_ = Quaternion::IDENTITY;
    7676
     77        hudImageString_ = "Orxonox/WSHUD_WM_Unknown";
     78
    7779        if( GameMode::isMaster() )
    7880        {
     
    125127            this->bSoundAttached_ = true;
    126128        }
    127 
     129       
     130        // Fireing is only possible if this weapon mode is not reloading and there is enough munition
    128131        if (!this->bReloading_ && this->munition_ && this->munition_->takeMunition(this->munitionPerShot_, this))
    129132        {
     
    134137                if (this->munition_->reload(this))
    135138                {
     139                    // If true, the weapon reloads in parallel to the magazine reloading
    136140                    if (this->bParallelReload_)
     141                    {
     142                        // The time needed to reload is the maximum of the reload time of the weapon mode and the magazine.
    137143                        tempReloadtime = std::max(this->reloadTime_, this->munition_->getReloadTime());
     144                    }                       
    138145                    else
     146                    {
     147                        // The time needed to reload is the sum of the reload time of the weapon mode and the magazine.
    139148                        tempReloadtime = this->reloadTime_ + this->munition_->getReloadTime();
     149                    }                       
    140150                }
    141151            }
    142152
     153            // Mark this weapon mode as reloading and start the reload timer
    143154            this->bReloading_ = true;
    144155            this->reloadTimer_.setInterval(tempReloadtime);
     
    232243        }
    233244        else
    234             this->munition_ = 0;
     245        {
     246            this->munition_ = NULL;
     247        }
    235248    }
    236249
     
    283296    }
    284297
    285     void WeaponMode::setDefaultSoundWithVolume(const std::string& soundPath, const float soundVolume){
    286         if (this->defSndWpnFire_) {
     298    void WeaponMode::setDefaultSoundWithVolume(const std::string& soundPath, const float soundVolume)
     299    {
     300        if (this->defSndWpnFire_)
     301        {
    287302            this->defSndWpnFire_->setSource(soundPath);
    288303            this->defSndWpnFire_->setVolume(soundVolume);
  • code/trunk/src/orxonox/weaponsystem/WeaponMode.h

    r10650 r11052  
    3838#include "core/class/SubclassIdentifier.h"
    3939#include "tools/Timer.h"
     40#include "Munition.h"
    4041
    4142namespace orxonox
     
    104105            inline bool getParallelReload() const
    105106                { return this->bParallelReload_; }
     107            inline bool getReloading() const
     108                { return this->bReloading_; }
    106109
    107110
     
    147150            Vector3 getTarget();
    148151
     152            inline const std::string& getHUDImageString() const
     153                { return this->hudImageString_; }           
     154
     155            void updateMunition();
    149156        protected:
    150157            virtual void fire() = 0;
     
    155162
    156163            float reloadTime_;
    157             bool bAutoReload_;
    158             bool bParallelReload_;
     164            bool bAutoReload_; // If true, the weapon reloads the magazine automatically.
     165            bool bParallelReload_; // If true, the weapon reloads in parallel to the magazine reloading.
    159166
    160167            float damage_;
     
    163170            Vector3 muzzleOffset_;
    164171
    165         private:
    166             void updateMunition();
     172            std::string hudImageString_;
     173
     174        private:           
    167175            void reloaded();
    168176
     
    175183
    176184            Timer reloadTimer_;
    177             bool bReloading_;
     185            bool bReloading_; // If true, this weapon mode is marked as reloading.
    178186
    179187            Vector3 muzzlePosition_;
     
    181189
    182190            WorldSound* defSndWpnFire_;
    183             bool        bSoundAttached_;
     191            bool bSoundAttached_;
    184192    };
    185193}
  • code/trunk/src/orxonox/weaponsystem/WeaponPack.cc

    r10650 r11052  
    124124    }
    125125
     126    std::vector<Weapon*>* WeaponPack::getAllWeapons()
     127    {
     128        return &weapons_;       
     129    }   
     130
    126131    void WeaponPack::addDefaultWeaponmodeLink(DefaultWeaponmodeLink* link)
    127132    {
     
    156161            (*it)->setWeaponPack(this);
    157162    }
     163
     164    void WeaponPack::updateMunition()
     165    {
     166        for (std::vector<Weapon *>::const_iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
     167            (*it)->updateMunition();
     168    }
    158169}
  • code/trunk/src/orxonox/weaponsystem/WeaponPack.h

    r9667 r11052  
    5252            void removeWeapon(Weapon * weapon);
    5353            Weapon * getWeapon(unsigned int index) const;
     54            std::vector<Weapon*>* getAllWeapons();
    5455
    5556            inline size_t getNumWeapons() const
     
    6566            inline WeaponSystem * getWeaponSystem() const
    6667                { return this->weaponSystem_; }
     68            void updateMunition();
    6769
    6870        private:
  • code/trunk/src/orxonox/weaponsystem/WeaponSystem.cc

    r10650 r11052  
    240240    }
    241241
     242    std::vector<WeaponPack *> * WeaponSystem::getAllWeaponPacks()
     243    {
     244        return &weaponPacks_;
     245    }   
     246
    242247    bool WeaponSystem::swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2)
    243248    {
     
    310315            return it->second;
    311316        }
    312         else if (identifier->getIdentifier()->isA(Class(Munition)))
    313         {
    314             Munition* munition = identifier->fabricate(this->getContext());
    315             this->munitions_[identifier->getIdentifier()] = munition;
    316             return munition;
    317         }
    318317        else
    319318        {
    320             return 0;
     319            return NULL;
     320        }
     321    }
     322
     323    void WeaponSystem::addMunition(Munition* munition)
     324    {
     325        if (munition == NULL)
     326        {
     327            return;
     328        }
     329
     330        SubclassIdentifier<Munition> identifier = munition->getIdentifier();
     331
     332        if (identifier)
     333        {
     334            this->munitions_[identifier] = munition;
     335            updateMunition();
     336        }
     337        else
     338        {
     339            orxout(internal_warning) << "Adding munition failed. identifier == NULL " << endl;
     340        }
     341    }
     342
     343    void WeaponSystem::updateMunition()
     344    {
     345        for (std::vector<WeaponPack*>::iterator it = this->weaponPacks_.begin(); it != this->weaponPacks_.end(); ++it)
     346        {
     347            (*it)->updateMunition();
    321348        }
    322349    }
  • code/trunk/src/orxonox/weaponsystem/WeaponSystem.h

    r10650 r11052  
    6767            void removeWeaponPack(WeaponPack * wPack);
    6868            WeaponPack * getWeaponPack(unsigned int index) const;
     69            std::vector<WeaponPack *> * getAllWeaponPacks();
    6970
    7071            // configure slots and firemodes
     
    7677
    7778            Munition * getMunition(SubclassIdentifier<Munition> * identifier);
     79            void addMunition(Munition* munition);
    7880
    7981            inline void setPawn(Pawn * pawn)
     
    9597
    9698        private:
     99            void updateMunition();
     100           
    97101            std::map<unsigned int, WeaponSet *> weaponSets_;
    98102            std::vector<WeaponSlot *> weaponSlots_;
  • code/trunk/src/orxonox/worldentities/CMakeLists.txt

    r8706 r11052  
    66  ControllableEntity.cc
    77  Drone.cc
    8   BigExplosion.cc
    98  EffectContainer.cc
    109  ExplosionChunk.cc
     
    1211  SpawnPoint.cc
    1312  TeamSpawnPoint.cc
     13  ExplosionPart.cc
     14  Actionpoint.cc
    1415)
    1516
  • code/trunk/src/orxonox/worldentities/MobileEntity.h

    r10437 r11052  
    4747        linear velocity. Then the linear velocity is multiplied by the time since the last call of tick and then added to the position. The same happens with
    4848        the angular acceleration and velocity. With this procedure MobileEntities can change their position and orientation with time.
     49
     50        A MobileEntity can only have the collisition type WorldEntity::None, WorldEntity::Dynamic or WorldEntity::Kinematic. The collsion type WorldEntity::Static is illegal.
    4951    */
    5052
  • code/trunk/src/orxonox/worldentities/SpawnPoint.h

    r9667 r11052  
    5555                { return this->template_; }
    5656
    57             Pawn* spawn();
     57            virtual Pawn* spawn();
    5858            void spawn(ControllableEntity* entity);
    5959
  • code/trunk/src/orxonox/worldentities/StaticEntity.h

    r10437 r11052  
    4444        it is called StaticEntity. It will keep the same position (always with respect to its parent) forever unless you call the
    4545        function @see setPosition to changee it.
     46
     47        A StaticEntity can only have the collisition type WorldEntity::None or WorldEntity::Static. The collsion types WorldEntity::Dynamic and WorldEntity::Kinematic are illegal.
    4648    */
    4749
  • code/trunk/src/orxonox/worldentities/TeamSpawnPoint.cc

    r9667 r11052  
    4949        XMLPortParam(TeamSpawnPoint, "team", setTeamNumber, getTeamNumber, xmlelement, mode).defaultValues(0);
    5050    }
     51    Pawn* TeamSpawnPoint::spawn()
     52    {
     53        Pawn* entity = SpawnPoint::spawn();
     54        static_cast<ControllableEntity*>(entity)->setTeam (this->teamNumber_);
     55        return entity;
     56    }
    5157}
  • code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h

    r9667 r11052  
    4949            unsigned int getTeamNumber() const
    5050                { return this->teamNumber_; }
     51            virtual Pawn* spawn();
    5152
    5253        private:
    53             unsigned int teamNumber_;
     54            int teamNumber_;
    5455    };
    5556}
  • code/trunk/src/orxonox/worldentities/pawns/Pawn.cc

    r10650 r11052  
    3434#include "core/GameMode.h"
    3535#include "core/XMLPort.h"
     36#include "core/EventIncludes.h"
    3637#include "network/NetworkFunction.h"
    3738
     
    4142#include "graphics/ParticleSpawner.h"
    4243#include "worldentities/ExplosionChunk.h"
    43 #include "worldentities/BigExplosion.h"
     44#include "worldentities/ExplosionPart.h"
    4445#include "weaponsystem/WeaponSystem.h"
    4546#include "weaponsystem/WeaponSlot.h"
    4647#include "weaponsystem/WeaponPack.h"
    4748#include "weaponsystem/WeaponSet.h"
     49#include "weaponsystem/Munition.h"
    4850#include "sound/WorldSound.h"
    4951
     
    6163
    6264        this->bAlive_ = true;
    63         this->bReload_ = false;
     65        this->bVulnerable_ = true;
    6466
    6567        this->health_ = 0;
     
    7173        this->maxShieldHealth_ = 100; //otherwise shield might increase to float_max
    7274        this->shieldAbsorption_ = 0.5;
    73 
    74         this->reloadRate_ = 0;
    75         this->reloadWaitTime_ = 1.0f;
    76         this->reloadWaitCountdown_ = 0;
     75        this->shieldRechargeRate_ = 0;
     76        this->shieldRechargeWaitTime_ = 1.0f;
     77        this->shieldRechargeWaitCountdown_ = 0;
    7778
    7879        this->lastHitOriginator_ = 0;
     
    8485
    8586        this->aimPosition_ = Vector3::ZERO;
     87
     88        //this->explosionPartList_ = NULL;
    8689
    8790        if (GameMode::isMaster())
     
    135138        XMLPortParam(Pawn, "shieldabsorption", setShieldAbsorption, getShieldAbsorption, xmlelement, mode).defaultValues(0);
    136139
     140        XMLPortParam(Pawn, "vulnerable", setVulnerable, isVulnerable, xmlelement, mode).defaultValues(true);
     141
    137142        XMLPortParam(Pawn, "spawnparticlesource", setSpawnParticleSource, getSpawnParticleSource, xmlelement, mode);
    138143        XMLPortParam(Pawn, "spawnparticleduration", setSpawnParticleDuration, getSpawnParticleDuration, xmlelement, mode).defaultValues(3.0f);
    139         XMLPortParam(Pawn, "explosionchunks", setExplosionChunks, getExplosionChunks, xmlelement, mode).defaultValues(7);
     144        XMLPortParam(Pawn, "explosionchunks", setExplosionChunks, getExplosionChunks, xmlelement, mode).defaultValues(0);
    140145
    141146        XMLPortObject(Pawn, WeaponSlot, "weaponslots", addWeaponSlot, getWeaponSlot, xmlelement, mode);
    142147        XMLPortObject(Pawn, WeaponSet, "weaponsets", addWeaponSet, getWeaponSet, xmlelement, mode);
    143         XMLPortObject(Pawn, WeaponPack, "weapons", addWeaponPackXML, getWeaponPack, xmlelement, mode);
    144 
    145         XMLPortParam(Pawn, "reloadrate", setReloadRate, getReloadRate, xmlelement, mode).defaultValues(0);
    146         XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
     148        XMLPortObject(Pawn, WeaponPack, "weaponpacks", addWeaponPackXML, getWeaponPack, xmlelement, mode);
     149        XMLPortObject(Pawn, Munition, "munition", addMunitionXML, getMunitionXML, xmlelement, mode);
     150
     151        XMLPortObject(Pawn, ExplosionPart, "explosion", addExplosionPart, getExplosionPart, xmlelement, mode);
     152        XMLPortParam(Pawn, "shieldrechargerate", setShieldRechargeRate, getShieldRechargeRate, xmlelement, mode).defaultValues(0);
     153        XMLPortParam(Pawn, "shieldrechargewaittime", setShieldRechargeWaitTime, getShieldRechargeWaitTime, xmlelement, mode).defaultValues(1.0f);
    147154
    148155        XMLPortParam(Pawn, "explosionSound",  setExplosionSound,  getExplosionSound,  xmlelement, mode);
     
    151158    }
    152159
     160    void Pawn::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
     161    {
     162        SUPER(Pawn, XMLEventPort, xmlelement, mode);
     163
     164        XMLPortEventState(Pawn, BaseObject, "vulnerability", setVulnerable, xmlelement, mode);
     165    }
     166
    153167    void Pawn::registerVariables()
    154168    {
    155         registerVariable(this->bAlive_,           VariableDirection::ToClient);
    156         registerVariable(this->health_,           VariableDirection::ToClient);
    157         registerVariable(this->maxHealth_,        VariableDirection::ToClient);
    158         registerVariable(this->shieldHealth_,     VariableDirection::ToClient);
    159         registerVariable(this->maxShieldHealth_,  VariableDirection::ToClient);
    160         registerVariable(this->shieldAbsorption_, VariableDirection::ToClient);
    161         registerVariable(this->bReload_,          VariableDirection::ToServer);
    162         registerVariable(this->aimPosition_,      VariableDirection::ToServer);  // For the moment this variable gets only transfered to the server
     169        registerVariable(this->bAlive_,            VariableDirection::ToClient);
     170        registerVariable(this->health_,            VariableDirection::ToClient);
     171        registerVariable(this->maxHealth_,         VariableDirection::ToClient);
     172        registerVariable(this->shieldHealth_,      VariableDirection::ToClient);
     173        registerVariable(this->maxShieldHealth_,   VariableDirection::ToClient);
     174        registerVariable(this->shieldAbsorption_,  VariableDirection::ToClient);
     175        registerVariable(this->aimPosition_,       VariableDirection::ToServer);  // For the moment this variable gets only transfered to the server
    163176    }
    164177
    165178    void Pawn::tick(float dt)
    166179    {
     180        //BigExplosion* chunk = new BigExplosion(this->getContext());
    167181        SUPER(Pawn, tick, dt);
    168182
    169         this->bReload_ = false;
    170 
     183        // Recharge the shield
    171184        // TODO: use the existing timer functions instead
    172         if(this->reloadWaitCountdown_ > 0)
    173         {
    174             this->decreaseReloadCountdownTime(dt);
    175         }
    176         else
    177         {
    178             this->addShieldHealth(this->getReloadRate() * dt);
    179             this->resetReloadCountdown();
     185        if(this->shieldRechargeWaitCountdown_ > 0)
     186        {
     187            this->decreaseShieldRechargeCountdownTime(dt);
     188        }
     189        else
     190        {
     191            this->addShieldHealth(this->getShieldRechargeRate() * dt);
     192            this->resetShieldRechargeCountdown();
    180193        }
    181194
     
    229242    }
    230243
    231     void Pawn::setReloadRate(float reloadrate)
    232     {
    233         this->reloadRate_ = reloadrate;
    234     }
    235 
    236     void Pawn::setReloadWaitTime(float reloadwaittime)
    237     {
    238         this->reloadWaitTime_ = reloadwaittime;
    239     }
    240 
    241     void Pawn::decreaseReloadCountdownTime(float dt)
    242     {
    243         this->reloadWaitCountdown_ -= dt;
     244    void Pawn::setShieldRechargeRate(float shieldRechargeRate)
     245    {
     246        this->shieldRechargeRate_ = shieldRechargeRate;
     247    }
     248
     249    void Pawn::setShieldRechargeWaitTime(float shieldRechargeWaitTime)
     250    {
     251        this->shieldRechargeWaitTime_ = shieldRechargeWaitTime;
     252    }
     253
     254    void Pawn::decreaseShieldRechargeCountdownTime(float dt)
     255    {
     256        this->shieldRechargeWaitCountdown_ -= dt;
     257    }
     258
     259    void Pawn::changedVulnerability()
     260    {
     261
    244262    }
    245263
    246264    void Pawn::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
    247265    {
     266        // A pawn can only get damaged if it is vulnerable
     267        if (!isVulnerable())
     268        {
     269            return;
     270        }
     271
    248272        // Applies multiplier given by the DamageBoost Pickup.
    249273        if (originator)
     
    252276        if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator))
    253277        {
     278            // Health-damage cannot be absorbed by shields.
     279            // Shield-damage only reduces shield health.
     280            // Normal damage can be (partially) absorbed by shields.
     281
    254282            if (shielddamage >= this->getShieldHealth())
    255283            {
     
    366394            if (GameMode::isMaster())
    367395            {
    368                 this->deatheffect();
    369396                this->goWithStyle();
    370397            }
     
    373400    void Pawn::goWithStyle()
    374401    {
     402
    375403        this->bAlive_ = false;
    376404        this->setDestroyWhenPlayerLeft(false);
    377405
    378         BigExplosion* chunk = new BigExplosion(this->getContext());
    379         chunk->setPosition(this->getPosition());
    380         chunk->setVelocity(this->getVelocity());
     406        while(!explosionPartList_.empty())
     407        {
     408            explosionPartList_.back()->setPosition(this->getPosition());
     409            explosionPartList_.back()->setVelocity(this->getVelocity());
     410            explosionPartList_.back()->setOrientation(this->getOrientation());
     411            explosionPartList_.back()->Explode();
     412            explosionPartList_.pop_back();
     413        }
     414
     415        for (unsigned int i = 0; i < this->numexplosionchunks_; ++i)
     416        {
     417            ExplosionChunk* chunk = new ExplosionChunk(this->getContext());
     418            chunk->setPosition(this->getPosition());
     419        }
    381420
    382421        this->explosionSound_->setPosition(this->getPosition());
    383422        this->explosionSound_->play();
    384     }
    385     void Pawn::deatheffect()
    386     {
    387         // play death effect
    388         /*{
    389             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    390             effect->setPosition(this->getPosition());
    391             effect->setOrientation(this->getOrientation());
    392             effect->setDestroyAfterLife(true);
    393             effect->setSource("Orxonox/explosion2b");
    394             effect->setLifetime(4.0f);
    395         }
    396         {
    397             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    398             effect->setPosition(this->getPosition());
    399             effect->setOrientation(this->getOrientation());
    400             effect->setDestroyAfterLife(true);
    401             effect->setSource("Orxonox/smoke6");
    402             effect->setLifetime(4.0f);
    403         }
    404         {
    405             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    406             effect->setPosition(this->getPosition());
    407             effect->setOrientation(this->getOrientation());
    408             effect->setDestroyAfterLife(true);
    409             effect->setSource("Orxonox/sparks");
    410             effect->setLifetime(4.0f);
    411         }*/
    412        
    413        
    414         {
    415             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    416             effect->setPosition(this->getPosition());
    417             effect->setOrientation(this->getOrientation());
    418             effect->setDestroyAfterLife(true);
    419             effect->setSource("orxonox/explosion_flash2");
    420             effect->setLifetime(5.0f);
    421         }
    422         {
    423             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    424             effect->setPosition(this->getPosition());
    425             effect->setOrientation(this->getOrientation());
    426             effect->setDestroyAfterLife(true);
    427             effect->setSource("orxonox/explosion_flame2");
    428             effect->setLifetime(5.0f);
    429         }
    430         {
    431             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    432             effect->setPosition(this->getPosition());
    433             effect->setOrientation(this->getOrientation());
    434             effect->setDestroyAfterLife(true);
    435             effect->setSource("orxonox/explosion_shockwave2");
    436             effect->scale(20);
    437             effect->setLifetime(5.0f);
    438         }{
    439             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    440             effect->setPosition(this->getPosition());
    441             effect->setOrientation(this->getOrientation());
    442             effect->setDestroyAfterLife(true);
    443             effect->setSource("orxonox/explosion_sparks2");
    444             effect->setLifetime(5.0f);
    445         }
    446         {
    447             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    448             effect->setPosition(this->getPosition());
    449             effect->setOrientation(this->getOrientation());
    450             effect->setDestroyAfterLife(true);
    451             effect->setSource("orxonox/explosion_streak2");
    452             effect->setLifetime(5.0f);
    453         }
    454         {
    455             ParticleSpawner* effect = new ParticleSpawner(this->getContext());
    456             effect->setPosition(this->getPosition());
    457             effect->setOrientation(this->getOrientation());
    458             effect->setDestroyAfterLife(true);
    459             effect->setSource("orxonox/explosion_afterglow");
    460             effect->scale(20);
    461             effect->setLifetime(5.0f);
    462         }
    463        
    464        
    465         for (unsigned int i = 0; i < this->numexplosionchunks_; ++i)
    466         {
    467             ExplosionChunk* chunk = new ExplosionChunk(this->getContext());
    468             chunk->setPosition(this->getPosition());
    469         }
    470423    }
    471424
     
    474427        Check whether the Pawn has a @ref Orxonox::WeaponSystem and fire it with the specified firemode if it has one.
    475428    */
     429
    476430    void Pawn::fired(unsigned int firemode)
    477431    {
    478432        if (this->weaponSystem_)
    479433            this->weaponSystem_->fire(firemode);
    480     }
    481 
    482     void Pawn::reload()
    483     {
    484         this->bReload_ = true;
    485434    }
    486435
     
    491440            this->spawneffect();
    492441    }
     442
     443
     444    void Pawn::addExplosionPart(ExplosionPart* ePart)
     445    {this->explosionPartList_.push_back(ePart);}
     446
     447
     448    ExplosionPart * Pawn::getExplosionPart()
     449    {return this->explosionPartList_.back();}
     450
     451
    493452
    494453    /* WeaponSystem:
     
    554513    }
    555514
     515    std::vector<WeaponPack *> * Pawn::getAllWeaponPacks()
     516    {
     517        if (this->weaponSystem_)
     518            return this->weaponSystem_->getAllWeaponPacks();
     519        else
     520            return 0;       
     521    }
     522
     523    void Pawn::addMunitionXML(Munition* munition)
     524    {
     525        if (this->weaponSystem_ && munition)
     526        {
     527            this->weaponSystem_->addMunition(munition);
     528        }
     529    }
     530
     531    Munition* Pawn::getMunitionXML() const
     532    {
     533        return NULL;
     534    }
     535
     536    Munition* Pawn::getMunition(SubclassIdentifier<Munition> * identifier)
     537    {
     538        if (weaponSystem_)
     539        {
     540            return weaponSystem_->getMunition(identifier);
     541        }
     542
     543        return NULL;
     544    }
     545
    556546    //Tell the Map (RadarViewable), if this is a playership
    557547    void Pawn::startLocalHumanControl()
    558548    {
    559 //        SUPER(ControllableEntity, changedPlayer());
     549//        SUPER(ControllableEntity, startLocalHumanControl());
    560550        ControllableEntity::startLocalHumanControl();
    561551        this->isHumanShip_ = true;
  • code/trunk/src/orxonox/worldentities/pawns/Pawn.h

    r10437 r11052  
    3333
    3434#include <string>
     35#include <vector>
    3536#include "interfaces/PickupCarrier.h"
    3637#include "interfaces/RadarViewable.h"
    3738#include "worldentities/ControllableEntity.h"
     39#include "worldentities/ExplosionPart.h"
    3840
    3941
     
    4244    /**
    4345    @brief
    44         Everything in Orxonoy that has a health attribute is a Pawn. After a Pawn is spawned its health is set to
     46        Everything in Orxonox that has a health attribute is a Pawn. After a Pawn is spawned its health is set to
    4547        its initial health. In every call of the Pawns tick function the game checks whether the pawns health is at
    4648        or below zero. If it is, the pawn gets killed.
    4749
    48         Pawns can carry pickups and fire weapons. The can also have shields.
     50        Pawns can carry pickups and fire weapons. They can also have shields.
    4951
    5052        Notice that every Pawn is a ControllableEntity.
     
    6264
    6365            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     66            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
    6467            virtual void tick(float dt);
    6568
     
    116119                { return this->shieldAbsorption_; }
    117120
    118             // TODO: Rename to shieldRechargeRate
    119             virtual void setReloadRate(float reloadrate);
    120             inline float getReloadRate() const
    121                 { return this->reloadRate_; }
    122 
    123             virtual void setReloadWaitTime(float reloadwaittime);
    124             inline float getReloadWaitTime() const
    125                 { return this->reloadWaitTime_; }
    126 
    127             inline void resetReloadCountdown()
    128                 { this->reloadWaitCountdown_ = 0; }
    129 
    130             inline void startReloadCountdown()
    131                 { this->reloadWaitCountdown_ = this->getReloadWaitTime(); } // TODO: Implement in Projectile.cc
    132 
    133             virtual void decreaseReloadCountdownTime(float dt);
     121            virtual void setShieldRechargeRate(float shieldRechargeRate);
     122            inline float getShieldRechargeRate() const
     123                { return this->shieldRechargeRate_; }
     124
     125            virtual void setShieldRechargeWaitTime(float shieldRechargeWaitTime);
     126            inline float getShieldRechargeWaitTime() const
     127                { return this->shieldRechargeWaitTime_; }
     128
     129            inline void resetShieldRechargeCountdown()
     130                { this->shieldRechargeWaitCountdown_ = 0; }
     131
     132            inline void startShieldRechargeCountdown()
     133                { this->shieldRechargeWaitCountdown_ = this->getShieldRechargeWaitTime(); } // TODO: Implement in Projectile.cc
     134
     135            virtual void decreaseShieldRechargeCountdownTime(float dt);
     136
     137            /** @brief Sets the state of the pawns vulnerability. @param bVulnerable */
     138            inline void setVulnerable(bool bVulnerable)
     139            {
     140                if (this->bVulnerable_ != bVulnerable)
     141                {
     142                    this->bVulnerable_ = bVulnerable;
     143                    this->changedVulnerability();
     144                }
     145            }
     146            /** @brief Returns the state of the pawns vulnerability. @return The state of the vulnerability */
     147            inline const bool& isVulnerable() const { return this->bVulnerable_; }
     148            /** @brief This function gets called if the vulnerability of the pawn changes. */
     149            virtual void changedVulnerability();
    134150
    135151            inline ControllableEntity* getLastHitOriginator() const
    136152                { return this->lastHitOriginator_; }
    137153
    138             //virtual void hit(Pawn* originator, const Vector3& force, float damage);
    139             //virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage);
    140154            virtual void hit(Pawn* originator, const Vector3& force, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
    141155            virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
     
    144158
    145159            virtual void fired(unsigned int firemode);
    146             virtual void reload();
    147160            virtual void postSpawn();
     161
     162            void addExplosionPart(ExplosionPart* ePart);
     163            ExplosionPart * getExplosionPart();
    148164
    149165            void addWeaponSlot(WeaponSlot * wSlot);
     
    154170            void addWeaponPackXML(WeaponPack * wPack);
    155171            WeaponPack * getWeaponPack(unsigned int index) const;
     172            std::vector<WeaponPack *> * getAllWeaponPacks();
     173
     174            void addMunitionXML(Munition* munition);
     175            Munition* getMunitionXML() const;
     176           
     177            Munition* getMunition(SubclassIdentifier<Munition> * identifier);
    156178
    157179            virtual void addedWeaponPack(WeaponPack* wPack) {}
     
    194216            const std::string& getExplosionSound();
    195217
     218            virtual const WeaponSystem* getWeaponSystem() const
     219                { return this->weaponSystem_; }
     220
    196221        protected:
    197222            virtual void preDestroy();
     
    204229            virtual Controller* getSlave();
    205230            virtual void goWithStyle();
    206             virtual void deatheffect();
    207231            virtual void spawneffect();
    208232
    209             //virtual void damage(float damage, Pawn* originator = 0);
    210233            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL, const btCollisionShape* cs = NULL);
    211234
    212235            bool bAlive_;
     236            bool bVulnerable_; ///< If false the pawn may not ged damaged
    213237
    214238            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const
     
    226250            float initialShieldHealth_;
    227251            float shieldAbsorption_; ///< Has to be between 0 and 1
    228             float reloadRate_;
    229             float reloadWaitTime_;
    230             float reloadWaitCountdown_;
     252            float shieldRechargeRate_;
     253            float shieldRechargeWaitTime_;
     254            float shieldRechargeWaitCountdown_;
    231255
    232256            float damageMultiplier_; ///< Used by the Damage Boost Pickup.
     
    235259
    236260            WeaponSystem* weaponSystem_;
    237             bool bReload_;
    238261
    239262            std::string spawnparticlesource_;
    240263            float spawnparticleduration_;
    241264            unsigned int numexplosionchunks_;
     265
     266            std::vector<ExplosionPart*> explosionPartList_;
    242267
    243268        private:
  • code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc

    r10216 r11052  
    115115
    116116        XMLPortObject(SpaceShip, Engine, "engines", addEngine, getEngine, xmlelement, mode);
     117
     118       
    117119    }
    118120
     
    297299        }
    298300    }
     301
     302    void SpaceShip::gainBoostPower(float gainedBoostPower)
     303    {
     304        this->boostPower_ += gainedBoostPower;
     305       
     306        if (this->boostPower_ > this->initialBoostPower_)
     307        {
     308            this->boostPower_ = this->initialBoostPower_;
     309        }
     310
     311        // If the booster is in cooldown mode and we gained boost power, the abort the cooldown.
     312        if (this->isBoostCoolingDown() && this->boostPower_ > 0.0f)
     313        {
     314            timer_.stopTimer();
     315            this->boostCooledDown();
     316        }
     317    }
     318
    299319    /**
    300320    @brief
  • code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h

    r10437 r11052  
    5353        - The <b>boost</b>, there are quite some parameters pertaining to boosting. The boost is a special move of the SpaceShip, where, for a limited amount of time, it can fly considerably faster than usual. The <b>boostPower</b> is the amount of power available for boosting. The <b>boostPowerRate</b> is the rate at which the boost power is replenished. The <b>boostRate</b> is the rate at which boosting uses power. And the <b>boostCooldownDuration</b> is the time the SpaceShip cannot boost, once all the boost power has been used up. Naturally all of these parameters must be non-negative.
    5454        - The <b>boost shaking</b>, when the SpaceShip boosts, the camera shakes to create a more immersive effect. Two parameters can be used to adjust the effect. The <b>shakeFrequency</b> is the frequency with which the camera shakes. And the <b>shakeAmplitude</b> is the amount with which the camera shakes. Again these parameters must bee non-negative.
    55         - The <b>lift</b> creates a more natural flight feeling through the addition of a lift force. There are again tow parameters that can be specified. The <b>lift</b> which is the lift force that is applied. And the <b>stallSpeed</b> which is the forward speed after which no more lift is generated.
     55        - The <b>lift</b> creates a more natural flight feeling through the addition of a lift force. There are again two parameters that can be specified. The <b>lift</b> which is the lift force that is applied. And the <b>stallSpeed</b> which is the forward speed after which no more lift is generated.
     56
     57        A spaceship always needs to have the collision type "dynamic". Other collision types are illegal.
    5658
    5759        As mentioned @ref orxonox::Engine Engines can be mounted on the SpaceShip. Here is a (primitive) example of a SpaceShip defined in XML:
     
    250252            inline float getShakeAmplitude() const
    251253                { return this->shakeAmplitude_; }
     254            /**
     255            @brief Add boost power. Is non-negative.
     256            @return Returns the current boost power.
     257            */
     258            void gainBoostPower(float gainedBoostPower);
    252259
    253260        protected:
     
    262269            bool bBoostCooldown_;         //!< Whether the SpaceShip is currently in boost cooldown, during which boosting is impossible.
    263270            float initialBoostPower_;     //!< The initial (and maximal) boost power.
    264             float boostPower_;            //!< The current boost power.
     271            float boostPower_;            //!< The current boost power. If the boost power is reduced to zero the boost cooldown will start.
    265272            float boostPowerRate_;        //!< The rate at which the boost power is recharged.
    266273            float boostRate_;             //!< The rate at which boost power is used up.
     
    289296            std::vector<Engine*> engineList_; //!< The list of all Engines mounted on this SpaceShip.
    290297
    291             Timer timer_;                          //!< Timer for the cooldown duration.
     298            Timer timer_;                          //!< Timer for the cooldown of the boost.
    292299            float shakeDt_;                        //!< Temporary variable for the shaking of the camera.
    293300            Vector3 cameraOriginalPosition_;       //!< The original position of the camera before shaking it.
  • code/trunk/test/core/class/IdentifierNestedClassHierarchyTest.cc

    • Property svn:eol-style set to native
  • code/trunk/test/util/MathTest.cc

    r9114 r11052  
    337337    getAngle
    338338    get2DViewdirection
    339     get2DViewcoordinates
     339    get2DViewCoordinates
    340340    getPredictedPosition
    341341*/
Note: See TracChangeset for help on using the changeset viewer.