Merge branch 'terencehill/countrylist_removal' into 'master'
[xonotic/xonotic-data.pk3dir.git] / hook-firing_swap.cfg
1 // This script allows swapping the primary and secondary fire buttons for any weapon
2 //
3 // To install, add
4 //   exec hook-firing_swap.cfg
5 // to your autoexec.cfg
6
7 // NOTE: if combined with other scripts that also hook cl_hook_activeweapon, do
8 //   alias cl_hook_activeweapon "firing_swap $1; commands of other scripts..."
9 // after exec'ing them all from your autoexec.cfg
10
11 // Set the cvars for each gun
12 seta cl_swapattacks_blaster 0
13 seta cl_swapattacks_shotgun 0
14 seta cl_swapattacks_machinegun 0
15 seta cl_swapattacks_mortar 0
16 seta cl_swapattacks_minelayer 0
17 seta cl_swapattacks_electro 0
18 seta cl_swapattacks_crylink 0
19 seta cl_swapattacks_vortex 0
20 seta cl_swapattacks_hagar 0
21 seta cl_swapattacks_devastator 0
22 seta cl_swapattacks_porto 0
23 seta cl_swapattacks_vaporizer 0
24 seta cl_swapattacks_hook 0
25 seta cl_swapattacks_hlac 0
26 seta cl_swapattacks_tuba 0
27 seta cl_swapattacks_rifle 0
28 seta cl_swapattacks_fireball 0
29 seta cl_swapattacks_seeker 0
30
31 // Backwards compatibility with 0.7.0
32 alias cl_swapattacks_laser $cl_swapattacks_blaster
33 alias cl_swapattacks_rocketlauncher $cl_swapattacks_devastator
34 alias cl_swapattacks_uzi $cl_swapattacks_machinegun
35 alias cl_swapattacks_grenadelauncher $cl_swapattacks_mortar
36 alias cl_swapattacks_minstanex $cl_swapattacks_vaporizer
37 alias cl_swapattacks_nex $cl_swapattacks_vortex
38
39 // This part of the code is necessary to keep us firing when we switch weapons while holding a fire button pressed
40 // Also updates the keys before firing, so we don't have to switch to another weapon and back to apply the changes
41 set fire_last 0
42 set fire2_last 0
43 alias +fire "firing_swap_apply $firing_lastweapon; set fire_last 1; +checkattack"
44 alias -fire "set fire_last 0; -checkattack"
45 alias +fire2 "firing_swap_apply $firing_lastweapon; set fire2_last 1; +checkattack2"
46 alias -fire2 "set fire2_last 0; -checkattack2"
47 alias firing_switch_attack_0 ""
48 alias firing_switch_attack2_0 ""
49 alias firing_switch_attack_1 "+fire"
50 alias firing_switch_attack2_1 "+fire2"
51 alias firing_switch "-fire; -fire2; firing_switch_attack_$fire_last; firing_switch_attack2_$fire2_last;"
52
53 // Now apply changes to the key binds and get the weapon we are using
54 alias firing_decision_0 "alias +checkattack +attack; alias -checkattack -attack; alias +checkattack2 +attack2; alias -checkattack2 -attack2"
55 alias firing_decision_1 "alias +checkattack +attack2; alias -checkattack -attack2; alias +checkattack2 +attack; alias -checkattack2 -attack"
56 alias firing_swap_apply "firing_decision_${$1}"
57 alias firing_swap "firing_swap_apply cl_swapattacks_$1; set firing_lastweapon cl_swapattacks_$1; firing_switch"
58
59 // Not correct, but prevents firing from breaking after executing the script until switching weapons
60 alias +fire +attack
61 alias -fire -attack
62 alias +fire2 +attack2
63 alias -fire2 -attack2
64
65 // install
66 alias cl_hook_activeweapon "firing_swap $1"