Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
pages.qc
Go to the documentation of this file.
1#include "pages.qh"
2
18
19REGISTER_INTRODUCTION_PAGE(0, _("About this guide"))
20{
22 PAR(_("Welcome to Xonotic, the free and fast arena shooter!"));
23 PAR(_("This guide covers the basics one should know about the weapons, items, and other aspects of the game, "
24 "but most of what you will learn will come from trying it out in practice."));
25 PAR(_("Please note that this guide describes the default game behavior with vanilla settings. "
26 "Xonotic is highly customizable and there are tons of servers out there that run with lightly or highly modified settings."));
27 PAR(_("You can usually find out which settings are modified by issuing %s in console after connecting to a server."), "^3cvar_changes^7");
29}
30REGISTER_INTRODUCTION_PAGE(1, _("Community"))
31{
32 string comm_channels = sprintf(_("%s on Matrix, %s on QuakeNet IRC, or the Discord"), "^5#main:xonotic.org^7", "^5#xonotic^7"); // string isolated as it's subject to change
34 PAR(_("Xonotic stands out for its friendly, mature, and welcoming player community, and many long-term players argue that this is probably one of the best things about Xonotic. "
35 "If you approach other players friendly and respectfully, this will be recognized, while acting toxic on the other hand will not make your life easier on the servers."));
36 PAR(_("The best way to get in touch with the community is to just start playing online and use the in-game chat. "
37 "You can also connect to the official communication channels (%s), and of course the official forum."), comm_channels);
39}
40REGISTER_INTRODUCTION_PAGE(2, _("Getting good"))
41{
43 PAR(_("The skill gap between new and experienced players is often immense. "
44 "However, this is mostly because experienced players have learned how to make use of the game mechanics. "
45 "If you see experienced players doing tricks you don't understand, don't hesitate to ask anyone on the server!"));
46 PAR(_("Another way to learn is to spectate experienced players. "
47 "Observe which weapons they combo and the movement techniques they make use of. "
48 "Also look at which weapons they choose depending on the gameplay situation, for example in close combat, mid-range battles, or against groups of opponents."));
49 PAR(_("The learning curve is very steep. That said, understanding how the game works will enable you to speed around the map and apply effective weapon combos in no time."));
51}
52REGISTER_INTRODUCTION_PAGE(3, _("XonStat"))
53{
55 PAR(_("XonStat is the integrated player statistics application for Xonotic. "
56 "It stores vital stats like your kill-death ratio, weapon damage and accuracy, and scoreboards from past games."));
57 PAR(_("Tracking is completely opt-in, and no login is required."));
58 PAR(_("Some of the statistics are available in-game on your player profile, while the rest are accessible at %s."), "^5stats.xonotic.org^7");
60}
61
62REGISTER_MOVEMENT_PAGE(0, _("Introduction"))
63{
65 PAR(_("Xonotic is a very fast-paced arena shooter. Fast-paced does not only relate to reaction times but also to movement speed. "
66 "That means mastering movement skills is an essential part of Xonotic gameplay and must not be underestimated."));
67 PAR(_("For a new player, the most important tricks to learn are:"));
68 PAR("* %s\n* %s\n* %s\n* %s\n* %s\n* %s",
69 _("Bunny Hopping"),
70 _("Strafe Turning"),
71 _("Blaster Jumping"),
72 _("Rocket Flying"),
73 _("Crylink Running"),
74 _("Ramp Jumping"));
76}
77REGISTER_MOVEMENT_PAGE(1, _("Bunny Hopping"))
78{
80 PAR(_("Bunny hopping (\"bhopping\") is a technique known also from other arena shooters."));
81 PAR(_("Due to air control, you can accelerate while in the air far beyond the maximum ground movement speed. "
82 "To avoid ground friction, players constantly hop by simply keeping %s pressed, so that ground contact doesn't slow them down. "
83 "This allows you to get around the map much faster than if you would just walk."), strcat("^3", _("jump"), "^7"));
84 PAR(_("Therefore, keeping %s held while moving quickly is one of the most essential movement strategies, used by all experienced players."), strcat("^3", _("jump"), "^7"));
85 PAR(_("With default settings, the speed you can reach by bunny hopping is capped at 900 qu/s (\"units per second\"). "
86 "CTS/DeFRaG servers usually run with different CPMA-like physics that remove this cap."));
88}
89REGISTER_MOVEMENT_PAGE(2, _("Strafe Turning"))
90{
92 PAR(_("Bunny hopping around corners requires \"strafe turning\" or you will lose a lot of speed (or simply not be able to make the turn). "
93 "Strafe turning is a method used to quickly change the direction you're traveling while mid-air, without losing speed."));
94 PAR(_("While bunny hopping, first release %s, then press the strafe key into the turn direction (%s or %s), then start turning smoothly into the turn direction. "
95 "As always, during the entire strafe turn keep %s held."), strcat("^3", _("move forward"), "^7"), strcat("^3", _("strafe left"), "^7"), strcat("^3", _("strafe right"), "^7"), strcat("^3", _("jump"), "^7"));
96 PAR(_("Note that if you press the strafe key before releasing the forward key, you will suffer a speed penalty."));
97 PAR(_("If you do it right, you will even continue to accelerate in strafe turns."));
98 PAR(_("For an illustration of this technique, see %s."), "^5xonotic.org/guide^7"); // shared message
100}
101REGISTER_MOVEMENT_PAGE(3, _("Blaster Jumping"))
102{
104 PAR(_("In most situations, the %s is more a movement tool than a weapon. "
105 "That's why many players will often have single digit accuracy for the %s. "
106 "It is instead especially useful to make high jumps."), COLORED_NAME(WEP_BLASTER), COLORED_NAME(WEP_BLASTER));
107 PAR(_("To do a \"laser jump,\" simply fire the %s at your own feet and jump immediately afterwards. "
108 "Experiment a bit with the timing of firing the %s and jumping to get a feeling of which timings will get you how high."), COLORED_NAME(WEP_BLASTER), COLORED_NAME(WEP_BLASTER));
110}
111REGISTER_MOVEMENT_PAGE(4, _("Wall Blastering"))
112{
114 PAR(_("If you don't fire the %s at the floor but instead against a wall next to you, you can get significant horizontal speed. "
115 "You can do this to pick up speed off the stand or even when passing a wall while already bunny hopping."), COLORED_NAME(WEP_BLASTER));
116 PAR(_("To use this technique, start a bunny hop. Right after jumping, flick back with your mouse at about 8 o'clock if the wall is to your left (or 4 o'clock if the wall is to your right), aim at the level of your head, and fire the %s. "
117 "Immediately flick back to your movement direction and continue to bunny hop."), COLORED_NAME(WEP_BLASTER));
118 PAR(_("In order to waste as little speed as possible while flicking back, switch to a strafe key for the duration of the flick. "
119 "This means using %s if the wall is to your left, and %s if the wall is to your right."), strcat("^3", _("strafe left"), "^7"), strcat("^3", _("strafe right"), "^7"));
120 PAR(_("For an illustration of this technique, see %s."), "^5xonotic.org/guide^7"); // shared message
122}
123REGISTER_MOVEMENT_PAGE(5, _("Rocket Flying"))
124{
126 PAR(_("The %s can be used just like the %s for movement, but it inflicts much more damage to the player. "
127 "In gametypes without self damage however it is a very versatile movement tool."), COLORED_NAME(WEP_DEVASTATOR), COLORED_NAME(WEP_BLASTER));
128 PAR(_("While mid-air, you can also fire a rocket underneath yourself and immediately detonate it. "
129 "The explosion will push you upwards a little bit, and can prolong a jump."));
130 PAR(_("Note that this strategy only really works if the %s mutator is enabled."), COLORED_NAME(MUTATOR_rocketflying));
132}
133REGISTER_MOVEMENT_PAGE(6, _("Crylink Running"))
134{
136 PAR(_("The drag force of the %s secondary fire can not only break other players' movement, but can also give yourself a significant speed boost."), COLORED_NAME(WEP_CRYLINK));
137 PAR(_("To \"crylink run,\" shoot the %s secondary at the floor (or a parallel wall) just in front of you and begin bunny hopping to catapult yourself off the stand into high speed. "
138 "Finding the best angle to aim at takes some practice, and changes depending on your speed."), COLORED_NAME(WEP_CRYLINK), COLORED_NAME(WEP_CRYLINK));
140}
141REGISTER_MOVEMENT_PAGE(7, _("Crylink Wall Climbing"))
142{
144 PAR(_("By shooting the %s secondary against a wall next to you (just above your head), you can climb up walls quickly. "
145 "This is called \"wall climbing\" with the %s."), COLORED_NAME(WEP_CRYLINK), COLORED_NAME(WEP_CRYLINK));
146 PAR(_("This is also a good way to save yourself from falling off the map, as it reliably stops your downfall."));
148}
149REGISTER_MOVEMENT_PAGE(8, _("Ramp Jumping"))
150{
152 PAR(_("Ramps are an important part of Xonotic map design. "
153 "Any sloped surface that you hit with the right speed and the right angle will give you a significant upwards boost and enable you to reach places that are otherwise accessible only with laser jumps, which cost health and make noise."));
154 PAR(_("When doing ramp jumps, it is vital to hit the ramp at a flat angle to receive the upwards boost and not lose too much speed."));
155 PAR(_("In order to make a ramp jump, approach a sloped surface (\"ramp\"), jump just before the ramp and keep %s pressed so you jump again once you hit the ramp."), strcat("^3", _("jump"), "^7"));
156 PAR(_("The higher the speed you have when you hit the ramp (at the right angle), the stronger the upwards boost. "
157 "As always, you can gain speed before the ramp by bunny hopping."));
158 PAR(_("Note that when trying to make a ramp jump while bunny hopping, it is vital to time your hops carefully so you get the angle right."));
159 PAR(_("For an illustration of this technique, see %s."), "^5xonotic.org/guide^7"); // shared message
161}
162REGISTER_MOVEMENT_PAGE(9, _("Advanced Movement"))
163{
165 PAR(_("Advanced techniques like \"strafe jumping\" (\"strafing\") or \"circle jumping\" (\"CJ\") offer only limited benefits in vanilla gameplay, "
166 "but are crucial on CTS/DeFRaG servers that use slightly different physics."));
167 PAR(_("If you want to master these techniques, be sure to check out %s."), "^5xdf.gg/guide^7");
169}
170
171REGISTER_MODS_PAGE(0, _("Overkill"))
172{
174 PAR(_("%s is a mod that heavily changes the game, giving players fewer but more powerful weapons, nades, and more movement options."), COLORED_NAME(MUTATOR_ok));
175 PAR(_("In terms of weaponry, players have infinite ammo and spawn in with the %s, %s, and %s, and can pick up the %s and %s superweapons on the map sometimes. "
176 "These weapons are a lot more powerful than the regular weapons, so their time-to-kill is quite low."), COLORED_NAME(WEP_OVERKILL_SHOTGUN), COLORED_NAME(WEP_OVERKILL_MACHINEGUN), COLORED_NAME(WEP_OVERKILL_NEX), COLORED_NAME(WEP_OVERKILL_HMG), COLORED_NAME(WEP_OVERKILL_RPC));
177 PAR(_("The secondary fire of all weapons shoots a laser which does not damage or push enemies, but can be used to push yourself around. "
178 "Also since the %s mutator is active, all players have offhand nades."), COLORED_NAME(MUTATOR_nades));
179 PAR(_("As for movement tricks, %s is enabled by default in %s, allowing for rapidly changing your movement direction."), COLORED_NAME(MUTATOR_dodging), COLORED_NAME(MUTATOR_ok));
181}
182
183REGISTER_MODS_PAGE(1, _("XPM"))
184{
186 PAR(_("%s (\"Xonotic Pro-Mode\") is a set of gameplay settings often used for competitive play, particularly in %s."), _("XPM"), COLORED_NAME(MAPINFO_TYPE_DUEL));
187 PAR(_("It adds extra rules for picking up items, preventing players with 100 or more health or armor from taking %s, %s, %s, and %s pickups, in order to give other players a fairer chance of rebuilding their stack. "
188 "It also disables spawn protection and enables friendly fire in team-based gametypes."), COLORED_NAME(ITEM_HealthBig), COLORED_NAME(ITEM_HealthMedium), COLORED_NAME(ITEM_ArmorBig), COLORED_NAME(ITEM_ArmorMedium));
190}
#define COLORED_NAME(this)
Definition color.qh:195
string strzone(string s)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
this m_description
Definition pages.qc:28
PAGE_TEXT_INIT()
#define REGISTER_INTRODUCTION_PAGE(id, name)
Definition pages.qh:31
#define REGISTER_MODS_PAGE(id, name)
Definition pages.qh:39
#define REGISTER_MOVEMENT_PAGE(id, name)
Definition pages.qh:35
#define PAGE_TEXT
Definition string.qh:643
#define PAR(...)
Adds an individually translatable paragraph to PAGE_TEXT without having to deal with strcat and sprin...
Definition string.qh:649