summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/con_.c17
-rw-r--r--src/gametype.h7
2 files changed, 14 insertions, 10 deletions
diff --git a/src/con_.c b/src/con_.c
index c9f48ea..54574bc 100644
--- a/src/con_.c
+++ b/src/con_.c
@@ -553,15 +553,20 @@ bool con_detect(int pluginver) {
if (_con_iface = factory_engine("VEngineCvar004", 0)) {
// TODO(compat): are there any cases where 004 is incompatible? could
// this crash? find out!
- if (pluginver == 3) _gametype_tag |= _gametype_tag_2013;
- else _gametype_tag |= _gametype_tag_OrangeBox;
- // detect Portal 1 versions while we're here...
- if (FindCommand_nonp2(_con_iface, "upgrade_portalgun")) {
- _gametype_tag |= _gametype_tag_Portal1;
+ if (pluginver == 3) {
+ _gametype_tag |= _gametype_tag_2013;
+ // this was added *some time* after 4104, or around 5135. don't know
+ // exactly. good enough for our current compatibility needs.
if (!FindVar_nonp2(_con_iface, "tf_escort_score_rate")) {
- _gametype_tag |= _gametype_tag_Portal1_3420;
+ _gametype_tag |= _gametype_tag_Near4104;
}
}
+ else /* pluginver == 2 */ {
+ _gametype_tag |= _gametype_tag_OrangeBox;
+ }
+ if (FindCommand_nonp2(_con_iface, "upgrade_portalgun")) {
+ _gametype_tag |= _gametype_tag_Portal1;
+ }
else if (FindCommand_nonp2(_con_iface, "phys_swap")) {
_gametype_tag |= _gametype_tag_HL2series;
}
diff --git a/src/gametype.h b/src/gametype.h
index 4e2dc55..b21c98b 100644
--- a/src/gametype.h
+++ b/src/gametype.h
@@ -26,8 +26,8 @@ extern u32 _gametype_tag;
#define GAMETYPE_BASETAGS(ALL, WINDOWSONLY) \
/* general engine branches used in a bunch of stuff */ \
WINDOWSONLY(OE) \
- ALL(OrangeBox) \
- ALL(2013) \
+ ALL(OrangeBox) /* 2007, plugin interface v2 */ \
+ ALL(2013) /* ~2013, sometimes earlier (includes 4104), interface v3 */ \
\
/* specific games with dedicated branches / engine changes */ \
/* TODO(compat): dmomm seems to fail currently (VEngineServer broke?) */ \
@@ -55,7 +55,7 @@ extern u32 _gametype_tag;
ALL(SrvDLL005) /* mostly everything else, it seems */ \
\
/* games needing version-specific stuff */ \
- WINDOWSONLY(Portal1_3420) \
+ WINDOWSONLY(Near4104) /* Episode 1 and 2, Portal 1, some time around 2010 */ \
WINDOWSONLY(L4D1_1015plus) /* Crash Course update */ \
WINDOWSONLY(L4D1_1022plus) /* Mac update, bunch of code reshuffling */ \
ALL(L4D2_2125plus) \
@@ -78,7 +78,6 @@ GAMETYPE_BASETAGS(_GAMETYPE_ENUMBIT, _GAMETYPE_DISCARD)
GAMETYPE_BASETAGS(_GAMETYPE_ENUMVAL, _GAMETYPE_DISCARD)
GAMETYPE_BASETAGS(_GAMETYPE_DISCARD, _GAMETYPE_ZERO)
#endif
-#define _GAMETYPE_ENUMVAL(x) _gametype_tag_##x = 1 << _gametype_tagbit_##x,
#undef _GAMETYPE_ZERO
#undef _GAMETYPE_DISCARD
#undef _GAMETYPE_ENUMVAL