-Fri Oct 30 07:23:43 CET 2020
+Thu Nov 5 07:23:37 CET 2020
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-18 07:23+0200\n"
-"PO-Revision-Date: 2020-10-18 05:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2020-11-04 13:31+0000\n"
+"Last-Translator: Mirio <opivy@hotmail.de>\n"
"Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/"
"language/de/)\n"
"Language: de\n"
#: qcsrc/client/hud/panel/strafehud.qc:908
msgid "qu"
-msgstr ""
+msgstr "qu"
#: qcsrc/client/hud/panel/strafehud.qc:909
msgid "m"
-msgstr ""
+msgstr "m"
#: qcsrc/client/hud/panel/strafehud.qc:910
msgid "km"
-msgstr ""
+msgstr "km"
#: qcsrc/client/hud/panel/strafehud.qc:911
msgid "mi"
-msgstr ""
+msgstr "mi"
#: qcsrc/client/hud/panel/strafehud.qc:912
msgid "nmi"
-msgstr ""
+msgstr "nmi"
#: qcsrc/client/hud/panel/timer.qc:72
msgid "WARMUP"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:47
msgid "StrafeHUD mode:"
-msgstr ""
+msgstr "StrafeHUD Modus:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:50
msgid "View angle centered"
-msgstr ""
+msgstr "Blickwinkel zentriert"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:51
msgid "Velocity angle centered"
-msgstr ""
+msgstr "Geschwindigkeitswinkel zentriert"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:54
msgid "StrafeHUD style:"
-msgstr ""
+msgstr "StrafeHUD Stil:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:57
msgid "no styling"
-msgstr ""
+msgstr "kein Styling"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:58
msgid "progress bar"
-msgstr ""
+msgstr "Fortschrittsanzeige"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:59
msgid "gradient"
-msgstr ""
+msgstr "Verlauf"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:62
msgid "Demo mode"
-msgstr ""
+msgstr "Wiederholung-Modus"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:66
msgid "Range:"
-msgstr ""
+msgstr "Reichweite:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:69
msgid "Center panel"
-msgstr ""
+msgstr "Mittelteil"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:75
msgid "Reset colors"
-msgstr ""
+msgstr "Farben zurücksetzen"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:79
msgid "Strafe bar:"
-msgstr ""
+msgstr "Strafeleiste:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:83
msgid "Angle indicator:"
-msgstr ""
+msgstr "Winkelanzeige:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:85
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:93
msgid "Neutral:"
-msgstr ""
+msgstr "Neutral:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:87
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:95
msgid "Good:"
-msgstr ""
+msgstr "Gut:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:89
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:97
msgid "Overturn:"
-msgstr ""
+msgstr "Sturz:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:124
msgid "Switch indicators:"
-msgstr ""
+msgstr "Anzeige umschalten:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:128
msgid "Direction caps:"
-msgstr ""
+msgstr "Ausrichtungsmaximum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:130
msgid "Active:"
-msgstr ""
+msgstr "Aktiv:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:134
msgid "Inactive:"
-msgstr ""
+msgstr "Inaktiv:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qh:6
msgid "StrafeHUD Panel"
-msgstr ""
+msgstr "StrafeHUD-Panel"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:16
msgid "Timer:"
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-18 07:23+0200\n"
-"PO-Revision-Date: 2020-10-18 05:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2020-11-04 13:31+0000\n"
+"Last-Translator: Mirio <opivy@hotmail.de>\n"
"Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/"
"language/de/)\n"
"Language: de\n"
#: qcsrc/client/hud/panel/strafehud.qc:908
msgid "qu"
-msgstr ""
+msgstr "qu"
#: qcsrc/client/hud/panel/strafehud.qc:909
msgid "m"
-msgstr ""
+msgstr "m"
#: qcsrc/client/hud/panel/strafehud.qc:910
msgid "km"
-msgstr ""
+msgstr "km"
#: qcsrc/client/hud/panel/strafehud.qc:911
msgid "mi"
-msgstr ""
+msgstr "mi"
#: qcsrc/client/hud/panel/strafehud.qc:912
msgid "nmi"
-msgstr ""
+msgstr "nmi"
#: qcsrc/client/hud/panel/timer.qc:72
msgid "WARMUP"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:47
msgid "StrafeHUD mode:"
-msgstr ""
+msgstr "StrafeHUD Modus:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:50
msgid "View angle centered"
-msgstr ""
+msgstr "Blickwinkel zentriert"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:51
msgid "Velocity angle centered"
-msgstr ""
+msgstr "Geschwindigkeitswinkel zentriert"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:54
msgid "StrafeHUD style:"
-msgstr ""
+msgstr "StrafeHUD Stil:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:57
msgid "no styling"
-msgstr ""
+msgstr "kein Styling"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:58
msgid "progress bar"
-msgstr ""
+msgstr "Fortschrittsanzeige"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:59
msgid "gradient"
-msgstr ""
+msgstr "Verlauf"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:62
msgid "Demo mode"
-msgstr ""
+msgstr "Wiederholung-Modus"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:66
msgid "Range:"
-msgstr ""
+msgstr "Reichweite:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:69
msgid "Center panel"
-msgstr ""
+msgstr "Mittelteil"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:75
msgid "Reset colors"
-msgstr ""
+msgstr "Farben zurücksetzen"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:79
msgid "Strafe bar:"
-msgstr ""
+msgstr "Strafeleiste:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:83
msgid "Angle indicator:"
-msgstr ""
+msgstr "Winkelanzeige:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:85
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:93
msgid "Neutral:"
-msgstr ""
+msgstr "Neutral:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:87
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:95
msgid "Good:"
-msgstr ""
+msgstr "Gut:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:89
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:97
msgid "Overturn:"
-msgstr ""
+msgstr "Sturz:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:124
msgid "Switch indicators:"
-msgstr ""
+msgstr "Anzeige umschalten:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:128
msgid "Direction caps:"
-msgstr ""
+msgstr "Ausrichtungsmaximum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:130
msgid "Active:"
-msgstr ""
+msgstr "Aktiv:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:134
msgid "Inactive:"
-msgstr ""
+msgstr "Inaktiv:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qh:6
msgid "StrafeHUD Panel"
-msgstr ""
+msgstr "StrafeHUD-Panel"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:16
msgid "Timer:"
#
# Translators:
# nad le <nadavlevi726@gmail.com>, 2018
+# Omer I.S., 2020
+# Omer I.S., 2020
# Roi Asher Gerszkoviez <gerszkoviez@gmail.com>, 2020
# Tal Leibman <leibman2@gmail.com>, 2019
msgid ""
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-18 07:23+0200\n"
-"PO-Revision-Date: 2020-10-18 05:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2020-11-03 20:32+0000\n"
+"Last-Translator: Omer I.S.\n"
"Language-Team: Hebrew (http://www.transifex.com/team-xonotic/xonotic/"
"language/he/)\n"
"Language: he\n"
#: qcsrc/client/hud/panel/centerprint.qc:177
#, c-format
msgid "Message at time %s"
-msgstr "×\94×\95×\93×¢×\94 ×\91×\96×\9e×\9f %s"
+msgstr "×\94×\95×\93×¢×\94 ×\91שע×\94 %s"
#: qcsrc/client/hud/panel/centerprint.qc:182
msgid "Generic message"
#: qcsrc/client/hud/panel/infomessages.qc:106
#, c-format
msgid "^1Press ^3%s^1 to spectate"
-msgstr "^1×\9c×\97×¥ ^3%s^1 כדי להשקיף"
+msgstr "^1×\9c×\97צ×\95 ×¢×\9c ^3%s^1 כדי להשקיף"
#: qcsrc/client/hud/panel/infomessages.qc:106
#: qcsrc/menu/xonotic/keybinder.qc:47
#: qcsrc/client/hud/panel/infomessages.qc:108
#: qcsrc/client/hud/panel/infomessages.qc:112
msgid "next weapon"
-msgstr "הנשק הבא"
+msgstr "×\9b×\9c×\99 ×\94× ×©×§ ×\94×\91×\90"
#: qcsrc/client/hud/panel/infomessages.qc:108
#: qcsrc/client/hud/panel/infomessages.qc:112
msgid "previous weapon"
-msgstr "הנשק הקודם"
+msgstr "×\9b×\9c×\99 ×\94× ×©×§ ×\94ק×\95×\93×\9d"
#: qcsrc/client/hud/panel/infomessages.qc:112
#, c-format
#: qcsrc/client/hud/panel/infomessages.qc:114
#: qcsrc/common/vehicles/cl_vehicles.qc:191
msgid "drop weapon"
-msgstr "×\96ר×\95ק נשק"
+msgstr "×\96ר×\99קת ×\9b×\9c×\99 ×\94נשק"
#: qcsrc/client/hud/panel/infomessages.qc:114
#: qcsrc/menu/xonotic/keybinder.qc:48
#: qcsrc/client/hud/panel/infomessages.qc:138
#, c-format
msgid "^1Game starts in ^3%d^1 seconds"
-msgstr ""
+msgstr "^1המשחק יתחיל בעוד ^3%d^1 שניות"
#: qcsrc/client/hud/panel/infomessages.qc:144
msgid "^2Currently in ^1warmup^2 stage!"
#: qcsrc/client/hud/panel/quickmenu.qc:787
msgid "QMCMD^Send public message to"
-msgstr "QMCMD^ש×\9c×\97 הודעה פומבית אל"
+msgstr "QMCMD^ש×\9c×\99×\97ת הודעה פומבית אל"
#: qcsrc/client/hud/panel/quickmenu.qc:788
msgid "QMCMD^:-) / nice one"
#: qcsrc/client/hud/panel/quickmenu.qc:789
msgid "QMCMD^good game"
-msgstr ""
+msgstr "QMCMD^משחק טוב"
#: qcsrc/client/hud/panel/quickmenu.qc:790
msgid "QMCMD^hi / good luck"
#: qcsrc/client/hud/panel/weapons.qc:639
msgid "Unavailable"
-msgstr "לא זמין"
+msgstr "לא זמין/ה"
#: qcsrc/client/main.qc:286
msgid "Trying to remove a team which is not in the teamlist!"
#: qcsrc/client/main.qc:1073 qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:52
msgid "m/s"
-msgstr "מ\"ש"
+msgstr "מ״ש"
#: qcsrc/client/main.qc:1074 qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:53
msgid "km/h"
-msgstr "קמ\"ש"
+msgstr "קמ״ש"
#: qcsrc/client/main.qc:1075 qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:54
msgid "mph"
-msgstr "מייל לשעה"
+msgstr "מַייל לשעה"
#: qcsrc/client/main.qc:1076 qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:55
msgid "knots"
#: qcsrc/client/mapvoting.qc:394
msgid "Vote for a map"
-msgstr "הצבע למפה"
+msgstr "הצבעה למפה"
#: qcsrc/client/mapvoting.qc:411
#, c-format
#: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:12
msgid "Capture the Flag"
-msgstr "תפוס את הדגל"
+msgstr "×\9cתפ×\95ס ×\90ת ×\94×\93×\92×\9c"
#: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:12
msgid ""
#: qcsrc/common/gamemodes/gamemode/race/race.qh:11
msgid "Race against other players to the finish line"
-msgstr "×\94ת×\97ר×\94 נגד שחקנים אחרים לקו הסיום"
+msgstr "×\9c×\94ת×\97ר×\95ת נגד שחקנים אחרים לקו הסיום"
#: qcsrc/common/gamemodes/gamemode/race/race.qh:38
msgid "Laps:"
#: qcsrc/common/minigames/cl_minigames_hud.qc:432
msgid "Exit Menu"
-msgstr "צ×\90 מהתפריט"
+msgstr "×\99צ×\99×\90×\94 מהתפריט"
#: qcsrc/common/minigames/cl_minigames_hud.qc:443
#: qcsrc/menu/xonotic/dialog_multiplayer.qc:16
#: qcsrc/common/minigames/cl_minigames_hud.qc:446
msgid "Join"
-msgstr "×\94צ×\98רף"
+msgstr "×\94צ×\98רפ×\95ת"
#: qcsrc/common/minigames/cl_minigames_hud.qc:522
msgid "Minigames"
#: qcsrc/common/minigames/minigame/bd.qc:1403
msgid "Next Level"
-msgstr "שלב הבא"
+msgstr "×\94ש×\9c×\91 ×\94×\91×\90"
#: qcsrc/common/minigames/minigame/bd.qc:1404
msgid "Restart"
#: qcsrc/common/minigames/minigame/bd.qc:1406
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37
msgid "Save"
-msgstr "ש×\9e×\95ר"
+msgstr "ש×\9e×\99ר×\94"
#: qcsrc/common/minigames/minigame/c4.qc:2
msgid "Connect Four"
#: qcsrc/common/minigames/minigame/pong.qc:679
msgid "Start Match"
-msgstr "התחל משחק"
+msgstr "התחלת סיבוב"
#: qcsrc/common/minigames/minigame/pong.qc:680
msgid "Add AI player"
-msgstr "×\94×\95סף שחקן מחשב"
+msgstr "×\94×\95ספת שחקן מחשב"
#: qcsrc/common/minigames/minigame/pong.qc:681
msgid "Remove AI player"
-msgstr "הסר שחקן מחשב"
+msgstr "הסרת שחקן מחשב"
#: qcsrc/common/minigames/minigame/pp.qc:2
msgid "Push-Pull"
#: qcsrc/common/minigames/minigame/pp.qc:587
#: qcsrc/common/minigames/minigame/ttt.qc:671
msgid "Next Match"
-msgstr "×\9eש×\97ק הבא"
+msgstr "×\94ס×\99×\91×\95×\91 הבא"
#: qcsrc/common/minigames/minigame/ps.qc:2
msgid "Peg Solitaire"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:39
msgid "Run here"
-msgstr "ר×\95×¥ לכאן"
+msgstr "ר×\95צ×\95 לכאן"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:45
#: qcsrc/common/mutators/mutator/waypoints/all.inc:48
#: qcsrc/common/mutators/mutator/waypoints/all.inc:57
msgid "Weapon"
-msgstr "נשק"
+msgstr "×\9b×\9c×\99 × ×©×§"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:59
msgid "Monster"
#: qcsrc/common/weapons/weapon/shotgun.qh:20
msgid "Shotgun"
-msgstr "ש×\95×\98×\92×\9f"
+msgstr "ר×\95×\91×\94 צ×\99×\93"
#: qcsrc/common/weapons/weapon/tuba.qh:18
#, no-c-format
#: qcsrc/menu/xonotic/credits.qc:4
msgid "Core Team"
-msgstr ""
+msgstr "הצוות העיקרי"
#: qcsrc/menu/xonotic/credits.qc:15
msgid "Extended Team"
-msgstr ""
+msgstr "הצוות המורחב"
#: qcsrc/menu/xonotic/credits.qc:46
msgid "Website"
-msgstr "אתר"
+msgstr "×\94×\90תר"
#: qcsrc/menu/xonotic/credits.qc:51
msgid "Stats"
#: qcsrc/menu/xonotic/credits.qc:67
msgid "Level Design"
-msgstr ""
+msgstr "עיצוב השלבים"
#: qcsrc/menu/xonotic/credits.qc:90
msgid "Music / Sound FX"
#: qcsrc/menu/xonotic/credits.qc:125
msgid "Game Engine"
-msgstr ""
+msgstr "מנוע המשחק"
#: qcsrc/menu/xonotic/credits.qc:129
msgid "Engine Additions"
#: qcsrc/menu/xonotic/credits.qc:148
msgid "Translators"
-msgstr ""
+msgstr "תרגום"
#: qcsrc/menu/xonotic/credits.qc:150
msgid "Asturian"
#: qcsrc/menu/xonotic/credits.qc:158
msgid "Bulgarian"
-msgstr ""
+msgstr "בולגרית"
#: qcsrc/menu/xonotic/credits.qc:165
msgid "Chinese (China)"
-msgstr ""
+msgstr "סינית (סין)"
#: qcsrc/menu/xonotic/credits.qc:171
msgid "Chinese (Taiwan)"
-msgstr ""
+msgstr "סינית (טאיוואן)"
#: qcsrc/menu/xonotic/credits.qc:176
msgid "Cornish"
#: qcsrc/menu/xonotic/credits.qc:179
msgid "Czech"
-msgstr ""
+msgstr "צ׳כית"
#: qcsrc/menu/xonotic/credits.qc:184
msgid "Dutch"
#: qcsrc/menu/xonotic/credits.qc:191
msgid "English (Australia)"
-msgstr ""
+msgstr "אנגלית (אוסטרליה)"
#: qcsrc/menu/xonotic/credits.qc:196
msgid "Finnish"
#: qcsrc/menu/xonotic/credits.qc:201
msgid "French"
-msgstr ""
+msgstr "צרפתית"
#: qcsrc/menu/xonotic/credits.qc:209
msgid "German"
-msgstr ""
+msgstr "גרמנית"
#: qcsrc/menu/xonotic/credits.qc:220
msgid "Greek"
-msgstr ""
+msgstr "יוונית"
#: qcsrc/menu/xonotic/credits.qc:226
msgid "Hungarian"
-msgstr ""
+msgstr "הונגרית"
#: qcsrc/menu/xonotic/credits.qc:230
msgid "Irish"
-msgstr ""
+msgstr "אירית"
#: qcsrc/menu/xonotic/credits.qc:233
msgid "Italian"
-msgstr ""
+msgstr "איטלקית"
#: qcsrc/menu/xonotic/credits.qc:239
msgid "Kazakh"
#: qcsrc/menu/xonotic/credits.qc:242
msgid "Korean"
-msgstr ""
+msgstr "קוריאנית"
#: qcsrc/menu/xonotic/credits.qc:246
msgid "Polish"
-msgstr ""
+msgstr "פולנית"
#: qcsrc/menu/xonotic/credits.qc:254
msgid "Portuguese"
-msgstr ""
+msgstr "פורטוגזית"
#: qcsrc/menu/xonotic/credits.qc:260
msgid "Romanian"
-msgstr ""
+msgstr "רומנית"
#: qcsrc/menu/xonotic/credits.qc:267
msgid "Russian"
-msgstr ""
+msgstr "רוסית"
#: qcsrc/menu/xonotic/credits.qc:278
msgid "Scottish Gaelic"
-msgstr ""
+msgstr "גֵאלית סקוטית"
#: qcsrc/menu/xonotic/credits.qc:281
msgid "Serbian"
-msgstr ""
+msgstr "סברית"
#: qcsrc/menu/xonotic/credits.qc:287
msgid "Spanish"
-msgstr ""
+msgstr "ספרדית"
#: qcsrc/menu/xonotic/credits.qc:298
msgid "Swedish"
-msgstr ""
+msgstr "שוודית"
#: qcsrc/menu/xonotic/credits.qc:302
msgid "Ukrainian"
#: qcsrc/menu/xonotic/dialog_credits.qh:7
msgid "Credits"
-msgstr "קר×\93×\99×\98ים"
+msgstr "ש×\91×\97ים"
#: qcsrc/menu/xonotic/dialog_credits.qh:8
msgid "The Xonotic credits"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qh:6
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qh:6
msgid "Disconnect"
-msgstr "התנתק"
+msgstr "התנתקות"
#: qcsrc/menu/xonotic/dialog_disconnect.qh:7
msgid "Disconnect from the server you are connected to"
#: qcsrc/menu/xonotic/dialog_firstrun.qc:88
msgid "Save settings"
-msgstr "ש×\9e×\95ר הגדרות"
+msgstr "ש×\9e×\99רת הגדרות"
#: qcsrc/menu/xonotic/dialog_firstrun.qh:6
msgid "Welcome"
-msgstr "×\91ר×\95×\9a ×\94×\91×\90"
+msgstr "×\91ר×\95×\9b×\99×\9d ×\94×\91×\90×\99×\9d"
#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:18
msgid "Ammunition display:"
#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:20
msgid "Chat size:"
-msgstr "גודל צ'אט:"
+msgstr "גודל צ׳אט:"
#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:24
msgid "Chat lifetime:"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:57
msgid "Show"
-msgstr "הצג"
+msgstr "הצגה"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:60
msgid "Top speed"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:46
msgid "Zoomed in"
-msgstr "×\96×\95×\9d ×\90×\99×\9f"
+msgstr "×\94תקר×\91×\95ת"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:47
msgid "Zoomed out"
-msgstr "×\96×\95×\9d ×\90×\90×\95×\98"
+msgstr "×\94תר×\97ק×\95ת"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:48
msgid "Always zoomed"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:145
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:55
msgid "Never"
-msgstr "×\9c×¢×\95×\9c×\9d ×\9c×\90"
+msgstr "×\90×£ פע×\9d"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:26
#, c-format
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:66
msgid "Show Accuracy"
-msgstr "הצג דיוק"
+msgstr "הצגת דיוק"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:67
msgid "Show Ammo"
-msgstr "הצג תחמושת"
+msgstr "הצגת תחמושת"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:70
msgid "Ammo bar alpha:"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qh:6
msgid "Weapons Panel"
-msgstr "פ×\90× ×\9c ×\94× ×©×§×\99×\9d"
+msgstr "פ×\90× ×\9c ×\9b×\9c×\99 ×\94× ×©×§"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19
msgid "HUD skins"
#: qcsrc/menu/xonotic/dialog_monstertools.qc:23
msgid "Remove"
-msgstr "הסר"
+msgstr "הסרה"
#: qcsrc/menu/xonotic/dialog_monstertools.qc:25
msgid "Move target:"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:40
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:57
msgid "Unlimited"
-msgstr "×\91×\9cת×\99 ×\9e×\95×\92×\91×\9c"
+msgstr "×\9c×\9c×\90 ×\94×\92×\91×\9c×\94"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:74
msgid "Gametype"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:84
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:159
msgid "1 minute"
-msgstr "דקה אחת"
+msgstr "דקה 1"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:101
msgid "TIMLIM^Infinite"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:131
msgid "You will win"
-msgstr "×\90ת×\94 ×ª× ×¦×\97"
+msgstr "×\94× ×\99צ×\97×\95×\9f ×¢×\95×\93 ×\99×\94×\99×\94 ש×\9c×\9a"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132
msgid "You can win"
-msgstr "×\90ת×\94 ×\99×\9b×\95×\9c לנצח"
+msgstr "×\90פשר לנצח"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:133
msgid "You might win"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:194
msgid "Add all"
-msgstr "×\94×\95סף ×\94×\9bל"
+msgstr "×\9c×\94×\95ס×\99×£ ×\94×\9b×\95ל"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:195
msgid "Add every available map to your selection"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:198
msgid "Remove all"
-msgstr "×\94סר ×\94×\9bל"
+msgstr "×\9c×\94ס×\99ר ×\94×\9b×\95ל"
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:199
msgid "Remove all the maps from your selection"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:85
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:257
msgid "Close"
-msgstr "ס×\92×\95ר"
+msgstr "ס×\92×\99ר×\94"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:88
msgid "MAP^Play"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:71
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:298
msgid "No start weapons"
-msgstr "×\9c×\9c×\90 × ×©×§×\99 התחלה"
+msgstr "×\9c×\9c×\90 ×\9b×\9c×\99 × ×©×§ ×\91התחלה"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:73
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:202
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:87
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:239
msgid "Weapons stay"
-msgstr "× ×©×§×\99×\9d נשארים"
+msgstr "×\9b×\9c×\99 × ×©×§ נשארים"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:89
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:191
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:273
msgid "Most weapons"
-msgstr "ר×\95×\91 ×\94× ×©×§×\99×\9d"
+msgstr "ר×\95×\91 ×\9b×\9c×\99 ×\94× ×©×§"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:277
msgid "All weapons"
-msgstr "×\9b×\9c ×\94× ×©×§×\99×\9d"
+msgstr "×\9b×\9c ×\9b×\9c×\99 ×\94× ×©×§"
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:280
msgid "Special arenas:"
#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:92
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:264
msgid "Join!"
-msgstr "×\94צ×\98רף!"
+msgstr "×\94צ×\98רפ×\95!"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:114
#: qcsrc/menu/xonotic/serverlist.qc:1020
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:137
msgid "Not supported (can't connect)"
-msgstr "לא נתמך(לא יכול להתחבר)"
+msgstr "לא נתמך (לא ניתן להתחבר)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:139
msgid "Not supported (won't encrypt)"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:15
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:15
msgid "Do you really wish to disconnect now?"
-msgstr "×\90ת×\94 ×\91×\90×\9eת ר×\95צ×\94 להתנתק עכשיו?"
+msgstr "×\94×\90×\9d ×\90×\9b×\9f ×\91רצ×\95× ×\9a להתנתק עכשיו?"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13
msgid "Timing a demo will disconnect you from the current match."
#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:137
msgid "Reset"
-msgstr "×\90פס"
+msgstr "×\90×\99פ×\95ס"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:142
msgid "Previous"
#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:172
msgid "Gender:"
-msgstr "×\9e×\99×\9f:"
+msgstr "×\9e×\92×\93ר:"
#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:179
msgid "Gender"
-msgstr "×\9e×\99×\9f"
+msgstr "×\9e×\92×\93ר"
#: qcsrc/menu/xonotic/dialog_quit.qc:11
msgid "Are you sure you want to quit?"
-msgstr "×\90ת×\94 ×\91×\98×\95×\97 שברצונך לצאת?"
+msgstr "×\94×\90×\9d ×\90×\9b×\9f ברצונך לצאת?"
#: qcsrc/menu/xonotic/dialog_quit.qc:15
msgid "Back to work..."
#: qcsrc/menu/xonotic/dialog_quit.qh:7
msgid "Quit the game"
-msgstr "צ×\90 מהמשחק"
+msgstr "×\99צ×\99×\90×\94 מהמשחק"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:15
msgid "Model:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:24
msgid "Paste"
-msgstr "הדבק"
+msgstr "הדבקה"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:26
msgid "Bone:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81
msgid "Show help"
-msgstr "הצג עזרה"
+msgstr "הצגת עזרה"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:82
msgid "* is the object you are facing"
#: qcsrc/menu/xonotic/dialog_settings.qh:7
msgid "Change the game settings"
-msgstr "×©× ×\94 ×\90ת הגדרות המשחק"
+msgstr "ש×\99× ×\95×\99 הגדרות המשחק"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:29
msgid "Master:"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:93
msgid "Weapons:"
-msgstr "× ×©×§×\99×\9d:"
+msgstr "×\9b×\9c×\99 × ×©×§:"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:99
msgid "New style sound attenuation"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:213
msgid "Use normal maps"
-msgstr "×\94שת×\9eש במפות רגילות"
+msgstr "ש×\99×\9e×\95ש במפות רגילות"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:214
msgid "Enable use of directional shading on textures"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:65
msgid "Gamemode Settings"
-msgstr "×\90פשר×\95×\99ות מצב משחק"
+msgstr "×\94×\92×\93רות מצב משחק"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67
msgid "Display capture times in Capture The Flag"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7
#: qcsrc/menu/xonotic/keybinder.qc:51
msgid "Weapons"
-msgstr "× ×©×§×\99×\9d"
+msgstr "×\9b×\9c×\99 × ×©×§"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:34
msgid "Key Bindings"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:42
msgid "Edit..."
-msgstr "ער×\95×\9a..."
+msgstr "ער×\99×\9b×\94..."
#: qcsrc/menu/xonotic/dialog_settings_input.qc:48
msgid "Clear"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:53
msgid "Reset all"
-msgstr "×\90פס ×\94×\9bל"
+msgstr "×\9c×\90פס ×\94×\9b×\95ל"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:58
msgid "Mouse"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:115
#: qcsrc/menu/xonotic/dialog_settings_input.qc:120
msgid "Use joystick input"
-msgstr "×\94תשת×\9eש בקלט מג'ויסטיק"
+msgstr "ש×\99×\9e×\95ש בקלט מג'ויסטיק"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:31
msgid "Command when pressed:"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:40
msgid "Cancel"
-msgstr "×\91×\98ל"
+msgstr "×\91×\99×\98×\95ל"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7
msgid "User defined key bind"
#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qh:7
msgid "Advanced settings"
-msgstr "×\90פשר×\95×\99ות מתקדמות"
+msgstr "×\94×\92×\93רות מתקדמות"
#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11
msgid "Are you sure you want to reset all settings?"
-msgstr "×\94×\90×\9d ×\90ת×\94 ×\91×\98×\95×\97 שברצונך לאפס את כל ההגדרות?"
+msgstr "×\94×\90×\9d ×\90×\9b×\9f ברצונך לאפס את כל ההגדרות?"
#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13
msgid "This will create a backup config in your data directory"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:67
msgid "Set language"
-msgstr "ק×\91×¢ שפה"
+msgstr "ק×\91×\99עת ×\94שפה"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:72
msgid "Disable gore effects and harsh language"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16
msgid "Disconnect now"
-msgstr "התנתק עכשיו"
+msgstr "×\9c×\94×ª× ×ª×§ ×¢×\9bש×\99×\95"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:17
msgid "Switch language"
-msgstr "×\94×\97×\9c×£ שפה"
+msgstr "×\94×\97×\9cפת שפה"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qh:6
msgid "Warning"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:158
msgid "Wait for GPU to finish each frame"
-msgstr "×\97×\9b×\94 ×¢×\93 ש×\94×\9e×¢×\91×\93 ×\94×\92רפ×\99 ×\99ס×\99×\99×\9d ×\9b×\9c פר×\99×\99×\9d"
+msgstr "×\9c×\94×\9eת×\99×\9f ×\9cס×\99×\95×\9d ×\9b×\9c פר×\99×\99×\9d ×\91Ö¾GPU"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:159
msgid ""
"Make the CPU wait for the GPU to finish each frame, can help with some "
"strange input or video lag on some machines"
msgstr ""
-"×\92ר×\95×\9d ×\9c×\9e×¢×\91×\93 ×\9c×\94×\9eת×\99×\9f ש×\94×\9e×¢×\91×\93 ×\94×\92רפ×\99 ×\99ס×\99×\99×\9d ×\9b×\9c פר×\99×\99×\9d. ×\96×\94 ×\99×\9b×\95×\9c ×\9c×¢×\96×\95ר ×\91×\9eקר×\99×\9d ש×\9c ×\9c×\90×\92×\99×\9d "
-"×\9e×\95×\96ר×\99×\9d ×\91ק×\9c×\98 ×\90×\95 ×\91וידאו במחשבים מסויימים."
+"×\9c×\92ר×\95×\9d ×\9c×\9e×¢×\91×\93 ×\9c×\94×\9eת×\99×\9f ש×\94×\9e×¢×\91×\93 ×\94×\92רפ×\99 ×\99ס×\99×\99×\9d ×\9b×\9c פר×\99×\99×\9d, ×\96×\94 ×\99×\9b×\95×\9c ×\9c×¢×\96×\95ר ×\91×\9eקר×\99×\9d ש×\9c "
+"×\9c×\90×\92×\99×\9d ×\9e×\95×\96ר×\99×\9d ×\91ק×\9c×\98 ×\90×\95 ×\91×\95וידאו במחשבים מסויימים."
#: qcsrc/menu/xonotic/dialog_settings_video.qc:163
msgid "Use OpenGL 2.0 shaders (GLSL)"
#: qcsrc/menu/xonotic/serverlist.qc:734
msgid "Hostname"
-msgstr "ש×\9d ×\94שרת"
+msgstr "ש×\9d ×\94×\9e×\90ר×\97"
#: qcsrc/menu/xonotic/serverlist.qc:735
msgid "Map"
#: qcsrc/menu/xonotic/statslist.qc:104
msgid "Last match:"
-msgstr "×\9eש×\97ק אחרון:"
+msgstr "×\94ס×\99×\91×\95×\91 ×\94אחרון:"
#: qcsrc/menu/xonotic/statslist.qc:111
msgid "Time played:"
#: qcsrc/menu/xonotic/statslist.qc:245
#, c-format
msgid "Matches:"
-msgstr "×\9eש×\97קים:"
+msgstr "ס×\99×\91×\95×\91ים:"
#: qcsrc/menu/xonotic/statslist.qc:155
#, c-format
#: qcsrc/menu/xonotic/util.qc:420
msgid "Update can be downloaded at:"
-msgstr "× ×\99ת×\9f ×\9c×\94×\95ר×\99×\93 ×¢×\93×\9b×\95×\9f ×\91:"
+msgstr "×\94×¢×\93×\9b×\95×\9f × ×\99ת×\9f ×\9c×\94×\95ר×\93×\94 ×\91×\90תר:"
#: qcsrc/menu/xonotic/util.qc:528
msgid "Autogenerating mapinfo for newly added maps..."
#: qcsrc/menu/xonotic/util.qc:566
#, c-format
msgid "Update to %s now!"
-msgstr "×¢×\93×\9b×\9f לגרסה %s עכשיו!"
+msgstr "×¢×\93×\9b× ×\95 לגרסה %s עכשיו!"
#: qcsrc/menu/xonotic/util.qc:650
msgid ""
#: qcsrc/menu/xonotic/util.qc:780
msgid "Use default"
-msgstr "×\94שת×\9eש בברירת מחדל"
+msgstr "ש×\99×\9e×\95ש בברירת מחדל"
#: qcsrc/menu/xonotic/util.qc:800
msgid "Team Color:"
ast "Asturian" "Asturianu" 63%
-de "German" "Deutsch" 98%
-de_CH "German (Switzerland)" "Deutsch (Schweiz)" 98%
+de "German" "Deutsch" 100%
+de_CH "German (Switzerland)" "Deutsch (Schweiz)" 100%
en "English" "English" 100%
en_AU "English (Australia)" "English (Australia)" 74%
es "Spanish" "Español" 98%
set g_buffs_medic_rot 0.2 "health rot rate multiplier"
set g_buffs_medic_max 1.5 "stable health medic limit multiplier"
set g_buffs_medic_regen 1.7 "health medic rate multiplier"
-set g_buffs_medic_heal_amount 15 "health given to nearby players on a delay"
-set g_buffs_medic_heal_range 400 "furthest away players can be from carrier to get healed by medic buff"
-set g_buffs_medic_heal_delay 1 "delay between team healing"
set g_buffs_vengeance 1 "vengeance buff: attackers also take damage"
set g_buffs_vengeance_time 60 "vengeance buff carry time"
set g_buffs_vengeance_damage_multiplier 0.4 "amount of damage dealt the attacker takes when hitting a target with vengeance"
return;
this.csqcmodel_predraw_run = framecount;
- if(!this.modelindex || this.model == "null" || this.alpha < 0)
+ if(!this.modelindex || this.model == "null")
{
this.drawmask = 0;
if(this.snd_looping > 0)
}
if (MUTATOR_CALLHOOK(ShowNames_Draw, this, a)) return;
a = M_ARGV(1, float);
- if (vdist(this.origin - view_origin, >=, max_shot_distance)) return;
- float dist = vlen(this.origin - view_origin);
+ float dist = -1; // dist will be calculated only when really needed to avoid wasting a vlen call
if (autocvar_hud_shownames_maxdistance)
{
- if (dist >= autocvar_hud_shownames_maxdistance) return;
- float f = autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance;
- a *= (f - max(0, dist - autocvar_hud_shownames_mindistance)) / f;
+ float max_dist = min(autocvar_hud_shownames_maxdistance, max_shot_distance);
+ if (vdist(this.origin - view_origin, >=, max_dist))
+ return;
+ if (vdist(this.origin - view_origin, >=, autocvar_hud_shownames_mindistance))
+ {
+ float f = autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance;
+ if (dist == -1)
+ dist = vlen(this.origin - view_origin);
+ a *= (f - max(0, dist - autocvar_hud_shownames_mindistance)) / f;
+ }
}
+ else if (vdist(this.origin - view_origin, >=, max_shot_distance))
+ return;
if (!a) return;
float resize = 1;
if (autocvar_hud_shownames_resize) // limit resize so its never smaller than 0.5... gets unreadable
{
- float f = autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance;
- resize = 0.5 + 0.5 * (f - max(0, dist - autocvar_hud_shownames_mindistance)) / f;
+ if (vdist(this.origin - view_origin, >=, autocvar_hud_shownames_mindistance))
+ {
+ float f = autocvar_hud_shownames_maxdistance - autocvar_hud_shownames_mindistance;
+ if (dist == -1)
+ dist = vlen(this.origin - view_origin);
+ resize = 0.5 + 0.5 * (f - max(0, dist - autocvar_hud_shownames_mindistance)) / f;
+ }
}
// draw the sprite image
if (o.z >= 0)
CLASS(NexBall, Gametype)
INIT(NexBall)
{
- this.gametype_init(this, _("Nexball"),"nb","g_nexball",GAMETYPE_FLAG_TEAMPLAY | GAMETYPE_FLAG_USEPOINTS,"","timelimit=20 pointlimit=5 leadlimit=0",_("Shoot and kick the ball into the enemies goal, keep your goal clean"));
+ this.gametype_init(this, _("Nexball"),"nb","g_nexball",GAMETYPE_FLAG_TEAMPLAY | GAMETYPE_FLAG_USEPOINTS | GAMETYPE_FLAG_WEAPONARENA,"","timelimit=20 pointlimit=5 leadlimit=0",_("Shoot and kick the ball into the enemies goal, keep your goal clean"));
}
METHOD(NexBall, m_generate_mapinfo, void(Gametype this, string v))
{
{
int req = 0;
// TODO: find a better way to check if weapons are required on the map
- if(!(cvar("g_instagib") || cvar("g_overkill") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items")
+ if(!(cvar("g_instagib") || cvar("g_overkill") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items") || !cvar("g_melee_only")
|| cvar("g_race") || cvar("g_cts") || cvar("g_nexball") || cvar("g_ca") || cvar("g_freezetag") || cvar("g_lms")))
req |= MAPINFO_FEATURE_WEAPONS;
return req;
const int GAMETYPE_FLAG_PREFERRED = BIT(2); // preferred (when available) in random selections
const int GAMETYPE_FLAG_PRIORITY = BIT(3); // priority selection when preferred gametype isn't available in random selections
const int GAMETYPE_FLAG_HIDELIMITS = BIT(4); // don't display a score limit needed for winning the match in the scoreboard
+const int GAMETYPE_FLAG_WEAPONARENA = BIT(5); // gametype has a forced weapon arena, weapon arena mutators should disable themselves when this is set
int MAPINFO_TYPE_ALL;
.int m_flags;
ATTRIB(Gametype, frags, bool, true);
/** should this gametype display a score limit in the scoreboard? */
ATTRIB(Gametype, m_hidelimits, bool, false);
+ /** does this gametype enforce its own weapon arena? */
+ ATTRIB(Gametype, m_weaponarena, bool, false);
/** game type defaults */
ATTRIB(Gametype, model2, string);
/** game type description */
this.frags = (gflags & GAMETYPE_FLAG_USEPOINTS);
this.m_priority = ((gflags & GAMETYPE_FLAG_PREFERRED) ? 2 : ((gflags & GAMETYPE_FLAG_PRIORITY) ? 1 : 0));
this.m_hidelimits = (gflags & GAMETYPE_FLAG_HIDELIMITS);
+ this.m_weaponarena = (gflags & GAMETYPE_FLAG_WEAPONARENA);
// same as `1 << m_id`
MAPINFO_TYPE_ALL |= this.items = this.m_flags = (MAPINFO_TYPE_ALL + 1);
#include "sv_buffs.qh"
#include <common/mapobjects/target/music.qh>
+#include <common/mutators/mutator/instagib/_mod.qh>
#include <common/gamemodes/_mod.qh>
#include <server/items/items.qh>
-void buffs_DelayedInit(entity this);
-
-AUTOCVAR(g_buffs, int, -1, "Enable buffs, -1: enabled but no auto location or replacing powerups, 1: enabled and can replace them");
-
-REGISTER_MUTATOR(buffs, autocvar_g_buffs)
-{
- MUTATOR_ONADD
- {
- if(autocvar_g_buffs > 0)
- InitializeEntity(NULL, buffs_DelayedInit, INITPRIO_FINDTARGET);
- }
-}
-
bool buffs_BuffModel_Customize(entity this, entity client)
{
entity player = WaypointSprite_getviewentity(client);
return;
}
-// note: only really useful in teamplay
-void buff_Medic_Heal(entity this)
-{
- FOREACH_CLIENT(IS_PLAYER(it) && it != this && vdist(it.origin - this.origin, <=, autocvar_g_buffs_medic_heal_range),
- {
- if (DIFF_TEAM(it, this))
- {
- continue;
- }
- float hp = GetResource(it, RES_HEALTH);
- if(hp >= autocvar_g_balance_health_regenstable)
- {
- continue;
- }
- Send_Effect(EFFECT_HEALING, it.origin, '0 0 0', 1);
- SetResource(it, RES_HEALTH, bound(0, hp + autocvar_g_buffs_medic_heal_amount, autocvar_g_balance_health_regenstable));
- });
-}
-
float buff_Inferno_CalculateTime(float damg, float offset_x, float offset_y, float intersect_x, float intersect_y, float base)
{
return offset_y + (intersect_y - offset_y) * logn(((damg - offset_x) * ((base - 1) / intersect_x)) + 1, base);
Fire_AddDamage(frag_target, frag_attacker, (frag_damage * autocvar_g_buffs_inferno_damagemultiplier), btime, DEATH_BUFF.m_id);
}
- // this... is ridiculous (TODO: fix!)
- if(STAT(BUFFS, frag_attacker) & BUFF_VAMPIRE.m_itemid)
- if(!frag_target.vehicle)
- if(!ITEM_DAMAGE_NEEDKILL(frag_deathtype))
- if(!IS_DEAD(frag_target))
- if(IS_PLAYER(frag_target) || IS_MONSTER(frag_target))
- if(frag_attacker != frag_target)
- if(!STAT(FROZEN, frag_target))
- if(frag_target.takedamage)
- if(DIFF_TEAM(frag_attacker, frag_target))
- {
- float amount = bound(0, frag_damage * autocvar_g_buffs_vampire_damage_steal,
- GetResource(frag_target, RES_HEALTH));
- GiveResourceWithLimit(frag_attacker, RES_HEALTH, amount, g_pickup_healthsmall_max);
- if (GetResource(frag_target, RES_ARMOR))
- {
- amount = bound(0, frag_damage * autocvar_g_buffs_vampire_damage_steal,
- GetResource(frag_target, RES_ARMOR));
- GiveResourceWithLimit(frag_attacker, RES_ARMOR, amount, g_pickup_armorsmall_max);
- }
- }
-
M_ARGV(4, float) = frag_damage;
M_ARGV(6, vector) = frag_force;
}
+MUTATOR_HOOKFUNCTION(buffs, PlayerDamage_SplitHealthArmor)
+{
+ entity frag_attacker = M_ARGV(1, entity);
+ entity frag_target = M_ARGV(2, entity);
+ if(!(STAT(BUFFS, frag_attacker) & BUFF_VAMPIRE.m_itemid))
+ return;
+ float health_take = bound(0, M_ARGV(4, float), GetResource(frag_target, RES_HEALTH));
+
+ if(time >= frag_target.spawnshieldtime &&
+ frag_target != frag_attacker &&
+ IS_PLAYER(frag_attacker) &&
+ !IS_DEAD(frag_target) && !STAT(FROZEN, frag_target))
+ {
+ GiveResource(frag_attacker, RES_HEALTH,
+ autocvar_g_buffs_vampire_damage_steal * health_take);
+ }
+}
+
MUTATOR_HOOKFUNCTION(buffs, PlayerSpawn)
{
entity player = M_ARGV(0, entity);
if((STAT(BUFFS, player) & BUFF_INVISIBLE.m_itemid) && (player.oldbuffs & BUFF_INVISIBLE.m_itemid))
player.alpha = ((autocvar_g_buffs_invisible_alpha) ? autocvar_g_buffs_invisible_alpha : -1); // powerups reset alpha, so we must enforce this (TODO)
- if(STAT(BUFFS, player) & BUFF_MEDIC.m_itemid)
- if(time >= player.buff_medic_healtime)
- {
- buff_Medic_Heal(player);
- player.buff_medic_healtime = time + autocvar_g_buffs_medic_heal_delay;
- }
-
#define BUFF_ONADD(b) if ( (STAT(BUFFS, player) & (b).m_itemid) && !(player.oldbuffs & (b).m_itemid))
#define BUFF_ONREM(b) if (!(STAT(BUFFS, player) & (b).m_itemid) && (player.oldbuffs & (b).m_itemid))
}
}
}
+
+void buffs_Initialize()
+{
+ // if buffs are above 0, allow random spawning
+ if(autocvar_g_buffs > 0 && autocvar_g_buffs_spawn_count > 0)
+ InitializeEntity(NULL, buffs_DelayedInit, INITPRIO_FINDTARGET);
+}
#pragma once
+#include <common/mutators/base.qh>
+
#include "buffs.qh"
-#include "../instagib/_mod.qh"
+void buffs_Initialize();
+
+AUTOCVAR(g_buffs, int, -1, "Enable buffs, -1: enabled but no auto location or replacing powerups, 1: enabled and can replace them");
+
+REGISTER_MUTATOR(buffs, autocvar_g_buffs)
+{
+ MUTATOR_ONADD
+ {
+ buffs_Initialize();
+ }
+}
bool autocvar_g_buffs_effects;
float autocvar_g_buffs_waypoint_distance;
float autocvar_g_buffs_medic_rot;
float autocvar_g_buffs_medic_max;
float autocvar_g_buffs_medic_regen;
-float autocvar_g_buffs_medic_heal_amount = 15;
-float autocvar_g_buffs_medic_heal_delay = 1;
-float autocvar_g_buffs_medic_heal_range = 400;
float autocvar_g_buffs_vengeance_damage_multiplier;
float autocvar_g_buffs_bash_force;
float autocvar_g_buffs_bash_force_self;
.int buff_ammo_prev_clipload;
// invisible
.float buff_invisible_prev_alpha;
-// medic
-.float buff_medic_healtime;
// disability
.float buff_disability_time;
.float buff_disability_effect_time;
void instagib_extralife(entity this);
void instagib_speed(entity this);
-REGISTER_MUTATOR(mutator_instagib, autocvar_g_instagib && !g_nexball)
+REGISTER_MUTATOR(mutator_instagib, autocvar_g_instagib && !MapInfo_LoadedGametype.m_weaponarena)
{
MUTATOR_ONADD
{
#include "../overkill/sv_overkill.qh"
string autocvar_g_melee_only;
-REGISTER_MUTATOR(melee_only, expr_evaluate(autocvar_g_melee_only) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MUTATOR_IS_ENABLED(ok) && !g_nexball);
+REGISTER_MUTATOR(melee_only, expr_evaluate(autocvar_g_melee_only) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MUTATOR_IS_ENABLED(ok) && !MapInfo_LoadedGametype.m_weaponarena);
MUTATOR_HOOKFUNCTION(melee_only, SetStartItems, CBC_ORDER_LAST)
{
bool NIX_CanChooseWeapon(int wpn);
-REGISTER_MUTATOR(nix, expr_evaluate(cvar_string("g_nix")) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MUTATOR_IS_ENABLED(ok))
+REGISTER_MUTATOR(nix, expr_evaluate(cvar_string("g_nix")) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MUTATOR_IS_ENABLED(ok) && !MapInfo_LoadedGametype.m_weaponarena)
{
MUTATOR_ONADD
{
.float ok_item;
-REGISTER_MUTATOR(ok, expr_evaluate(autocvar_g_overkill) && !MUTATOR_IS_ENABLED(mutator_instagib) && !g_nexball && cvar_string("g_mod_balance") == "Overkill")
+REGISTER_MUTATOR(ok, expr_evaluate(autocvar_g_overkill) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MapInfo_LoadedGametype.m_weaponarena && cvar_string("g_mod_balance") == "Overkill")
{
MUTATOR_ONADD
{
if(time >= frag_target.spawnshieldtime &&
frag_target != frag_attacker &&
IS_PLAYER(frag_attacker) &&
- !IS_DEAD(frag_target))
+ !IS_DEAD(frag_target) && !STAT(FROZEN, frag_target))
{
GiveResource(frag_attacker, RES_HEALTH,
autocvar_g_vampire_factor * damage_take);
MSG_CENTER_NOTIF(FREEZETAG_REVIVE, N_ENABLE, 1, 0, "s1", CPID_Null, "0 0", _("^K3You revived ^BG%s"), "")
MSG_CENTER_NOTIF(FREEZETAG_REVIVE_SELF, N_ENABLE, 0, 0, "", CPID_Null, "0 0", _("^K3You revived yourself"), "")
MSG_CENTER_NOTIF(FREEZETAG_REVIVED, N_ENABLE, 1, 0, "s1", CPID_Null, "0 0", _("^K3You were revived by ^BG%s"), "")
- MSG_CENTER_NOTIF(FREEZETAG_AUTO_REVIVED, N_ENABLE, 0, 1, "f1", CPID_Null, "0 0", _("^K3You were automatically revived after %s seconds"), "")
+ MSG_CENTER_NOTIF(FREEZETAG_AUTO_REVIVED, N_ENABLE, 0, 1, "f1", CPID_Null, "0 0", _("^BGYou were automatically revived after %s seconds"), "")
MSG_CENTER_NOTIF(GENERATOR_UNDERATTACK, N_ENABLE, 0, 0, "", CPID_Null, "0 0", _("^BGThe generator is under attack!"), "")
#include "cl_vehicles.qh"
-const string vCROSS_BURST = "gfx/vehicles/crosshair_burst.tga";
-const string vCROSS_DROP = "gfx/vehicles/crosshair_drop.tga";
-const string vCROSS_GUIDE = "gfx/vehicles/crosshair_guide.tga";
-const string vCROSS_HEAL = "gfx/vehicles/crosshair_heal.tga";
-const string vCROSS_HINT = "gfx/vehicles/crosshair_hint.tga";
-const string vCROSS_LOCK = "gfx/vehicles/crosshair_lock.tga";
-const string vCROSS_RAIN = "gfx/vehicles/crosshair_rain.tga";
-
-entity dropmark;
-
-const int MAX_AXH = 4;
-entity AuxiliaryXhair[MAX_AXH];
-
-.string axh_image;
-.float axh_fadetime;
-.int axh_drawflag;
-
-float alarm1time;
-float alarm2time;
-
void vehicle_alarm(entity e, int ch, Sound s0und)
{
TC(Sound, s0und);
vector autocvar_hud_progressbar_vehicles_ammo1_color;
vector autocvar_hud_progressbar_vehicles_ammo2_color;
+const string vCROSS_BURST = "gfx/vehicles/crosshair_burst.tga";
+const string vCROSS_DROP = "gfx/vehicles/crosshair_drop.tga";
+const string vCROSS_GUIDE = "gfx/vehicles/crosshair_guide.tga";
+const string vCROSS_HEAL = "gfx/vehicles/crosshair_heal.tga";
+const string vCROSS_HINT = "gfx/vehicles/crosshair_hint.tga";
+const string vCROSS_LOCK = "gfx/vehicles/crosshair_lock.tga";
+const string vCROSS_RAIN = "gfx/vehicles/crosshair_rain.tga";
+
+entity dropmark;
+
+const int MAX_AXH = 4;
+entity AuxiliaryXhair[MAX_AXH];
+
+.string axh_image;
+.float axh_fadetime;
+.int axh_drawflag;
+
+float alarm1time;
+float alarm2time;
+
vector vehicleHud_Size;
vector vehicleHud_Pos;
#include <common/mapobjects/defs.qh>
#include <common/mapobjects/teleporters.qh>
#include <common/mapobjects/triggers.qh>
+#include <common/vehicles/vehicles.qh>
#include <server/bot/api.qh>
#include <server/client.qh>
#include <server/damage.qh>
}
}
-float vehicle_altitude(entity this, float amax)
-{
- tracebox(this.origin, this.mins, this.maxs, this.origin - ('0 0 1' * amax), MOVE_WORLDONLY, this);
- return vlen(this.origin - trace_endpos);
-}
-
-vector vehicles_force_fromtag_hover(entity this, string tag_name, float spring_length, float max_power)
-{
- force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
- v_forward = normalize(v_forward) * -1;
- traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
-
- force_fromtag_power = (1 - trace_fraction) * max_power;
- force_fromtag_normpower = force_fromtag_power / max_power;
-
- return v_forward * force_fromtag_power;
-}
-
-vector vehicles_force_fromtag_maglev(entity this, string tag_name, float spring_length, float max_power)
-{
- force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
- v_forward = normalize(v_forward) * -1;
- traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
-
- // TODO - this may NOT be compatible with wall/celing movement, unhardcode 0.25 (engine count multiplier)
- if(trace_fraction == 1.0)
- {
- force_fromtag_normpower = -0.25;
- return '0 0 -200';
- }
-
- force_fromtag_power = ((1 - trace_fraction) - trace_fraction) * max_power;
- force_fromtag_normpower = force_fromtag_power / max_power;
-
- return v_forward * force_fromtag_power;
-}
-
// projectile handling
void vehicles_projectile_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force)
{
const int VHEF_EJECT = 1; /// User pressed exit key 3 times fast (not implemented) or vehicle is dying
const int VHEF_RELEASE = 2; /// Release ownership, client possibly allready dissconnected / went spec / changed team / used "kill" (not implemented)
-float force_fromtag_power;
-float force_fromtag_normpower;
-vector force_fromtag_origin;
-
float vehicles_exit_running;
// macros
bool vehicle_initialize(entity this, Vehicle info, float nodrop);
bool vehicle_impulse(entity this, int imp);
bool vehicles_crushable(entity e);
-float vehicle_altitude(entity this, float amax);
void vehicles_enter(entity pl, entity veh);
IntrusiveList g_vehicle_returners;
/* maxs */ ATTRIB(Bumblebee, m_maxs, vector, '230 130 130');
/* view offset*/ ATTRIB(Bumblebee, view_ofs, vector, '0 0 300');
/* view dist */ ATTRIB(Bumblebee, height, float, 450);
+#ifdef GAMEQC
/* model */ ATTRIB(Bumblebee, mdl, string, "models/vehicles/bumblebee_body.dpm");
/* model */ ATTRIB(Bumblebee, model, string, "models/vehicles/bumblebee_body.dpm");
/* head_model */ ATTRIB(Bumblebee, head_model, string, "");
/* tags */ ATTRIB(Bumblebee, tag_head, string, "");
/* tags */ ATTRIB(Bumblebee, tag_hud, string, "");
/* tags */ ATTRIB(Bumblebee, tag_view, string, "tag_viewport");
+#endif
/* netname */ ATTRIB(Bumblebee, netname, string, "bumblebee");
/* fullname */ ATTRIB(Bumblebee, vehicle_name, string, _("Bumblebee"));
/* icon */ ATTRIB(Bumblebee, m_icon, string, "vehicle_bumble");
entity vehic = player.vehicle;
return = true;
+#ifdef SVQC
if(game_stopped)
{
vehic.solid = SOLID_NOT;
set_movetype(vehic, MOVETYPE_NONE);
return;
}
+#endif
vehicles_frame(vehic, player);
else if (!vehic.racer_air_finished)
vehic.racer_air_finished = time + autocvar_g_vehicle_racer_water_time;
+#ifdef SVQC
if(IS_DEAD(vehic))
{
PHYS_INPUT_BUTTON_ATCK(player) = PHYS_INPUT_BUTTON_ATCK2(player) = false;
return;
}
+#endif
racer_align4point(vehic, player, dt);
+#ifdef SVQC
PHYS_INPUT_BUTTON_ZOOM(player) = PHYS_INPUT_BUTTON_CROUCH(player) = false;
+#endif
vehic.angles_x *= -1;
vector df = vehic.velocity * -autocvar_g_vehicle_racer_friction;
//vehic.velocity_z = ftmp;
- if(CS(player).movement)
+ if(PHYS_CS(player).movement)
{
if(cont & DPCONTENTS_LIQUIDSMASK)
{
- if(CS(player).movement_x) { df += v_forward * ((CS(player).movement_x > 0) ? autocvar_g_vehicle_racer_water_speed_forward : -autocvar_g_vehicle_racer_water_speed_forward); }
- if(CS(player).movement_y) { df += v_right * ((CS(player).movement_y > 0) ? autocvar_g_vehicle_racer_water_speed_strafe : -autocvar_g_vehicle_racer_water_speed_strafe); }
+ if(PHYS_CS(player).movement_x) { df += v_forward * ((PHYS_CS(player).movement_x > 0) ? autocvar_g_vehicle_racer_water_speed_forward : -autocvar_g_vehicle_racer_water_speed_forward); }
+ if(PHYS_CS(player).movement_y) { df += v_right * ((PHYS_CS(player).movement_y > 0) ? autocvar_g_vehicle_racer_water_speed_strafe : -autocvar_g_vehicle_racer_water_speed_strafe); }
}
else
{
- if(CS(player).movement_x) { df += v_forward * ((CS(player).movement_x > 0) ? autocvar_g_vehicle_racer_speed_forward : -autocvar_g_vehicle_racer_speed_forward); }
- if(CS(player).movement_y) { df += v_right * ((CS(player).movement_y > 0) ? autocvar_g_vehicle_racer_speed_strafe : -autocvar_g_vehicle_racer_speed_strafe); }
+ if(PHYS_CS(player).movement_x) { df += v_forward * ((PHYS_CS(player).movement_x > 0) ? autocvar_g_vehicle_racer_speed_forward : -autocvar_g_vehicle_racer_speed_forward); }
+ if(PHYS_CS(player).movement_y) { df += v_right * ((PHYS_CS(player).movement_y > 0) ? autocvar_g_vehicle_racer_speed_strafe : -autocvar_g_vehicle_racer_speed_strafe); }
}
#ifdef SVQC
dforce = autocvar_g_vehicle_racer_water_downforce;
df -= v_up * (vlen(vehic.velocity) * dforce);
- CS(player).movement = vehic.velocity += df * dt;
+ PHYS_CS(player).movement = vehic.velocity += df * dt;
#ifdef SVQC
#endif
setorigin(player, vehic.origin + '0 0 32');
+#ifdef SVQC
player.oldorigin = player.origin; // negate fall damage
+#endif
player.velocity = vehic.velocity;
}
+#endif
+#ifdef SVQC
void racer_think(entity this)
{
float dt = autocvar_g_vehicle_racer_thinkrate;
/* maxs */ ATTRIB(Racer, m_maxs, vector, '120 120 40' * 0.5);
/* view offset*/ ATTRIB(Racer, view_ofs, vector, '0 0 50');
/* view dist */ ATTRIB(Racer, height, float, 200);
+#ifdef GAMEQC
/* model */ ATTRIB(Racer, mdl, string, "models/vehicles/wakizashi.dpm");
/* model */ ATTRIB(Racer, model, string, "models/vehicles/wakizashi.dpm");
/* head_model */ ATTRIB(Racer, head_model, string, "null");
/* tags */ ATTRIB(Racer, tag_head, string, "");
/* tags */ ATTRIB(Racer, tag_hud, string, "");
/* tags */ ATTRIB(Racer, tag_view, string, "tag_viewport");
+#endif
/* netname */ ATTRIB(Racer, netname, string, "racer");
/* fullname */ ATTRIB(Racer, vehicle_name, string, _("Racer"));
/* icon */ ATTRIB(Racer, m_icon, string, "vehicle_racer");
/* maxs */ ATTRIB(Raptor, m_maxs, vector, '80 80 70');
/* view offset*/ ATTRIB(Raptor, view_ofs, vector, '0 0 160');
/* view dist */ ATTRIB(Raptor, height, float, 200);
+#ifdef GAMEQC
/* model */ ATTRIB(Raptor, mdl, string, "models/vehicles/raptor.dpm");
/* model */ ATTRIB(Raptor, model, string, "models/vehicles/raptor.dpm");
/* head_model */ ATTRIB(Raptor, head_model, string, "");
/* tags */ ATTRIB(Raptor, tag_head, string, "");
/* tags */ ATTRIB(Raptor, tag_hud, string, "tag_hud");
/* tags */ ATTRIB(Raptor, tag_view, string, "tag_camera");
+#endif
/* netname */ ATTRIB(Raptor, netname, string, "raptor");
/* fullname */ ATTRIB(Raptor, vehicle_name, string, _("Raptor"));
/* icon */ ATTRIB(Raptor, m_icon, string, "vehicle_raptor");
/* maxs */ ATTRIB(Spiderbot, m_maxs, vector, '75 75 125');
/* view offset*/ ATTRIB(Spiderbot, view_ofs, vector, '0 0 70');
/* view dist */ ATTRIB(Spiderbot, height, float, 170);
+#ifdef GAMEQC
/* model */ ATTRIB(Spiderbot, mdl, string, "models/vehicles/spiderbot.dpm");
/* model */ ATTRIB(Spiderbot, model, string, "models/vehicles/spiderbot.dpm");
/* head_model */ ATTRIB(Spiderbot, head_model, string, "models/vehicles/spiderbot_top.dpm");
/* tags */ ATTRIB(Spiderbot, tag_head, string, "tag_head");
/* tags */ ATTRIB(Spiderbot, tag_hud, string, "tag_hud");
/* tags */ ATTRIB(Spiderbot, tag_view, string, "");
+#endif
/* netname */ ATTRIB(Spiderbot, netname, string, "spiderbot");
/* fullname */ ATTRIB(Spiderbot, vehicle_name, string, _("Spiderbot"));
/* icon */ ATTRIB(Spiderbot, m_icon, string, "vehicle_spider");
#include "vehicles.qh"
+
+#ifdef GAMEQC
+float vehicle_altitude(entity this, float amax)
+{
+ tracebox(this.origin, this.mins, this.maxs, this.origin - ('0 0 1' * amax), MOVE_WORLDONLY, this);
+ return vlen(this.origin - trace_endpos);
+}
+
+vector vehicles_force_fromtag_hover(entity this, string tag_name, float spring_length, float max_power)
+{
+ force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
+ v_forward = normalize(v_forward) * -1;
+ traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
+
+ force_fromtag_power = (1 - trace_fraction) * max_power;
+ force_fromtag_normpower = force_fromtag_power / max_power;
+
+ return v_forward * force_fromtag_power;
+}
+
+vector vehicles_force_fromtag_maglev(entity this, string tag_name, float spring_length, float max_power)
+{
+ force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
+ v_forward = normalize(v_forward) * -1;
+ traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
+
+ // TODO - this may NOT be compatible with wall/celing movement, unhardcode 0.25 (engine count multiplier)
+ if(trace_fraction == 1.0)
+ {
+ force_fromtag_normpower = -0.25;
+ return '0 0 -200';
+ }
+
+ force_fromtag_power = ((1 - trace_fraction) - trace_fraction) * max_power;
+ force_fromtag_normpower = force_fromtag_power / max_power;
+
+ return v_forward * force_fromtag_power;
+}
+#endif
#pragma once
+
+#ifdef GAMEQC
+float force_fromtag_power;
+float force_fromtag_normpower;
+vector force_fromtag_origin;
+
+float vehicle_altitude(entity this, float amax);
+
+vector vehicles_force_fromtag_hover(entity this, string tag_name, float spring_length, float max_power);
+
+vector vehicles_force_fromtag_maglev(entity this, string tag_name, float spring_length, float max_power);
+#endif
}
void Arc_Smoke(Weapon thiswep, entity actor, .entity weaponentity, int fire)
{
- // TODO: spamming this without checking any refires is asking for trouble!
+ // calculate a rough shot origin to show the effect from TODO: move this to the client side!
makevectors(actor.v_angle);
- W_SetupShot_Range(actor,weaponentity,false,0,SND_Null,0,0,0,thiswep.m_id); // TODO: probably doesn't need deathtype, since this is just a prefire effect
+ w_shotdir = v_forward;
+ vector md = actor.(weaponentity).movedir;
+ vector vecs = ((md.x > 0) ? md : '0 0 0');
+ vector dv = v_forward * vecs.x + v_right * -vecs.y + v_up * vecs.z;
+ w_shotorg = actor.origin + actor.view_ofs + dv;
+ //W_SetupShot_Range(actor,weaponentity,false,0,SND_Null,0,0,0,thiswep.m_id);
vector smoke_origin = w_shotorg + actor.velocity*frametime;
if ( actor.arc_overheat > time )
float bob2_smooth;
vector CSQCPlayer_ApplyBobbing(entity this, vector v)
{
- if(this.csqcmodel_isdead)
+ if(this.csqcmodel_isdead || PHYS_INVEHICLE(this))
return v;
// bounded XY speed, used by several effects below
setproperty(VF_ORIGIN, org);
setproperty(VF_ANGLES, ang);
+ vector width = '1 0 0' * cvar("vid_conwidth");
+ vector height = '0 1 0' * cvar("vid_conheight");
nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
corner0 = cs_unproject('0 0 0' + nearclip);
- corner1 = cs_unproject('1 0 0' * cvar("vid_conwidth") + nearclip);
- corner2 = cs_unproject('0 1 0' * cvar("vid_conheight") + nearclip);
- corner3 = cs_unproject('1 0 0' * cvar("vid_conwidth") + '0 1 0' * cvar("vid_conheight") + nearclip);
+ corner1 = cs_unproject(width + nearclip);
+ corner2 = cs_unproject(height + nearclip);
+ corner3 = cs_unproject(width + height + nearclip);
o = WarpZone_FixNearClip(org, corner0, corner1, corner2, corner3);
if(o != '0 0 0')
setproperty(VF_ORIGIN, org + o);
menuNotTheFirstFrame = true;
if (Menu_Active && !cvar("menu_video_played"))
{
- localcmd("cd loop $menu_cdtrack; play sound/announcer/default/welcome.wav\n");
+ localcmd("cd loop $menu_cdtrack\n");
+ // TODO: use this when we have a welcome sound
+ //localcmd("cd loop $menu_cdtrack; play sound/announcer/default/welcome.wav\n");
menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading FIXME
}
// ALWAYS set this cvar; if we start but menu is not active, this means we want no background music!
#include <common/constants.qh>
#include <common/deathtypes/all.qh>
+#include <common/gamemodes/gamemode/cts/cts.qh>
#include <common/items/_mod.qh>
#include <common/mapobjects/subs.qh>
#include <common/mapobjects/triggers.qh>
UNSET_ONGROUND(this);
// dying animation
this.deadflag = DEAD_DYING;
+ // don't play teleportation sounds
+ this.teleportable = TELEPORT_SIMPLE;
STAT(MOVEVARS_SPECIALCOMMAND, this) = false; // sweet release
{
// send new origin data
e.SendFlags |= 0x01;
+ // send full data as the projectile may need resetting
+ // this is a workaround for client-side projectiles erroneously calling their SUB_Stop touch function occasionally
+ // when passing through a warpzone
+ e.SendFlags |= 2;
// mark as teleported
e.SendFlags |= 0x08;
}