bool IsValidMonster(UnitAny *pUnit) { //Have we even been given a unit? if (!pUnit) return false; //Check to see if unit is dead. if ((pUnit->dwMode == 0) || (pUnit->dwMode == 12)) return false; if ((pUnit->dwTxtFileNo == 608) && (pUnit->dwMode == 8)) return false; if ((pUnit->dwTxtFileNo == 68) && (pUnit->dwMode == 14))// Ignore burrowing maggots return false; //Hide the water creepers if ((pUnit->dwTxtFileNo == 258 || (pUnit->dwTxtFileNo == 261)) && (pUnit->dwMode == 14)) return false; DWORD badMonIds[] = {227, 283, 326, 327, 328, 329, 330, 410, 411, 412, 413, 414, 415, 416, 366, 406, 351, 352, 353, 266, 408, 516, 517, 518, 519, 522, 523, 543, 543, 545}; for (DWORD n = 0; n < 30; n++) { if (pUnit->dwTxtFileNo == badMonIds[n]) return false; } if (D2COMMON_GetUnitStat(pUnit, 172, 0) == 2) return false; wchar_t* name = D2CLIENT_GetUnitName(pUnit); char* tmp = UnicodeToAnsi(name); if ((strcmp(tmp,"an evil force") == 0) || (strcmp(tmp, "dummy") == 0) || (strcmp(tmp, "Maggot") == 0)) { delete[] tmp; return false; } delete[] tmp; return true; }
// NOTE TO CALLERS: szTmp must be a PRE-INITIALIZED string. const char* GetUnitName(UnitAny* pUnit, char* szTmp, size_t bufSize) { if(!pUnit) { strcpy_s(szTmp, bufSize, "Unknown"); return szTmp; } if(pUnit->dwType == UNIT_MONSTER) { wchar_t* wName = D2CLIENT_GetUnitName(pUnit); WideCharToMultiByte(CP_ACP, 0, wName, -1, szTmp, bufSize, 0, 0); return szTmp; } if(pUnit->dwType == UNIT_PLAYER && pUnit->pPlayerData) { // return pUnit->pPlayerData->szName; strcpy_s(szTmp, bufSize, pUnit->pPlayerData->szName); return szTmp; } if(pUnit->dwType == UNIT_ITEM) { wchar_t wBuffer[256] = {0}; D2CLIENT_GetItemName(pUnit, wBuffer, sizeof(wBuffer)); char* szBuffer = UnicodeToAnsi(wBuffer); if(strchr(szBuffer, '\n')) *strchr(szBuffer,'\n') = 0x00; strcpy_s(szTmp, bufSize, szBuffer); delete[] szBuffer; return szTmp; } if(pUnit->dwType == UNIT_OBJECT || pUnit->dwType == UNIT_TILE) { if(pUnit->pObjectData && pUnit->pObjectData->pTxt) { strcpy_s(szTmp, bufSize, pUnit->pObjectData->pTxt->szName); return szTmp; } } strcpy_s(szTmp, bufSize, "Unknown"); return szTmp; }