it is now possible to control the probability of ChaingunGuy drops (because PainGun...
[k8zan.git] / progs / k8zan_server / classes.vc
bloba6eb118fc9f177aebd40c26ee4456e64eb7a688f
1 //**************************************************************************
2 //**
3 //**  Copyright (C) 2021-2022 Ketmar Dark
4 //**
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.
8 //**
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.
13 //**
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/>.
16 //**
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);
36   } else {
37     printdebug("PlayerZan mod is loaded.");
38     SetShadowCvarB('__k8ZanActive', true);
39   }
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 () {
47   ::Init();
49   // enable headshots
50   SetShadowCvarB('k8HSEnabled', true);
51   // distance multiplier (the more -- the less headshot chance on big distances)
52   SetShadowCvarF('k8HSDistMult', 1.1);
53   // enable criticals
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);
77   // pain flash
78   SetShadowCvarF('k8DamageFlashMaxIntensity', 0.3);
82 #include "EntityExZan.vc"