diff -r 4c81256cac43 -r 4e1591dceb8d extensions/tf2/holiday.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/tf2/holiday.cpp Mon Jun 28 17:48:14 2010 -0400
@@ -0,0 +1,77 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Team Fortress 2 Extension
+ * Copyright (C) 2004-2008 AlliedModders LLC. 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, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," 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, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+#include "holiday.h"
+
+CDetour *getHolidayDetour = NULL;
+
+IForward *g_getHolidayForward = NULL;
+
+DETOUR_DECL_MEMBER0(GetHoliday, int)
+{
+ int actualres = DETOUR_MEMBER_CALL(GetHoliday)();
+ if (!g_getHolidayForward)
+ {
+ g_pSM->LogMessage(myself, "Invalid Forward");
+ return actualres;
+ }
+
+ cell_t result = 0;
+ int newres = actualres;
+
+ g_getHolidayForward->PushCellByRef(&newres);
+ g_getHolidayForward->Execute(&result);
+
+ if (result == Pl_Changed)
+ {
+ return newres;
+ }
+
+ return actualres;
+}
+
+void InitialiseGetHolidayDetour()
+{
+ getHolidayDetour = DETOUR_CREATE_MEMBER(GetHoliday, "GetHoliday");
+
+ if (!getHolidayDetour)
+ {
+ g_pSM->LogError(myself, "GetHoliday detour failed");
+ return;
+ }
+
+ getHolidayDetour->EnableDetour();
+}
+
+void RemoveGetHolidayDetour()
+{
+ getHolidayDetour->Destroy();
+}
\ No newline at end of file