--- Daodan/src/Daodan.c 2009/06/09 12:42:24 347 +++ Daodan/src/Daodan.c 2009/06/10 12:04:27 348 @@ -23,7 +23,9 @@ HMODULE DDrONiModule; bool patch_fonttexturecache = true; bool patch_largetextures = true; bool patch_pathfinding = true; +bool patch_levelplugins = true; bool patch_projaware = true; +bool patch_directinput = true; bool patch_wpfadetime = true; bool patch_kickguns = false; bool patch_cooldowntimer = true; @@ -36,6 +38,7 @@ bool patch_cheattable = true; bool patch_safeprintf = true; bool patch_daodandisplayenum = true; bool patch_usegettickcount = true; +bool patch_cheatsenabled = true; bool patch_usedaodangl = false; bool DDrPatch_Init() @@ -54,7 +57,8 @@ bool DDrPatch_Init() DDrPatch_Byte (OniExe + 0x00005251, 0x10); // Non-"_Final" levels are now valid - DDrPatch_Byte (OniExe + 0x000206a8, 0x01); + if (patch_levelplugins) + DDrPatch_Byte (OniExe + 0x000206a8, 0x01); // Pathfinding grid cache size x8 if (patch_pathfinding) @@ -73,7 +77,8 @@ bool DDrPatch_Init() } // Forced DirectInput (for Windows NT) - DDrPatch_Byte (OniExe + 0x00002e6d, 0xeb); + if (patch_directinput) + DDrPatch_Byte (OniExe + 0x00002e6d, 0xeb); if (patch_wpfadetime) { @@ -177,6 +182,10 @@ bool DDrIniCallback(char* section, bool patch_pathfinding = !stricmp(value, "true"); else if (!stricmp(name, "projaware")) patch_projaware = !stricmp(value, "true"); + else if (!stricmp(name, "levelplugins")) + patch_levelplugins = !stricmp(value, "true"); + else if (!stricmp(name, "directinput")) + patch_directinput = !stricmp(value, "true"); else if (!stricmp(name, "wpfadetime")) patch_wpfadetime = !stricmp(value, "true"); else if (!stricmp(name, "kickguns")) @@ -199,6 +208,8 @@ bool DDrIniCallback(char* section, bool patch_daodandisplayenum = !stricmp(value, "true"); else if (!stricmp(name, "usegettickcount")) patch_usegettickcount = !stricmp(value, "true"); + else if (!stricmp(name, "cheatsenabled")) + patch_cheatsenabled = !stricmp(value, "true"); else if (!stricmp(name, "usedaodangl")) patch_usedaodangl = !stricmp(value, "true"); else @@ -221,6 +232,24 @@ bool DDrIniCallback(char* section, bool DDrPatch_StrDup(OniExe + 0x0010fb6e, value); else if (!stricmp(name, "blam")) DDrPatch_StrDup(OniExe + 0x0010fb73, value); + else if (!stricmp(name, "shapeshifter_on")) + DDr_CheatTable[0].message_on = strdup(value); + else if (!stricmp(name, "shapeshifter_off")) + DDr_CheatTable[0].message_off = strdup(value); + else if (!stricmp(name, "liveforever_on")) + DDr_CheatTable[1].message_on = strdup(value); + else if (!stricmp(name, "liveforever_off")) + DDr_CheatTable[1].message_off = strdup(value); + else if (!stricmp(name, "touchofdeath_on")) + DDr_CheatTable[2].message_on = strdup(value); + else if (!stricmp(name, "touchofdeath_off")) + DDr_CheatTable[2].message_off = strdup(value); + else if (!stricmp(name, "canttouchthis_on")) + DDr_CheatTable[3].message_on = strdup(value); + else if (!stricmp(name, "canttouchthis_off")) + DDr_CheatTable[3].message_off = strdup(value); + else if (!stricmp(name, "fatloot_on")) + DDr_CheatTable[4].message_off = strdup(value); else DDrStartupMessage("unrecognised language item \"%s\"", name); break; @@ -273,7 +302,8 @@ void __cdecl DDrMain(int argc, char* arg } // Cheats always enabled - DDrPatch_MakeJump(ONrPersist_GetWonGame, DDrPersist_GetWonGame); + if (patch_cheatsenabled) + DDrPatch_MakeJump(ONrPersist_GetWonGame, DDrPersist_GetWonGame); // Windowed mode if (patch_usedaodangl)