1 //**************************************************************************
3 //** ## ## ## ## ## #### #### ### ###
4 //** ## ## ## ## ## ## ## ## ## ## #### ####
5 //** ## ## ## ## ## ## ## ## ## ## ## ## ## ##
6 //** ## ## ######## ## ## ## ## ## ## ## ### ##
7 //** ### ## ## ### ## ## ## ## ## ##
8 //** # ## ## # #### #### ## ##
10 //** Copyright (C) 1999-2006 Jānis Legzdiņš
11 //** Copyright (C) 2018-2023 Ketmar Dark
13 //** This program is free software: you can redistribute it and/or modify
14 //** it under the terms of the GNU General Public License as published by
15 //** the Free Software Foundation, version 3 of the License ONLY.
17 //** This program is distributed in the hope that it will be useful,
18 //** but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 //** GNU General Public License for more details.
22 //** You should have received a copy of the GNU General Public License
23 //** along with this program. If not, see <http://www.gnu.org/licenses/>.
25 //**************************************************************************
26 #ifndef VAVOOM_DECORATE_HEADER
27 #define VAVOOM_DECORATE_HEADER
35 GAME_Raven
= GAME_Heretic
|GAME_Hexen
,
40 enum { MAX_DECORATE_TRANSLATIONS
= 0xffff };
41 enum { MAX_BLOOD_TRANSLATIONS
= 0xffff };
44 struct VLineSpecInfo {
50 void ReadLineSpecialInfos ();
51 void ProcessDecorateScripts ();
52 void ShutdownDecorate ();
53 void CompilerReportMemory ();
55 // returns `nullptr` if not found
56 extern const VLineSpecInfo
*FindLineSpecialByName (VStr s
);
57 // returns `nullptr` if not found
58 extern const VLineSpecInfo
*FindLineSpecialByNumber (int num
);
59 // returns 0 if not found
60 extern int FindScriptLineSpecialByName (VStr s
);
62 // list of all classes that need to be limited in some way
63 extern TArray
<VClass
*> NumberLimitedClasses
;
65 // GameInfo is not spawned yet, so keep them here
66 extern TArray
<VDamageFactor
> CustomDamageFactors
;
68 // do not spawn classes from this set
69 // it is filled by decorate parser, and used to block spawning of known blood
70 extern TMapNC
<VName
, bool> BlockedSpawnSet
;
71 // forced replacements
72 extern TMapNC
<VName
, VClass
*> ForceReplacements
;
73 // classes the loader can skip
74 extern TMapNC
<VName
, bool> ListLoaderCanSkipClass
;
76 extern bool decoIgnorePlayerSpeed
;
77 extern bool decorateSkipBDWClasses
;
79 // 0: no game defs, otherwise bitor of GAME_xxx
80 extern vuint32
SC_ParseGameDef (VScriptParser
*sc
, bool allowAny
=true);