diff --git a/addons/source-python/packages/site-packages/sphinx/pycode/Grammar-py3-sphinx1.4.pickle b/addons/source-python/packages/site-packages/sphinx/pycode/Grammar-py3-sphinx1.4.pickle
new file mode 100644
index 000000000..5cce105b4
Binary files /dev/null and b/addons/source-python/packages/site-packages/sphinx/pycode/Grammar-py3-sphinx1.4.pickle differ
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 80cbfdc98..c099fd65f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -287,7 +287,6 @@ Set(SOURCEPYTHON_KEYVALUES_MODULE_HEADERS
Set(SOURCEPYTHON_KEYVALUES_MODULE_SOURCES
core/modules/keyvalues/keyvalues_wrap.cpp
- ${SOURCESDK}/tier1/KeyValues.cpp
)
# ------------------------------------------------------------------
diff --git a/src/core/modules/bitbuffers/bitbuffers_wrap.cpp b/src/core/modules/bitbuffers/bitbuffers_wrap.cpp
index 03ae053d9..cbc3d3b0b 100644
--- a/src/core/modules/bitbuffers/bitbuffers_wrap.cpp
+++ b/src/core/modules/bitbuffers/bitbuffers_wrap.cpp
@@ -91,7 +91,7 @@ void export_bf_write(scope _bitbuffers)
"Writes an unsigned integer with variable bit length."
)
-#ifdef ENGINE_CSGO
+#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_SDK2013)
.def("write_var_int32",
&bf_write::WriteVarInt32
)
diff --git a/src/core/modules/cvars/sdk2013/cvars.h b/src/core/modules/cvars/sdk2013/cvars.h
new file mode 100644
index 000000000..9ce96806e
--- /dev/null
+++ b/src/core/modules/cvars/sdk2013/cvars.h
@@ -0,0 +1,50 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _CVARS_SDK2013_H
+#define _CVARS_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "icvar.h"
+
+
+//-----------------------------------------------------------------------------
+// ICVar extension class.
+//-----------------------------------------------------------------------------
+class ICVarExt
+{
+public:
+ static ConCommandBase* GetCommands(ICvar* pCvar)
+ {
+ ICvar::Iterator iter(pCvar);
+ iter.SetFirst();
+ return iter.Get();
+ };
+};
+
+#endif // _CVARS_SDK2013_H
diff --git a/src/core/modules/effects/sdk2013/effects_base_wrap.h b/src/core/modules/effects/sdk2013/effects_base_wrap.h
new file mode 100644
index 000000000..442b40097
--- /dev/null
+++ b/src/core/modules/effects/sdk2013/effects_base_wrap.h
@@ -0,0 +1,54 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _EFFECTS_BASE_WRAP_SDK2013_H
+#define _EFFECTS_BASE_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "game/shared/itempents.h"
+#include "toolframework/itoolentity.h"
+#include "game/server/basetempentity.h"
+
+
+//-----------------------------------------------------------------------------
+// External variables.
+//-----------------------------------------------------------------------------
+extern IServerTools *servertools;
+
+
+//-----------------------------------------------------------------------------
+// Exports CBaseTempEntity.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_temp_entity(T _effects, U TempEntity)
+{
+ _effects.attr("_first_temp_entity") = object(ptr(servertools->GetTempEntList()));
+}
+
+
+#endif // _EFFECTS_BASE_WRAP_SDK2013_H
diff --git a/src/core/modules/engines/sdk2013/engines.h b/src/core/modules/engines/sdk2013/engines.h
new file mode 100644
index 000000000..5f69a88af
--- /dev/null
+++ b/src/core/modules/engines/sdk2013/engines.h
@@ -0,0 +1,96 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENGINES_SDK2013_H
+#define _ENGINES_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "engine/IEngineSound.h"
+#include "eiface.h"
+
+
+//-----------------------------------------------------------------------------
+// IVEngineServer extension class.
+//-----------------------------------------------------------------------------
+class GameIVEngineServerExt
+{
+public:
+ static bool IsMapValid(IVEngineServer* pServer, const char* map_name)
+ {
+ int iLength = strlen(map_name) + 10;
+ char* szMapName = new char[iLength];
+ V_snprintf(szMapName, iLength, "maps/%s.bsp", map_name);
+ bool result = pServer->IsMapValid(szMapName);
+ delete szMapName;
+ return result;
+ }
+};
+
+
+//-----------------------------------------------------------------------------
+// IEngineSound extension class.
+//-----------------------------------------------------------------------------
+class IEngineSoundExt
+{
+public:
+ static void EmitSound(IEngineSound* pEngineSound, IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample,
+ float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin, const Vector *pDirection,
+ tuple origins, bool bUpdatePositions, float soundtime, int speakerentity)
+ {
+ CUtlVector *pUtlVecOrigins = NULL;
+ CUtlVector vecOrigins;
+ if (len(origins) > 0)
+ {
+ pUtlVecOrigins = &vecOrigins;
+ for(int i=0; i < len(origins); i++)
+ {
+ vecOrigins.AddToTail(extract(origins[i]));
+ }
+ }
+
+ pEngineSound->EmitSound(filter, iEntIndex, iChannel, pSample, flVolume, flAttenuation, iFlags, iPitch, 0, pOrigin,
+ pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity);
+ }
+
+ static void StopSound(IEngineSound* pEngineSound, int iEntIndex, int iChannel, const char *pSample)
+ {
+ pEngineSound->StopSound(iEntIndex, iChannel, pSample);
+ }
+};
+
+
+//---------------------------------------------------------------------------------
+// IEngineTrace
+//---------------------------------------------------------------------------------
+inline int GetPointContents(const Vector &vecAbsPosition, IHandleEntity** ppEntity)
+{
+ return enginetrace->GetPointContents(vecAbsPosition, ppEntity);
+}
+
+
+#endif // _ENGINES_SDK2013_H
diff --git a/src/core/modules/engines/sdk2013/engines_wrap.h b/src/core/modules/engines/sdk2013/engines_wrap.h
new file mode 100644
index 000000000..e55adc956
--- /dev/null
+++ b/src/core/modules/engines/sdk2013/engines_wrap.h
@@ -0,0 +1,120 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENGINES_WRAP_SDK2013_H
+#define _ENGINES_WRAP_SDK2013_H
+
+//---------------------------------------------------------------------------------
+// Includes.
+//---------------------------------------------------------------------------------
+#include "eiface.h"
+#include "engine/IEngineSound.h"
+#include "engine/IEngineTrace.h"
+
+
+//---------------------------------------------------------------------------------
+// External variables.
+//---------------------------------------------------------------------------------
+extern IEngineTrace* enginetrace;
+
+
+//---------------------------------------------------------------------------------
+// IVEngineServer visitor function.
+//---------------------------------------------------------------------------------
+template
+T IVEngineServer_Visitor(T cls)
+{
+ cls
+ .add_property("game_server_steamid",
+ make_function(
+ &IVEngineServer::GetGameServerSteamID,
+ reference_existing_object_policy()
+ ),
+ "Returns the SteamID of the game server."
+ )
+
+ .add_property("server_version",
+ &IVEngineServer::GetServerVersion,
+ "Returns the version of the server."
+ )
+
+ .def("multiplayer_end_game",
+ &IVEngineServer::MultiplayerEndGame,
+ "Matchmaking"
+ )
+
+ .def("create_fake_client_ex",
+ &IVEngineServer::CreateFakeClientEx,
+ reference_existing_object_policy()
+ )
+
+ .add_property("server",
+ make_function(
+ &IVEngineServer::GetIServer,
+ reference_existing_object_policy()
+ )
+ )
+
+ .add_property("achievement_mgr",
+ make_function(
+ &IVEngineServer::GetAchievementMgr,
+ reference_existing_object_policy()
+ ),
+ &IVEngineServer::SetAchievementMgr,
+ "Return the achievement manager."
+ )
+ ;
+
+ return cls;
+}
+
+
+//---------------------------------------------------------------------------------
+// IEngineSound visitor function.
+//---------------------------------------------------------------------------------
+template
+T IEngineSound_Visitor(T cls)
+{
+ return cls;
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports IServerGameDLL.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_server_game_dll(T _server, U ServerGameDLL)
+{
+ // Methods...
+ ServerGameDLL.def("set_server_hibernation", &IServerGameDLL::SetServerHibernation);
+
+ // Class info...
+ BEGIN_CLASS_INFO(IServerGameDLL)
+ FUNCTION_INFO(SetServerHibernation)
+ END_CLASS_INFO()
+}
+
+#endif // _ENGINES_WRAP_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities.h b/src/core/modules/entities/sdk2013/entities.h
new file mode 100644
index 000000000..e54e5e87c
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities.h
@@ -0,0 +1,76 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_SDK2013_H
+#define _ENTITIES_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "dt_send.h"
+#include "game/shared/ehandle.h"
+#include "isaverestore.h"
+#include "datamap.h"
+#include "game/shared/takedamageinfo.h"
+
+
+//-----------------------------------------------------------------------------
+// CTakeDamageInfo wrapper class.
+//-----------------------------------------------------------------------------
+class TakeDamageInfoWrapper: public TakeDamageInfoBaseWrapper
+{
+public:
+ int get_penetrated()
+ {
+ return m_iPlayerPenetrationCount;
+ }
+
+ void set_penetrated(int iPenetrated)
+ {
+ m_iPlayerPenetrationCount = iPenetrated;
+ }
+};
+
+
+//-----------------------------------------------------------------------------
+// CTakeDamageInfo extension class.
+//-----------------------------------------------------------------------------
+class TakeDamageInfoExt
+{
+public:
+ static int get_penetrated(CTakeDamageInfo *pTakeDamageInfo)
+ {
+ return ((TakeDamageInfoWrapper *)pTakeDamageInfo)->get_penetrated();
+ }
+
+ static void set_penetrated(CTakeDamageInfo *pTakeDamageInfo, int iPenetrated)
+ {
+ ((TakeDamageInfoWrapper *)pTakeDamageInfo)->set_penetrated(iPenetrated);
+ }
+};
+
+
+#endif // _ENTITIES_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_constants_wrap.h b/src/core/modules/entities/sdk2013/entities_constants_wrap.h
new file mode 100644
index 000000000..88c37e312
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_constants_wrap.h
@@ -0,0 +1,104 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_CONSTANTS_SDK2013_WRAP_H
+#define _ENTITIES_CONSTANTS_SDK2013_WRAP_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "utilities/wrap_macros.h"
+
+
+//-----------------------------------------------------------------------------
+// Exports damage types.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_damage_types(T _constants)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports SolidFlags_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_solid_flags(T _constants, U SolidFlags)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports entity effects.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_entity_effects(T _constants)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports RenderMode_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_render_mode(T _constants, U RenderEffects)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports RenderFx_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_render_effects(T _constants, U RenderEffects)
+{
+ RenderEffects.value("DISTORT", kRenderFxDistort);
+ RenderEffects.value("HOLOGRAM", kRenderFxHologram);
+ RenderEffects.value("EXPLODE", kRenderFxExplode);
+ RenderEffects.value("CLAMP_MIN_SCALE", kRenderFxClampMinScale);
+ RenderEffects.value("ENV_RAIN", kRenderFxEnvRain);
+ RenderEffects.value("ENV_SNOW", kRenderFxEnvSnow);
+ RenderEffects.value("SPOTLIGHT", kRenderFxSpotlight);
+ RenderEffects.value("RAGDOLL", kRenderFxRagdoll);
+ RenderEffects.value("PULSE_FAST_WIDER", kRenderFxPulseFastWider);
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports Collision_Group_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_collision_group(T _constants, U CollisionGroup)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+#endif // _ENTITIES_CONSTANTS_SDK2013_WRAP_H
diff --git a/src/core/modules/entities/sdk2013/entities_datamaps.h b/src/core/modules/entities/sdk2013/entities_datamaps.h
new file mode 100644
index 000000000..412d247a6
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_datamaps.h
@@ -0,0 +1,54 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2014 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_DATAMAPS_SDK2013_H
+#define _ENTITIES_DATAMAPS_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "datamap.h"
+
+
+//-----------------------------------------------------------------------------
+// typedescription_t extension class.
+//-----------------------------------------------------------------------------
+class TypeDescriptionExt
+{
+public:
+ static int get_offset(const typedescription_t& pTypeDesc)
+ {
+ return pTypeDesc.fieldOffset[TD_OFFSET_NORMAL];
+ }
+
+ static int get_packed_offset(const typedescription_t& pTypeDesc)
+ {
+ return pTypeDesc.fieldOffset[TD_OFFSET_PACKED];
+ }
+};
+
+
+#endif // _ENTITIES_DATAMAPS_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_datamaps_wrap.h b/src/core/modules/entities/sdk2013/entities_datamaps_wrap.h
new file mode 100644
index 000000000..114508e05
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_datamaps_wrap.h
@@ -0,0 +1,68 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_DATAMAPS_WRAP_SDK2013_H
+#define _ENTITIES_DATAMAPS_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "entities_datamaps.h"
+
+
+//-----------------------------------------------------------------------------
+// Exports datamap_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_datamap(T _datamaps, U DataMap)
+{
+ DataMap.def_readonly("chains_validated", &datamap_t::chains_validated);
+ DataMap.def_readonly("packed_offsets_computed", &datamap_t::packed_offsets_computed);
+ DataMap.def_readonly("packed_size", &datamap_t::packed_size);
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports typedescription_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_type_description(T _datamaps, U TypeDescription)
+{
+ TypeDescription.add_property("packed_offset", &TypeDescriptionExt::get_packed_offset) ;
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports fieldtype_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_field_types(T _datamaps, U FieldTypes)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+#endif // _ENTITIES_DATAMAPS_WRAP_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_factories_wrap.h b/src/core/modules/entities/sdk2013/entities_factories_wrap.h
new file mode 100644
index 000000000..856fd08f6
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_factories_wrap.h
@@ -0,0 +1,56 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_FACTORIES_WRAP_SDK2013_H
+#define _ENTITIES_FACTORIES_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "utilities/wrap_macros.h"
+#include "toolframework/itoolentity.h"
+#include "utilities/conversions.h"
+#include "modules/memory/memory_tools.h"
+
+
+//-----------------------------------------------------------------------------
+// External variables.
+//-----------------------------------------------------------------------------
+extern IServerTools *servertools;
+
+
+//-----------------------------------------------------------------------------
+// Exports CEntityFactoryDictionary.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_entity_factory_dictionary(T _factories, U EntityFactoryDictionary)
+{
+ // Singleton...
+ _factories.attr("factory_dictionary") = object(ptr((CEntityFactoryDictionary *)servertools->GetEntityFactoryDictionary()));
+}
+
+
+#endif // _ENTITIES_FACTORIES_WRAP_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_props.h b/src/core/modules/entities/sdk2013/entities_props.h
new file mode 100644
index 000000000..464229c64
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_props.h
@@ -0,0 +1,32 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_PROPS_SDK2013_H
+#define _ENTITIES_PROPS_SDK2013_H
+
+// Nothing specific to SDK2013...
+
+#endif // _ENTITIES_PROPS_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_props_wrap.h b/src/core/modules/entities/sdk2013/entities_props_wrap.h
new file mode 100644
index 000000000..e42bfadcc
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_props_wrap.h
@@ -0,0 +1,79 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_PROPS_WRAP_SDK2013_H
+#define _ENTITIES_PROPS_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "dt_send.h"
+#include "server_class.h"
+#include "entities_props.h"
+
+
+//-----------------------------------------------------------------------------
+// Expose ServerClass.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_server_class(T _props, U ServerClass_)
+{
+ // Properties...
+ ServerClass_.def_readonly("name", &ServerClass::m_pNetworkName);
+}
+
+
+//-----------------------------------------------------------------------------
+// Expose SendProp.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_send_prop(T _props, U SendProp_)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Expose SendPropType.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_send_prop_types(T _props, U SendPropType_)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Expose SendPropVariant.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_send_prop_variant(T _props, U SendPropVariant)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+#endif // _ENTITIES_PROPS_WRAP_SDK2013_H
diff --git a/src/core/modules/entities/sdk2013/entities_wrap.h b/src/core/modules/entities/sdk2013/entities_wrap.h
new file mode 100644
index 000000000..11e1c1f8e
--- /dev/null
+++ b/src/core/modules/entities/sdk2013/entities_wrap.h
@@ -0,0 +1,48 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _ENTITIES_WRAP_SDK2013_H
+#define _ENTITIES_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "entities.h"
+
+
+//-----------------------------------------------------------------------------
+// Exports CTakeDamageInfo.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_take_damage_info(T _entities, U TakeDamageInfo)
+{
+ TakeDamageInfo.add_property("penetrated", &TakeDamageInfoExt::get_penetrated,
+ &TakeDamageInfoExt::set_penetrated
+ );
+}
+
+
+#endif // _ENTITIES_WRAP_SDK2013_H
diff --git a/src/core/modules/globals/sdk2013/globals_wrap.h b/src/core/modules/globals/sdk2013/globals_wrap.h
new file mode 100644
index 000000000..21f410b9c
--- /dev/null
+++ b/src/core/modules/globals/sdk2013/globals_wrap.h
@@ -0,0 +1,56 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _GLOBALS_WRAP_SDK2013_H
+#define _GLOBALS_WRAP_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "edict.h"
+
+
+//-----------------------------------------------------------------------------
+// CGlobalVarsBase visitor method.
+//-----------------------------------------------------------------------------
+template
+T GlobalsBase_Visitor(T cls)
+{
+ return cls;
+}
+
+
+//-----------------------------------------------------------------------------
+// CGlobalVars visitor method.
+//-----------------------------------------------------------------------------
+template
+T Globals_Visitor(T cls)
+{
+ return cls;
+}
+
+
+#endif // _GLOBALS_WRAP_SDK2013_H
diff --git a/src/core/modules/keyvalues/keyvalues_wrap.cpp b/src/core/modules/keyvalues/keyvalues_wrap.cpp
index adadaae34..5c146debf 100644
--- a/src/core/modules/keyvalues/keyvalues_wrap.cpp
+++ b/src/core/modules/keyvalues/keyvalues_wrap.cpp
@@ -144,7 +144,7 @@ void export_keyvalues(scope _keyvalues)
.add_property("next_key",
make_function(
- &KeyValues::GetNextKey,
+ GET_METHOD(KeyValues *, KeyValues, GetNextKey, void),
reference_existing_object_policy()
),
&KeyValues::SetNextKey,
@@ -317,7 +317,7 @@ void export_keyvalues_types(scope _keyvalues)
KeyValuesType.value("COLOR", KeyValues::TYPE_COLOR);
KeyValuesType.value("UNINT64", KeyValues::TYPE_UINT64);
-#ifdef ENGINE_CSGO
+#if defined(ENGINE_CSGO) || defined(ENGINE_BLADE)
// TODO: Move this to a engine specific file
KeyValuesType.value("COMPILED_INT_BYTE", KeyValues::TYPE_COMPILED_INT_BYTE);
KeyValuesType.value("COMPILED_INT_0", KeyValues::TYPE_COMPILED_INT_0);
diff --git a/src/core/modules/players/sdk2013/players_constants_wrap.h b/src/core/modules/players/sdk2013/players_constants_wrap.h
new file mode 100644
index 000000000..87572fc7b
--- /dev/null
+++ b/src/core/modules/players/sdk2013/players_constants_wrap.h
@@ -0,0 +1,56 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _PLAYERS_CONSTANTS_SDK2013_WRAP_H
+#define _PLAYERS_CONSTANTS_SDK2013_WRAP_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "utilities/wrap_macros.h"
+
+
+//-----------------------------------------------------------------------------
+// Exports DamageTypes.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_player_buttons(T _constants)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports HideHudFlags
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_hide_hud_flags(T _constants)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+#endif // _PLAYERS_CONSTANTS_SDK2013_WRAP_H
diff --git a/src/core/modules/players/sdk2013/players_wrap.h b/src/core/modules/players/sdk2013/players_wrap.h
new file mode 100644
index 000000000..2a3341b11
--- /dev/null
+++ b/src/core/modules/players/sdk2013/players_wrap.h
@@ -0,0 +1,39 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _PLAYERS_WRAP_SDK2013_H
+#define _PLAYERS_WRAP_SDK2013_H
+
+
+//-----------------------------------------------------------------------------
+// IPlayerInfo extension class
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_user_cmd(scope _players, T UserCmd)
+{
+}
+
+#endif // _PLAYERS_WRAP_SDK2013_H
diff --git a/src/core/modules/steam/sdk2013/steam_wrap.h b/src/core/modules/steam/sdk2013/steam_wrap.h
new file mode 100644
index 000000000..18e658ab6
--- /dev/null
+++ b/src/core/modules/steam/sdk2013/steam_wrap.h
@@ -0,0 +1,47 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _STEAM_WRAP_SDK2013_H
+#define _STEAM_WRAP_SDK2013_H
+
+template
+void export_engine_specific_steamid(scope _steam, T SteamID)
+{
+}
+
+template
+void export_engine_specific_universe(scope _steam, T Universe)
+{
+ // Nothing specific to SDK2013...
+}
+
+template
+void export_engine_specific_account_type(scope _steam, T AccountType)
+{
+ AccountType.value("CONSOLE_USER", k_EAccountTypeConsoleUser);
+}
+
+#endif // _STEAM_WRAP_SDK2013_H
diff --git a/src/core/modules/weapons/sdk2013/weapons_constants_wrap.h b/src/core/modules/weapons/sdk2013/weapons_constants_wrap.h
new file mode 100644
index 000000000..649e12ab5
--- /dev/null
+++ b/src/core/modules/weapons/sdk2013/weapons_constants_wrap.h
@@ -0,0 +1,40 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _WEAPONS_CONSTANTS_SDK2013_WRAP_H
+#define _WEAPONS_CONSTANTS_SDK2013_WRAP_H
+
+//-----------------------------------------------------------------------------
+// Exports WeaponSound_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_weapon_sound(T _constants, U WeaponSound)
+{
+ // Nothing specific to SDK2013...
+}
+
+
+#endif // _WEAPONS_CONSTANTS_SDK2013_WRAP_H
diff --git a/src/core/modules/weapons/sdk2013/weapons_scripts.h b/src/core/modules/weapons/sdk2013/weapons_scripts.h
new file mode 100644
index 000000000..ad3f8b00e
--- /dev/null
+++ b/src/core/modules/weapons/sdk2013/weapons_scripts.h
@@ -0,0 +1,61 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _WEAPONS_SCRIPTS_SDK2013_H
+#define _WEAPONS_SCRIPTS_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "datamap.h"
+#include "game/shared/weapon_parse.h"
+#include "tier1/utldict.h"
+#include "utilities/wrap_macros.h"
+
+
+//-----------------------------------------------------------------------------
+// WeaponDataBase_t declaration.
+//-----------------------------------------------------------------------------
+typedef CUtlDict WeaponDataBase_t;
+
+
+//-----------------------------------------------------------------------------
+// WeaponDataBase_t extension class.
+//-----------------------------------------------------------------------------
+class WeaponDataBaseExt
+{
+public:
+ static CPointer *_find(WeaponDataBase_t *pWeaponDataBase, WEAPON_FILE_INFO_HANDLE uiIndex)
+ {
+ if (uiIndex >= pWeaponDataBase->Count())
+ BOOST_RAISE_EXCEPTION(PyExc_IndexError, "Index out of range.");
+
+ return new CPointer((unsigned long)(void *)pWeaponDataBase->Element(uiIndex));
+ }
+};
+
+
+#endif // _WEAPONS_SCRIPTS_SDK2013_H
diff --git a/src/core/modules/weapons/sdk2013/weapons_scripts_wrap.h b/src/core/modules/weapons/sdk2013/weapons_scripts_wrap.h
new file mode 100644
index 000000000..44cc2ef31
--- /dev/null
+++ b/src/core/modules/weapons/sdk2013/weapons_scripts_wrap.h
@@ -0,0 +1,54 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef _WEAPONS_SCRIPTS_SDK2013_WRAP_H
+#define _WEAPONS_SCRIPTS_SDK2013_WRAP_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "weapons_scripts.h"
+
+
+//-----------------------------------------------------------------------------
+// Expose WeaponDataBase_t.
+//-----------------------------------------------------------------------------
+template
+void export_engine_specific_weapon_database(T _scripts)
+{
+ class_ _WeaponDatabase("_WeaponDatabase", no_init);
+
+ // Methods...
+ _WeaponDatabase.def("_find", &WeaponDataBaseExt::_find, manage_new_object_policy());
+
+ // Properties...
+ _WeaponDatabase.add_property("_length", &WeaponDataBase_t::Count);
+
+ // Add memory tools...
+ _WeaponDatabase ADD_MEM_TOOLS(WeaponDataBase_t);
+}
+
+#endif // _WEAPONS_SCRIPTS_SDK2013_WRAP_H
diff --git a/src/core/patches/sdk2013/patches.cpp b/src/core/patches/sdk2013/patches.cpp
new file mode 100644
index 000000000..239d5cc3e
--- /dev/null
+++ b/src/core/patches/sdk2013/patches.cpp
@@ -0,0 +1,25 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
diff --git a/src/core/patches/sdk2013/undefined_symbols.h b/src/core/patches/sdk2013/undefined_symbols.h
new file mode 100644
index 000000000..80f6f91f4
--- /dev/null
+++ b/src/core/patches/sdk2013/undefined_symbols.h
@@ -0,0 +1,63 @@
+/**
+* =============================================================================
+* Source Python
+* Copyright (C) 2012-2015 Source Python Development Team. All rights reserved.
+* =============================================================================
+*
+* This program is free software; you can redistribute it and/or modify it under
+* the terms of the GNU General Public License, version 3.0, as published by the
+* Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+* details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program. If not, see .
+*
+* As a special exception, the Source Python Team gives you permission
+* to link the code of this program (as well as its derivative works) to
+* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
+* by the Valve Corporation. You must obey the GNU General Public License in
+* all respects for all other code used. Additionally, the Source.Python
+* Development Team grants this exception to all derivative works.
+*/
+
+#ifndef UNDEFINED_SYMBOLS_SDK2013_H
+#define UNDEFINED_SYMBOLS_SDK2013_H
+
+//-----------------------------------------------------------------------------
+// Includes.
+//-----------------------------------------------------------------------------
+#include "dt_send.h"
+#include "game/shared/ehandle.h"
+#include "isaverestore.h"
+#include "datamap.h"
+#include "game/shared/takedamageinfo.h"
+
+
+//-----------------------------------------------------------------------------
+// CTakeDamageInfo constructor declaration.
+//-----------------------------------------------------------------------------
+CTakeDamageInfo::CTakeDamageInfo()
+{
+ m_hInflictor = NULL;
+ m_hAttacker = NULL;
+ m_hWeapon = NULL;
+ m_flDamage = 0.0f;
+ m_flBaseDamage = BASEDAMAGE_NOT_SPECIFIED;
+ m_bitsDamageType = 0;
+ m_iDamageCustom = 0;
+ m_flMaxDamage = 0.0f;
+ m_vecDamageForce = vec3_origin;
+ m_vecDamagePosition = vec3_origin;
+ m_vecReportedPosition = vec3_origin;
+ m_iAmmoType = -1;
+ m_iDamagedOtherPlayers = 0;
+ m_iPlayerPenetrationCount = 0;
+ m_flDamageBonus = 0.0f;
+ m_bForceFriendlyFire = false;
+}
+
+#endif // _UNDEFINED_SYMBOLS_SDK2013_H
diff --git a/src/core/sp_main.cpp b/src/core/sp_main.cpp
index 3e966daf3..ccbf6eb54 100644
--- a/src/core/sp_main.cpp
+++ b/src/core/sp_main.cpp
@@ -187,7 +187,7 @@ bool GetInterfaces( InterfaceHelper_t* pInterfaceList, CreateInterfaceFn factory
//-----------------------------------------------------------------------------
// Server output hook.
//-----------------------------------------------------------------------------
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
SpewRetval_t SP_SpewOutput( SpewType_t spewType, const tchar *pMsg )
{
extern CListenerManager* GetOnServerOutputListenerManager();
@@ -269,7 +269,7 @@ CSourcePython::CSourcePython()
m_iClientCommandIndex = 0;
m_pOldMDLCacheNotifier = NULL;
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
m_pOldSpewOutputFunc = NULL;
#endif
}
@@ -326,7 +326,7 @@ bool CSourcePython::Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn
return false;
}
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
DevMsg(1, MSG_PREFIX "Retrieving old output function...\n");
m_pOldSpewOutputFunc = GetSpewOutputFunc();
@@ -376,7 +376,7 @@ void CSourcePython::Unload( void )
DevMsg(1, MSG_PREFIX "Unhooking all functions...\n");
GetHookManager()->UnhookAllFunctions();
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
if (m_pOldSpewOutputFunc)
{
DevMsg(1, MSG_PREFIX "Restoring old output function...\n");
@@ -586,7 +586,7 @@ void CSourcePython::ClientFullyConnect( edict_t *pEntity )
}
#endif
-#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE)
+#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE) || defined(ENGINE_SDK2013)
void CSourcePython::OnEdictAllocated( edict_t *edict )
{
unsigned int iEntityIndex;
diff --git a/src/core/sp_main.h b/src/core/sp_main.h
index ba6fba73a..84457682c 100644
--- a/src/core/sp_main.h
+++ b/src/core/sp_main.h
@@ -83,7 +83,7 @@ class CSourcePython: public IServerPluginCallbacks, public IEntityListener, publ
virtual void ClientFullyConnect( edict_t *pEntity );
#endif
-#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE)
+#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE) || defined(ENGINE_SDK2013)
virtual void OnEdictAllocated( edict_t *edict );
virtual void OnEdictFreed( const edict_t *edict );
#endif
@@ -126,7 +126,7 @@ class CSourcePython: public IServerPluginCallbacks, public IEntityListener, publ
int m_iClientCommandIndex;
IMDLCacheNotify* m_pOldMDLCacheNotifier;
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
SpewOutputFunc_t m_pOldSpewOutputFunc;
#endif
};
diff --git a/src/core/utilities/conversions/edict_from.cpp b/src/core/utilities/conversions/edict_from.cpp
index b44f9e5be..7901477b5 100644
--- a/src/core/utilities/conversions/edict_from.cpp
+++ b/src/core/utilities/conversions/edict_from.cpp
@@ -39,7 +39,7 @@ bool EdictFromIndex( unsigned int iEntityIndex, edict_t*& output )
return false;
edict_t* pEdict;
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
pEdict = engine->PEntityOfEntIndex(iEntityIndex);
#else
pEdict = (edict_t *)(gpGlobals->pEdicts + iEntityIndex);
diff --git a/src/core/utilities/conversions/index_from.cpp b/src/core/utilities/conversions/index_from.cpp
index d13972b97..95faf38c3 100644
--- a/src/core/utilities/conversions/index_from.cpp
+++ b/src/core/utilities/conversions/index_from.cpp
@@ -39,7 +39,7 @@ bool IndexFromEdict( edict_t *pEdict, unsigned int& output )
return false;
int iEntityIndex;
-#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD)
+#if defined(ENGINE_ORANGEBOX) || defined(ENGINE_BMS) || defined(ENGINE_GMOD) || defined(ENGINE_SDK2013)
iEntityIndex = engine->IndexOfEdict(pEdict);
#else
iEntityIndex = pEdict - gpGlobals->pEdicts;
diff --git a/src/loader/loader_main.cpp b/src/loader/loader_main.cpp
index e1736219a..98cd66dfc 100644
--- a/src/loader/loader_main.cpp
+++ b/src/loader/loader_main.cpp
@@ -455,7 +455,7 @@ void CSourcePython::ClientFullyConnect( edict_t *pEntity )
}
#endif
-#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE)
+#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE) || defined(ENGINE_SDK2013)
void CSourcePython::OnEdictAllocated( edict_t *edict )
{
if (m_pCorePlugin != NULL)
diff --git a/src/loader/loader_main.h b/src/loader/loader_main.h
index 8882cd011..18f7b68d5 100644
--- a/src/loader/loader_main.h
+++ b/src/loader/loader_main.h
@@ -76,7 +76,7 @@ class CSourcePython: public IServerPluginCallbacks
virtual void ClientFullyConnect( edict_t *pEntity );
#endif
-#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE)
+#if defined(ENGINE_CSGO) || defined(ENGINE_BMS) || defined(ENGINE_BLADE) || defined(ENGINE_SDK2013)
virtual void OnEdictAllocated( edict_t *edict );
virtual void OnEdictFreed( const edict_t *edict );
#endif
diff --git a/src/makefiles/branch/sdk2013.cmake b/src/makefiles/branch/sdk2013.cmake
new file mode 100644
index 000000000..8a8a3c68e
--- /dev/null
+++ b/src/makefiles/branch/sdk2013.cmake
@@ -0,0 +1,14 @@
+# ------------------------------------------------------------------
+# File: src/makefiles/branch/sdk2013.cmake
+# Purpose: This is the CMake file for the sdk2013 branch.
+# ------------------------------------------------------------------
+
+# TODO: Update SDK instead
+#Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
+#-DINTERFACEVERSION_SERVERGAMEDLL=\"ServerGameDLL010\"")
+
+# ------------------------------------------------------------------
+# Set the engine version.
+# ------------------------------------------------------------------
+Set(SOURCE_ENGINE "sdk2013")
+add_definitions(-DENGINE_SDK2013)
diff --git a/src/makefiles/linux/linux.base.cmake b/src/makefiles/linux/linux.base.cmake
index 215b76b65..3fa62fd0f 100644
--- a/src/makefiles/linux/linux.base.cmake
+++ b/src/makefiles/linux/linux.base.cmake
@@ -41,7 +41,7 @@ Set(SOURCEPYTHON_LINK_LIBRARIES
)
-If(SOURCE_ENGINE MATCHES "bms")
+If(SOURCE_ENGINE MATCHES "bms" OR SOURCE_ENGINE MATCHES "sdk2013")
Set(SOURCEPYTHON_LINK_LIBRARIES
"${SOURCEPYTHON_LINK_LIBRARIES}"
${SOURCESDK_LIB}/public/linux32/mathlib.a
@@ -95,12 +95,12 @@ EndIf()
# General definitions
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LINUX -DPOSIX -DLINUX -DGNUC -DCOMPILER_GCC")
-if(SOURCE_ENGINE MATCHES "orangebox" OR SOURCE_ENGINE MATCHES "bms" OR SOURCE_ENGINE MATCHES "gmod")
+if(SOURCE_ENGINE MATCHES "orangebox" OR SOURCE_ENGINE MATCHES "bms" OR SOURCE_ENGINE MATCHES "gmod" OR SOURCE_ENGINE MATCHES "sdk2013")
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_MALLOC_OVERRIDE")
Endif()
# Function alias
-If(NOT SOURCE_ENGINE MATCHES "bms")
+If(NOT SOURCE_ENGINE MATCHES "bms" AND NOT SOURCE_ENGINE MATCHES "sdk2013")
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp")
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstrnicmp=strncasecmp -D_snprintf=snprintf")
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp")
diff --git a/src/patches/sdk2013/lib/public/tier1.lib b/src/patches/sdk2013/lib/public/tier1.lib
new file mode 100644
index 000000000..6e4e8b5bb
Binary files /dev/null and b/src/patches/sdk2013/lib/public/tier1.lib differ