[Orxonox-commit 6568] r11208 - in code/branches/presentationFS16: . data/defaultConfig data/gui/scripts data/levels data/levels/includes data/levels/templates data/overlays src/modules/invader src/modules/jump src/modules/objects/controllers src/modules/overlays/hud src/modules/towerdefense src/modules/weapons src/modules/weapons/projectiles src/modules/weapons/weaponmodes src/orxonox/controllers src/orxonox/weaponsystem src/orxonox/worldentities src/orxonox/worldentities/pawns

fvultier at orxonox.net fvultier at orxonox.net
Thu May 26 16:53:34 CEST 2016


Author: fvultier
Date: 2016-05-26 16:53:34 +0200 (Thu, 26 May 2016)
New Revision: 11208

Added:
   code/branches/presentationFS16/data/levels/florin_johnny_presentation.oxw
   code/branches/presentationFS16/data/levels/includes/weaponSettingsEscortDischarger.oxi
   code/branches/presentationFS16/data/levels/includes/weaponSettingsFx112.oxi
   code/branches/presentationFS16/data/levels/templates/spaceshipEscortDischarger.oxt
   code/branches/presentationFS16/data/levels/templates/spaceshipFx112.oxt
   code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.cc
   code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.h
   code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.cc
   code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.h
Modified:
   code/branches/presentationFS16/
   code/branches/presentationFS16/data/defaultConfig/keybindings.ini
   code/branches/presentationFS16/data/gui/scripts/KeyBindMenu.lua
   code/branches/presentationFS16/data/levels/emptyLevel.oxw
   code/branches/presentationFS16/data/levels/includes/weaponSettingsEscort.oxi
   code/branches/presentationFS16/data/levels/missionOne.oxw
   code/branches/presentationFS16/data/overlays/HUDTemplates3.oxo
   code/branches/presentationFS16/src/modules/invader/InvaderEnemyShooter.cc
   code/branches/presentationFS16/src/modules/invader/InvaderShip.cc
   code/branches/presentationFS16/src/modules/jump/JumpFigure.cc
   code/branches/presentationFS16/src/modules/jump/JumpFigure.h
   code/branches/presentationFS16/src/modules/objects/controllers/TurretController.cc
   code/branches/presentationFS16/src/modules/overlays/hud/CMakeLists.txt
   code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.cc
   code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.h
   code/branches/presentationFS16/src/modules/weapons/WeaponsPrereqs.h
   code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.cc
   code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.h
   code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.cc
   code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.h
   code/branches/presentationFS16/src/modules/weapons/weaponmodes/CMakeLists.txt
   code/branches/presentationFS16/src/orxonox/controllers/AIController.cc
   code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.cc
   code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.h
   code/branches/presentationFS16/src/orxonox/controllers/DroneController.cc
   code/branches/presentationFS16/src/orxonox/controllers/FightingController.cc
   code/branches/presentationFS16/src/orxonox/controllers/HumanController.cc
   code/branches/presentationFS16/src/orxonox/controllers/HumanController.h
   code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.cc
   code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.h
   code/branches/presentationFS16/src/orxonox/controllers/WaypointPatrolController.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.h
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.h
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.h
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.h
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.cc
   code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.h
   code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.cc
   code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.h
   code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.cc
   code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.h
   code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.cc
   code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.h
Log:
merged discharger, thats the last one


Property changes on: code/branches/presentationFS16
___________________________________________________________________
Modified: svn:mergeinfo
   - /code/branches/AI_HS15:10640-10832
/code/branches/ParticleEffectsFS15:10309-10612
/code/branches/Racingbot:9388-9513
/code/branches/SciptableControllerFS15:10308-10613
/code/branches/ScriptableController:9999-10075
/code/branches/ai:6592-7033
/code/branches/ai2:8721-8880
/code/branches/bigships:8137-8588
/code/branches/bindermFS16:11139-11204
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/campaignHS15:10639-10973
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/clangenb:10385-10609
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/core6:9552-9666
/code/branches/core7:10328-10623
/code/branches/cpp11:10439-10732
/code/branches/cpp11_v2:10732-11067
/code/branches/cpp11_v3:11053-11070
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dockingsystem:8101-8192
/code/branches/dockingsystem2:8196-8560
/code/branches/dynamicmatch:6584-7030
/code/branches/environment3:8887-8975
/code/branches/explosionChunksHS15:10641-10961
/code/branches/fabienHS15:10685-11033
/code/branches/formation:8885-8991
/code/branches/formationFS15:10320-10610
/code/branches/formationupdate:9580-9624
/code/branches/fps:6591-7072
/code/branches/gamecontent:8893-8968
/code/branches/gameimmersion:8102-8577
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hoverHS15:10633-10959
/code/branches/hud:8883-8986
/code/branches/hudHS14:10083-10241
/code/branches/hudelements:6584-6941
/code/branches/hudimprovements:7920-8672
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/invaders:9694-9896
/code/branches/ipv6:7293-7458
/code/branches/keckslevelHS14:10082-10222
/code/branches/kicklib:7940-8096,8098-8277
/code/branches/kicklib2:8282-8350
/code/branches/largeShip1:9384-9515
/code/branches/lastmanstanding:7479-7644
/code/branches/lastmanstanding3:7903-8175
/code/branches/levelElias:9697-9921
/code/branches/levelKaan:9695-9921
/code/branches/levelMichael:9696-9921
/code/branches/leveljoemeHS14:10087-10223
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/libs:9668-9674
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/mac_osx:7789-8128,8135
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/masterserverfix:8933-8936
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/menue:8884-8976
/code/branches/minigame4DHS14:10081-10230
/code/branches/miniprojects:2754-2824
/code/branches/modularships:9994-10071
/code/branches/multiplayerFS15:10324-10611
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network6:7823-8315
/code/branches/network64:2210-2355
/code/branches/newlevel2012:9033-9244
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/ois_update:7506-7788
/code/branches/output:8739-8857
/code/branches/overlay:2117-2385
/code/branches/pCuts:9023-9284
/code/branches/particleEffectsHS15:10644-10962
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup:8145-8555
/code/branches/pickup2:5942-6405
/code/branches/pickup2012:9029-9189
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/pickupsFS14:10000-10259
/code/branches/planetLevelHS15:10637-10966
/code/branches/plehmannFS16:11137-11206
/code/branches/png2:7262-7263
/code/branches/portals:8087-8455
/code/branches/portals2:8460-8602
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786,8500-8705
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation2011:8974-9015
/code/branches/presentation2012:9189-9268
/code/branches/presentation2012merge:9266-9347
/code/branches/presentation3:6913-7162
/code/branches/presentationFS14:10069-10215
/code/branches/presentationFS15:10499
/code/branches/presentationFS15merge:10595-10621
/code/branches/presentationHS12:9481-9525
/code/branches/presentationHS13:9891-9938
/code/branches/presentationHS14merge:10222-10257
/code/branches/presentationHS15:10959-11055
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/radarDreiD:9690-9901
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/script_trigger:1295-1953,1955
/code/branches/sfxThilo:9691-9917
/code/branches/shaders:9379-11072
/code/branches/shaders_merge:11072-11079
/code/branches/shipSelection:9038-9206
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound2012:9205-9214
/code/branches/sound3:5941-6102
/code/branches/soundEffects:9382-11020
/code/branches/spaceNavigation:9381-9497
/code/branches/spaceboundaries:8085-8457
/code/branches/spaceboundaries2:8460-8613
/code/branches/spacerace:8182-8630
/code/branches/spaceraceTwo:8881-8996
/code/branches/spacestationentry:9699-9905
/code/branches/steering:5949-6091,8140-8595
/code/branches/storymodeHS14:10085-10254
/code/branches/surfaceRace:9028-9199
/code/branches/surfaceraceHS14:10080-10236
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/towerdefenseFS15:10283-10614
/code/branches/towerdefenseHS14:10086-10247
/code/branches/turret:9380-9501
/code/branches/turretFS14:9998-10070
/code/branches/tutoriallevel:7827-8370
/code/branches/tutoriallevel2:8370-8452
/code/branches/tutoriallevel3:8453-8636
/code/branches/unity_build:8440-8716
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weaponFS15:10302-10615
/code/branches/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
/code/branches/weaponupdateHS14:10084-10237
   + /code/branches/AI_HS15:10640-10832
/code/branches/ParticleEffectsFS15:10309-10612
/code/branches/Racingbot:9388-9513
/code/branches/SciptableControllerFS15:10308-10613
/code/branches/ScriptableController:9999-10075
/code/branches/ai:6592-7033
/code/branches/ai2:8721-8880
/code/branches/bigships:8137-8588
/code/branches/bindermFS16:11139-11204
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/campaignHS15:10639-10973
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/clangenb:10385-10609
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/core6:9552-9666
/code/branches/core7:10328-10623
/code/branches/cpp11:10439-10732
/code/branches/cpp11_v2:10732-11067
/code/branches/cpp11_v3:11053-11070
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dockingsystem:8101-8192
/code/branches/dockingsystem2:8196-8560
/code/branches/dynamicmatch:6584-7030
/code/branches/environment3:8887-8975
/code/branches/explosionChunksHS15:10641-10961
/code/branches/fabienHS15:10685-11033
/code/branches/formation:8885-8991
/code/branches/formationFS15:10320-10610
/code/branches/formationupdate:9580-9624
/code/branches/fps:6591-7072
/code/branches/gamecontent:8893-8968
/code/branches/gameimmersion:8102-8577
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hoverHS15:10633-10959
/code/branches/hud:8883-8986
/code/branches/hudHS14:10083-10241
/code/branches/hudelements:6584-6941
/code/branches/hudimprovements:7920-8672
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/invaders:9694-9896
/code/branches/ipv6:7293-7458
/code/branches/keckslevelHS14:10082-10222
/code/branches/kicklib:7940-8096,8098-8277
/code/branches/kicklib2:8282-8350
/code/branches/largeShip1:9384-9515
/code/branches/lastmanstanding:7479-7644
/code/branches/lastmanstanding3:7903-8175
/code/branches/levelElias:9697-9921
/code/branches/levelKaan:9695-9921
/code/branches/levelMichael:9696-9921
/code/branches/leveljoemeHS14:10087-10223
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/libs:9668-9674
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/mac_osx:7789-8128,8135
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/masterserverfix:8933-8936
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/menue:8884-8976
/code/branches/minigame4DHS14:10081-10230
/code/branches/miniprojects:2754-2824
/code/branches/modularships:9994-10071
/code/branches/multiplayerFS15:10324-10611
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network6:7823-8315
/code/branches/network64:2210-2355
/code/branches/newlevel2012:9033-9244
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/ois_update:7506-7788
/code/branches/output:8739-8857
/code/branches/overlay:2117-2385
/code/branches/pCuts:9023-9284
/code/branches/particleEffectsHS15:10644-10962
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup:8145-8555
/code/branches/pickup2:5942-6405
/code/branches/pickup2012:9029-9189
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/pickupsFS14:10000-10259
/code/branches/planetLevelHS15:10637-10966
/code/branches/plehmannFS16:11137-11206
/code/branches/png2:7262-7263
/code/branches/portals:8087-8455
/code/branches/portals2:8460-8602
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786,8500-8705
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation2011:8974-9015
/code/branches/presentation2012:9189-9268
/code/branches/presentation2012merge:9266-9347
/code/branches/presentation3:6913-7162
/code/branches/presentationFS14:10069-10215
/code/branches/presentationFS15:10499
/code/branches/presentationFS15merge:10595-10621
/code/branches/presentationHS12:9481-9525
/code/branches/presentationHS13:9891-9938
/code/branches/presentationHS14merge:10222-10257
/code/branches/presentationHS15:10959-11055
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/radarDreiD:9690-9901
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/sagerjFS16:11138-11207
/code/branches/script_trigger:1295-1953,1955
/code/branches/sfxThilo:9691-9917
/code/branches/shaders:9379-11072
/code/branches/shaders_merge:11072-11079
/code/branches/shipSelection:9038-9206
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound2012:9205-9214
/code/branches/sound3:5941-6102
/code/branches/soundEffects:9382-11020
/code/branches/spaceNavigation:9381-9497
/code/branches/spaceboundaries:8085-8457
/code/branches/spaceboundaries2:8460-8613
/code/branches/spacerace:8182-8630
/code/branches/spaceraceTwo:8881-8996
/code/branches/spacestationentry:9699-9905
/code/branches/steering:5949-6091,8140-8595
/code/branches/storymodeHS14:10085-10254
/code/branches/surfaceRace:9028-9199
/code/branches/surfaceraceHS14:10080-10236
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/towerdefenseFS15:10283-10614
/code/branches/towerdefenseHS14:10086-10247
/code/branches/turret:9380-9501
/code/branches/turretFS14:9998-10070
/code/branches/tutoriallevel:7827-8370
/code/branches/tutoriallevel2:8370-8452
/code/branches/tutoriallevel3:8453-8636
/code/branches/unity_build:8440-8716
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weaponFS15:10302-10615
/code/branches/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
/code/branches/weaponupdateHS14:10084-10237

Modified: code/branches/presentationFS16/data/defaultConfig/keybindings.ini
===================================================================
--- code/branches/presentationFS16/data/defaultConfig/keybindings.ini	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/defaultConfig/keybindings.ini	2016-05-26 14:53:34 UTC (rev 11208)
@@ -121,7 +121,7 @@
 KeySpace="boost"
 KeyStop=
 KeySystemRequest="printScreen"
-KeyT="onpress fire 3"
+KeyT= onpress push 3 | onrelease release 3
 KeyTab="NewHumanController changeMode"
 KeyU=""
 KeyUP="scale 1 moveFrontBack"
@@ -131,7 +131,7 @@
 KeyV=
 KeyVolumeDown=
 KeyVolumeUp=
-KeyW="scale 1 moveFrontBack"
+KeyW="scale 1 moveFrontBack "
 KeyWake=
 KeyWebBack=
 KeyWebFavorites=
@@ -141,7 +141,7 @@
 KeyWebSearch=
 KeyWebStop=
 KeyX="selectClosest"
-KeyY="onpress fire 4"
+KeyY= onpress push 4 | onrelease release 4
 KeyYen=
 KeyZ="selectNext"
 
@@ -151,9 +151,9 @@
 Button5=
 Button6=
 Button7=
-Left="fire 0"
-Middle="fire 2"
-Right= fire 1 | unfire
+Left= push 0 | release 0
+Middle= push 2 | release 2
+Right= push 1 | release 1
 Wheel1Down="NewHumanController decelerate"
 Wheel1Up="NewHumanController accelerate"
 Wheel2Down=

Modified: code/branches/presentationFS16/data/gui/scripts/KeyBindMenu.lua
===================================================================
--- code/branches/presentationFS16/data/gui/scripts/KeyBindMenu.lua	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/gui/scripts/KeyBindMenu.lua	2016-05-26 14:53:34 UTC (rev 11208)
@@ -6,10 +6,10 @@
 function P.onLoad()
 
     commandList = {}
-    table.insert(commandList, "fire 0")
-    table.insert(commandList, "fire 1 | unfire")
-    table.insert(commandList, "onpress fire 2")
-    table.insert(commandList, "onpress fire 3")
+    table.insert(commandList, "fire 0" | "release 0")
+    table.insert(commandList, "fire 1" | "release 1")
+    table.insert(commandList, "onpress fire 2" | "onrelease release 2")
+    table.insert(commandList, "onpress fire 3" | "onrelease release 3")
     table.insert(commandList, "scale 1 moveFrontBack")
     table.insert(commandList, "scale -1 moveFrontBack")
     table.insert(commandList, "boost")

Modified: code/branches/presentationFS16/data/levels/emptyLevel.oxw
===================================================================
--- code/branches/presentationFS16/data/levels/emptyLevel.oxw	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/levels/emptyLevel.oxw	2016-05-26 14:53:34 UTC (rev 11208)
@@ -12,7 +12,7 @@
 ?>
 
 <?lua
-  include("templates/spaceshipEscort.oxt")
+  include("templates/spaceshipEscortDischarger.oxt")
   include("templates/spaceshipHover.oxt")
 ?>
 
@@ -28,7 +28,7 @@
   >
 
     <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"/>
-    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
+    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipescortdischarger />
 
     <SpaceShip position="0,0,0" lookat="0,0,0" >
                           

Copied: code/branches/presentationFS16/data/levels/florin_johnny_presentation.oxw (from rev 11207, code/branches/sagerjFS16/data/levels/florin_johnny_presentation.oxw)
===================================================================
--- code/branches/presentationFS16/data/levels/florin_johnny_presentation.oxw	                        (rev 0)
+++ code/branches/presentationFS16/data/levels/florin_johnny_presentation.oxw	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,53 @@
+<LevelInfo
+ name = "Empty level"
+ description = "A level with absolutely nothing in it."
+ tags = "test"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+  include("stats.oxo")
+  include("HUDTemplates3.oxo")
+  include("templates/lodInformation.oxt")
+?>
+
+<?lua
+  include("templates/spaceshipEscort.oxt")
+  include("templates/spaceshipFx112.oxt")
+?>
+
+<Level>
+  <templates>
+    <Template link=lodtemplate_default />
+  </templates>
+  <?lua include("includes/notifications.oxi") ?>
+
+  <Scene
+    ambientlight = "0.8, 0.8, 0.8"
+    skybox       = "Orxonox/Starbox"
+  >
+
+    <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"/>
+    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipfx112 />
+<Model position=“0,0,0“ mesh="fx112.mesh" scale="3" />
+
+<SpaceShip position="300,0,0" lookat="0,0,0" team=3>
+    <templates>
+        <Template link=spaceshipfx112 />
+    </templates>
+    <controller>
+        <WaypointController accuracy=10 team=3>
+            <waypoints>
+                <Model mesh="cube.mesh" scale=8 position="300,0,0" />
+                <Model mesh="cube.mesh" scale=8 position="300,500,0" />
+                <Model mesh="cube.mesh" scale=8 position="0,500,0" />
+                <StaticEntity position="0,0,0" />
+            </waypoints>
+        </WaypointController>
+    </controller>
+</SpaceShip>
+
+    
+  </Scene>
+</Level>
+

Modified: code/branches/presentationFS16/data/levels/includes/weaponSettingsEscort.oxi
===================================================================
--- code/branches/presentationFS16/data/levels/includes/weaponSettingsEscort.oxi	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/levels/includes/weaponSettingsEscort.oxi	2016-05-26 14:53:34 UTC (rev 11208)
@@ -1,30 +1,44 @@
     <weaponslots>
-      <WeaponSlot position="-9.2,2,-13" />
-      <WeaponSlot position=" 9.2,2,-13" />
+      <WeaponSlot
+        position="-9.2,2,-13"
+      />
     </weaponslots>
+
     <weaponsets>
-      <WeaponSet firemode=0 />
-      <WeaponSet firemode=1 />
+      <WeaponSet
+        firemode=0
+      />
     </weaponsets>
+    
     <weaponpacks>
       <WeaponPack>
         <links>
-          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
-          <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+          <DefaultWeaponmodeLink
+            firemode=0
+            weaponmode=0
+          />
         </links>
         <Weapon>
-          <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="LaserBeam2.mesh" />
+          <Discharger
+            mode=0
+            munitionpershot=1
+            delay=0
+            damage=0.8
+            material="Flares/point_lensflare"
+            muzzleoffset=" 1.6, 1.3, -2.0"
+            projectileMesh="LaserBeam2.mesh"
+          />
         </Weapon>
-        <Weapon>
-          <HsW01 mode=0 munitionpershot=1 delay=0     damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="LaserBeam2.mesh" />
-        </Weapon>
+   
       </WeaponPack>
-      <WeaponPack>
-        <links>
-          <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
-        </links>
-      </WeaponPack>
+
     </weaponpacks>
     <munition>
-      <LaserMunition initialmagazines=8 maxmagazines=8 munitionpermagazine=10 replenishamount=1 replenishinterval=7.5/>
+      <LaserMunition
+        initialmagazines=2
+        maxmagazines=2
+        munitionpermagazine=10
+        replenishamount=1
+        replenishinterval=2
+      />
     </munition>

Copied: code/branches/presentationFS16/data/levels/includes/weaponSettingsEscortDischarger.oxi (from rev 11207, code/branches/sagerjFS16/data/levels/includes/weaponSettingsEscortDischarger.oxi)
===================================================================
--- code/branches/presentationFS16/data/levels/includes/weaponSettingsEscortDischarger.oxi	                        (rev 0)
+++ code/branches/presentationFS16/data/levels/includes/weaponSettingsEscortDischarger.oxi	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,50 @@
+    <weaponslots>
+      <WeaponSlot position="-10,0,0" />
+      <WeaponSlot position=" 10,0,0" />
+    </weaponslots>
+    <weaponsets>
+      <WeaponSet firemode=0 />
+      <WeaponSet firemode=1 />
+    </weaponsets>
+    <weaponpacks>
+      <WeaponPack>
+        <links>
+          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+          <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+        </links>
+        <Weapon>
+          <Discharger
+            mode=0
+            munitionpershot=1
+            delay=0
+            damage=0.8
+            material="Flares/point_lensflare"
+            projectileMesh="LaserBeam2.mesh"
+          />
+        </Weapon>
+        <Weapon>
+          <Discharger
+            mode=1
+            munitionpershot=1
+            delay=0
+            damage=0.8
+            material="Flares/point_lensflare"
+            projectileMesh="LaserBeam2.mesh"
+          />
+        </Weapon>
+      </WeaponPack>
+      <WeaponPack>
+        <links>
+          <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+        </links>
+      </WeaponPack>
+    </weaponpacks>
+    <munition>
+      <LaserMunition
+        initialmagazines=2
+        maxmagazines=4
+        munitionpermagazine=5
+        replenishamount=2
+        replenishinterval=30
+      />
+    </munition>

Copied: code/branches/presentationFS16/data/levels/includes/weaponSettingsFx112.oxi (from rev 11207, code/branches/sagerjFS16/data/levels/includes/weaponSettingsFx112.oxi)
===================================================================
--- code/branches/presentationFS16/data/levels/includes/weaponSettingsFx112.oxi	                        (rev 0)
+++ code/branches/presentationFS16/data/levels/includes/weaponSettingsFx112.oxi	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,44 @@
+    <weaponslots>
+      <WeaponSlot position="-6.6, -2,-12" />
+      <WeaponSlot position=" 6.6, -2,-12" />
+      <WeaponSlot position=" -4.6, -2,-19" />
+      <WeaponSlot position=" 4.6, -2,-19" />
+    </weaponslots>
+    <weaponsets>
+      <WeaponSet firemode=0 />
+      <WeaponSet firemode=1 />
+    </weaponsets>
+    <weaponpacks>
+
+      <WeaponPack>
+
+        <links>
+          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+          <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+        </links>
+
+        <Weapon>
+          <Discharger mode=0 munitionpershot=1 delay=0 damage=0.8 material="Flares/point_lensflare" projectileMesh="LaserBeam2.mesh" />
+        </Weapon>
+
+        <Weapon>
+          <Discharger mode=0 munitionpershot=1 delay=0.1 damage=0.8 material="Flares/point_lensflare" projectileMesh="LaserBeam2.mesh" />
+        </Weapon>
+
+	      <Weapon>
+          <HsW01 mode=1 munitionpershot=1 delay=0.0 healthdamage=10 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
+          <HsW01 mode=1 munitionpershot=1 delay=0.2 healthdamage=5 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
+        </Weapon>
+
+        <Weapon>
+	        <HsW01 mode=1 munitionpershot=1 delay=0.1 healthdamage=10 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
+          <HsW01 mode=1 munitionpershot=1 delay=0.3 healthdamage=5 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
+	      </Weapon>
+
+      </WeaponPack>
+
+    </weaponpacks>
+
+    <munition>
+      <LaserMunition initialmagazines=6 maxmagazines=12 munitionpermagazine=5 replenishamount=6 replenishinterval=30 />
+    </munition>

Modified: code/branches/presentationFS16/data/levels/missionOne.oxw
===================================================================
--- code/branches/presentationFS16/data/levels/missionOne.oxw	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/levels/missionOne.oxw	2016-05-26 14:53:34 UTC (rev 11208)
@@ -11,6 +11,7 @@
   include("HUDTemplates3.oxo")
   include("templates/lodInformation.oxt")
   include("templates/spaceshipAssff.oxt")
+  include("templates/spaceshipEscort.oxt")
   include("templates/spaceshipPirate.oxt")
   include("templates/spaceshipSpacecruiser.oxt")
   include("templates/spaceshipTransporter.oxt")
@@ -56,7 +57,7 @@
     <EventMultiTrigger name=spawntrigger>
         <events>
             <trigger>
-                <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff>
+                <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort>
                   <EventTrigger invert=true>
                     <events>
                       <trigger>

Copied: code/branches/presentationFS16/data/levels/templates/spaceshipEscortDischarger.oxt (from rev 11207, code/branches/sagerjFS16/data/levels/templates/spaceshipEscortDischarger.oxt)
===================================================================
--- code/branches/presentationFS16/data/levels/templates/spaceshipEscortDischarger.oxt	                        (rev 0)
+++ code/branches/presentationFS16/data/levels/templates/spaceshipEscortDischarger.oxt	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,127 @@
+<Template name=spaceshipescortdischarger>
+  <SpaceShip
+   hudtemplate            = spaceshiphud
+   camerapositiontemplate = spaceshipescortcameras
+   spawnparticlesource    = "Orxonox/fairytwirl"
+   spawnparticleduration  = 3
+   explosionchunks        = 10
+
+   health            = 80
+   maxhealth         = 200
+   initialhealth     = 80
+
+   shieldhealth        = 35
+   initialshieldhealth = 35
+   maxshieldhealth     = 60
+   shieldabsorption    = 0.9
+   shieldrechargerate  = 1
+   shieldrechargewaittime = 1
+
+   primaryThrust     = 150
+   auxilaryThrust    = 30
+   rotationThrust    = 50
+
+   lift = 1;
+   stallSpeed = 220;
+
+   boostPower            = 20
+   boostPowerRate        = 1
+   boostRate             = 5
+   boostCooldownDuration = 10
+
+   shakeFrequency = 15
+   shakeAmplitude = 6
+
+   collisionType     = "dynamic"
+   mass              = 80
+   linearDamping     = 0.7
+   angularDamping    = 0.9999999
+  >
+    <engines>
+      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipescortengine />
+      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipescortengine />
+    </engines>
+    <attached>
+      <Model position="0,0,0" yaw=90 pitch=0 roll=0 scale=4 mesh="escortShip.mesh" />
+      <Model position="0,0,0" yaw=180 pitch=90 roll=0 scale=4 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+    </attached>
+    <collisionShapes>
+      <BoxCollisionShape position="0    ,0 ,  3" halfExtents="10,   4,8" />
+      <BoxCollisionShape position="12.6 ,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="-12.6,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
+    </collisionShapes>
+    <explosion>
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
+
+      <ExplosionPart mesh="explosionparts/escort_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_5.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_6.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+    </explosion>
+<?lua
+  include("../includes/weaponSettingsEscortDischarger.oxi")
+?>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipescortcameras defaults=0>
+  <SpaceShip>
+    <camerapositions>
+      <CameraPosition position="0,15, 60" drag=true mouselook=true />
+      <CameraPosition position="0,20, 90" drag=true mouselook=true />
+      <CameraPosition position="0,30,120" drag=true mouselook=true />
+    </camerapositions>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipescortengine baseclass=MultiStateEngine>
+  <MultiStateEngine
+   boostfactor    = 2.2
+
+   speedfront     = 200
+   speedback      =  70
+   speedleftright =  70
+   speedupdown    =  70
+
+   defEngineSndNormal = "sounds/Engine_low.ogg"
+   defEngineSndBoost = "sounds/Engine_high.ogg"
+
+   accelerationfront     = 700
+   accelerationbrake     = 700
+   accelerationback      =  125
+   accelerationleftright =  125
+   accelerationupdown    =  125
+  >
+    <EffectContainer condition="idle">
+      <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+       />
+      <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" />
+      <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" />
+    </EffectContainer>
+    <EffectContainer condition="not idle">
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+    </EffectContainer>
+    <EffectContainer condition="normal or brake">
+
+    </EffectContainer>
+    <EffectContainer condition="normal or boost">
+      <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" />
+      <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" />
+    </EffectContainer>
+    <EffectContainer condition="boost">
+      <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" />
+      <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" />
+    </EffectContainer>
+
+  </MultiStateEngine>
+</Template>

Copied: code/branches/presentationFS16/data/levels/templates/spaceshipFx112.oxt (from rev 11207, code/branches/sagerjFS16/data/levels/templates/spaceshipFx112.oxt)
===================================================================
--- code/branches/presentationFS16/data/levels/templates/spaceshipFx112.oxt	                        (rev 0)
+++ code/branches/presentationFS16/data/levels/templates/spaceshipFx112.oxt	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,125 @@
+<Template name=spaceshipfx112>
+  <SpaceShip
+   hudtemplate            = spaceshiphud
+   camerapositiontemplate = spaceshipfx112cameras
+   spawnparticlesource    = "Orxonox/fairytwirl"
+   spawnparticleduration  = 3
+   explosionchunks        = 10
+
+   health            = 150
+   maxhealth         = 300
+   initialhealth     = 120
+
+   shieldhealth        = 70
+   initialshieldhealth = 70
+   maxshieldhealth     = 130
+   shieldabsorption    = 1.2
+   shieldrechargerate  = 2
+   shieldrechargewaittime = 1
+
+   primaryThrust     = 100
+   auxilaryThrust    = 20
+   rotationThrust    = 40
+
+   lift = 1;
+   stallSpeed = 220;
+
+   boostPower            = 20
+   boostPowerRate        = 1
+   boostRate             = 5
+   boostCooldownDuration = 10
+
+   shakeFrequency = 15
+   shakeAmplitude = 6
+
+   collisionType     = "dynamic"
+   mass              = 90
+   linearDamping     = 0.7
+   angularDamping    = 0.9999999
+  >
+    <engines>
+      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipfx112engine />
+      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipfx112engine />
+    </engines>
+    <attached>
+      <Model position="0,0,0" yaw=180 pitch=0 roll=0 scale=4 mesh="fx112.mesh" />
+    </attached>
+    <collisionShapes>
+      <BoxCollisionShape position="0, 1.6, 5.6" halfExtents="8,13.6,3.2" pitch=90 />
+      <BoxCollisionShape position="0, -1, 2" halfExtents="18, -9.2,-1.6" pitch=90/>
+      <BoxCollisionShape position="0, 0, -17.2" halfExtents="4, 9.2,2.4" pitch=90/>
+    </collisionShapes>
+    <explosion>
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
+
+      <ExplosionPart mesh="explosionparts/fx112_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_5.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_6.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_7.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_8.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/fx112_part_9.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+    </explosion>
+<?lua
+  include("../includes/weaponSettingsFx112.oxi")
+?>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipfx112cameras defaults=0>
+  <SpaceShip>
+    <camerapositions>
+      <CameraPosition position="0,15, 60" drag=true mouselook=true />
+      <CameraPosition position="0,20, 90" drag=true mouselook=true />
+      <CameraPosition position="0,30,120" drag=true mouselook=true />
+    </camerapositions>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipfx112engine baseclass=MultiStateEngine>
+  <MultiStateEngine
+   boostfactor    = 2.8
+
+   speedfront     = 250
+   speedback      =  50
+   speedleftright =  50
+   speedupdown    =  50
+
+   defEngineSndNormal = "sounds/Engine_low.ogg"
+   defEngineSndBoost = "sounds/Engine_high.ogg"
+
+   accelerationfront     = 500
+   accelerationbrake     = 500
+   accelerationback      =  100
+   accelerationleftright =  100
+   accelerationupdown    =  100
+  >
+    <EffectContainer condition="idle">
+      <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+       />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 10.8, -0.7, 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" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-10.8, -0.7, 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" />
+    </EffectContainer>
+    <EffectContainer condition="not idle">
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="10.5, -0.7, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="-10.5, -0.7, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+    </EffectContainer>
+    <EffectContainer condition="normal or brake">
+
+    </EffectContainer>
+    <EffectContainer condition="normal or boost">
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="10.5, -0.7, 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" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-10.5, -0.7, 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" />
+    </EffectContainer>
+
+    <EffectContainer condition="boost">
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="10.5, -0.7, 14" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-10.5, -0.7, 14" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+    </EffectContainer>
+
+  </MultiStateEngine>
+</Template>

Modified: code/branches/presentationFS16/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/presentationFS16/data/overlays/HUDTemplates3.oxo	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/data/overlays/HUDTemplates3.oxo	2016-05-26 14:53:34 UTC (rev 11208)
@@ -183,6 +183,20 @@
      visible                = "true"
      weaponModeHUDSize      = "0.09, 0.03"
     />
+
+    <HUDChargeBar
+     name                   = "ChargeBar"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "0.0 , 0.5 "
+     pickpoint     = "0, 1"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconCharge"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.5,0.2" />
+      <BarColour position = 0.5 colour = "0.2,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.7,0.2,0.2" />
+    </HUDChargeBar>
     
     <HUDTimer
      name     = "Timer"

Modified: code/branches/presentationFS16/src/modules/invader/InvaderEnemyShooter.cc
===================================================================
--- code/branches/presentationFS16/src/modules/invader/InvaderEnemyShooter.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/invader/InvaderEnemyShooter.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -70,7 +70,7 @@
 
     void InvaderEnemyShooter::shoot()
     {
-        ControllableEntity::fire(0);
+        ControllableEntity::push(0);
     }
 
     void InvaderEnemyShooter::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)

Modified: code/branches/presentationFS16/src/modules/invader/InvaderShip.cc
===================================================================
--- code/branches/presentationFS16/src/modules/invader/InvaderShip.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/invader/InvaderShip.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -90,7 +90,7 @@
 
         // shoot!
         if (isFireing)
-            ControllableEntity::fire(0);
+            ControllableEntity::push(0);
 
         // Camera
         Camera* camera = this->getCamera();

Modified: code/branches/presentationFS16/src/modules/jump/JumpFigure.cc
===================================================================
--- code/branches/presentationFS16/src/modules/jump/JumpFigure.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/jump/JumpFigure.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -397,12 +397,12 @@
 
     }
 
-    void JumpFigure::fire(unsigned int firemode)
+    void JumpFigure::push(unsigned int firemode)
     {
 
     }
 
-    void JumpFigure::fired(unsigned int firemode)
+    void JumpFigure::pushed(unsigned int firemode)
     {
         firePressed_ = true;
     }

Modified: code/branches/presentationFS16/src/modules/jump/JumpFigure.h
===================================================================
--- code/branches/presentationFS16/src/modules/jump/JumpFigure.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/jump/JumpFigure.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -46,8 +46,8 @@
             virtual void rotateYaw(const Vector2& value) override;
             virtual void rotatePitch(const Vector2& value) override;
             virtual void rotateRoll(const Vector2& value) override;
-            void fire(unsigned int firemode);
-            virtual void fired(unsigned int firemode) override;
+            void push(unsigned int firemode);
+            virtual void pushed(unsigned int firemode) override;
             virtual void JumpFromPlatform(JumpPlatform* platform);
             virtual void JumpFromSpring(JumpSpring* spring);
             virtual void CollisionWithEnemy(JumpEnemy* enemy);

Modified: code/branches/presentationFS16/src/modules/objects/controllers/TurretController.cc
===================================================================
--- code/branches/presentationFS16/src/modules/objects/controllers/TurretController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/objects/controllers/TurretController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -197,7 +197,7 @@
             if(this->isLookingAtTargetNew(Degree(5).valueRadians()))
             {
 
-                this->getControllableEntity()->fire(0);
+                this->getControllableEntity()->push(0);
             }
         }
     }

Modified: code/branches/presentationFS16/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/branches/presentationFS16/src/modules/overlays/hud/CMakeLists.txt	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/overlays/hud/CMakeLists.txt	2016-05-26 14:53:34 UTC (rev 11208)
@@ -13,6 +13,7 @@
   HUDWeaponMode.cc
   HUDWeapon.cc
   HUDWeaponSystem.cc
+  HUDChargeBar.cc
   ChatOverlay.cc
   AnnounceMessage.cc
   KillMessage.cc

Copied: code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.cc (from rev 11207, code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.cc)
===================================================================
--- code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.cc	                        (rev 0)
+++ code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,109 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "HUDChargeBar.h"
+
+#include "util/Convert.h"
+#include "core/CoreIncludes.h"
+#include "worldentities/pawns/Pawn.h"
+#include "overlays/OverlayGroup.h"
+
+
+namespace orxonox
+{
+    RegisterClass(HUDChargeBar);
+
+    HUDChargeBar::HUDChargeBar(Context* context) : HUDBar(context)
+    {
+        RegisterObject(HUDChargeBar);
+
+        this->owner_ = nullptr;
+        this->correspondingMode_ = nullptr;             // usually no chargeable weapon equipped
+    }
+
+    HUDChargeBar::~HUDChargeBar() { }
+
+    void HUDChargeBar::tick(float dt)
+    {
+        SUPER(HUDChargeBar, tick, dt);
+
+        if (this->owner_)
+        {
+            if(correspondingMode_ != nullptr)                                                                       // if there is a chargeable weapon equipped we want to show the charged amount with a HUDBar
+            {
+                this->setValue( correspondingMode_->getCharges() * 1.0f / correspondingMode_->getMaxCharges() );    // The Value of the HUDBar is the ratio of current Charges and the maximum Charges possible
+                
+                if(this->correspondingMode_->getCharges() > 0)                                                      // The HUDBar should only be visible when we are charging up
+                {
+                    this->setVisible(true);
+                }
+                else
+                {
+                    this->setVisible(false);
+                }
+            }
+        }
+        else
+        {
+            this->setValue(0);
+        }
+
+    }
+
+    void HUDChargeBar::changedOwner()
+    {
+        SUPER(HUDChargeBar, changedOwner);
+
+        this->setVisible(false);
+        this->correspondingMode_ = nullptr;
+
+        this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+        if(this->owner_ == nullptr){
+            return;
+        }
+
+        const WeaponSystem* weaponsystem = owner_->getWeaponSystem();
+        if(weaponsystem == nullptr){
+            return;
+        }
+
+        const std::vector<WeaponPack*> weaponpacklist = weaponsystem->getAllWeaponPacks();
+        for(WeaponPack* weaponpack : weaponpacklist){
+            const std::vector<Weapon*> weaponlist = weaponpack->getAllWeapons();
+            for(Weapon* weapon : weaponlist){
+                const std::multimap<unsigned int, WeaponMode*> weaponmodelist = weapon->getAllWeaponmodes();
+                for(std::multimap<unsigned int, WeaponMode*>::const_iterator it = weaponmodelist.begin(); it != weaponmodelist.end(); ++it){
+                    if(it->second->isChargeable()){
+                        this->correspondingMode_ = it->second;
+                        return;
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

Copied: code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.h (from rev 11207, code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.h)
===================================================================
--- code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.h	                        (rev 0)
+++ code/branches/presentationFS16/src/modules/overlays/hud/HUDChargeBar.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,69 @@
+
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Johannes Sager
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _HUDChargeBar_H__
+#define _HUDChargeBar_H__
+
+#include "overlays/OverlaysPrereqs.h"
+#include "util/Math.h"
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+#include "HUDBar.h"
+
+#include "weaponsystem/WeaponSystem.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponMode.h"
+#include "weaponsystem/Weapon.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        The HUDChargeBar displays the amount of charges of its owner (a @ref Pawn).
+        The length of the bar is given by the ratio of the current charges and the maximal charges of the @ref Pawn.
+    */
+
+    class _OverlaysExport HUDChargeBar : public HUDBar, public Tickable
+    {
+        public:
+            HUDChargeBar(Context* context);
+            virtual ~HUDChargeBar();
+
+            virtual void tick(float dt) override;
+            virtual void changedOwner() override;
+
+            inline void setHealthBarOwner(Pawn* owner)
+                { this->owner_ = owner; }
+        
+        private:
+            WeaponMode* correspondingMode_;         // pointer on the chargeable weaponmode (=nullptr if no chargeable weapons equipped)
+            WeakPtr<Pawn> owner_;
+    };
+}
+#endif /* _HUDChargeBar_H__ */

Modified: code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.cc
===================================================================
--- code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -145,11 +145,11 @@
     {
     }
 
-    void TowerDefenseSelecter::fire(unsigned int firemode)
+    void TowerDefenseSelecter::push(unsigned int firemode)
     {
     }
 
-    void TowerDefenseSelecter::fired(unsigned int firemode)
+    void TowerDefenseSelecter::pushed(unsigned int firemode)
     {
         
     }

Modified: code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.h
===================================================================
--- code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/towerdefense/TowerDefenseSelecter.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -46,8 +46,8 @@
             virtual void rotateYaw(const Vector2& value) override;
             virtual void rotatePitch(const Vector2& value) override;
             virtual void rotateRoll(const Vector2& value) override;
-            void fire(unsigned int firemode);
-            virtual void fired(unsigned int firemode) override;
+            void push(unsigned int firemode);
+            virtual void pushed(unsigned int firemode) override;
             virtual void boost(bool bBoost) override;
             virtual void setSelectedPosition(TDCoordinate* newPos);
             virtual void setSelectedPosition(int x, int y);

Modified: code/branches/presentationFS16/src/modules/weapons/WeaponsPrereqs.h
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/WeaponsPrereqs.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/WeaponsPrereqs.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -106,6 +106,7 @@
     class RocketFireOld;
     class SimpleRocketFire;
     class GravityBombFire;
+    class Discharger;
 }
 
 #endif /* _WeaponsPrereqs_H__ */

Modified: code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -217,7 +217,7 @@
     @brief
         Destroys the Rocket upon pressing "fire".
     */
-    void Rocket::fired(unsigned int firemode)
+    void Rocket::pushed(unsigned int firemode)
     {
         this->destroyObject();
     }

Modified: code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/projectiles/Rocket.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -115,7 +115,7 @@
 
             virtual void setShooter(Pawn* shooter) override;
 
-            virtual void fired(unsigned int firemode) override;
+            virtual void pushed(unsigned int firemode) override;
 
             /**
             @brief Set the maximum lifetime of the rocket.

Modified: code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.cc
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -217,7 +217,7 @@
     @brief
         Destroys the RocketOld upon pressing "fire".
     */
-    void RocketOld::fired(unsigned int firemode)
+    void RocketOld::pushed(unsigned int firemode)
     {
         this->destroyObject();
     }

Modified: code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.h
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/projectiles/RocketOld.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -115,7 +115,7 @@
 
             virtual void setShooter(Pawn* shooter) override;
 
-            virtual void fired(unsigned int firemode) override;
+            virtual void pushed(unsigned int firemode) override;
 
         private:
             Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.

Modified: code/branches/presentationFS16/src/modules/weapons/weaponmodes/CMakeLists.txt
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/weaponmodes/CMakeLists.txt	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/modules/weapons/weaponmodes/CMakeLists.txt	2016-05-26 14:53:34 UTC (rev 11208)
@@ -12,4 +12,5 @@
   SimpleRocketFire.cc
   GravityBombFire.cc
   MineGun.cc
+  Discharger.cc
 )

Copied: code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.cc (from rev 11207, code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.cc)
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.cc	                        (rev 0)
+++ code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,97 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Johannes Sager
+ *   Co-authors:
+ *    
+ *
+ */
+
+/**
+    @file Discharger.cc
+    @brief Definition of the Discharger class.
+*/
+
+#include "Discharger.h"
+
+#include "core/CoreIncludes.h"
+
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/BillboardProjectile.h"
+
+namespace orxonox
+{
+    RegisterClass(Discharger);
+
+    Discharger::Discharger(Context* context) : WeaponMode(context)
+    {
+        RegisterObject(Discharger);
+
+        this->reloadTime_ = 3.14159f;           // how long you cannot charge after fire
+        this->damage_ = 0.0f;                   // if 0.0f then it uses weaponsettings.oxi
+        this->speed_ = 100.0f;                  // base projectile speed
+        this->chargeable_ = true;               // true if weapon chargeable
+
+        this->setMunitionName("LaserMunition");
+        this->setFireSound("sounds/Weapon_LaserFire.ogg");
+        this->setReloadSound("sounds/Reload_LaserFire.ogg", 0.8);
+
+        hudImageString_ = "Orxonox/WSHUD_WM_LaserFire";
+    }
+
+    void Discharger::fire()
+    {
+        BillboardProjectile* projectile = new BillboardProjectile(this->getContext());
+
+        if(this->charges_ < this->thresholdOne_)
+        {
+            projectile->setMaterial("Flares/lensflare");
+        }
+        else
+        {
+            if(this->charges_ < this->thresholdTwo_)
+            {
+                projectile->setMaterial("Flares/ringflare");
+            }
+            else
+            {
+                projectile->setMaterial("Flares/ringflare2");  
+            }
+        }
+
+        projectile->setScale(1+this->charges_/10);
+
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        projectile->setOrientation(this->getMuzzleOrientation());
+        projectile->setPosition(this->getMuzzlePosition());
+        projectile->setVelocity(this->getMuzzleDirection() * this->speed_ * this->charges_ / 5);// we scale the projectile speed with the current charges / 5
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage() * this->charges_);
+        projectile->setShieldDamage(this->getShieldDamage() * this->charges_);                  // we scale both types of damage with the current charges as
+        projectile->setHealthDamage(this->getHealthDamage() * this->charges_);                  // well since this is the whole purpose of a chareable weapon
+        this->charges_ = 0;                                                                     // firing "consumes" the current charges (reset after fire)
+    }
+}
\ No newline at end of file

Copied: code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.h (from rev 11207, code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.h)
===================================================================
--- code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.h	                        (rev 0)
+++ code/branches/presentationFS16/src/modules/weapons/weaponmodes/Discharger.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -0,0 +1,66 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *       Johannes Sager
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+     @file Discharger.cc
+     @brief Definition of the Discharger class.
+*/
+
+#ifndef _Discharger_H__
+#define _Discharger_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/WeaponMode.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        Charges energy upon releasing it with a powerful discharge
+    @author
+        Johannes Sager
+    @ingroup WeaponsWeaponModes
+    */
+
+    class _WeaponsExport Discharger : public WeaponMode
+    {
+        public:
+            Discharger(Context* context);
+            virtual ~Discharger() {}                    // declaration for the constructor
+
+            virtual void fire() override;               // declaration of specific fire function of each weapon
+
+        private:
+            float speed_;                               // The speed of the fired projectile.
+            const unsigned int thresholdOne_ = 50;      // Threshold amount of charges where the projectile changes the first time
+            const unsigned int thresholdTwo_ = 100;     // Threshold amount of charges where the projectile changes the second time        
+    }; 
+}
+
+#endif /* _Discharger_H__ */

Modified: code/branches/presentationFS16/src/orxonox/controllers/AIController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/AIController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/AIController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -196,7 +196,7 @@
 
                     if (this->bHasTargetPosition_)
                         this->moveToTargetPosition();
-                    this->doFire();
+                    this->doPush();
                 }
 
                 if (this->specificMasterAction_  == TURN180)
@@ -226,7 +226,7 @@
                 if (this->bHasTargetPosition_)
                     this->moveToTargetPosition();
 
-                    this->doFire();
+                    this->doPush();
             }
         }
         else if (this->mode_ == ROCKET)//Rockets do not belong to a group of bots -> bot states are not relevant.
@@ -240,7 +240,7 @@
                     this->timeout_ -= dt;
                     if((timeout_< 0)||(!target_))//Check if the timeout is over or target died.
                     {
-                       controllable->fire(0);//kill the rocket
+                       controllable->push(0);//kill the rocket
                        this->setPreviousMode();//get out of rocket mode
                     }
                 }

Modified: code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -131,7 +131,7 @@
     /**
         @brief DoFire is called when a bot should shoot and decides which weapon is used and whether the bot shoots at all.
     */
-    void ArtificialController::doFire()
+    void ArtificialController::doPush()
     {
         if(!this->bSetupWorked)//setup: find out which weapons are active ! hard coded: laser is "0", lens flare is "1", ...
         {
@@ -143,12 +143,12 @@
             float random = rnd(1);//
             if (this->isCloseAtTarget(130) && (firemode = getFiremode("LightningGun")) > -1 )
             {//LENSFLARE: short range weapon
-                this->getControllableEntity()->fire(firemode); //ai uses lens flare if they're close enough to the target
+                this->getControllableEntity()->push(firemode); //ai uses lens flare if they're close enough to the target
             }
             else if( this->isCloseAtTarget(400) && (random < this->botlevel_) && (firemode = getFiremode("RocketFire")) > -1 )
             {//ROCKET: mid range weapon
                 this->mode_ = ROCKET; //Vector-implementation: mode_.push_back(ROCKET);
-                this->getControllableEntity()->fire(firemode); //launch rocket
+                this->getControllableEntity()->push(firemode); //launch rocket
                 if(this->getControllableEntity() && this->target_) //after fire(3) is called, getControllableEntity() refers to the rocket!
                 {
                     float speed = this->getControllableEntity()->getVelocity().length() - target_->getVelocity().length();
@@ -160,7 +160,7 @@
                     this->timeout_ = 4.0f; //TODO: find better default value
             }
             else if ((firemode = getFiremode("HsW01")) > -1 ) //LASER: default weapon
-                this->getControllableEntity()->fire(firemode);
+                this->getControllableEntity()->push(firemode);
         }
     }
 

Modified: code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/ArtificialController.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -47,7 +47,7 @@
 
             virtual void changedControllableEntity() override;
 
-            virtual void doFire();
+            virtual void doPush();
             void setBotLevel(float level=1.0f);
             inline float getBotLevel() const
                 { return this->botlevel_; }

Modified: code/branches/presentationFS16/src/orxonox/controllers/DroneController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/DroneController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/DroneController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -129,7 +129,7 @@
                        this->isShooting_ = true;
                        this->aimAtTarget();
                        if(!this->friendlyFire())
-                           this->getDrone()->fire(0);
+                           this->getDrone()->push(0);
                     }
                }
 

Modified: code/branches/presentationFS16/src/orxonox/controllers/FightingController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/FightingController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/FightingController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -317,7 +317,7 @@
             this->rocketsLeft_--;
         }
               
-        this->getControllableEntity()->fire(firemode);
+        this->getControllableEntity()->push(firemode);
         
     }
     void FightingController::setupWeapons() //TODO: Make this function generic!! (at the moment is is based on conventions)

Modified: code/branches/presentationFS16/src/orxonox/controllers/HumanController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/HumanController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/HumanController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -39,8 +39,9 @@
 
 namespace orxonox
 {
-    extern const std::string __CC_fire_name = "fire";
+    extern const std::string __CC_push_name = "push";
     extern const std::string __CC_suicide_name = "suicide";
+    extern const std::string __CC_release_name = "release";
 
     SetConsoleCommand("HumanController", "moveFrontBack",          &HumanController::moveFrontBack ).addShortcut().setAsInputCommand();
     SetConsoleCommand("HumanController", "moveRightLeft",          &HumanController::moveRightLeft ).addShortcut().setAsInputCommand();
@@ -50,7 +51,8 @@
     SetConsoleCommand("HumanController", "rotateRoll",             &HumanController::rotateRoll    ).addShortcut().setAsInputCommand();
     SetConsoleCommand("HumanController", "toggleFormationFlight",  &HumanController::toggleFormationFlight).addShortcut().keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("HumanController", "FFChangeMode",           &HumanController::FFChangeMode).addShortcut().keybindMode(KeybindMode::OnPress);
-    SetConsoleCommand("HumanController", __CC_fire_name,           &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
+    SetConsoleCommand("HumanController", __CC_push_name,           &HumanController::push          ).addShortcut().keybindMode(KeybindMode::OnHold);
+    SetConsoleCommand("HumanController", __CC_release_name,        &HumanController::release       ).addShortcut().keybindMode(KeybindMode::OnRelease);
     SetConsoleCommand("HumanController", "reload",                 &HumanController::reload        ).addShortcut();
     SetConsoleCommand("HumanController", "boost",                  &HumanController::boost         ).addShortcut().setAsInputCommand().keybindMode(KeybindMode::OnPressAndRelease);
     SetConsoleCommand("HumanController", "greet",                  &HumanController::greet         ).addShortcut();
@@ -154,17 +156,17 @@
             HumanController::localController_s->controllableEntity_->rotateRoll(value);
     }
 
-    void HumanController::fire(unsigned int firemode)
+    void HumanController::push(unsigned int firemode)
     {
         if (HumanController::localController_s)
-            HumanController::localController_s->doFire(firemode);
+            HumanController::localController_s->doPush(firemode);
     }
 
-    void HumanController::doFire(unsigned int firemode)
+    void HumanController::doPush(unsigned int firemode)
     {
         if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
         {
-            HumanController::localController_s->controllableEntity_->fire(firemode);
+            HumanController::localController_s->controllableEntity_->push(firemode);
             //if human fires, set slaves free. See FormationController::forceFreeSlaves()
             if (HumanController::localController_s->state_==MASTER && HumanController::localController_s->formationMode_ == NORMAL)
             {
@@ -173,6 +175,25 @@
         }
     }
 
+    void HumanController::release(unsigned int firemode)
+    {
+        if (HumanController::localController_s)
+            HumanController::localController_s->doRelease(firemode);
+    }
+
+    void HumanController::doRelease(unsigned int firemode)
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
+        {
+            HumanController::localController_s->controllableEntity_->release(firemode);
+            //if human releases, set slaves free. See FormationController::forceFreeSlaves()
+            if (HumanController::localController_s->state_==MASTER && HumanController::localController_s->formationMode_ == NORMAL)
+            {
+                HumanController::localController_s->forceFreeSlaves();
+            }
+        }
+    }
+
     void HumanController::reload()
     {
         if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)

Modified: code/branches/presentationFS16/src/orxonox/controllers/HumanController.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/HumanController.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/HumanController.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -60,8 +60,10 @@
             virtual void yaw(const Vector2& value);
             virtual void pitch(const Vector2& value);
 
-            static void fire(unsigned int firemode);
-            virtual void doFire(unsigned int firemode);
+            static void push(unsigned int firemode);
+            virtual void doPush(unsigned int firemode);
+            static void release(unsigned int firemode);
+            virtual void doRelease(unsigned int firemode);
             static void reload();
 
             static void boost(const Vector2& value); // Static method, controls boosting.

Modified: code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -53,7 +53,6 @@
     SetConsoleCommand("NewHumanController", "changeMode", &NewHumanController::changeMode).keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("NewHumanController", "accelerate", &NewHumanController::accelerate).keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("NewHumanController", "decelerate", &NewHumanController::decelerate).keybindMode(KeybindMode::OnPress);
-    SetConsoleCommand("NewHumanController", "unfire",     &NewHumanController::unfire    ).keybindMode(KeybindMode::OnRelease).addShortcut();
 
     RegisterUnloadableClass(NewHumanController);
 
@@ -276,7 +275,7 @@
         HumanController::tick(dt);
     }
 
-    void NewHumanController::doFire(unsigned int firemode)
+    void NewHumanController::doPush(unsigned int firemode)
     {
         if (!this->controllableEntity_)
             return;
@@ -290,9 +289,21 @@
             HumanController::pitch(Vector2(this->currentPitch_, 0));
         }
         else
-            HumanController::doFire(firemode); //call for formationflight
+        {
+            HumanController::doPush(firemode); //call for formationflight
+        }
     }
 
+    void NewHumanController::doRelease(unsigned int firemode)
+    {
+        if (!this->controllableEntity_)
+            return;
+
+        this->firemode_ = firemode;
+
+        HumanController::doRelease(firemode); //call for formationflight
+    }
+
     void NewHumanController::hit(Pawn* originator, btManifoldPoint& contactpoint, float damage)
     {
         //Used in HumanController for formationFlight
@@ -343,18 +354,6 @@
         }
     }
 
-    void NewHumanController::unfire()
-    {
-        if (NewHumanController::localController_s)
-            NewHumanController::localController_s->doUnfire();
-    }
-
-    void NewHumanController::doUnfire()
-    {
-        this->firemode_ = -1;
-        hideArrows();
-    }
-
     void NewHumanController::centerCursor()
     {
         this->currentYaw_ = 0;

Modified: code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/NewHumanController.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -53,13 +53,11 @@
             static void accelerate();
             static void decelerate();
 
-            virtual void doFire(unsigned int firemode) override;
+            virtual void doPush(unsigned int firemode) override;
+            virtual void doRelease(unsigned int firemode) override;
 
             virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage) override;
 
-            static void unfire();
-            virtual void doUnfire();
-
             void centerCursor();
 
             static void changeMode();

Modified: code/branches/presentationFS16/src/orxonox/controllers/WaypointPatrolController.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/controllers/WaypointPatrolController.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/controllers/WaypointPatrolController.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -68,7 +68,7 @@
                 this->moveToTargetPosition();
 
             if (this->getControllableEntity() && this->isCloseAtTarget(this->attackradius_) && this->isLookingAtTarget(math::pi / 20.0f))
-                this->getControllableEntity()->fire(0);
+                this->getControllableEntity()->push(0);
         }
         else
         {

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -98,7 +98,7 @@
     @brief
         Fire this Weapon with the the WeaponMode defined by @param mode
     */
-    void Weapon::fire(unsigned int mode)
+    void Weapon::push(unsigned int mode)
     {
         // To avoid firing with more than one mode at the same time, we lock the weapon (reloading) for
         // all modes except the one which is currently reloading.
@@ -113,6 +113,8 @@
         //
         // Note: The reloading of each WeaponMode is internally handled by each A, B and C.
         //       The reloading of the weapon is only performed to avoid firing with different modes at the same time.
+   
+   
         if (this->bReloading_ && this->reloadingWeaponmode_ != mode)
             return;
 
@@ -122,7 +124,7 @@
         for (std::multimap<unsigned int, WeaponMode*>::iterator it = start; it != end; ++it)
         {
             float reloading_time = 0;
-            if (it->second->fire(&reloading_time))
+            if (it->second->push(&reloading_time))
             {
                 this->bReloading_ = true;
                 this->reloadingWeaponmode_ = mode;
@@ -133,6 +135,28 @@
         }
     }
 
+    void Weapon::release(unsigned int mode)
+    {
+        if (this->bReloading_ && this->reloadingWeaponmode_ != mode)
+            return;
+
+        std::multimap<unsigned int, WeaponMode*>::iterator start = this->weaponmodes_.lower_bound(mode);
+        std::multimap<unsigned int, WeaponMode*>::iterator end   = this->weaponmodes_.upper_bound(mode);
+
+        for (std::multimap<unsigned int, WeaponMode*>::iterator it = start; it != end; ++it)
+        {
+            float reloading_time = 0;
+            if (it->second->release(&reloading_time))
+            {
+                this->bReloading_ = true;
+                this->reloadingWeaponmode_ = mode;
+
+                this->reloadTimer_.setInterval(reloading_time);
+                this->reloadTimer_.startTimer();
+            }
+        }
+    }
+
     /**
     @brief
         Reload all @ref orxonox::WeaponMode weapon modes of this weapon.

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/Weapon.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -51,7 +51,8 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire(unsigned int mode);
+            void push(unsigned int mode);
+            void release(unsigned int mode);
             void reload();
 
             void addWeaponmode(WeaponMode* weaponmode);

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -23,7 +23,7 @@
  *      Martin Polak
  *      Fabian 'x3n' Landau
  *   Co-authors:
- *      ...
+ *      Johannes Sager
  *
  */
 
@@ -62,6 +62,9 @@
         this->bReloading_ = false;
         this->bAutoReload_ = true;
         this->bParallelReload_ = true;
+        this->chargeable_ = false;              // most weapons are not chargeable
+        this->charges_ = 0;                     // always start with no charges
+        this->maxCharges_ = 100;                // default maximum charges one can have are 100
 
         this->reloadTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&WeaponMode::reloaded, this)));
         this->reloadTimer_.stopTimer();
@@ -120,7 +123,6 @@
     bool WeaponMode::fire(float* reloadTime)
     {
         (*reloadTime) = this->reloadTime_;
-        
         // Fireing is only possible if this weapon mode is not reloading and there is enough munition
         if (!this->bReloading_ && this->munition_ && this->munition_->takeMunition(this->munitionPerShot_, this))
         {
@@ -168,6 +170,36 @@
         }
     }
 
+    bool WeaponMode::push(float* reloadTime)
+    {
+
+        if( this->chargeable_)                                                                                                          // chargeable weapons are supposed to charge on push
+        {
+            this->munition_ = this->weapon_->getWeaponPack()->getWeaponSystem()->getMunition(&this->munitiontype_);                     // updates the pointer to the munition(which we use in the next step)
+            if(this->charges_ < this->maxCharges_ && this->bReloading_ == false && this->munition_->canTakeMunition(1, this))           // charges up unless:
+            {                                                                                                                           // - we are fully charged
+                this->charges_ += 1;                                                                                                    // - we are reloading
+            }                                                                                                                           // - we have no munition
+            return false;
+        }
+        else                                                                                                                            // normal (not chargeable) weapons are supposed to fire on push
+        {
+            return fire(reloadTime);
+        }
+    }
+
+    bool WeaponMode::release(float* reloadTime)                 
+    {
+        if( this->chargeable_)                                                                                                          // chargeable weapons are supposed to fire on release
+        { 
+            return fire(reloadTime);
+        }
+        else                                                                                                                            // normal (not chargeable) weapons should do nothing on release
+        {
+            return false;
+        }
+    }
+
     bool WeaponMode::reload()
     {
         if (this->munition_ && this->munition_->reload(this))

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponMode.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -23,7 +23,7 @@
  *      Martin Polak
  *      Fabian 'x3n' Landau
  *   Co-authors:
- *      ...
+ *      Johannes Sager
  *
  */
 
@@ -44,7 +44,9 @@
 {
     /**
     @brief
-        A WeaponMode defines how a Weapon is used. It specifies what kind of @ref orxonox::Projectile is created when you fire it, how much time it takes to reload, what sound you hear while shooting, how much damage the projectile deals to a target, ...
+        A WeaponMode defines how a Weapon is used. It specifies what kind of
+        @ref orxonox::Projectile is created when you fire it, how much time it takes to reload,
+        what sound you hear while shooting, how much damage the projectile deals to a target, ...
     */
     class _OrxonoxExport WeaponMode : public BaseObject
     {
@@ -54,6 +56,8 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
+            virtual bool push(float* reloadTime);
+            virtual bool release(float* reloadTime);
             virtual bool fire(float* reloadTime);
             bool reload();
 
@@ -105,6 +109,12 @@
 
 
             // Fire
+            inline unsigned int getMaxCharges()                 // get the maximum of charges one can have
+                { return this->maxCharges_;}
+            inline unsigned int getCharges()                    // get the current amount of charges
+                { return this->charges_;}
+            inline bool isChargeable()                          // returns if the weaponmode is chargeable
+                { return this->chargeable_;}
             inline void setDamage(float damage)
                 { this->damage_ = damage;}
             inline float getDamage() const
@@ -165,10 +175,13 @@
             unsigned int initialMunition_;
             unsigned int initialMagazines_;
             unsigned int munitionPerShot_;
+            unsigned int charges_;                  // current amount of charges only matters for chargeable weapons(chargeable == true)
+            unsigned int maxCharges_;               // maximum amount of charges (is initialized with 100 in weaponmode.cc) only matters for chargeable weapons(chargeable == true)
 
             float reloadTime_;
-            bool bAutoReload_; // If true, the weapon reloads the magazine automatically.
-            bool bParallelReload_; // If true, the weapon reloads in parallel to the magazine reloading.
+            bool bAutoReload_;                      // If true, the weapon reloads the magazine automatically.
+            bool bParallelReload_;                  // If true, the weapon reloads in parallel to the magazine reloading.
+            bool chargeable_;                       // If true, the weapon charges up on push and fires on release
 
             float damage_;
             float healthdamage_;
@@ -188,16 +201,16 @@
             std::string munitionname_;
 
             Timer reloadTimer_;
-            bool bReloading_; // If true, this weapon mode is marked as reloading.
+            bool bReloading_;                       // If true, this weapon mode is marked as reloading.
 
             Vector3 muzzlePosition_;
             Quaternion muzzleOrientation_;
 
-            std::string fireSoundPath_; // The path of the sound played when fireing
-            float fireSoundVolume_; // The volume of the sound played when fireing
-            std::vector<WorldSound*> fireSounds_; // List of sounds used by the weapon mode. Because multiple sounds may overlap, we need mor than one WorldSound instance.
-            std::string reloadSoundPath_; // The path of the sound played when reloading
-            float reloadSoundVolume_; // The volume of the sound played when reloading
+            std::string fireSoundPath_;             // The path of the sound played when fireing
+            float fireSoundVolume_;                 // The volume of the sound played when fireing
+            std::vector<WorldSound*> fireSounds_;   // List of sounds used by the weapon mode. Because multiple sounds may overlap, we need mor than one WorldSound instance.
+            std::string reloadSoundPath_;           // The path of the sound played when reloading
+            float reloadSoundVolume_;               // The volume of the sound played when reloading
             WorldSound* reloadSound_;
     };
 }

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -73,12 +73,18 @@
     @brief
         Fire all weapons in this WeaponSet with the defined weaponmode.
     */
-    void WeaponPack::fire(unsigned int weaponmode)
+    void WeaponPack::push(unsigned int weaponmode)
     {
         for (Weapon* weapon : this->weapons_)
-            weapon->fire(weaponmode);
+            weapon->push(weaponmode);
     }
 
+    void WeaponPack::release(unsigned int weaponmode)
+    {
+        for (Weapon* weapon : this->weapons_)
+            weapon->release(weaponmode);
+    }
+
     /**
     @brief
         Reload all weapons in this WeaponSet.

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponPack.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -45,7 +45,8 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire(unsigned int weaponmode);
+            void push(unsigned int weaponmode);
+            void release(unsigned int weaponmode);
             void reload();
 
             void addWeapon(Weapon * weapon);

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -59,14 +59,22 @@
         XMLPortParam(WeaponSet, "firemode", setDesiredFiremode, getDesiredFiremode, xmlelement, mode);
     }
 
-    void WeaponSet::fire()
+    void WeaponSet::push()
     {
         // Fire all WeaponPacks with their defined weaponmode
         for (const auto& mapEntry : this->weaponpacks_)
             if (mapEntry.second != WeaponSystem::WEAPON_MODE_UNASSIGNED)
-                mapEntry.first->fire(mapEntry.second);
+                mapEntry.first->push(mapEntry.second);
     }
 
+    void WeaponSet::release()
+    {
+        // Fire all WeaponPacks with their defined weaponmode
+        for (const auto& mapEntry : this->weaponpacks_)
+            if (mapEntry.second != WeaponSystem::WEAPON_MODE_UNASSIGNED)
+                mapEntry.first->release(mapEntry.second);
+    }
+
     void WeaponSet::reload()
     {
         // Reload all WeaponPacks with their defined weaponmode

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSet.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -45,7 +45,8 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire();
+            void push();
+            void release();
             void reload();
 
             void setWeaponmodeLink(WeaponPack* weaponpack, unsigned int weaponmode);

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -286,13 +286,20 @@
     @brief
         Fires the @ref orxonox::WeaponSet with the specified firemode.
     */
-    void WeaponSystem::fire(unsigned int firemode)
+    void WeaponSystem::push(unsigned int firemode)
     {
         std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.find(firemode);
         if (it != this->weaponSets_.end() && it->second)
-            it->second->fire();
+            it->second->push();
     }
 
+    void WeaponSystem::release(unsigned int firemode)
+    {
+        std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.find(firemode);
+        if (it != this->weaponSets_.end() && it->second)
+            it->second->release();
+    }
+
     void WeaponSystem::reload()
     {
         for (const auto& mapEntry : this->weaponSets_)

Modified: code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/weaponsystem/WeaponSystem.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -75,7 +75,8 @@
             bool swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2);
             void changeWeaponmode(WeaponPack * wPack, WeaponSet * wSet, unsigned int weaponmode);
 
-            void fire(unsigned int firemode);
+            void push(unsigned int firemode);
+            void release(unsigned int firemode);
             void reload();
 
             Munition * getMunition(SubclassIdentifier<Munition> * identifier);

Modified: code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -48,7 +48,7 @@
 {
     RegisterClass(ControllableEntity);
 
-    registerMemberNetworkFunction( ControllableEntity, fire );
+    registerMemberNetworkFunction( ControllableEntity, push );
     registerMemberNetworkFunction( ControllableEntity, setTargetInternal );
 
     ControllableEntity::ControllableEntity(Context* context) : MobileEntity(context)
@@ -298,18 +298,30 @@
             this->cameraPositionRootNode_->roll(Radian(value.y * this->mouseLookSpeed_), Ogre::Node::TS_LOCAL);
     }
 
-    void ControllableEntity::fire(unsigned int firemode)
+    void ControllableEntity::push(unsigned int firemode)
     {
         if(GameMode::isMaster())
         {
-            this->fired(firemode);
+            this->pushed(firemode);
         }
         else
         {
-            callMemberNetworkFunction(&ControllableEntity::fire, this->getObjectID(), 0, firemode);
+            callMemberNetworkFunction(&ControllableEntity::push, this->getObjectID(), 0, firemode);
         }
     }
 
+    void ControllableEntity::release(unsigned int firemode)
+    {
+        if(GameMode::isMaster())
+        {
+            this->released(firemode);
+        }
+        else
+        {
+            callMemberNetworkFunction(&ControllableEntity::release, this->getObjectID(), 0, firemode);
+        }
+    }
+
     void ControllableEntity::setController(Controller* val)
     {
         this->controller_ = val;

Modified: code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/ControllableEntity.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -95,8 +95,10 @@
             inline void rotateRoll(float value)
                 { this->rotateRoll(Vector2(value, 0)); }
 
-            void fire(unsigned int firemode);
-            virtual void fired(unsigned int firemode) {}
+            void push(unsigned int firemode);
+            void release(unsigned int firemode);
+            virtual void pushed(unsigned int firemode) {}
+            virtual void released(unsigned int firemode) {}
             virtual void reload() {}
 
             /**

Modified: code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -431,12 +431,18 @@
         Check whether the Pawn has a @ref orxonox::WeaponSystem and fire it with the specified firemode if it has one.
     */
 
-    void Pawn::fired(unsigned int firemode)
+    void Pawn::pushed(unsigned int firemode)
     {
         if (this->weaponSystem_)
-            this->weaponSystem_->fire(firemode);
+            this->weaponSystem_->push(firemode);
     }
 
+    void Pawn::released(unsigned int firemode)
+    {
+        if (this->weaponSystem_)
+            this->weaponSystem_->release(firemode);
+    }
+
     void Pawn::postSpawn()
     {
         this->setHealth(this->initialHealth_);

Modified: code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/pawns/Pawn.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -156,7 +156,8 @@
 
             virtual void kill();
 
-            virtual void fired(unsigned int firemode) override;
+            virtual void pushed(unsigned int firemode) override;
+            virtual void released(unsigned int firemode) override;
             virtual void postSpawn();
 
             void addExplosionPart(ExplosionPart* ePart);

Modified: code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.cc
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.cc	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.cc	2016-05-26 14:53:34 UTC (rev 11208)
@@ -41,7 +41,7 @@
 
 namespace orxonox
 {
-    extern const std::string __CC_fire_name;
+    extern const std::string __CC_push_name;
     extern const std::string __CC_suicide_name;
 
     RegisterClass(Spectator);
@@ -161,7 +161,7 @@
         ControllableEntity::startLocalHumanControl();
 
         // change keybind mode of fire command to OnPress to avoid firing after respawn
-        ModifyConsoleCommand(__CC_fire_name).keybindMode(KeybindMode::OnPress);
+        ModifyConsoleCommand(__CC_push_name).keybindMode(KeybindMode::OnPress);
 
         // disable suicide
         ModifyConsoleCommand(__CC_suicide_name).pushFunction(&prototype::void__void);
@@ -176,7 +176,7 @@
 
         // change fire command to a helper function and change keybind mode to OnPress
         // as soon as the player releases and presses the button again, the helper function will be called which changes the keybind mode back to OnHold
-        ModifyConsoleCommand(__CC_fire_name).pushFunction(&Spectator::resetFireCommand).keybindMode(KeybindMode::OnPress);
+        ModifyConsoleCommand(__CC_push_name).pushFunction(&Spectator::resetFireCommand).keybindMode(KeybindMode::OnPress);
 
         // enable suicide
         ModifyConsoleCommand(__CC_suicide_name).popFunction();
@@ -187,9 +187,9 @@
     */
     void Spectator::resetFireCommand(unsigned int firemode)
     {
-        ModifyConsoleCommand(__CC_fire_name).popFunction().keybindMode(KeybindMode::OnHold); // pop this helper function and change keybind mode
+        ModifyConsoleCommand(__CC_push_name).popFunction().keybindMode(KeybindMode::OnHold); // pop this helper function and change keybind mode
 
-        CommandExecutor::execute(__CC_fire_name + " " + multi_cast<std::string>(firemode)); // call the fire command again, this time with the real function
+        CommandExecutor::execute(__CC_push_name + " " + multi_cast<std::string>(firemode)); // call the fire command again, this time with the real function
     }
 
     void Spectator::moveFrontBack(const Vector2& value)
@@ -228,7 +228,7 @@
         ControllableEntity::rotateRoll(value);
     }
 
-    void Spectator::fired(unsigned int firemode)
+    void Spectator::pushed(unsigned int firemode)
     {
         if (this->getPlayer())
             this->getPlayer()->setReadyToSpawn(true);

Modified: code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.h
===================================================================
--- code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.h	2016-05-26 14:38:51 UTC (rev 11207)
+++ code/branches/presentationFS16/src/orxonox/worldentities/pawns/Spectator.h	2016-05-26 14:53:34 UTC (rev 11208)
@@ -53,7 +53,7 @@
             virtual void rotatePitch(const Vector2& value);
             virtual void rotateRoll(const Vector2& value);
 
-            virtual void fired(unsigned int firemode);
+            virtual void pushed(unsigned int firemode);
             virtual void greet();
             virtual void mouseLook() {}
 




More information about the Orxonox-commit mailing list