diff --git a/S-300/Dialogs/control-panel.xml b/S-300/Dialogs/control-panel.xml new file mode 100644 index 0000000..e6a5f9e --- /dev/null +++ b/S-300/Dialogs/control-panel.xml @@ -0,0 +1,330 @@ + + + + + + + control-panel + vbox + 250 + false + + + hbox + + true + + + + true + + + + + + + + vbox + 6 + + + + + + table + + + + 0 + 1 + + + + + + + + + + 2 + 1 + + + + + + + + + + 4 + 0 + + + + + 4 + 1 + + + + + + + + + + + + + + + + + vbox + 6 + + + + + + vbox + + + left + + /controls/lighting/deck-lights + true + + dialog-apply + + + property-toggle + + + + + left + + /carrier/antennas/enabled + true + + dialog-apply + + + property-toggle + + + + + + + + + vbox + 6 + + + + + + vbox + + + left + + /carrier/fdm/settings/movement + true + + dialog-apply + + + property-toggle + + + + + left + + /carrier/phalanx/settings/show-debug-aim + true + + dialog-apply + + + property-toggle + + + + + + + + + hbox + 6 + + true + + + + + diff --git a/S-300/Dialogs/menu.xml b/S-300/Dialogs/menu.xml new file mode 100644 index 0000000..a34d397 --- /dev/null +++ b/S-300/Dialogs/menu.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + true + + + + + dialog-show + control-panel + + + + + + + diff --git a/S-300/Hud/hud.xml b/S-300/Hud/hud.xml new file mode 100644 index 0000000..c7f64b9 --- /dev/null +++ b/S-300/Hud/hud.xml @@ -0,0 +1,571 @@ + + + + + Vinson HUD + + false + + + + + Ladder + pitch + -60 + -90 + 120 + 180 + + + + /sim/current-view/name + Approach View + + + + + /orientation/roll-deg + -1.0 + + + + /orientation/pitch-deg + -1.0 + + + 30 + 8 + 1.0 + 100 + 0 + 0.0 + false + false + true + false + false + false + false + false + false + false + false + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/S-300/Models/fire.png b/S-300/Models/fire.png new file mode 100644 index 0000000..db05bc3 Binary files /dev/null and b/S-300/Models/fire.png differ diff --git a/S-300/Models/fire.xml b/S-300/Models/fire.xml new file mode 100644 index 0000000..00cecb3 --- /dev/null +++ b/S-300/Models/fire.xml @@ -0,0 +1,87 @@ + + + + + + fire.png + + + sim/multiplay/generic/int[0] + 1 + + + true + false + + 0 + + world + + point + + + 80 + 30 + -180 + 180 + + 20 + 40 + + + + + 40 + 60 + + + billboard + + + + + 0.6 + + + 0.6 + + + 0.6 + + + 0.4 + + + + 1.2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 4.0 + + + + 3 + + 1.3 + 0.03 + + + + + diff --git a/S-300/Models/s-300.ac b/S-300/Models/s-300.ac new file mode 100644 index 0000000..5344ead --- /dev/null +++ b/S-300/Models/s-300.ac @@ -0,0 +1,1585 @@ +AC3Db +MATERIAL "Material" rgb 0.268 0.640 0.042 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000 +OBJECT world +name "Blender_exporter_v2.26__s-300.ac" +kids 6 +OBJECT poly +name "Cube" +data 4 +Cube +crease 40.0 +numvert 8 +0.74234 0.04204 0.92056 +0.74234 2.04204 0.92056 +0.74234 0.04204 -2.47523 +0.74234 2.04204 -2.47523 +11.8343 0.04204 0.92056 +11.8343 2.04204 0.92056 +11.8343 0.04204 -2.47523 +11.8343 2.04204 -2.47523 +numsurf 6 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +6 0 0 +4 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 4 +7 0 0 +3 0 0 +1 0 0 +5 0 0 +kids 0 +OBJECT poly +name "Cube.001" +data 8 +Cube.001 +crease 40.0 +numvert 8 +10.02034 1.91351 0.86595 +10.02034 3.41472 0.86595 +10.02034 1.91351 -2.41709 +10.02034 3.41472 -2.41709 +11.80262 1.91351 0.86595 +11.80262 3.41472 0.86595 +11.80262 1.91351 -2.41709 +11.80262 3.41472 -2.41709 +numsurf 6 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +6 0 0 +4 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 4 +7 0 0 +3 0 0 +1 0 0 +5 0 0 +kids 0 +OBJECT poly +name "Cylinder" +data 8 +Cylinder +crease 40.0 +numvert 64 +0 0 -0.6 +0 11 -0.6 +0.11705 0 -0.58847 +0.11705 11 -0.58847 +0.22961 0 -0.55433 +0.22961 11 -0.55433 +0.33334 0 -0.49888 +0.33334 11 -0.49888 +0.42426 0 -0.42426 +0.42426 11 -0.42426 +0.49888 0 -0.33334 +0.49888 11 -0.33334 +0.55433 0 -0.22961 +0.55433 11 -0.22961 +0.58847 0 -0.11705 +0.58847 11 -0.11705 +0.6 0 -0 +0.6 11 -0 +0.58847 0 0.11705 +0.58847 11 0.11705 +0.55433 0 0.22961 +0.55433 11 0.22961 +0.49888 0 0.33334 +0.49888 11 0.33334 +0.42426 0 0.42426 +0.42426 11 0.42426 +0.33334 0 0.49888 +0.33334 11 0.49888 +0.22961 0 0.55433 +0.22961 11 0.55433 +0.11705 0 0.58847 +0.11705 11 0.58847 +-0 0 0.6 +-0 11 0.6 +-0.11705 0 0.58847 +-0.11705 11 0.58847 +-0.22961 0 0.55433 +-0.22961 11 0.55433 +-0.33334 0 0.49888 +-0.33334 11 0.49888 +-0.42426 0 0.42426 +-0.42426 11 0.42426 +-0.49888 0 0.33334 +-0.49888 11 0.33334 +-0.55433 0 0.22961 +-0.55433 11 0.22961 +-0.58847 0 0.11705 +-0.58847 11 0.11705 +-0.6 0 -0 +-0.6 11 -0 +-0.58847 0 -0.11705 +-0.58847 11 -0.11705 +-0.55433 0 -0.22961 +-0.55433 11 -0.22961 +-0.49888 0 -0.33334 +-0.49888 11 -0.33334 +-0.42426 0 -0.42426 +-0.42426 11 -0.42426 +-0.33334 0 -0.49888 +-0.33334 11 -0.49888 +-0.22961 0 -0.55433 +-0.22961 11 -0.55433 +-0.11705 0 -0.58847 +-0.11705 11 -0.58847 +numsurf 34 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +9 0 0 +8 0 0 +SURF 0X0 +mat 0 +refs 4 +8 0 0 +9 0 0 +11 0 0 +10 0 0 +SURF 0X0 +mat 0 +refs 4 +10 0 0 +11 0 0 +13 0 0 +12 0 0 +SURF 0X0 +mat 0 +refs 4 +12 0 0 +13 0 0 +15 0 0 +14 0 0 +SURF 0X0 +mat 0 +refs 4 +14 0 0 +15 0 0 +17 0 0 +16 0 0 +SURF 0X0 +mat 0 +refs 4 +16 0 0 +17 0 0 +19 0 0 +18 0 0 +SURF 0X0 +mat 0 +refs 4 +18 0 0 +19 0 0 +21 0 0 +20 0 0 +SURF 0X0 +mat 0 +refs 4 +20 0 0 +21 0 0 +23 0 0 +22 0 0 +SURF 0X0 +mat 0 +refs 4 +22 0 0 +23 0 0 +25 0 0 +24 0 0 +SURF 0X0 +mat 0 +refs 4 +24 0 0 +25 0 0 +27 0 0 +26 0 0 +SURF 0X0 +mat 0 +refs 4 +26 0 0 +27 0 0 +29 0 0 +28 0 0 +SURF 0X0 +mat 0 +refs 4 +28 0 0 +29 0 0 +31 0 0 +30 0 0 +SURF 0X0 +mat 0 +refs 4 +30 0 0 +31 0 0 +33 0 0 +32 0 0 +SURF 0X0 +mat 0 +refs 4 +32 0 0 +33 0 0 +35 0 0 +34 0 0 +SURF 0X0 +mat 0 +refs 4 +34 0 0 +35 0 0 +37 0 0 +36 0 0 +SURF 0X0 +mat 0 +refs 4 +36 0 0 +37 0 0 +39 0 0 +38 0 0 +SURF 0X0 +mat 0 +refs 4 +38 0 0 +39 0 0 +41 0 0 +40 0 0 +SURF 0X0 +mat 0 +refs 4 +40 0 0 +41 0 0 +43 0 0 +42 0 0 +SURF 0X0 +mat 0 +refs 4 +42 0 0 +43 0 0 +45 0 0 +44 0 0 +SURF 0X0 +mat 0 +refs 4 +44 0 0 +45 0 0 +47 0 0 +46 0 0 +SURF 0X0 +mat 0 +refs 4 +46 0 0 +47 0 0 +49 0 0 +48 0 0 +SURF 0X0 +mat 0 +refs 4 +48 0 0 +49 0 0 +51 0 0 +50 0 0 +SURF 0X0 +mat 0 +refs 4 +50 0 0 +51 0 0 +53 0 0 +52 0 0 +SURF 0X0 +mat 0 +refs 4 +52 0 0 +53 0 0 +55 0 0 +54 0 0 +SURF 0X0 +mat 0 +refs 4 +54 0 0 +55 0 0 +57 0 0 +56 0 0 +SURF 0X0 +mat 0 +refs 4 +56 0 0 +57 0 0 +59 0 0 +58 0 0 +SURF 0X0 +mat 0 +refs 4 +58 0 0 +59 0 0 +61 0 0 +60 0 0 +SURF 0X0 +mat 0 +refs 32 +3 0 0 +1 0 0 +63 0 0 +61 0 0 +59 0 0 +57 0 0 +55 0 0 +53 0 0 +51 0 0 +49 0 0 +47 0 0 +45 0 0 +43 0 0 +41 0 0 +39 0 0 +37 0 0 +35 0 0 +33 0 0 +31 0 0 +29 0 0 +27 0 0 +25 0 0 +23 0 0 +21 0 0 +19 0 0 +17 0 0 +15 0 0 +13 0 0 +11 0 0 +9 0 0 +7 0 0 +5 0 0 +SURF 0X0 +mat 0 +refs 4 +60 0 0 +61 0 0 +63 0 0 +62 0 0 +SURF 0X0 +mat 0 +refs 4 +62 0 0 +63 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 32 +0 0 0 +2 0 0 +4 0 0 +6 0 0 +8 0 0 +10 0 0 +12 0 0 +14 0 0 +16 0 0 +18 0 0 +20 0 0 +22 0 0 +24 0 0 +26 0 0 +28 0 0 +30 0 0 +32 0 0 +34 0 0 +36 0 0 +38 0 0 +40 0 0 +42 0 0 +44 0 0 +46 0 0 +48 0 0 +50 0 0 +52 0 0 +54 0 0 +56 0 0 +58 0 0 +60 0 0 +62 0 0 +kids 0 +OBJECT poly +name "Cylinder.001" +data 12 +Cylinder.001 +crease 40.0 +numvert 64 +0 0 -2.05918 +0 11 -2.05918 +0.11705 0 -2.04765 +0.11705 11 -2.04765 +0.22961 0 -2.01351 +0.22961 11 -2.01351 +0.33334 0 -1.95806 +0.33334 11 -1.95806 +0.42426 0 -1.88344 +0.42426 11 -1.88344 +0.49888 0 -1.79252 +0.49888 11 -1.79252 +0.55433 0 -1.68879 +0.55433 11 -1.68879 +0.58847 0 -1.57623 +0.58847 11 -1.57623 +0.6 0 -1.45918 +0.6 11 -1.45918 +0.58847 0 -1.34212 +0.58847 11 -1.34212 +0.55433 0 -1.22957 +0.55433 11 -1.22957 +0.49888 0 -1.12584 +0.49888 11 -1.12584 +0.42426 0 -1.03491 +0.42426 11 -1.03491 +0.33334 0 -0.9603 +0.33334 11 -0.9603 +0.22961 0 -0.90485 +0.22961 11 -0.90485 +0.11705 0 -0.87071 +0.11705 11 -0.87071 +-0 0 -0.85918 +-0 11 -0.85918 +-0.11705 0 -0.87071 +-0.11705 11 -0.87071 +-0.22961 0 -0.90485 +-0.22961 11 -0.90485 +-0.33334 0 -0.9603 +-0.33334 11 -0.9603 +-0.42426 0 -1.03491 +-0.42426 11 -1.03491 +-0.49888 0 -1.12584 +-0.49888 11 -1.12584 +-0.55433 0 -1.22957 +-0.55433 11 -1.22957 +-0.58847 0 -1.34212 +-0.58847 11 -1.34212 +-0.6 0 -1.45918 +-0.6 11 -1.45918 +-0.58847 0 -1.57623 +-0.58847 11 -1.57623 +-0.55433 0 -1.68879 +-0.55433 11 -1.68879 +-0.49888 0 -1.79252 +-0.49888 11 -1.79252 +-0.42426 0 -1.88344 +-0.42426 11 -1.88344 +-0.33334 0 -1.95806 +-0.33334 11 -1.95806 +-0.22961 0 -2.01351 +-0.22961 11 -2.01351 +-0.11705 0 -2.04765 +-0.11705 11 -2.04765 +numsurf 34 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +9 0 0 +8 0 0 +SURF 0X0 +mat 0 +refs 4 +8 0 0 +9 0 0 +11 0 0 +10 0 0 +SURF 0X0 +mat 0 +refs 4 +10 0 0 +11 0 0 +13 0 0 +12 0 0 +SURF 0X0 +mat 0 +refs 4 +12 0 0 +13 0 0 +15 0 0 +14 0 0 +SURF 0X0 +mat 0 +refs 4 +14 0 0 +15 0 0 +17 0 0 +16 0 0 +SURF 0X0 +mat 0 +refs 4 +16 0 0 +17 0 0 +19 0 0 +18 0 0 +SURF 0X0 +mat 0 +refs 4 +18 0 0 +19 0 0 +21 0 0 +20 0 0 +SURF 0X0 +mat 0 +refs 4 +20 0 0 +21 0 0 +23 0 0 +22 0 0 +SURF 0X0 +mat 0 +refs 4 +22 0 0 +23 0 0 +25 0 0 +24 0 0 +SURF 0X0 +mat 0 +refs 4 +24 0 0 +25 0 0 +27 0 0 +26 0 0 +SURF 0X0 +mat 0 +refs 4 +26 0 0 +27 0 0 +29 0 0 +28 0 0 +SURF 0X0 +mat 0 +refs 4 +28 0 0 +29 0 0 +31 0 0 +30 0 0 +SURF 0X0 +mat 0 +refs 4 +30 0 0 +31 0 0 +33 0 0 +32 0 0 +SURF 0X0 +mat 0 +refs 4 +32 0 0 +33 0 0 +35 0 0 +34 0 0 +SURF 0X0 +mat 0 +refs 4 +34 0 0 +35 0 0 +37 0 0 +36 0 0 +SURF 0X0 +mat 0 +refs 4 +36 0 0 +37 0 0 +39 0 0 +38 0 0 +SURF 0X0 +mat 0 +refs 4 +38 0 0 +39 0 0 +41 0 0 +40 0 0 +SURF 0X0 +mat 0 +refs 4 +40 0 0 +41 0 0 +43 0 0 +42 0 0 +SURF 0X0 +mat 0 +refs 4 +42 0 0 +43 0 0 +45 0 0 +44 0 0 +SURF 0X0 +mat 0 +refs 4 +44 0 0 +45 0 0 +47 0 0 +46 0 0 +SURF 0X0 +mat 0 +refs 4 +46 0 0 +47 0 0 +49 0 0 +48 0 0 +SURF 0X0 +mat 0 +refs 4 +48 0 0 +49 0 0 +51 0 0 +50 0 0 +SURF 0X0 +mat 0 +refs 4 +50 0 0 +51 0 0 +53 0 0 +52 0 0 +SURF 0X0 +mat 0 +refs 4 +52 0 0 +53 0 0 +55 0 0 +54 0 0 +SURF 0X0 +mat 0 +refs 4 +54 0 0 +55 0 0 +57 0 0 +56 0 0 +SURF 0X0 +mat 0 +refs 4 +56 0 0 +57 0 0 +59 0 0 +58 0 0 +SURF 0X0 +mat 0 +refs 4 +58 0 0 +59 0 0 +61 0 0 +60 0 0 +SURF 0X0 +mat 0 +refs 32 +3 0 0 +1 0 0 +63 0 0 +61 0 0 +59 0 0 +57 0 0 +55 0 0 +53 0 0 +51 0 0 +49 0 0 +47 0 0 +45 0 0 +43 0 0 +41 0 0 +39 0 0 +37 0 0 +35 0 0 +33 0 0 +31 0 0 +29 0 0 +27 0 0 +25 0 0 +23 0 0 +21 0 0 +19 0 0 +17 0 0 +15 0 0 +13 0 0 +11 0 0 +9 0 0 +7 0 0 +5 0 0 +SURF 0X0 +mat 0 +refs 4 +60 0 0 +61 0 0 +63 0 0 +62 0 0 +SURF 0X0 +mat 0 +refs 4 +62 0 0 +63 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 32 +0 0 0 +2 0 0 +4 0 0 +6 0 0 +8 0 0 +10 0 0 +12 0 0 +14 0 0 +16 0 0 +18 0 0 +20 0 0 +22 0 0 +24 0 0 +26 0 0 +28 0 0 +30 0 0 +32 0 0 +34 0 0 +36 0 0 +38 0 0 +40 0 0 +42 0 0 +44 0 0 +46 0 0 +48 0 0 +50 0 0 +52 0 0 +54 0 0 +56 0 0 +58 0 0 +60 0 0 +62 0 0 +kids 0 +OBJECT poly +name "Cylinder.002" +data 12 +Cylinder.002 +crease 40.0 +numvert 64 +-1.31958 0 -0.6 +-1.31958 11 -0.6 +-1.20252 0 -0.58847 +-1.20252 11 -0.58847 +-1.08997 0 -0.55433 +-1.08997 11 -0.55433 +-0.98624 0 -0.49888 +-0.98624 11 -0.49888 +-0.89531 0 -0.42426 +-0.89531 11 -0.42426 +-0.8207 0 -0.33334 +-0.8207 11 -0.33334 +-0.76525 0 -0.22961 +-0.76525 11 -0.22961 +-0.73111 0 -0.11705 +-0.73111 11 -0.11705 +-0.71958 0 -0 +-0.71958 11 -0 +-0.73111 0 0.11705 +-0.73111 11 0.11705 +-0.76525 0 0.22961 +-0.76525 11 0.22961 +-0.8207 0 0.33334 +-0.8207 11 0.33334 +-0.89531 0 0.42426 +-0.89531 11 0.42426 +-0.98624 0 0.49888 +-0.98624 11 0.49888 +-1.08997 0 0.55433 +-1.08997 11 0.55433 +-1.20252 0 0.58847 +-1.20252 11 0.58847 +-1.31958 0 0.6 +-1.31958 11 0.6 +-1.43663 0 0.58847 +-1.43663 11 0.58847 +-1.54919 0 0.55433 +-1.54919 11 0.55433 +-1.65292 0 0.49888 +-1.65292 11 0.49888 +-1.74384 0 0.42426 +-1.74384 11 0.42426 +-1.81846 0 0.33334 +-1.81846 11 0.33334 +-1.87391 0 0.22961 +-1.87391 11 0.22961 +-1.90805 0 0.11705 +-1.90805 11 0.11705 +-1.91958 0 -0 +-1.91958 11 -0 +-1.90805 0 -0.11705 +-1.90805 11 -0.11705 +-1.8739 0 -0.22961 +-1.8739 11 -0.22961 +-1.81846 0 -0.33334 +-1.81846 11 -0.33334 +-1.74384 0 -0.42426 +-1.74384 11 -0.42426 +-1.65292 0 -0.49888 +-1.65292 11 -0.49888 +-1.54919 0 -0.55433 +-1.54919 11 -0.55433 +-1.43663 0 -0.58847 +-1.43663 11 -0.58847 +numsurf 34 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +9 0 0 +8 0 0 +SURF 0X0 +mat 0 +refs 4 +8 0 0 +9 0 0 +11 0 0 +10 0 0 +SURF 0X0 +mat 0 +refs 4 +10 0 0 +11 0 0 +13 0 0 +12 0 0 +SURF 0X0 +mat 0 +refs 4 +12 0 0 +13 0 0 +15 0 0 +14 0 0 +SURF 0X0 +mat 0 +refs 4 +14 0 0 +15 0 0 +17 0 0 +16 0 0 +SURF 0X0 +mat 0 +refs 4 +16 0 0 +17 0 0 +19 0 0 +18 0 0 +SURF 0X0 +mat 0 +refs 4 +18 0 0 +19 0 0 +21 0 0 +20 0 0 +SURF 0X0 +mat 0 +refs 4 +20 0 0 +21 0 0 +23 0 0 +22 0 0 +SURF 0X0 +mat 0 +refs 4 +22 0 0 +23 0 0 +25 0 0 +24 0 0 +SURF 0X0 +mat 0 +refs 4 +24 0 0 +25 0 0 +27 0 0 +26 0 0 +SURF 0X0 +mat 0 +refs 4 +26 0 0 +27 0 0 +29 0 0 +28 0 0 +SURF 0X0 +mat 0 +refs 4 +28 0 0 +29 0 0 +31 0 0 +30 0 0 +SURF 0X0 +mat 0 +refs 4 +30 0 0 +31 0 0 +33 0 0 +32 0 0 +SURF 0X0 +mat 0 +refs 4 +32 0 0 +33 0 0 +35 0 0 +34 0 0 +SURF 0X0 +mat 0 +refs 4 +34 0 0 +35 0 0 +37 0 0 +36 0 0 +SURF 0X0 +mat 0 +refs 4 +36 0 0 +37 0 0 +39 0 0 +38 0 0 +SURF 0X0 +mat 0 +refs 4 +38 0 0 +39 0 0 +41 0 0 +40 0 0 +SURF 0X0 +mat 0 +refs 4 +40 0 0 +41 0 0 +43 0 0 +42 0 0 +SURF 0X0 +mat 0 +refs 4 +42 0 0 +43 0 0 +45 0 0 +44 0 0 +SURF 0X0 +mat 0 +refs 4 +44 0 0 +45 0 0 +47 0 0 +46 0 0 +SURF 0X0 +mat 0 +refs 4 +46 0 0 +47 0 0 +49 0 0 +48 0 0 +SURF 0X0 +mat 0 +refs 4 +48 0 0 +49 0 0 +51 0 0 +50 0 0 +SURF 0X0 +mat 0 +refs 4 +50 0 0 +51 0 0 +53 0 0 +52 0 0 +SURF 0X0 +mat 0 +refs 4 +52 0 0 +53 0 0 +55 0 0 +54 0 0 +SURF 0X0 +mat 0 +refs 4 +54 0 0 +55 0 0 +57 0 0 +56 0 0 +SURF 0X0 +mat 0 +refs 4 +56 0 0 +57 0 0 +59 0 0 +58 0 0 +SURF 0X0 +mat 0 +refs 4 +58 0 0 +59 0 0 +61 0 0 +60 0 0 +SURF 0X0 +mat 0 +refs 32 +3 0 0 +1 0 0 +63 0 0 +61 0 0 +59 0 0 +57 0 0 +55 0 0 +53 0 0 +51 0 0 +49 0 0 +47 0 0 +45 0 0 +43 0 0 +41 0 0 +39 0 0 +37 0 0 +35 0 0 +33 0 0 +31 0 0 +29 0 0 +27 0 0 +25 0 0 +23 0 0 +21 0 0 +19 0 0 +17 0 0 +15 0 0 +13 0 0 +11 0 0 +9 0 0 +7 0 0 +5 0 0 +SURF 0X0 +mat 0 +refs 4 +60 0 0 +61 0 0 +63 0 0 +62 0 0 +SURF 0X0 +mat 0 +refs 4 +62 0 0 +63 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 32 +0 0 0 +2 0 0 +4 0 0 +6 0 0 +8 0 0 +10 0 0 +12 0 0 +14 0 0 +16 0 0 +18 0 0 +20 0 0 +22 0 0 +24 0 0 +26 0 0 +28 0 0 +30 0 0 +32 0 0 +34 0 0 +36 0 0 +38 0 0 +40 0 0 +42 0 0 +44 0 0 +46 0 0 +48 0 0 +50 0 0 +52 0 0 +54 0 0 +56 0 0 +58 0 0 +60 0 0 +62 0 0 +kids 0 +OBJECT poly +name "Cylinder.003" +data 12 +Cylinder.003 +crease 40.0 +numvert 64 +-1.32545 0 -2.05025 +-1.32545 11 -2.05025 +-1.20839 0 -2.03872 +-1.20839 11 -2.03872 +-1.09584 0 -2.00458 +-1.09584 11 -2.00458 +-0.99211 0 -1.94913 +-0.99211 11 -1.94913 +-0.90119 0 -1.87451 +-0.90119 11 -1.87451 +-0.82657 0 -1.78359 +-0.82657 11 -1.78359 +-0.77112 0 -1.67986 +-0.77112 11 -1.67986 +-0.73698 0 -1.5673 +-0.73698 11 -1.5673 +-0.72545 0 -1.45025 +-0.72545 11 -1.45025 +-0.73698 0 -1.3332 +-0.73698 11 -1.3332 +-0.77112 0 -1.22064 +-0.77112 11 -1.22064 +-0.82657 0 -1.11691 +-0.82657 11 -1.11691 +-0.90119 0 -1.02599 +-0.90119 11 -1.02599 +-0.99211 0 -0.95137 +-0.99211 11 -0.95137 +-1.09584 0 -0.89592 +-1.09584 11 -0.89592 +-1.2084 0 -0.86178 +-1.2084 11 -0.86178 +-1.32545 0 -0.85025 +-1.32545 11 -0.85025 +-1.4425 0 -0.86178 +-1.4425 11 -0.86178 +-1.55506 0 -0.89592 +-1.55506 11 -0.89592 +-1.65879 0 -0.95137 +-1.65879 11 -0.95137 +-1.74971 0 -1.02599 +-1.74971 11 -1.02599 +-1.82433 0 -1.11691 +-1.82433 11 -1.11691 +-1.87978 0 -1.22064 +-1.87978 11 -1.22064 +-1.91392 0 -1.3332 +-1.91392 11 -1.3332 +-1.92545 0 -1.45025 +-1.92545 11 -1.45025 +-1.91392 0 -1.5673 +-1.91392 11 -1.5673 +-1.87978 0 -1.67986 +-1.87978 11 -1.67986 +-1.82433 0 -1.78359 +-1.82433 11 -1.78359 +-1.74971 0 -1.87451 +-1.74971 11 -1.87451 +-1.65879 0 -1.94913 +-1.65879 11 -1.94913 +-1.55506 0 -2.00458 +-1.55506 11 -2.00458 +-1.4425 0 -2.03872 +-1.4425 11 -2.03872 +numsurf 34 +SURF 0X0 +mat 0 +refs 4 +0 0 0 +1 0 0 +3 0 0 +2 0 0 +SURF 0X0 +mat 0 +refs 4 +2 0 0 +3 0 0 +5 0 0 +4 0 0 +SURF 0X0 +mat 0 +refs 4 +4 0 0 +5 0 0 +7 0 0 +6 0 0 +SURF 0X0 +mat 0 +refs 4 +6 0 0 +7 0 0 +9 0 0 +8 0 0 +SURF 0X0 +mat 0 +refs 4 +8 0 0 +9 0 0 +11 0 0 +10 0 0 +SURF 0X0 +mat 0 +refs 4 +10 0 0 +11 0 0 +13 0 0 +12 0 0 +SURF 0X0 +mat 0 +refs 4 +12 0 0 +13 0 0 +15 0 0 +14 0 0 +SURF 0X0 +mat 0 +refs 4 +14 0 0 +15 0 0 +17 0 0 +16 0 0 +SURF 0X0 +mat 0 +refs 4 +16 0 0 +17 0 0 +19 0 0 +18 0 0 +SURF 0X0 +mat 0 +refs 4 +18 0 0 +19 0 0 +21 0 0 +20 0 0 +SURF 0X0 +mat 0 +refs 4 +20 0 0 +21 0 0 +23 0 0 +22 0 0 +SURF 0X0 +mat 0 +refs 4 +22 0 0 +23 0 0 +25 0 0 +24 0 0 +SURF 0X0 +mat 0 +refs 4 +24 0 0 +25 0 0 +27 0 0 +26 0 0 +SURF 0X0 +mat 0 +refs 4 +26 0 0 +27 0 0 +29 0 0 +28 0 0 +SURF 0X0 +mat 0 +refs 4 +28 0 0 +29 0 0 +31 0 0 +30 0 0 +SURF 0X0 +mat 0 +refs 4 +30 0 0 +31 0 0 +33 0 0 +32 0 0 +SURF 0X0 +mat 0 +refs 4 +32 0 0 +33 0 0 +35 0 0 +34 0 0 +SURF 0X0 +mat 0 +refs 4 +34 0 0 +35 0 0 +37 0 0 +36 0 0 +SURF 0X0 +mat 0 +refs 4 +36 0 0 +37 0 0 +39 0 0 +38 0 0 +SURF 0X0 +mat 0 +refs 4 +38 0 0 +39 0 0 +41 0 0 +40 0 0 +SURF 0X0 +mat 0 +refs 4 +40 0 0 +41 0 0 +43 0 0 +42 0 0 +SURF 0X0 +mat 0 +refs 4 +42 0 0 +43 0 0 +45 0 0 +44 0 0 +SURF 0X0 +mat 0 +refs 4 +44 0 0 +45 0 0 +47 0 0 +46 0 0 +SURF 0X0 +mat 0 +refs 4 +46 0 0 +47 0 0 +49 0 0 +48 0 0 +SURF 0X0 +mat 0 +refs 4 +48 0 0 +49 0 0 +51 0 0 +50 0 0 +SURF 0X0 +mat 0 +refs 4 +50 0 0 +51 0 0 +53 0 0 +52 0 0 +SURF 0X0 +mat 0 +refs 4 +52 0 0 +53 0 0 +55 0 0 +54 0 0 +SURF 0X0 +mat 0 +refs 4 +54 0 0 +55 0 0 +57 0 0 +56 0 0 +SURF 0X0 +mat 0 +refs 4 +56 0 0 +57 0 0 +59 0 0 +58 0 0 +SURF 0X0 +mat 0 +refs 4 +58 0 0 +59 0 0 +61 0 0 +60 0 0 +SURF 0X0 +mat 0 +refs 32 +3 0 0 +1 0 0 +63 0 0 +61 0 0 +59 0 0 +57 0 0 +55 0 0 +53 0 0 +51 0 0 +49 0 0 +47 0 0 +45 0 0 +43 0 0 +41 0 0 +39 0 0 +37 0 0 +35 0 0 +33 0 0 +31 0 0 +29 0 0 +27 0 0 +25 0 0 +23 0 0 +21 0 0 +19 0 0 +17 0 0 +15 0 0 +13 0 0 +11 0 0 +9 0 0 +7 0 0 +5 0 0 +SURF 0X0 +mat 0 +refs 4 +60 0 0 +61 0 0 +63 0 0 +62 0 0 +SURF 0X0 +mat 0 +refs 4 +62 0 0 +63 0 0 +1 0 0 +0 0 0 +SURF 0X0 +mat 0 +refs 32 +0 0 0 +2 0 0 +4 0 0 +6 0 0 +8 0 0 +10 0 0 +12 0 0 +14 0 0 +16 0 0 +18 0 0 +20 0 0 +22 0 0 +24 0 0 +26 0 0 +28 0 0 +30 0 0 +32 0 0 +34 0 0 +36 0 0 +38 0 0 +40 0 0 +42 0 0 +44 0 0 +46 0 0 +48 0 0 +50 0 0 +52 0 0 +54 0 0 +56 0 0 +58 0 0 +60 0 0 +62 0 0 +kids 0 diff --git a/S-300/Models/s-300.xml b/S-300/Models/s-300.xml new file mode 100644 index 0000000..71f63d4 --- /dev/null +++ b/S-300/Models/s-300.xml @@ -0,0 +1,299 @@ + + + + + s-300.ac + + + select + missile1 + + + active + 1 + + + + + + select + missile2 + + + active + 2 + + + + + + select + missile3 + + + active + 3 + + + + + + select + missile4 + + + active + 4 + + + + + + Aircraft/S-300/Models/smoke.xml + + 3.26307 + -0.84611 + 2.85616 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + 3.26307 + -0.84611 + 2.85616 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + 3.26307 + 0.84611 + 2.85616 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + 3.26307 + 0.84611 + 2.85616 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -0.80986 + 0.00064 + 3.24007 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -0.80986 + 0.00064 + 3.24007 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -3.97300 + 0.00023 + 1.83017 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -3.97300 + 0.00023 + 1.83017 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -4.26653 + -1.82402 + 1.44961 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -4.26653 + -1.82402 + 1.44961 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -4.26653 + 1.82402 + 1.44961 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -4.26653 + 1.82402 + 1.44961 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -0.63979 + -2.14385 + 0.05906 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -0.63979 + -2.14385 + 0.05906 + 0 + + + + + Aircraft/S-300/Models/smoke.xml + + -0.63979 + 2.14385 + 0.05906 + 0 + + + + + Aircraft/S-300/Models/fire.xml + + -0.63979 + 2.14385 + 0.05906 + 0 + + + + + + + + + diff --git a/S-300/Models/smoke.png b/S-300/Models/smoke.png new file mode 100644 index 0000000..d2a4d96 Binary files /dev/null and b/S-300/Models/smoke.png differ diff --git a/S-300/Models/smoke.xml b/S-300/Models/smoke.xml new file mode 100644 index 0000000..5c25318 --- /dev/null +++ b/S-300/Models/smoke.xml @@ -0,0 +1,81 @@ + + + + + + smoke.png + + + sim/multiplay/generic/int[0] + 1 + + + false + false + billboard + world + + + pointdamage.fail_systems(10000); + + + 65 + 35 + -20 + 20 + + 500 + 10 + + + 0 + 0 + -180 + 0 + 0 + 360 + + + + + 50 + 1 + + + + + + 0.0 + 0.0 + 0.0 + 0.08 + + + 5 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + + + 15.0 + + + + 4 + + 0.0085 + 0.50 + + + air + true + true + + + + diff --git a/S-300/Nasal/damage.nas b/S-300/Nasal/damage.nas new file mode 100644 index 0000000..db0eea5 --- /dev/null +++ b/S-300/Nasal/damage.nas @@ -0,0 +1,522 @@ +# +# Install: Include this code into an aircraft to make it damagable. (remember to add it to the -set file) +# +# Authors: Nikolai V. Chr. and Pinto (with improvement by Onox) +# +# + + +############################ Config ###################################################################################### +var full_damage_dist_m = 3;# Can vary from aircraft to aircraft depending on how many failure modes it has. + # Many modes (like Viggen) ought to have lower number like zero. + # Few modes (like F-14) ought to have larger number such as 3. + # For assets this should be average radius of the asset. +var use_hitpoints_instead_of_failure_modes_bool = 1;# mainly used by assets that don't have failure modes. +var hp_max = 80;# given a direct hit, how much pounds of warhead is needed to kill. Only used if hitpoints is enabled. +var hitable_by_air_munitions = 0; # if anti-air can do damage +var hitable_by_cannon = 1; # if cannon can do damage +var hitable_by_ground_munitions = 1;# if anti-ground/marine can do damage +var is_fleet = 0; # Is really 7 ships, 3 of which has offensive missiles. +########################################################################################################################## + +## +## TODO: +## Include mechanics for hitting fleet +## Move all to emesary +## + + +var TRUE = 1; +var FALSE = 0; + +var hp = hp_max; +setprop("sam/damage", math.max(0,100*hp/hp_max));#used in HUD + +var cannon_types = { + # + # 0.20 means a direct hit will disable 20% of the failure modes on average. + # or, 0.20 also means a direct hit can do 20 hitpoints damage. + # + " M70 rocket hit": 0.250, #135mm + " S-5 rocket hit": 0.200, # 55mm + " M55 cannon shell hit": 0.100, # 30mm + " KCA cannon shell hit": 0.100, # 30mm + " Gun Splash On ": 0.100, # 30mm + " GSh-30 hit": 0.100, # 30mm + " GAU-8/A hit": 0.100, # 30mm + " BK27 cannon hit": 0.070, # 27mm + " GSh-23 hit": 0.065, # 23mm + " M61A1 shell hit": 0.050, # 20mm + " 50 BMG hit": 0.015, # 12.7mm (non-explosive) + " 7.62 hit": 0.005, # 7.62mm (non-explosive) +}; + +# lbs of warheads is explosive+fragmentation+fuse, so total warhead mass. + +var warhead_lbs = { + # Anti-ground/marine warheads (sorted alphabetically) + "AGM-65": 126.00, + "AGM-84": 488.00, + "AGM-88": 146.00, + "AGM65": 200.00, + "AGM-154A": 493.00, + "AGM-158": 1000.00, + "ALARM": 450.00, + "AM39-Exocet": 364.00, + "AS-37-Martel": 330.00, + "AS30L": 529.00, + "CBU-87": 100.00,# bomblet warhead. Mix of armour piecing and HE. 100 due to need to be able to kill buk-m2. + "Exocet": 364.00, + "FAB-100": 92.59, + "FAB-250": 202.85, + "FAB-500": 564.38, + "GBU-12": 190.00, + "GBU-24": 945.00, + "GBU-31": 945.00, + "GBU-54": 190.00, + "GBU12": 190.00, + "GBU16": 450.00, + "HVAR": 7.50,#P51 + "KAB-500": 564.38, + "Kh-25MP": 197.53, + "Kh-66": 244.71, + "LAU-68": 10.00, + "M71": 200.00, + "M71R": 200.00, + "M90": 10.00,# bomblet warhead. x3 of real mass. + "MK-82": 192.00, + "MK-83": 445.00, + "MK-84": 945.00, + "OFAB-100": 92.59, + "RB-04E": 661.00, + "RB-05A": 353.00, + "RB-15F": 440.92, + "RB-75": 126.00, + "RN-14T": 800.00, #fictional, thermobaeric replacement for the RN-24 nuclear bomb + "RN-18T": 1200.00, #fictional, thermobaeric replacement for the RN-28 nuclear bomb + "RS-2US": 28.66, + "S-21": 245.00, + "S-24": 271.00, + "SCALP": 992.00, + "Sea Eagle": 505.00, + "SeaEagle": 505.00, + "STORMSHADOW": 850.00, + "ZB-250": 236.99, + "ZB-500": 473.99, +}; + +var warhead_air_lbs = { + # Anti-air warheads (sorted alphabetically) + "aim-120": 44.00, + "AIM-120": 44.00, + "AIM-54": 135.00, + "aim-7": 88.00, + "AIM-7": 88.00, + "aim-9": 20.80, + "AIM-9": 20.80, + "AIM120": 44.00, + "AIM132": 22.05, + "AIM9": 20.80, + "KN-06": 315.00, + "M317": 145.00, + "Magic-2": 27.00, + "Matra MICA": 30.00, + "Matra R550 Magic 2": 27.00, + "MATRA-R530": 55.00, + "MatraMica": 30.00, + "MatraMicaIR": 30.00, + "MatraR550Magic2": 27.00, + "Meteor": 55.00, + "MICA-EM": 30.00, + "MICA-IR": 30.00, + "R-13M": 16.31, + "R-27R1": 85.98, + "R-27T1": 85.98, + "R-3R": 16.31, + "R-3S": 16.31, + "R-55": 20.06, + "R-60": 6.60, + "R-60M": 7.70, + "R-73E": 16.31, + "R-77": 49.60, + "R74": 16.00, + "RB-05A": 353.00, + "RB-24": 20.80, + "RB-24J": 20.80, + "RB-71": 88.00, + "RB-74": 20.80, + "RB-99": 44.00, + "S530D": 66.00, +}; + +var cluster = { + # cluster munition list + "M90": nil, + "CBU-87": nil, +}; + +var fireMsgs = { + + # F14 + " FOX3 at": nil, # radar + " FOX2 at": nil, # heat + " FOX1 at": nil, # semi-radar + + # Generic + " Fox 1 at": nil, # semi-radar + " Fox 2 at": nil, # heat + " Fox 3 at": nil, # radar + " Greyhound at": nil, # cruise missile + " Bombs away at": nil, # bombs + " Bruiser at": nil, # anti-ship + " Rifle at": nil, # TV guided + " Sniper at": nil, # anti-radiation + + # SAM, fleet and missile frigate + " Bird away at": nil, # G/A + + # F15 + " aim7 at": nil, + " aim9 at": nil, + " aim120 at": nil, +}; + +var incoming_listener = func {# test "Leto: AGM-88 exploded: 4.4 meters from: OPFORd4:." + var history = getprop("/sim/multiplay/chat-history"); + var hist_vector = split("\n", history); + if (size(hist_vector) > 0) { + var last = hist_vector[size(hist_vector)-1]; + var last_vector = split(":", last); + var author = last_vector[0]; + var callsign = getprop("sim/multiplay/callsign"); + callsign = size(callsign) < 8 ? callsign : left(callsign,7); + if (size(last_vector) > 1 and author != callsign) { + # not myself + #print("not me"); + var m2000 = FALSE; + if (find(" at " ~ callsign ~ ". Release ", last_vector[1]) != -1) { + # a m2000 is firing at us + m2000 = TRUE; + } + if (contains(fireMsgs, last_vector[1]) or m2000 == TRUE) { + # air2air being fired + warn(last_vector,m2000,callsign,author); + } elsif (getprop("payload/armament/msg")) { + var last1 = split(" ", last_vector[1]); + if(size(last1) > 2 and last1[size(last1)-1] == "exploded" ) { + #print("missile hitting someone"); + if (size(last_vector) > 3 and last_vector[3] == " "~callsign) { + #print("that someone is me!"); + var type = last1[1]; + if (type == "Matra" or type == "Sea") { + for (var i = 2; i < size(last1)-1; i += 1) { + type = type~" "~last1[i]; + } + } + var number = split(" ", last_vector[2]); + var distance = num(number[1]); + #print(type~"|"); + if(distance != nil) { + var dist = distance; + + if (contains(cluster, type)) { + # cluster munition + var lbs = warhead_lbs[type]; + var maxDist = maxDamageDistFromWarhead(lbs); + var distance = math.max(0,rand()*5-full_damage_dist_m);#being 0 to 5 meters from a bomblet on average. + var diff = math.max(0, maxDist-distance); + diff = diff * diff; + var probability = diff / (maxDist*maxDist); + if (use_hitpoints_instead_of_failure_modes_bool) { + var hpDist = maxDamageDistFromWarhead(hp_max); + probability = (maxDist/hpDist)*probability; + } + var failed = fail_systems(probability, hp_max); + var percent = 100 * prob; + printf("Took %.1f%% damage from %s clusterbomb at %0.1f meters from bomblet. %s systems was hit", percent,type,distance,failed); + nearby_explosion(); + return; + } + + distance = math.max(distance-full_damage_dist_m, 0); + + var maxDist = 0;# distance where the explosion dont hurt us anymore + var lbs = 0; + + if (hitable_by_ground_munitions and contains(warhead_lbs, type)) { + lbs = warhead_lbs[type]; + maxDist = maxDamageDistFromWarhead(lbs);#3*sqrt(lbs) + } elsif (hitable_by_air_munitions and contains(warhead_air_lbs, type)) { + lbs = warhead_air_lbs[type]; + maxDist = maxDamageDistFromWarhead(lbs); + } else { + return; + } + + var diff = maxDist-distance; + if (diff < 0) { + diff = 0; + } + diff = diff * diff; + + var probability = diff / (maxDist*maxDist); + + if (use_hitpoints_instead_of_failure_modes_bool) { + var hpDist = maxDamageDistFromWarhead(hp_max); + probability = (maxDist/hpDist)*probability; + } + + var failed = fail_systems(probability, hp_max); + var percent = 100 * probability; + printf("Took %.1f%% damage from %s missile at %0.1f meters. %s systems was hit", percent,type,dist,failed); + nearby_explosion(); + + #### + # I don't remember all the considerations that went into our original warhead damage model. + # But looking at the formula it looks like they all do 100% damage at 0 meter hit, + # and warhead size is only used to determine the decrease of damage with distance increase. + # It sorta gets the job done though, so I am hesitant to advocate that warheads above a certain + # size should give 100% damage for some distance, and that warheads smaller than certain size should + # not give 100% damage even on direct hit. + # Anyway, for hitpoint based assets, this is now the case. Maybe we should consider to also do something + # similar for failure mode based aircraft. ~Nikolai + #### + + ## example 1: ## + # 300 lbs warhead, 50 meters distance + # maxDist=52 + # diff = 52-50 = 2 + # diff^2 = 4 + # prob = 4/2700 = 0.15% + + ## example 2: ## + # 300 lbs warhead, 25 meters distance + # maxDist=52 + # diff = 52-25 = 27 + # diff^2 = 729 + # prob = 729/2700 = 27% + } + } + } elsif (hitable_by_cannon and cannon_types[last_vector[1]] != nil) { + if (size(last_vector) > 2 and last_vector[2] == " "~callsign) { + if (size(last_vector) < 4) { + # msg is either missing number of hits, or has no trailing dots from spam filter. + print('"'~last~'" is not a legal hit message, tell the shooter to upgrade his OPRF plane :)'); + return; + } + var last3 = split(" ", last_vector[3]); + if(size(last3) > 2 and size(last3[2]) > 2 and last3[2] == "hits" ) { + var probability = cannon_types[last_vector[1]]; + var hit_count = num(last3[1]); + if (hit_count != nil) { + var damaged_sys = 0; + for (var i = 1; i <= hit_count; i = i + 1) { + var failed = fail_systems(probability); + damaged_sys = damaged_sys + failed; + } + + printf("Took %.1f%% x %2d damage from cannon! %s systems was hit.", probability*100, hit_count, damaged_sys); + nearby_explosion(); + } + } else { + var probability = cannon_types[last_vector[1]]; + #print("probability: " ~ probability); + + var failed = fail_systems(probability * 3);# Old messages is assumed to be 3 hits + printf("Took %.1f%% x 3 damage from cannon! %s systems was hit.", probability*100, failed); + nearby_explosion(); + } + } + } + } + } + } +} + +var maxDamageDistFromWarhead = func (lbs) { + # Calc at what distance the warhead will do zero damage every time. + var dist = 3*math.sqrt(lbs); + return dist; +} + +var fail_systems = func (probability, factor = 100) {#this factor needs tuning after all asset hitpoints have been evaluated. + if (is_fleet) { + return fail_fleet_systems(probability, factor); + } elsif (use_hitpoints_instead_of_failure_modes_bool) { + hp -= factor * probability*(0.75+rand()*0.25);# from 75 to 100% damage + printf("HP: %d/%d", hp, hp_max); + setprop("sam/damage", math.max(0,100*hp/hp_max));#used in HUD + if ( hp < 0 ) { + setprop("/carrier/sunk/",1);#we are dead + setprop("/sim/multiplay/generic/int[2]",1);#radar off + setprop("/sim/multiplay/generic/int[0]",1);#smoke on + setprop("/sim/messages/copilot", getprop("sim/multiplay/callsign")~" dead."); + } + return -1; + } else { + var failure_modes = FailureMgr._failmgr.failure_modes; + var mode_list = keys(failure_modes); + var failed = 0; + foreach(var failure_mode_id; mode_list) { + if (rand() < probability) { + FailureMgr.set_failure_level(failure_mode_id, 1); + failed += 1; + } + } + return failed; + } +}; + +hp_f = [hp_max,hp_max,hp_max,hp_max,hp_max,hp_max,hp_max]; + +var fail_fleet_systems = func (probability, factor) { + var no = 7; + while (no > 6 or hp_f[no] < 0) { + no = int(rand()*7); + if (hp_f[no] < 0) { + if (rand() > 0.9) { + armament.defeatSpamFilter("You shot one of our already sinking ships, you are just mean."); + hp_f[no] -= factor * probability*(0.75+rand()*0.25);# from 75 to 100% damage + print("HP["~no~"]: " ~ hp_f[no] ~ "/" ~ hp_max); + return; + } + } + } + hp_f[no] -= factor * probability*(0.75+rand()*0.25);# from 75 to 100% damage + printf("HP[%d]: %d/%d", no, hp_f[no], hp_max); + #setprop("sam/damage", math.max(0,100*hp/hp_max));#used in HUD + if ( hp_f[no] < 0 ) { + setprop("/sim/multiplay/generic/bool["~(no+40)~"]",1); + armament.defeatSpamFilter("So you sank one of our ships, we will get you for that!"); + if (!getprop("/carrier/disabled") and hp_f[0]<0 and hp_f[1]<0 and hp_f[2]<0) { + setprop("/carrier/disabled",1); + armament.defeatSpamFilter("Captain our offensive capability is crippled!"); + } + if (hp_f[0]<0 and hp_f[1]<0 and hp_f[2]<0 and hp_f[3]<0 and hp_f[4]<0 and hp_f[5]<0 and hp_f[6]<0) { + setprop("/carrier/sunk",1); + setprop("/sim/multiplay/generic/int[2]",1);#radar off + setprop("/sim/messages/copilot", getprop("sim/multiplay/callsign")~" dead."); + armament.defeatSpamFilter("S.O.S. Heeelp"); + } else { + armament.defeatSpamFilter("This is not over yet.."); + } + } + return -1; +}; + +var warn = func (last_vector,m2000,callsign,author) { + if (size(last_vector) > 2 or m2000 == TRUE) { + #print("Missile launch detected at"~last_vector[2]~" from "~author); + if (m2000 == TRUE or last_vector[2] == " "~callsign) { + # its being fired at me + #print("Incoming!"); + var enemy = getCallsign(author); + if (enemy != nil) { + #print("enemy identified"); + var bearingNode = enemy.getNode("radar/bearing-deg"); + if (bearingNode != nil) { + #print("bearing to enemy found"); + var bearing = bearingNode.getValue(); + var heading = getprop("orientation/heading-deg"); + var clock = bearing - heading; + while(clock < 0) { + clock = clock + 360; + } + while(clock > 360) { + clock = clock - 360; + } + #print("incoming from "~clock); + if (clock >= 345 or clock < 15) { + playIncomingSound("12"); + } elsif (clock >= 15 and clock < 45) { + playIncomingSound("1"); + } elsif (clock >= 45 and clock < 75) { + playIncomingSound("2"); + } elsif (clock >= 75 and clock < 105) { + playIncomingSound("3"); + } elsif (clock >= 105 and clock < 135) { + playIncomingSound("4"); + } elsif (clock >= 135 and clock < 165) { + playIncomingSound("5"); + } elsif (clock >= 165 and clock < 195) { + playIncomingSound("6"); + } elsif (clock >= 195 and clock < 225) { + playIncomingSound("7"); + } elsif (clock >= 225 and clock < 255) { + playIncomingSound("8"); + } elsif (clock >= 255 and clock < 285) { + playIncomingSound("9"); + } elsif (clock >= 285 and clock < 315) { + playIncomingSound("10"); + } elsif (clock >= 315 and clock < 345) { + playIncomingSound("11"); + } else { + playIncomingSound(""); + } + return; + } + } + } + } +} + +var playIncomingSound = func (clock) { + setprop("sound/incoming"~clock, 1); + settimer(func {stopIncomingSound(clock);},3); +} + +var stopIncomingSound = func (clock) { + setprop("sound/incoming"~clock, 0); +} + +var nearby_explosion = func { + setprop("damage/sounds/nearby-explode-on", 0); + settimer(nearby_explosion_a, 0); +} + +var nearby_explosion_a = func { + setprop("damage/sounds/nearby-explode-on", 1); + settimer(nearby_explosion_b, 0.5); +} + +var nearby_explosion_b = func { + setprop("damage/sounds/nearby-explode-on", 0); +} + +var callsign_struct = {}; +var getCallsign = func (callsign) { + var node = callsign_struct[callsign]; + return node; +} + +var processCallsigns = func () { + callsign_struct = {}; + var players = props.globals.getNode("ai/models").getChildren(); + foreach (var player; players) { + if(player.getChild("valid") != nil and player.getChild("valid").getValue() == TRUE and player.getChild("callsign") != nil and player.getChild("callsign").getValue() != "" and player.getChild("callsign").getValue() != nil) { + var callsign = player.getChild("callsign").getValue(); + callsign_struct[callsign] = player; + } + } + settimer(processCallsigns, 5); +} + +processCallsigns(); + +setlistener("/sim/multiplay/chat-history", incoming_listener, 0, 0); + +# prevent flooding the pilots screen with failure modes that fail when getting hit. +setprop("/sim/failure-manager/display-on-screen", FALSE); + +var re_init = func { + # repair the aircraft at relocation to another airport. + + var failure_modes = FailureMgr._failmgr.failure_modes; + var mode_list = keys(failure_modes); + + foreach(var failure_mode_id; mode_list) { + FailureMgr.set_failure_level(failure_mode_id, 0); + } +} + +setlistener("/sim/signals/reinit", re_init, 0, 0); \ No newline at end of file diff --git a/S-300/Nasal/fdm.nas b/S-300/Nasal/fdm.nas new file mode 100644 index 0000000..0421fce --- /dev/null +++ b/S-300/Nasal/fdm.nas @@ -0,0 +1,78 @@ +# Copyright (C) 2015 onox +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#io.include("Aircraft/ExpansionPack/Nasal/init.nas"); + +#with("updateloop"); + +# Number of iterations per second +var frequency = 60.0; + +# Change in heading per second at full rudder deflection +var heading_ps = 0.5; + +time_last = 0; +sim_speed = 1; + +setprop("/carrier/pitch-deg",0); +setprop("/carrier/pitch-offset",0); +setprop("/carrier/roll-deg",0); +setprop("/carrier/roll-offset",0); +setprop("/carrier/sunk",0); + +var PositionUpdater = func () { + + var position = geo.aircraft_position(); + + var time_now = getprop("/sim/time/elapsed-sec"); + var dt = (time_now - time_last) * sim_speed; + if (dt == 0) return; + + time_last = time_now; + + var heading = getprop("/orientation/heading-deg"); + var speed = getprop("/velocities/groundspeed-kt"); + var rudder = getprop("/surface-positions/rudder-pos-norm"); + + var distance = speed * globals.KT2MPS * dt; + position.apply_course_distance(heading, distance); + + # Set new position + setprop("/position/latitude-deg", position.lat()); + setprop("/position/longitude-deg", position.lon()); + setprop("/position/altitude-ft", getprop("/position/ground-elev-ft")); + + + if ( getprop("/carrier/sunk") == 0 ) { + + # Update heading + var course = heading + rudder * heading_ps * dt; + setprop("/orientation/heading-deg", course); + + } else { + return; + } + + #set pitch + setprop("/orientation/pitch-deg",getprop("/carrier/pitch-deg") + getprop("/carrier/pitch-offset")); + + #set roll + setprop("/orientation/roll-deg",getprop("/carrier/roll-deg") + getprop("/carrier/roll-offset")); + + settimer( PositionUpdater, 1/frequency ); + +}; + +PositionUpdater(); \ No newline at end of file diff --git a/S-300/S-300-set.xml b/S-300/S-300-set.xml new file mode 100644 index 0000000..2eec9a0 --- /dev/null +++ b/S-300/S-300-set.xml @@ -0,0 +1,369 @@ + + + + + + + + false + + + + + + + 15.0 + + + 0.5 + 4.0 + + + 0.32 + 0.45 + + + 30.0 + + + 20.0 + + true + + + + + + pinto + S-300 + S-300 (SA-10) is a Russian self-propelled surface to air missile system. + alpha + 0.1 + + null + + KPN-D + KPN + + + Aircraft/S-300/Models/s-300.xml + + + true + + + + Sounds/sound.xml + + + + true + + + + Aircraft/S-300/splash1.png + + + + + exterior + true + gui/1.png + + + exterior + true + gui/2.png + + + + + true + + 0.0 + 0.0 + false + + 100.0 + 2000.0 + + + + Aircraft/S-300/Hud/hud.xml + true + + 11.0 + + + + + true + + + + + Systems/fbw.xml + + + Systems/fdm.xml + + + + Systems/views.xml + + + + 500 + + 0 + 0 + + + + + + + + true + + + + nasal + + + + + + enemies + + dialog-show + enemies + + + + + enemies + + dialog-show + priority + + + + + + + + + enemies/e1 + enemies/e2 + enemies/e3 + enemies/e4 + enemies/e5 + enemies/e6 + enemies/e7 + enemies/e8 + enemies/e9 + enemies/e10 + enemies/e11 + enemies/e12 + + + + + + 0 + false + + + 0 + 0 + 0 + + false + + + + 0 + 0 + 0 + + false + + + + 0 + 0 + 0 + + false + + + + 0 + 0 + 0 + + false + + + + + + + Main Store + + none + + M317 + 50 + + + + + Aircraft/S-300/Models/Armament/Weapons/ + true + true + rotors/main/blade[0]/flap-deg + rotors/main/blade[1]/flap-deg + rotors/main/blade[2]/flap-deg + true + 1 + controls/armament + station + true + true + + 0.00 + 0.15 + 0.1 + radar + APN + true + 85 + 360 + 220 + 22 + 90000 + 77000 + 0.25 + 8.0 + 3920 + 315 + 2800 + 0.20 + 2.11349 + 2 + 0.25 + 160 + true + 3000 + 75000 + 0.85 + 200 + true + 7.5 + false + 90 + 0.95 + 3 + A + Bird away + true + + + + + +
+ + 0 + + + 0 + + + 0 + +
+
+ + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + 4 + 600 + 100 + + + + Leto + swamp + pinto + fb237 + Wilco-1 + Kokos + J-Mav16 + S + Raider1 + Slobb + 5H1N0B1 + SNOWY1 + + + 0 + 1 + + + + Aircraft/S-300/Nasal/fdm.nas + + + Aircraft/S-300/Nasal/damage.nas + + + Aircraft/S-300/Nasal/radar-logic.nas + + + Aircraft/S-300/Nasal/vector.nas + + + Aircraft/S-300/Nasal/guided-missiles.nas + + + Aircraft/S-300/Nasal/fire-control.nas + + + +
diff --git a/S-300/Sim/mice.xml b/S-300/Sim/mice.xml new file mode 100644 index 0000000..2f2bf35 --- /dev/null +++ b/S-300/Sim/mice.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + diff --git a/S-300/Sounds/sound.xml b/S-300/Sounds/sound.xml new file mode 100644 index 0000000..39516e7 --- /dev/null +++ b/S-300/Sounds/sound.xml @@ -0,0 +1,42 @@ + + + + + + + + missile + Aircraft/S-300/Sounds/launch.wav + once + + payload/armament/kn-06/sound-fire-on-off + + 50 + 15000 + + 0.01 + 0.01 + 0.01 + + + 1 + 1 + + + + diff --git a/S-300/Systems/fbw.xml b/S-300/Systems/fbw.xml new file mode 100644 index 0000000..107c064 --- /dev/null +++ b/S-300/Systems/fbw.xml @@ -0,0 +1,46 @@ + + + + + + + + FBW Throttle + gain + 80.0 + + /controls/engines/engine[0]/throttle + + + /carrier/fbw/target/groundspeed-kt + + + + + FBW Rudder + gain + 8.0 + + /controls/flight/rudder + + + /surface-positions/rudder-pos-norm + + + + diff --git a/S-300/Systems/fdm.xml b/S-300/Systems/fdm.xml new file mode 100644 index 0000000..7a847c8 --- /dev/null +++ b/S-300/Systems/fdm.xml @@ -0,0 +1,69 @@ + + + + + + + + + FDM Groundspeed + noise-spike + + /carrier/fbw/target/groundspeed-kt + + + /velocities/groundspeed-kt + + + + 7 + + + + + FDM True Heading For Flags + gain + + /orientation/heading-deg + + + /orientation/true-heading-deg + + + + + + + + + + diff --git a/S-300/gui/1.png b/S-300/gui/1.png new file mode 100644 index 0000000..6448d28 Binary files /dev/null and b/S-300/gui/1.png differ diff --git a/S-300/gui/2.png b/S-300/gui/2.png new file mode 100644 index 0000000..4367ab7 Binary files /dev/null and b/S-300/gui/2.png differ diff --git a/S-300/gui/dialogs/enemies.xml b/S-300/gui/dialogs/enemies.xml new file mode 100644 index 0000000..67f39af --- /dev/null +++ b/S-300/gui/dialogs/enemies.xml @@ -0,0 +1,348 @@ + + + enemies + false + vbox + true + true + 250 + 550 + + + hbox + 1 + + + + + + 1 + + + + + + + 25 + + + + 250 + 25 + + enemies/e1 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e2 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e3 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e4 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e5 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e6 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e7 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e8 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e9 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e10 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e11 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 250 + 25 + + enemies/e12 + true + left + + dialog-apply + + + 1 + 0.5 + 0.5 + + + + enemies/opfor-switch + + + enemies/friend-switch + + + + + 12 + 12 + /enemies/opfor-switch + + + dialog-apply + + + + 12 + 12 + /enemies/friend-switch + + + dialog-apply + + + \ No newline at end of file diff --git a/S-300/gui/dialogs/prio.xml b/S-300/gui/dialogs/prio.xml new file mode 100644 index 0000000..072157e --- /dev/null +++ b/S-300/gui/dialogs/prio.xml @@ -0,0 +1,148 @@ + + + priority + false + vbox + true + false + 125 + 200 + + + 1 + hbox + + + + 1 + + + + table + + + right + 0 + 0 + + + 0 + 1 + priority0 + true + + nasal + + + + + + right + 1 + 0 + + + 1 + 1 + priority1 + true + + nasal + + + + + + right + 2 + 0 + + + 2 + 1 + priority2 + true + + nasal + + + + + + right + 3 + 0 + + + 3 + 1 + priority3 + true + + nasal + + + + + + right + 4 + 0 + + + 4 + 1 + priority4 + true + + nasal + + + + + + right + 5 + 0 + + + 5 + 1 + priority5 + true + + nasal + + + + + + right + 6 + 0 + + + 6 + 1 + priority6 + true + + nasal + + + + + \ No newline at end of file diff --git a/S-300/splash1.png b/S-300/splash1.png new file mode 100644 index 0000000..6d75567 Binary files /dev/null and b/S-300/splash1.png differ diff --git a/S-300/thumbnail.jpg b/S-300/thumbnail.jpg new file mode 100644 index 0000000..3580984 Binary files /dev/null and b/S-300/thumbnail.jpg differ