1 //**************************************************************************
3 //** Copyright (C) 2021-2022 Ketmar Dark
5 //** This program is free software: you can redistribute it and/or modify
6 //** it under the terms of the GNU General Public License as published by
7 //** the Free Software Foundation, version 3 of the License ONLY.
9 //** This program is distributed in the hope that it will be useful,
10 //** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 //** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 //** GNU General Public License for more details.
14 //** You should have received a copy of the GNU General Public License
15 //** along with this program. If not, see <http://www.gnu.org/licenses/>.
17 //**************************************************************************
18 class Zan_LineSpecialGameInfo : replaces(lastchild of LineSpecialGameInfo);
21 //==========================================================================
23 // PostPlayerClassInit
25 //==========================================================================
26 override void PostPlayerClassInit () {
27 ::PostPlayerClassInit();
29 CreateCvarBool('__k8ZanActive', false, "...", CVAR_ROM);
31 class rpl = GetClassReplacement(FindClass('DoomPlayer'));
32 //printdebug("DoomPlayer replacement: %C", rpl);
33 if (GetClassName(rpl) != 'Zan') {
34 printerror("*** Please, load PlayerZan mod as the last one!");
35 SetShadowCvarB('__k8ZanActive', false);
37 printdebug("PlayerZan mod is loaded.");
38 SetShadowCvarB('__k8ZanActive', true);
40 printdebug("%s player class%s cleared", PlayerClasses.length, (PlayerClasses.length != 1 ? "es" : ""));
41 PlayerClasses.length = 1;
42 PlayerClasses[0] = FindClass('Zan');
46 override void Init () {
50 SetShadowCvarB('k8HSEnabled', true);
51 // distance multiplier (the more -- the less headshot chance on big distances)
52 SetShadowCvarF('k8HSDistMult', 1.1);
54 SetShadowCvarB('k8HSCriticals', true);
55 // don't allow headshots from all projectiles
56 SetShadowCvarB('k8HSAnyProjectile', false);
57 // fastkill/instakill some annoying monsters
58 SetShadowCvarB('k8HSFastKillAnnoyingMonsters', true);
59 // instakill Pain Elementals
60 SetShadowCvarB('k8HSInstaKillPainElementals', true);
61 // instakill Lost Souls
62 SetShadowCvarB('k8HSInstaKillLostSouls', true);
63 // how mush damage should be inflicted to Arch-Vile
64 SetShadowCvarI('k8HSFastKillArchVileDamage', /*230*/66);
66 SetShadowCvarB('plr_allow_damage_thrust', true);
67 SetShadowCvarI('compat_nopassover', 2); // never
68 SetShadowCvarB('sv_decoration_block_projectiles', false);
69 SetShadowCvarB('gm_fix_projectile_attack_offset', true);
70 SetShadowCvarB('sv_ignore_nojump', true);
71 SetShadowCvarB('sv_ignore_nocrouch', true);
72 SetShadowCvarB('sv_ignore_nomlook', true);
73 SetShadowCvarB('sv_disable_jump', false);
74 SetShadowCvarB('sv_disable_crouch', false);
75 SetShadowCvarB('sv_disable_mlook', false);
78 SetShadowCvarF('k8DamageFlashMaxIntensity', 0.3);