const char *MakeLowerString(const char *source) { static char str[128]; if (!source) return nullptr; MakeLowerString(source, str); return str; }
bool EQEmu::ItemInstance::CanTransform(const ItemData *ItemToTry, const ItemData *Container, bool AllowAll) { if (!ItemToTry || !Container) return false; if (ItemToTry->ItemType == item::ItemTypeArrow || strnlen(Container->CharmFile, 30) == 0) return false; if (AllowAll && strncasecmp(Container->CharmFile, "ITEMTRANSFIGSHIELD", 18) && strncasecmp(Container->CharmFile, "ITEMTransfigBow", 15)) { switch (ItemToTry->ItemType) { case 0: case 1: case 2: case 3: case 4: case 35: case 45: return true; } } static std::map<std::string, int> types; types["itemtransfig1hp"] = 2; types["itemtransfig1hs"] = 0; types["itemtransfig2hb"] = 4; types["itemtransfig2hp"] = 35; types["itemtransfig2hs"] = 1; types["itemtransfigblunt"] = 3; types["itemtransfig1hb"] = 3; types["itemtransfigbow"] = 5; types["itemtransfighth"] = 45; types["itemtransfigshield"] = 8; types["itemtransfigslashing"] = 0; auto i = types.find(MakeLowerString(Container->CharmFile)); if (i != types.end() && i->second == ItemToTry->ItemType) return true; static std::map<std::string, int> typestwo; typestwo["itemtransfigblunt"] = 4; typestwo["itemtransfigslashing"] = 1; i = typestwo.find(MakeLowerString(Container->CharmFile)); if (i != typestwo.end() && i->second == ItemToTry->ItemType) return true; return false; }
bool ZoneServer::SetZone(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { BootingUp = false; const char* zn = MakeLowerString(database.GetZoneName(iZoneID)); char* longname; if (iZoneID) zlog(WORLD__ZONE,"Setting to '%s' (%d:%d)%s",(zn) ? zn : "",iZoneID, iInstanceID, iStaticZone ? " (Static)" : ""); zoneID = iZoneID; instanceID = iInstanceID; if(iZoneID!=0) oldZoneID = iZoneID; if (zoneID == 0) { client_list.CLERemoveZSRef(this); pNumPlayers = 0; LSSleepUpdate(GetPrevZoneID()); } staticzone = iStaticZone; if (zn) { strn0cpy(zone_name, zn, sizeof(zone_name)); if( database.GetZoneLongName( (char*)zone_name, &longname, NULL, NULL, NULL, NULL, NULL, NULL ) ) { strn0cpy(long_name, longname, sizeof(long_name)); safe_delete_array( longname ); } else strcpy(long_name, ""); } else { strcpy(zone_name, ""); strcpy(long_name, ""); } client_list.ZoneBootup(this); ls_zboot.Start(); return true; }