From: Mario Date: Fri, 6 Nov 2020 14:09:22 +0000 (+1000) Subject: Merge branch 'master' into Mario/arc_bolt_bounce X-Git-Tag: xonotic-v0.8.5~686^2~2 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=7d7394695b35387453a0c5546567c0421dacb925;hp=ad464bb5417768682f9989dd025871d14a438e68;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into Mario/arc_bolt_bounce --- diff --git a/.tx/merge-base b/.tx/merge-base index 479ea2adf..af8d9b326 100644 --- a/.tx/merge-base +++ b/.tx/merge-base @@ -1 +1 @@ -Fri Oct 30 07:23:43 CET 2020 +Thu Nov 5 07:23:37 CET 2020 diff --git a/common.de.po b/common.de.po index 711181e31..fbdfa2208 100644 --- a/common.de.po +++ b/common.de.po @@ -28,8 +28,8 @@ msgstr "" "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 \n" +"PO-Revision-Date: 2020-11-04 13:31+0000\n" +"Last-Translator: Mirio \n" "Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/" "language/de/)\n" "Language: de\n" @@ -1063,23 +1063,23 @@ msgstr "Du bist tot, drücke ^2%s^7, um neu zu spawnen" #: 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" @@ -6338,90 +6338,90 @@ msgstr "Punkte-Panel" #: 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:" diff --git a/common.de_CH.po b/common.de_CH.po index bb87964c8..ff75d63d5 100644 --- a/common.de_CH.po +++ b/common.de_CH.po @@ -28,8 +28,8 @@ msgstr "" "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 \n" +"PO-Revision-Date: 2020-11-04 13:31+0000\n" +"Last-Translator: Mirio \n" "Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/" "language/de/)\n" "Language: de\n" @@ -1063,23 +1063,23 @@ msgstr "Du bist tot, drücke ^2%s^7, um neu zu spawnen" #: 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" @@ -6339,90 +6339,90 @@ msgstr "Punkte-Panel" #: 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:" diff --git a/common.he.po b/common.he.po index 03fc4b64d..0c24d199d 100644 --- a/common.he.po +++ b/common.he.po @@ -4,6 +4,8 @@ # # Translators: # nad le , 2018 +# Omer I.S., 2020 +# Omer I.S., 2020 # Roi Asher Gerszkoviez , 2020 # Tal Leibman , 2019 msgid "" @@ -11,8 +13,8 @@ msgstr "" "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 \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" @@ -47,7 +49,7 @@ msgstr "" #: qcsrc/client/hud/panel/centerprint.qc:177 #, c-format msgid "Message at time %s" -msgstr "הודעה בזמן %s" +msgstr "הודעה בשעה %s" #: qcsrc/client/hud/panel/centerprint.qc:182 msgid "Generic message" @@ -74,7 +76,7 @@ msgstr "" #: qcsrc/client/hud/panel/infomessages.qc:106 #, c-format msgid "^1Press ^3%s^1 to spectate" -msgstr "^1לחץ ^3%s^1 כדי להשקיף" +msgstr "^1לחצו על ^3%s^1 כדי להשקיף" #: qcsrc/client/hud/panel/infomessages.qc:106 #: qcsrc/menu/xonotic/keybinder.qc:47 @@ -89,12 +91,12 @@ msgstr "" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/client/hud/panel/infomessages.qc:112 msgid "next weapon" -msgstr "הנשק הבא" +msgstr "כלי הנשק הבא" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/client/hud/panel/infomessages.qc:112 msgid "previous weapon" -msgstr "הנשק הקודם" +msgstr "כלי הנשק הקודם" #: qcsrc/client/hud/panel/infomessages.qc:112 #, c-format @@ -109,7 +111,7 @@ msgstr "" #: qcsrc/client/hud/panel/infomessages.qc:114 #: qcsrc/common/vehicles/cl_vehicles.qc:191 msgid "drop weapon" -msgstr "זרוק נשק" +msgstr "זריקת כלי הנשק" #: qcsrc/client/hud/panel/infomessages.qc:114 #: qcsrc/menu/xonotic/keybinder.qc:48 @@ -139,7 +141,7 @@ msgstr "" #: 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!" @@ -241,7 +243,7 @@ msgstr "צ'אט" #: qcsrc/client/hud/panel/quickmenu.qc:787 msgid "QMCMD^Send public message to" -msgstr "QMCMD^שלח הודעה פומבית אל" +msgstr "QMCMD^שליחת הודעה פומבית אל" #: qcsrc/client/hud/panel/quickmenu.qc:788 msgid "QMCMD^:-) / nice one" @@ -253,7 +255,7 @@ msgstr "" #: 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" @@ -1095,7 +1097,7 @@ msgstr "" #: 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!" @@ -1107,15 +1109,15 @@ msgstr "" #: 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" @@ -1145,7 +1147,7 @@ msgstr "" #: qcsrc/client/mapvoting.qc:394 msgid "Vote for a map" -msgstr "הצבע למפה" +msgstr "הצבעה למפה" #: qcsrc/client/mapvoting.qc:411 #, c-format @@ -1231,7 +1233,7 @@ msgstr "" #: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:12 msgid "Capture the Flag" -msgstr "תפוס את הדגל" +msgstr "לתפוס את הדגל" #: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:12 msgid "" @@ -1386,7 +1388,7 @@ msgstr "מרוץ" #: qcsrc/common/gamemodes/gamemode/race/race.qh:11 msgid "Race against other players to the finish line" -msgstr "התחרה נגד שחקנים אחרים לקו הסיום" +msgstr "להתחרות נגד שחקנים אחרים לקו הסיום" #: qcsrc/common/gamemodes/gamemode/race/race.qh:38 msgid "Laps:" @@ -1502,7 +1504,7 @@ msgstr "" #: qcsrc/common/minigames/cl_minigames_hud.qc:432 msgid "Exit Menu" -msgstr "צא מהתפריט" +msgstr "יציאה מהתפריט" #: qcsrc/common/minigames/cl_minigames_hud.qc:443 #: qcsrc/menu/xonotic/dialog_multiplayer.qc:16 @@ -1511,7 +1513,7 @@ msgstr "" #: qcsrc/common/minigames/cl_minigames_hud.qc:446 msgid "Join" -msgstr "הצטרף" +msgstr "הצטרפות" #: qcsrc/common/minigames/cl_minigames_hud.qc:522 msgid "Minigames" @@ -1557,7 +1559,7 @@ msgstr "" #: qcsrc/common/minigames/minigame/bd.qc:1403 msgid "Next Level" -msgstr "שלב הבא" +msgstr "השלב הבא" #: qcsrc/common/minigames/minigame/bd.qc:1404 msgid "Restart" @@ -1570,7 +1572,7 @@ msgstr "" #: qcsrc/common/minigames/minigame/bd.qc:1406 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37 msgid "Save" -msgstr "שמור" +msgstr "שמירה" #: qcsrc/common/minigames/minigame/c4.qc:2 msgid "Connect Four" @@ -1652,15 +1654,15 @@ msgstr "" #: qcsrc/common/minigames/minigame/pong.qc:679 msgid "Start Match" -msgstr "התחל משחק" +msgstr "התחלת סיבוב" #: qcsrc/common/minigames/minigame/pong.qc:680 msgid "Add AI player" -msgstr "הוסף שחקן מחשב" +msgstr "הוספת שחקן מחשב" #: qcsrc/common/minigames/minigame/pong.qc:681 msgid "Remove AI player" -msgstr "הסר שחקן מחשב" +msgstr "הסרת שחקן מחשב" #: qcsrc/common/minigames/minigame/pp.qc:2 msgid "Push-Pull" @@ -1686,7 +1688,7 @@ msgstr "" #: qcsrc/common/minigames/minigame/pp.qc:587 #: qcsrc/common/minigames/minigame/ttt.qc:671 msgid "Next Match" -msgstr "משחק הבא" +msgstr "הסיבוב הבא" #: qcsrc/common/minigames/minigame/ps.qc:2 msgid "Peg Solitaire" @@ -2041,7 +2043,7 @@ msgstr "" #: qcsrc/common/mutators/mutator/waypoints/all.inc:39 msgid "Run here" -msgstr "רוץ לכאן" +msgstr "רוצו לכאן" #: qcsrc/common/mutators/mutator/waypoints/all.inc:45 #: qcsrc/common/mutators/mutator/waypoints/all.inc:48 @@ -2063,7 +2065,7 @@ msgstr "" #: qcsrc/common/mutators/mutator/waypoints/all.inc:57 msgid "Weapon" -msgstr "נשק" +msgstr "כלי נשק" #: qcsrc/common/mutators/mutator/waypoints/all.inc:59 msgid "Monster" @@ -5144,7 +5146,7 @@ msgstr "" #: qcsrc/common/weapons/weapon/shotgun.qh:20 msgid "Shotgun" -msgstr "שוטגן" +msgstr "רובה ציד" #: qcsrc/common/weapons/weapon/tuba.qh:18 #, no-c-format @@ -5418,15 +5420,15 @@ msgstr "" #: 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 "האתר" #: qcsrc/menu/xonotic/credits.qc:51 msgid "Stats" @@ -5442,7 +5444,7 @@ msgstr "" #: qcsrc/menu/xonotic/credits.qc:67 msgid "Level Design" -msgstr "" +msgstr "עיצוב השלבים" #: qcsrc/menu/xonotic/credits.qc:90 msgid "Music / Sound FX" @@ -5462,7 +5464,7 @@ msgstr "" #: qcsrc/menu/xonotic/credits.qc:125 msgid "Game Engine" -msgstr "" +msgstr "מנוע המשחק" #: qcsrc/menu/xonotic/credits.qc:129 msgid "Engine Additions" @@ -5478,7 +5480,7 @@ msgstr "" #: qcsrc/menu/xonotic/credits.qc:148 msgid "Translators" -msgstr "" +msgstr "תרגום" #: qcsrc/menu/xonotic/credits.qc:150 msgid "Asturian" @@ -5490,15 +5492,15 @@ msgstr "" #: 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" @@ -5506,7 +5508,7 @@ msgstr "" #: qcsrc/menu/xonotic/credits.qc:179 msgid "Czech" -msgstr "" +msgstr "צ׳כית" #: qcsrc/menu/xonotic/credits.qc:184 msgid "Dutch" @@ -5514,7 +5516,7 @@ msgstr "" #: qcsrc/menu/xonotic/credits.qc:191 msgid "English (Australia)" -msgstr "" +msgstr "אנגלית (אוסטרליה)" #: qcsrc/menu/xonotic/credits.qc:196 msgid "Finnish" @@ -5522,27 +5524,27 @@ msgstr "" #: 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" @@ -5550,39 +5552,39 @@ msgstr "" #: 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" @@ -5627,7 +5629,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_credits.qh:7 msgid "Credits" -msgstr "קרדיטים" +msgstr "שבחים" #: qcsrc/menu/xonotic/dialog_credits.qh:8 msgid "The Xonotic credits" @@ -5649,7 +5651,7 @@ msgstr "" #: 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" @@ -5686,11 +5688,11 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_firstrun.qc:88 msgid "Save settings" -msgstr "שמור הגדרות" +msgstr "שמירת הגדרות" #: qcsrc/menu/xonotic/dialog_firstrun.qh:6 msgid "Welcome" -msgstr "ברוך הבא" +msgstr "ברוכים הבאים" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:18 msgid "Ammunition display:" @@ -5780,7 +5782,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:20 msgid "Chat size:" -msgstr "גודל צ'אט:" +msgstr "גודל צ׳אט:" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:24 msgid "Chat lifetime:" @@ -5991,7 +5993,7 @@ msgstr "יחידת מידה למהירות:" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:57 msgid "Show" -msgstr "הצג" +msgstr "הצגה" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:60 msgid "Top speed" @@ -6089,11 +6091,11 @@ msgstr "מצב זום:" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:46 msgid "Zoomed in" -msgstr "זום אין" +msgstr "התקרבות" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:47 msgid "Zoomed out" -msgstr "זום אאוט" +msgstr "התרחקות" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:48 msgid "Always zoomed" @@ -6248,7 +6250,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:145 #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:55 msgid "Never" -msgstr "לעולם לא" +msgstr "אף פעם" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:26 #, c-format @@ -6305,11 +6307,11 @@ msgstr "" #: 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:" @@ -6321,7 +6323,7 @@ msgstr "צבע סרגל התחמושת:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qh:6 msgid "Weapons Panel" -msgstr "פאנל הנשקים" +msgstr "פאנל כלי הנשק" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19 msgid "HUD skins" @@ -6440,7 +6442,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_monstertools.qc:23 msgid "Remove" -msgstr "הסר" +msgstr "הסרה" #: qcsrc/menu/xonotic/dialog_monstertools.qc:25 msgid "Move target:" @@ -6516,7 +6518,7 @@ msgstr "ברירת מחדל" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:40 #: qcsrc/menu/xonotic/dialog_settings_misc.qc:57 msgid "Unlimited" -msgstr "בלתי מוגבל" +msgstr "ללא הגבלה" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:74 msgid "Gametype" @@ -6542,7 +6544,7 @@ msgstr "" #: 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" @@ -6600,11 +6602,11 @@ msgstr "מתחיל" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:131 msgid "You will win" -msgstr "אתה תנצח" +msgstr "הניצחון עוד יהיה שלך" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132 msgid "You can win" -msgstr "אתה יכול לנצח" +msgstr "אפשר לנצח" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:133 msgid "You might win" @@ -6670,7 +6672,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:194 msgid "Add all" -msgstr "הוסף הכל" +msgstr "להוסיף הכול" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:195 msgid "Add every available map to your selection" @@ -6678,7 +6680,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:198 msgid "Remove all" -msgstr "הסר הכל" +msgstr "להסיר הכול" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:199 msgid "Remove all the maps from your selection" @@ -6703,7 +6705,7 @@ msgstr "סוגי משחק:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:85 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:257 msgid "Close" -msgstr "סגור" +msgstr "סגירה" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:88 msgid "MAP^Play" @@ -6759,7 +6761,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:71 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:298 msgid "No start weapons" -msgstr "ללא נשקי התחלה" +msgstr "ללא כלי נשק בהתחלה" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:73 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:202 @@ -6792,7 +6794,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:87 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:239 msgid "Weapons stay" -msgstr "נשקים נשארים" +msgstr "כלי נשק נשארים" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:89 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:191 @@ -6932,11 +6934,11 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:273 msgid "Most weapons" -msgstr "רוב הנשקים" +msgstr "רוב כלי הנשק" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:277 msgid "All weapons" -msgstr "כל הנשקים" +msgstr "כל כלי הנשק" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:280 msgid "Special arenas:" @@ -7018,7 +7020,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:92 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:264 msgid "Join!" -msgstr "הצטרף!" +msgstr "הצטרפו!" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:114 #: qcsrc/menu/xonotic/serverlist.qc:1020 @@ -7044,7 +7046,7 @@ msgstr "" #: 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)" @@ -7166,7 +7168,7 @@ msgstr "" #: 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 "אתה באמת רוצה להתנתק עכשיו?" +msgstr "האם אכן ברצונך להתנתק עכשיו?" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13 msgid "Timing a demo will disconnect you from the current match." @@ -7234,7 +7236,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:137 msgid "Reset" -msgstr "אפס" +msgstr "איפוס" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:142 msgid "Previous" @@ -7298,15 +7300,15 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:172 msgid "Gender:" -msgstr "מין:" +msgstr "מגדר:" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:179 msgid "Gender" -msgstr "מין" +msgstr "מגדר" #: qcsrc/menu/xonotic/dialog_quit.qc:11 msgid "Are you sure you want to quit?" -msgstr "אתה בטוח שברצונך לצאת?" +msgstr "האם אכן ברצונך לצאת?" #: qcsrc/menu/xonotic/dialog_quit.qc:15 msgid "Back to work..." @@ -7318,7 +7320,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_quit.qh:7 msgid "Quit the game" -msgstr "צא מהמשחק" +msgstr "יציאה מהמשחק" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:15 msgid "Model:" @@ -7334,7 +7336,7 @@ msgstr "העתק *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:24 msgid "Paste" -msgstr "הדבק" +msgstr "הדבקה" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:26 msgid "Bone:" @@ -7434,7 +7436,7 @@ msgstr "" #: 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" @@ -7479,7 +7481,7 @@ msgstr "הגדרות" #: qcsrc/menu/xonotic/dialog_settings.qh:7 msgid "Change the game settings" -msgstr "שנה את הגדרות המשחק" +msgstr "שינוי הגדרות המשחק" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:29 msgid "Master:" @@ -7519,7 +7521,7 @@ msgstr "קול:" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:93 msgid "Weapons:" -msgstr "נשקים:" +msgstr "כלי נשק:" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:99 msgid "New style sound attenuation" @@ -8016,7 +8018,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:213 msgid "Use normal maps" -msgstr "השתמש במפות רגילות" +msgstr "שימוש במפות רגילות" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:214 msgid "Enable use of directional shading on textures" @@ -8364,7 +8366,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:65 msgid "Gamemode Settings" -msgstr "אפשרויות מצב משחק" +msgstr "הגדרות מצב משחק" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67 msgid "Display capture times in Capture The Flag" @@ -8688,7 +8690,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7 #: qcsrc/menu/xonotic/keybinder.qc:51 msgid "Weapons" -msgstr "נשקים" +msgstr "כלי נשק" #: qcsrc/menu/xonotic/dialog_settings_input.qc:34 msgid "Key Bindings" @@ -8700,7 +8702,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_input.qc:42 msgid "Edit..." -msgstr "ערוך..." +msgstr "עריכה..." #: qcsrc/menu/xonotic/dialog_settings_input.qc:48 msgid "Clear" @@ -8708,7 +8710,7 @@ msgstr "נקה" #: qcsrc/menu/xonotic/dialog_settings_input.qc:53 msgid "Reset all" -msgstr "אפס הכל" +msgstr "לאפס הכול" #: qcsrc/menu/xonotic/dialog_settings_input.qc:58 msgid "Mouse" @@ -8788,7 +8790,7 @@ msgstr "JPJUMP^הכל" #: qcsrc/menu/xonotic/dialog_settings_input.qc:115 #: qcsrc/menu/xonotic/dialog_settings_input.qc:120 msgid "Use joystick input" -msgstr "התשתמש בקלט מג'ויסטיק" +msgstr "שימוש בקלט מג'ויסטיק" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:31 msgid "Command when pressed:" @@ -8800,7 +8802,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:40 msgid "Cancel" -msgstr "בטל" +msgstr "ביטול" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7 msgid "User defined key bind" @@ -9010,11 +9012,11 @@ msgstr "תיאור:" #: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qh:7 msgid "Advanced settings" -msgstr "אפשרויות מתקדמות" +msgstr "הגדרות מתקדמות" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11 msgid "Are you sure you want to reset all settings?" -msgstr "האם אתה בטוח שברצונך לאפס את כל ההגדרות?" +msgstr "האם אכן ברצונך לאפס את כל ההגדרות?" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13 msgid "This will create a backup config in your data directory" @@ -9030,7 +9032,7 @@ msgstr "שפת טקסט" #: qcsrc/menu/xonotic/dialog_settings_user.qc:67 msgid "Set language" -msgstr "קבע שפה" +msgstr "קביעת השפה" #: qcsrc/menu/xonotic/dialog_settings_user.qc:72 msgid "Disable gore effects and harsh language" @@ -9050,11 +9052,11 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16 msgid "Disconnect now" -msgstr "התנתק עכשיו" +msgstr "להתנתק עכשיו" #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:17 msgid "Switch language" -msgstr "החלף שפה" +msgstr "החלפת שפה" #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qh:6 msgid "Warning" @@ -9304,15 +9306,15 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_video.qc:158 msgid "Wait for GPU to finish each frame" -msgstr "חכה עד שהמעבד הגרפי יסיים כל פריים" +msgstr "להמתין לסיום כל פריים ב־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 "" -"גרום למעבד להמתין שהמעבד הגרפי יסיים כל פריים. זה יכול לעזור במקרים של לאגים " -"מוזרים בקלט או בוידאו במחשבים מסויימים." +"לגרום למעבד להמתין שהמעבד הגרפי יסיים כל פריים, זה יכול לעזור במקרים של " +"לאגים מוזרים בקלט או בווידאו במחשבים מסויימים." #: qcsrc/menu/xonotic/dialog_settings_video.qc:163 msgid "Use OpenGL 2.0 shaders (GLSL)" @@ -9635,7 +9637,7 @@ msgstr "פינג" #: qcsrc/menu/xonotic/serverlist.qc:734 msgid "Hostname" -msgstr "שם השרת" +msgstr "שם המארח" #: qcsrc/menu/xonotic/serverlist.qc:735 msgid "Map" @@ -9850,7 +9852,7 @@ msgstr "הצטרף:" #: qcsrc/menu/xonotic/statslist.qc:104 msgid "Last match:" -msgstr "משחק אחרון:" +msgstr "הסיבוב האחרון:" #: qcsrc/menu/xonotic/statslist.qc:111 msgid "Time played:" @@ -9864,7 +9866,7 @@ msgstr "מפה מועדפת:" #: qcsrc/menu/xonotic/statslist.qc:245 #, c-format msgid "Matches:" -msgstr "משחקים:" +msgstr "סיבובים:" #: qcsrc/menu/xonotic/statslist.qc:155 #, c-format @@ -9905,7 +9907,7 @@ msgstr "" #: qcsrc/menu/xonotic/util.qc:420 msgid "Update can be downloaded at:" -msgstr "ניתן להוריד עדכון ב:" +msgstr "העדכון ניתן להורדה באתר:" #: qcsrc/menu/xonotic/util.qc:528 msgid "Autogenerating mapinfo for newly added maps..." @@ -9914,7 +9916,7 @@ msgstr "" #: qcsrc/menu/xonotic/util.qc:566 #, c-format msgid "Update to %s now!" -msgstr "עדכן לגרסה %s עכשיו!" +msgstr "עדכנו לגרסה %s עכשיו!" #: qcsrc/menu/xonotic/util.qc:650 msgid "" @@ -9924,7 +9926,7 @@ msgstr "" #: qcsrc/menu/xonotic/util.qc:780 msgid "Use default" -msgstr "השתמש בברירת מחדל" +msgstr "שימוש בברירת מחדל" #: qcsrc/menu/xonotic/util.qc:800 msgid "Team Color:" diff --git a/languages.txt b/languages.txt index b8051bdc0..f4b17b40b 100644 --- a/languages.txt +++ b/languages.txt @@ -1,6 +1,6 @@ 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% diff --git a/mutators.cfg b/mutators.cfg index 22797f5c0..c437868e3 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -334,9 +334,6 @@ set g_buffs_medic_survive_health 5 "amount of health player survives with after 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" diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index e5f00f946..f53ea725c 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -618,7 +618,7 @@ void CSQCModel_Hook_PreDraw(entity this, bool isplayer) 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) diff --git a/qcsrc/client/shownames.qc b/qcsrc/client/shownames.qc index e81dd5b87..af4d766ec 100644 --- a/qcsrc/client/shownames.qc +++ b/qcsrc/client/shownames.qc @@ -125,20 +125,33 @@ void Draw_ShowNames(entity this) } 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) diff --git a/qcsrc/common/gamemodes/gamemode/nexball/nexball.qh b/qcsrc/common/gamemodes/gamemode/nexball/nexball.qh index 9a8fca3ab..a8fdaa4ef 100644 --- a/qcsrc/common/gamemodes/gamemode/nexball/nexball.qh +++ b/qcsrc/common/gamemodes/gamemode/nexball/nexball.qh @@ -8,7 +8,7 @@ void HUD_Mod_NexBall(vector pos, vector mySize); 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)) { diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 3ef0b74b7..facfe02b7 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -1137,7 +1137,7 @@ int MapInfo_CurrentFeatures() { 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; diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index 2d350b2fe..be1a4ef7c 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -21,6 +21,7 @@ const int GAMETYPE_FLAG_USEPOINTS = BIT(1); // gametype has point-based sc 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; @@ -41,6 +42,8 @@ CLASS(Gametype, Object) 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 */ @@ -107,6 +110,7 @@ CLASS(Gametype, Object) 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); diff --git a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc index 50b5d91b5..66cd90072 100644 --- a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc +++ b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc @@ -1,22 +1,10 @@ #include "sv_buffs.qh" #include +#include #include #include -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); @@ -443,25 +431,6 @@ void buff_Vengeance_DelayedDamage(entity this) 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); @@ -557,32 +526,28 @@ MUTATOR_HOOKFUNCTION(buffs, Damage_Calculate) 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); @@ -903,13 +868,6 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) 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)) @@ -1069,3 +1027,10 @@ void buffs_DelayedInit(entity this) } } } + +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); +} diff --git a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qh b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qh index b58581187..0a39b35eb 100644 --- a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qh +++ b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qh @@ -1,8 +1,20 @@ #pragma once +#include + #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; @@ -24,9 +36,6 @@ float autocvar_g_buffs_medic_survive_health; 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; @@ -58,8 +67,6 @@ float autocvar_g_buffs_luck_damagemultiplier = 3; .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; diff --git a/qcsrc/common/mutators/mutator/instagib/sv_instagib.qh b/qcsrc/common/mutators/mutator/instagib/sv_instagib.qh index b3216cdcc..f50f0f947 100644 --- a/qcsrc/common/mutators/mutator/instagib/sv_instagib.qh +++ b/qcsrc/common/mutators/mutator/instagib/sv_instagib.qh @@ -31,7 +31,7 @@ void instagib_invisibility(entity this); 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 { diff --git a/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc b/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc index a56efaf83..2596770da 100644 --- a/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc +++ b/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc @@ -3,7 +3,7 @@ #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) { diff --git a/qcsrc/common/mutators/mutator/nix/sv_nix.qc b/qcsrc/common/mutators/mutator/nix/sv_nix.qc index 0ec051a8c..e23d533ed 100644 --- a/qcsrc/common/mutators/mutator/nix/sv_nix.qc +++ b/qcsrc/common/mutators/mutator/nix/sv_nix.qc @@ -39,7 +39,7 @@ float nix_nextweapon; 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 { diff --git a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qh b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qh index 63e3c19ef..4712ec2fa 100644 --- a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qh +++ b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qh @@ -8,7 +8,7 @@ bool autocvar_g_overkill_filter_armormega; .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 { diff --git a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc index 12e4bdea4..f4562a99e 100644 --- a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc +++ b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc @@ -17,7 +17,7 @@ MUTATOR_HOOKFUNCTION(vampire, PlayerDamage_SplitHealthArmor) 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); diff --git a/qcsrc/common/notifications/all.inc b/qcsrc/common/notifications/all.inc index 275d25b0f..d692d73c8 100644 --- a/qcsrc/common/notifications/all.inc +++ b/qcsrc/common/notifications/all.inc @@ -667,7 +667,7 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input != 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!"), "") diff --git a/qcsrc/common/vehicles/cl_vehicles.qc b/qcsrc/common/vehicles/cl_vehicles.qc index 971a5ebad..a9f44a2c2 100644 --- a/qcsrc/common/vehicles/cl_vehicles.qc +++ b/qcsrc/common/vehicles/cl_vehicles.qc @@ -1,25 +1,5 @@ #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); diff --git a/qcsrc/common/vehicles/cl_vehicles.qh b/qcsrc/common/vehicles/cl_vehicles.qh index f455e86c6..ff9448fdd 100644 --- a/qcsrc/common/vehicles/cl_vehicles.qh +++ b/qcsrc/common/vehicles/cl_vehicles.qh @@ -10,6 +10,26 @@ bool autocvar__vehicles_shownchasemessage; 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; diff --git a/qcsrc/common/vehicles/sv_vehicles.qc b/qcsrc/common/vehicles/sv_vehicles.qc index 8adfb4f0c..bbecb83da 100644 --- a/qcsrc/common/vehicles/sv_vehicles.qc +++ b/qcsrc/common/vehicles/sv_vehicles.qc @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -172,43 +173,6 @@ void vehicles_locktarget(entity this, float incr, float decr, float _lock_time) } } -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) { diff --git a/qcsrc/common/vehicles/sv_vehicles.qh b/qcsrc/common/vehicles/sv_vehicles.qh index a92da29fb..95ab1cfa2 100644 --- a/qcsrc/common/vehicles/sv_vehicles.qh +++ b/qcsrc/common/vehicles/sv_vehicles.qh @@ -92,10 +92,6 @@ const int VHEF_NORMAL = 0; /// User pressed exit key 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 @@ -111,7 +107,6 @@ void vehicles_exit(entity vehic, int eject); 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; diff --git a/qcsrc/common/vehicles/vehicle/bumblebee.qh b/qcsrc/common/vehicles/vehicle/bumblebee.qh index 4c226f97a..d71dcd6c3 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee.qh +++ b/qcsrc/common/vehicles/vehicle/bumblebee.qh @@ -8,6 +8,7 @@ CLASS(Bumblebee, Vehicle) /* 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, ""); @@ -15,6 +16,7 @@ CLASS(Bumblebee, Vehicle) /* 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"); diff --git a/qcsrc/common/vehicles/vehicle/racer.qc b/qcsrc/common/vehicles/vehicle/racer.qc index 606d11505..59c4c9333 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qc +++ b/qcsrc/common/vehicles/vehicle/racer.qc @@ -155,6 +155,7 @@ bool racer_frame(entity this, float dt) entity vehic = player.vehicle; return = true; +#ifdef SVQC if(game_stopped) { vehic.solid = SOLID_NOT; @@ -162,6 +163,7 @@ bool racer_frame(entity this, float dt) set_movetype(vehic, MOVETYPE_NONE); return; } +#endif vehicles_frame(vehic, player); @@ -171,15 +173,19 @@ bool racer_frame(entity this, float dt) 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; @@ -203,17 +209,17 @@ bool racer_frame(entity this, float dt) 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 @@ -291,7 +297,7 @@ bool racer_frame(entity this, float dt) 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 @@ -375,10 +381,14 @@ bool racer_frame(entity this, float dt) #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; diff --git a/qcsrc/common/vehicles/vehicle/racer.qh b/qcsrc/common/vehicles/vehicle/racer.qh index 3c348ae1c..e87d1714b 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qh +++ b/qcsrc/common/vehicles/vehicle/racer.qh @@ -8,6 +8,7 @@ CLASS(Racer, Vehicle) /* 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"); @@ -15,6 +16,7 @@ CLASS(Racer, Vehicle) /* 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"); diff --git a/qcsrc/common/vehicles/vehicle/raptor.qh b/qcsrc/common/vehicles/vehicle/raptor.qh index 954d54aea..2532a9cbe 100644 --- a/qcsrc/common/vehicles/vehicle/raptor.qh +++ b/qcsrc/common/vehicles/vehicle/raptor.qh @@ -8,6 +8,7 @@ CLASS(Raptor, Vehicle) /* 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, ""); @@ -15,6 +16,7 @@ CLASS(Raptor, Vehicle) /* 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"); diff --git a/qcsrc/common/vehicles/vehicle/spiderbot.qh b/qcsrc/common/vehicles/vehicle/spiderbot.qh index 414e0f805..8301cd607 100644 --- a/qcsrc/common/vehicles/vehicle/spiderbot.qh +++ b/qcsrc/common/vehicles/vehicle/spiderbot.qh @@ -8,6 +8,7 @@ CLASS(Spiderbot, Vehicle) /* 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"); @@ -15,6 +16,7 @@ CLASS(Spiderbot, Vehicle) /* 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"); diff --git a/qcsrc/common/vehicles/vehicles.qc b/qcsrc/common/vehicles/vehicles.qc index 5e7736501..c96fff633 100644 --- a/qcsrc/common/vehicles/vehicles.qc +++ b/qcsrc/common/vehicles/vehicles.qc @@ -1 +1,40 @@ #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 diff --git a/qcsrc/common/vehicles/vehicles.qh b/qcsrc/common/vehicles/vehicles.qh index 6f70f09be..6e1bcd1a1 100644 --- a/qcsrc/common/vehicles/vehicles.qh +++ b/qcsrc/common/vehicles/vehicles.qh @@ -1 +1,13 @@ #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 diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index 4b159019e..c74f6079a 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -578,9 +578,14 @@ void W_Arc_Attack(Weapon thiswep, entity actor, .entity weaponentity, int fire) } 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 ) diff --git a/qcsrc/lib/csqcmodel/cl_player.qc b/qcsrc/lib/csqcmodel/cl_player.qc index 247f94100..664e67e8b 100644 --- a/qcsrc/lib/csqcmodel/cl_player.qc +++ b/qcsrc/lib/csqcmodel/cl_player.qc @@ -306,7 +306,7 @@ float bobfall_speed; 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 diff --git a/qcsrc/lib/warpzone/client.qc b/qcsrc/lib/warpzone/client.qc index 26304b4f3..95c78e389 100644 --- a/qcsrc/lib/warpzone/client.qc +++ b/qcsrc/lib/warpzone/client.qc @@ -275,11 +275,13 @@ void WarpZone_FixView() 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); diff --git a/qcsrc/menu/menu.qc b/qcsrc/menu/menu.qc index 84caecb75..cb61d3943 100644 --- a/qcsrc/menu/menu.qc +++ b/qcsrc/menu/menu.qc @@ -708,7 +708,9 @@ void m_draw(float width, float height) 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! diff --git a/qcsrc/server/items/items.qc b/qcsrc/server/items/items.qc index 22cb54abc..36932f0ce 100644 --- a/qcsrc/server/items/items.qc +++ b/qcsrc/server/items/items.qc @@ -2,6 +2,7 @@ #include #include +#include #include #include #include diff --git a/qcsrc/server/player.qc b/qcsrc/server/player.qc index b5fee52d5..fa0818283 100644 --- a/qcsrc/server/player.qc +++ b/qcsrc/server/player.qc @@ -551,6 +551,8 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, 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 diff --git a/qcsrc/server/weapons/csqcprojectile.qc b/qcsrc/server/weapons/csqcprojectile.qc index 2cd09d7fe..07f6f5c66 100644 --- a/qcsrc/server/weapons/csqcprojectile.qc +++ b/qcsrc/server/weapons/csqcprojectile.qc @@ -117,6 +117,10 @@ void UpdateCSQCProjectileAfterTeleport(entity e) { // 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; }