]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/random_gravity/sv_random_gravity.qc
take3: format 903 files
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / random_gravity / sv_random_gravity.qc
1 #include "sv_random_gravity.qh"
2
3 // Random Gravity
4
5 // Mutator by Mario
6 // Inspired by Player 2
7
8 float autocvar_g_random_gravity_negative_chance;
9 float autocvar_g_random_gravity_min;
10 float autocvar_g_random_gravity_max;
11 float autocvar_g_random_gravity_positive;
12 float autocvar_g_random_gravity_negative;
13 float autocvar_g_random_gravity_delay;
14
15 REGISTER_MUTATOR(random_gravity, cvar("g_random_gravity"))
16 {
17         MUTATOR_ONADD
18         {
19                 cvar_settemp("sv_gravity", cvar_string("sv_gravity")); // settemp current gravity so it's restored on match end
20         }
21 }
22
23 float gravity_delay;
24
25 MUTATOR_HOOKFUNCTION(random_gravity, SV_StartFrame)
26 {
27         if (game_stopped || !cvar("g_random_gravity")) { return false; }
28         if (time < gravity_delay) { return false; }
29         if (time < game_starttime) { return false; }
30         if (round_handler_IsActive() && !round_handler_IsRoundStarted()) { return false; }
31
32         if (random() >= autocvar_g_random_gravity_negative_chance) {
33                 cvar_set("sv_gravity", ftos(bound(autocvar_g_random_gravity_min, random() - random() * -autocvar_g_random_gravity_negative, autocvar_g_random_gravity_max)));
34         } else {
35                 cvar_set("sv_gravity", ftos(bound(autocvar_g_random_gravity_min, random() * autocvar_g_random_gravity_positive, autocvar_g_random_gravity_max)));
36         }
37
38         gravity_delay = time + autocvar_g_random_gravity_delay;
39
40         LOG_TRACE("Gravity is now: ", ftos(autocvar_sv_gravity));
41 }
42
43 MUTATOR_HOOKFUNCTION(random_gravity, BuildMutatorsString)
44 {
45         M_ARGV(0, string) = strcat(M_ARGV(0, string), ":RandomGravity");
46 }
47
48 MUTATOR_HOOKFUNCTION(random_gravity, BuildMutatorsPrettyString)
49 {
50         M_ARGV(0, string) = strcat(M_ARGV(0, string), ", Random gravity");
51 }