--- lua/lua_baseentity.cpp +++ lua/lua_baseentity.cpp @@ -175,7 +175,7 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); int32 result = ((CBattleEntity*)m_PBaseEntity)->addHP(-lua_tointeger(L,-1)); - + if( result != 0 && m_PBaseEntity->objtype == TYPE_PC && m_PBaseEntity->status != STATUS_DISAPPEAR) { charutils::UpdateHealth((CCharEntity*)m_PBaseEntity); @@ -244,7 +244,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - + int32 result = ((CBattleEntity*)m_PBaseEntity)->addMP(lua_tointeger(L,-1)); if( result != 0 && m_PBaseEntity->objtype == TYPE_PC && m_PBaseEntity->status != STATUS_DISAPPEAR) @@ -455,8 +455,8 @@ ((CCharEntity*)m_PBaseEntity)->clearPacketList(); ((CCharEntity*)m_PBaseEntity)->pushPacket(new CServerIPPacket((CCharEntity*)m_PBaseEntity,2)); //((CCharEntity*)m_PBaseEntity)->loc.zone->DecreaseZoneCounter(((CCharEntity*)m_PBaseEntity)); - } - else + } + else { ((CCharEntity*)m_PBaseEntity)->pushPacket(new CPositionPacket((CCharEntity*)m_PBaseEntity)); } @@ -484,7 +484,7 @@ if( !lua_isnil(L,2) && lua_isnumber(L,2) ) quantity = (uint32)lua_tointeger(L,2); - + uint8 SlotID = charutils::AddItem((CCharEntity*)m_PBaseEntity, LOC_INVENTORY, itemID, quantity); lua_pushboolean( L, (SlotID != 0xFF) ); @@ -496,7 +496,7 @@ { DSP_DEBUG_BREAK_IF(lua_isnil(L,1)); - const int8* charName = lua_tostring(L, -1); + const int8* charName = lua_tostring(L, -1); uint32 id = 0; @@ -505,7 +505,7 @@ int32 ret = Sql_Query(SqlHandle,Query,charName); if (ret != SQL_ERROR && Sql_NumRows(SqlHandle) != 0 && Sql_NextRow(SqlHandle) == SQL_SUCCESS) - id = (int32)Sql_GetIntData(SqlHandle,0); + id = (int32)Sql_GetIntData(SqlHandle,0); // could not get player from database @@ -521,7 +521,7 @@ // send the player to lower jeuno - Query = + Query = "UPDATE chars " "SET " "pos_zone = %u," @@ -583,7 +583,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; uint16 ItemID = (uint16)lua_tointeger(L,1); - + if( !lua_isnil(L,2) && lua_isnumber(L,2) ) { uint8 locationID = LOC_INVENTORY; @@ -606,7 +606,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); uint8 locationID = LOC_INVENTORY; - + if( !lua_isnil(L,1) && lua_isnumber(L,1) ) { locationID = (uint8)lua_tointeger(L,1); @@ -692,7 +692,7 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + lua_pushboolean( L, hasBit((uint8)lua_tointeger(L,-1), PChar->m_ZonesList, sizeof(PChar->m_ZonesList))); return 1; } @@ -711,7 +711,7 @@ WEATHER weather = PZone->GetWeather(); - switch(weather) + switch(weather) { case WEATHER_NONE: lua_pushinteger(L, 0); break; case WEATHER_SUNSHINE: lua_pushinteger(L, 1); break; @@ -771,9 +771,9 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->profile.nation = (uint8)lua_tointeger(L,-1); @@ -798,13 +798,13 @@ { if( m_PBaseEntity != NULL ) { - if( m_PBaseEntity->objtype == TYPE_PC ) + if( m_PBaseEntity->objtype == TYPE_PC ) { if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { int32 rankPoints = (int32)lua_tointeger(L, -1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - PChar->profile.rankpoints = rankPoints; + PChar->profile.rankpoints = rankPoints; charutils::SaveMissionsList(PChar); return 0; } @@ -820,13 +820,13 @@ { if( m_PBaseEntity != NULL ) { - if( m_PBaseEntity->objtype == TYPE_PC ) + if( m_PBaseEntity->objtype == TYPE_PC ) { if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { int32 rankPoints = (int32)lua_tointeger(L, -1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - PChar->profile.rankpoints += rankPoints; + PChar->profile.rankpoints += rankPoints; charutils::SaveMissionsList(PChar); return 0; } @@ -862,13 +862,13 @@ { if( m_PBaseEntity != NULL ) { - if( m_PBaseEntity->objtype == TYPE_PC ) + if( m_PBaseEntity->objtype == TYPE_PC ) { if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { int32 rank = (int32)lua_tointeger(L, -1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - PChar->profile.rank[PChar->profile.nation] = rank; + PChar->profile.rank[PChar->profile.nation] = rank; charutils::SaveMissionsList(PChar); return 0; } @@ -902,7 +902,7 @@ { PChar->m_questLog[logID].current [questID/8] |= (1 << (questID % 8)); PChar->pushPacket(new CQuestMissionLogPacket(PChar, logID, 1)); - + } }else{ ShowError(CL_RED"Lua::addQuest: LogID %i or QuestID %i is invalid\n" CL_RESET, logID, questID); @@ -946,7 +946,7 @@ }else{ ShowError(CL_RED"Lua::delQuest: LogID %i or QuestID %i is invalid\n" CL_RESET, logID, questID); } - + lua_pushnil(L); return 1; } @@ -968,13 +968,13 @@ { uint8 current = ((CCharEntity*)m_PBaseEntity)->m_questLog[logID].current [questID/8] & (1 << (questID % 8)); uint8 complete = ((CCharEntity*)m_PBaseEntity)->m_questLog[logID].complete[questID/8] & (1 << (questID % 8)); - + lua_pushinteger( L, (complete != 0 ? 2 : (current != 0 ? 1 : 0)) ); return 1; }else{ ShowError(CL_RED"Lua::getQuestStatus: LogID %i or QuestID %i is invalid\n" CL_RESET, logID, questID); } - + lua_pushnil(L); return 1; } @@ -993,7 +993,7 @@ uint8 questID = (uint8)lua_tointeger(L,-1); uint8 logID = (uint8)lua_tointeger(L,-2); - + if(logID < MAX_QUESTAREA && questID < MAX_QUESTID) { uint8 complete = PChar->m_questLog[logID].complete[questID/8] & (1 << (questID % 8)); @@ -1010,7 +1010,7 @@ }else{ ShowError(CL_RED"Lua::completeQuest: LogID %i or QuestID %i is invalid\n" CL_RESET, logID, questID); } - + lua_pushnil(L); return 1; } @@ -1035,7 +1035,7 @@ if(logID < MAX_QUESTAREA && questID < MAX_QUESTID) { uint8 complete = ((CCharEntity*)m_PBaseEntity)->m_questLog[logID].complete[questID/8] & (1 << (questID % 8)); - + lua_pushboolean( L, (complete != 0) ); return 1; } @@ -1111,9 +1111,9 @@ PChar->m_missionLog[LogID].current = LogID > 2 ? 0 : -1; PChar->pushPacket(new CQuestMissionLogPacket(PChar, LogID+10, 1)); } - if (complete != 0) + if (complete != 0) { - PChar->m_missionLog[LogID].complete[MissionID] = false; + PChar->m_missionLog[LogID].complete[MissionID] = false; PChar->pushPacket(new CQuestMissionLogPacket(PChar, LogID+10, 2)); } charutils::SaveMissionsList(PChar); @@ -1213,7 +1213,7 @@ PChar->m_missionLog[LogID].complete[MissionID] = true; PChar->pushPacket(new CQuestMissionLogPacket(PChar, LogID+10, 1)); PChar->pushPacket(new CQuestMissionLogPacket(PChar, LogID+10, 2)); - + charutils::SaveMissionsList(PChar); } else @@ -1260,7 +1260,7 @@ uint16 KeyItemID = (uint16)lua_tointeger(L, -1); - if( charutils::delKeyItem(PChar,KeyItemID) ) + if( charutils::delKeyItem(PChar,KeyItemID) ) { PChar->pushPacket(new CKeyItemsPacket(PChar,(KEYS_TABLE)(KeyItemID >> 9))); @@ -1304,11 +1304,11 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - + uint16 KeyItemID = (uint16)lua_tointeger(L, -1); lua_pushboolean( L, (charutils::seenKeyItem((CCharEntity*)m_PBaseEntity,KeyItemID) != 0)); - return 1; + return 1; } /************************************************************************ @@ -1329,7 +1329,7 @@ uint16 KeyItemID = (uint16)lua_tointeger(L, -1); - if( charutils::unseenKeyItem(PChar,KeyItemID) ) + if( charutils::unseenKeyItem(PChar,KeyItemID) ) { PChar->pushPacket(new CKeyItemsPacket(PChar,(KEYS_TABLE)(KeyItemID >> 9))); @@ -1371,7 +1371,7 @@ CBattleEntity* PEntity = (CBattleEntity*)m_PBaseEntity; - switch(lua_tointeger(L,-1)) + switch(lua_tointeger(L,-1)) { case MOD_STR: lua_pushinteger(L, PEntity->STR()); break; case MOD_DEX: lua_pushinteger(L, PEntity->DEX()); break; @@ -1454,7 +1454,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - + uint16 SpellID = (uint16)lua_tointeger(L,-1); lua_pushboolean(L, (charutils::hasSpell((CCharEntity*)m_PBaseEntity, SpellID) != 0)); @@ -1505,7 +1505,7 @@ uint16 SpellID = (uint16)lua_tointeger(L,-1); - if (charutils::delSpell(PChar,SpellID)) + if (charutils::delSpell(PChar,SpellID)) { charutils::SaveSpells(PChar); PChar->pushPacket(new CCharSpellsPacket(PChar)); @@ -1582,10 +1582,10 @@ if (JobID < MAX_JOBTYPE) { PChar->jobs.unlocked |= (1 << JobID); - + if (JobID == JOB_NON) JobID = JOB_WAR; if (PChar->jobs.job[JobID] == 0) PChar->jobs.job[JobID] = 1; - + charutils::SaveCharJob(PChar, JobID); PChar->pushPacket(new CCharJobsPacket(PChar)); } @@ -1638,7 +1638,7 @@ if( m_PBaseEntity->objtype == TYPE_PC ) { CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + if( !lua_isnil(L,1) && lua_isnumber(L,1) ) { PChar->m_LevelRestriction = (uint32)lua_tointeger(L,1); @@ -1691,7 +1691,7 @@ if( m_PBaseEntity->objtype == TYPE_PC ) { CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + RELEASE_TYPE releaseType = RELEASE_STANDARD; if (PChar->m_event.EventID != -1) @@ -1721,10 +1721,10 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + int32 n = lua_gettop(L); - if (n > 10) + if (n > 10) { ShowError("CLuaBaseEntity::startEvent: Could not start event, Lack of arguments.\n"); lua_settop(L,-n); @@ -1762,7 +1762,7 @@ param6 = (uint32)lua_tointeger(L,8); if( !lua_isnil(L,9) && lua_isnumber(L,9) ) param7 = (uint32)lua_tointeger(L,9); - + ((CCharEntity*)m_PBaseEntity)->pushPacket( new CEventPacket( (CCharEntity*)m_PBaseEntity, @@ -1775,7 +1775,7 @@ param4, param5, param6, - param7)); + param7)); // если требуется вернуть фиктивный результат, то делаем это if( !lua_isnil(L,10) && lua_isnumber(L,10) ) @@ -1795,13 +1795,13 @@ { int32 n = lua_gettop(L); - if ( n > 8 ) + if ( n > 8 ) { ShowError("CLuaBaseEntity::updateEvent: Could not update event, Lack of arguments.\n"); lua_settop(L,-n); return 0; } - + uint32 param0 = 0; uint32 param1 = 0; uint32 param2 = 0; @@ -1837,7 +1837,7 @@ param4, param5, param6, - param7)); + param7)); return 0; } @@ -1884,14 +1884,14 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isuserdata(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); - + uint16 messageID = (uint16)lua_tointeger(L,2); CLuaBaseEntity* PLuaBaseEntity = Lunar::check(L,1); if(PLuaBaseEntity != NULL) { - CBaseEntity* PBaseEntity = PLuaBaseEntity->GetBaseEntity(); + CBaseEntity* PBaseEntity = PLuaBaseEntity->GetBaseEntity(); if (PBaseEntity->objtype == TYPE_NPC) { PBaseEntity->m_TargID = m_PBaseEntity->targid; @@ -1940,7 +1940,7 @@ { uint32 menu = (uint32)lua_tointeger(L, -1); - switch(menu) + switch(menu) { case 1: PChar->pushPacket(new CMenuMogPacket()); @@ -1992,11 +1992,11 @@ GUILDSTATUS status = GUILD_OPEN; - if(VanadielDay == holiday) - { + if(VanadielDay == holiday) + { status = GUILD_HOLYDAY; - } - else if ((VanadielHour < open) || (VanadielHour >= close)) + } + else if ((VanadielHour < open) || (VanadielHour >= close)) { status = GUILD_CLOSE; } @@ -2023,16 +2023,16 @@ int32 value = 0; - const int8* varname = lua_tostring(L, -1); + const int8* varname = lua_tostring(L, -1); const int8* fmtQuery = "SELECT value FROM char_vars WHERE charid = %u AND varname = '%s' LIMIT 1;"; int32 ret = Sql_Query(SqlHandle,fmtQuery,m_PBaseEntity->id, varname); - if (ret != SQL_ERROR && + if (ret != SQL_ERROR && Sql_NumRows(SqlHandle) != 0 && Sql_NextRow(SqlHandle) == SQL_SUCCESS) { - value = (int32)Sql_GetIntData(SqlHandle,0); + value = (int32)Sql_GetIntData(SqlHandle,0); } lua_pushinteger(L, value); @@ -2053,9 +2053,9 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,-2) || !lua_isstring(L,-2)); - const int8* varname = lua_tostring(L,-2); - int32 value = (int32)lua_tointeger(L,-1); - + const int8* varname = lua_tostring(L,-2); + int32 value = (int32)lua_tointeger(L,-1); + if (value == 0) { Sql_Query(SqlHandle,"DELETE FROM char_vars WHERE charid = %u AND varname = '%s' LIMIT 1;",m_PBaseEntity->id, varname); @@ -2063,9 +2063,9 @@ } const int8* fmtQuery = "INSERT INTO char_vars SET charid = %u, varname = '%s', value = %i ON DUPLICATE KEY UPDATE value = %i;"; - + Sql_Query(SqlHandle,fmtQuery,m_PBaseEntity->id, varname, value, value); - + lua_pushnil(L); return 1; } @@ -2084,17 +2084,17 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,-2) || !lua_isstring(L,-2)); - const int8* varname = lua_tostring(L,-2); - int32 value = (int32)lua_tointeger(L,-1); + const int8* varname = lua_tostring(L,-2); + int32 value = (int32)lua_tointeger(L,-1); const int8* Query = "INSERT INTO char_vars SET charid = %u, varname = '%s', value = %i ON DUPLICATE KEY UPDATE value = value + %i;"; - + Sql_Query(SqlHandle, Query, - m_PBaseEntity->id, - varname, - value, + m_PBaseEntity->id, + varname, + value, value); - + return 0; } @@ -2116,9 +2116,9 @@ const int8* varname = lua_tostring(L,-3); int32 bit = (int32)lua_tointeger(L,-2); bool state = ( lua_toboolean(L,-1) == 0 ? false : true ); - + int32 value = (int32)lua_tointeger(L,-4); - + if(state == true) { value |= (1<id, varname, value, value); - + lua_pushinteger(L, value); return 1; } @@ -2174,7 +2174,7 @@ uint8 count = 0; uint32 value = (uint32)lua_tointeger(L,-1); - for (uint8 bit = 0; bit < 32; bit++) + for (uint8 bit = 0; bit < 32; bit++) { if (value & (1 << bit)) count++; } @@ -2197,12 +2197,12 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-2) || !lua_isnumber(L,-2)); bool condition = false; - + int32 value = (int32)lua_tointeger(L,-2); int16 size = (int16)lua_tointeger(L,-1); - + condition = (value == intpow32(2, size)-1); - + lua_pushboolean(L, condition); return 1; } @@ -2210,7 +2210,7 @@ //==========================================================// -inline int32 CLuaBaseEntity::setHomePoint(lua_State *L) +inline int32 CLuaBaseEntity::setHomePoint(lua_State *L) { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); @@ -2219,17 +2219,17 @@ PChar->profile.home_point.p = PChar->loc.p; PChar->profile.home_point.destination = PChar->getZone(); - + const int8 *fmtQuery = "UPDATE chars \ SET home_zone = %u, home_rot = %u, home_x = %.3f, home_y = %.3f, home_z = %.3f \ WHERE charid = %u;"; - Sql_Query(SqlHandle, fmtQuery, - PChar->profile.home_point.destination, + Sql_Query(SqlHandle, fmtQuery, + PChar->profile.home_point.destination, PChar->profile.home_point.p.rotation, - PChar->profile.home_point.p.x, - PChar->profile.home_point.p.y, - PChar->profile.home_point.p.z, + PChar->profile.home_point.p.x, + PChar->profile.home_point.p.y, + PChar->profile.home_point.p.z, PChar->id); return 0; } @@ -2244,9 +2244,9 @@ { CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - for (uint8 slotID = 0; slotID < TRADE_CONTAINER_SIZE; ++slotID) + for (uint8 slotID = 0; slotID < TRADE_CONTAINER_SIZE; ++slotID) { - if(PChar->Container->getInvSlotID(slotID) != 0xFF) + if(PChar->Container->getInvSlotID(slotID) != 0xFF) { uint8 invSlotID = PChar->Container->getInvSlotID(slotID); int32 quantity = PChar->Container->getQuantity(slotID); @@ -2275,7 +2275,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - + uint16 TitleID = (uint16)lua_tointeger(L,-1); lua_pushboolean(L, (charutils::hasTitle((CCharEntity*)m_PBaseEntity, TitleID) != 0)); @@ -2292,7 +2292,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + lua_pushinteger( L, ((CCharEntity*)m_PBaseEntity)->profile.title ); return 1; } @@ -2307,7 +2307,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; @@ -2370,7 +2370,7 @@ uint16 TitleID = (uint16)lua_tointeger(L,-1); - if (charutils::delTitle(PChar, TitleID)) + if (charutils::delTitle(PChar, TitleID)) { if (PChar->profile.title == TitleID) { @@ -2392,8 +2392,8 @@ if( m_PBaseEntity->objtype == TYPE_PC ) { CItem * item = ((CCharEntity*)m_PBaseEntity)->getStorage(LOC_INVENTORY)->GetItem(0); - - if(item == NULL || !(item->getType() & ITEM_CURRENCY)) + + if(item == NULL || !(item->getType() & ITEM_CURRENCY)) { ShowFatalError(CL_RED"lua::getGil : No Gil in currency slot\n" CL_RESET); return 0; @@ -2427,8 +2427,8 @@ if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { CItem * item = ((CCharEntity*)m_PBaseEntity)->getStorage(LOC_INVENTORY)->GetItem(0); - - if(item == NULL || !(item->getType() & ITEM_CURRENCY)) + + if(item == NULL || !(item->getType() & ITEM_CURRENCY)) { ShowFatalError(CL_RED"lua::addGil : No Gil in currency slot\n" CL_RESET); return 0; @@ -2455,13 +2455,13 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); bool result = false; CItem* PItem = ((CCharEntity*)m_PBaseEntity)->getStorage(LOC_INVENTORY)->GetItem(0); - + if (PItem != NULL && (PItem->getType() & ITEM_CURRENCY)) { int32 gil = (int32)lua_tointeger(L, -1); @@ -2486,8 +2486,8 @@ if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { CItem * item = ((CCharEntity*)m_PBaseEntity)->getStorage(LOC_INVENTORY)->GetItem(0); - - if(item == NULL || !(item->getType() & ITEM_CURRENCY)) + + if(item == NULL || !(item->getType() & ITEM_CURRENCY)) { ShowFatalError(CL_RED"lua::setGil : No Gil in currency slot\n" CL_RESET); return 0; @@ -2520,7 +2520,7 @@ uint32 param1 = 0; uint32 param2 = 0; uint32 param3 = 0; - + bool showName = 0; if( !lua_isnil(L,2) && lua_isnumber(L,2) ) @@ -2534,7 +2534,7 @@ if( !lua_isnil(L,6) && lua_isboolean(L,6) ) showName = ( lua_toboolean(L,6) == 0 ? false : true ); - + ((CCharEntity*)m_PBaseEntity)->pushPacket( new CMessageSpecialPacket( m_PBaseEntity, @@ -2543,7 +2543,7 @@ param1, param2, param3, - showName)); + showName)); return 0; } } @@ -2573,7 +2573,7 @@ param0 = (uint32)lua_tointeger(L,2); if( !lua_isnil(L,3) && lua_isnumber(L,3) ) param1 = (uint32)lua_tointeger(L,3); - + if(m_PBaseEntity->objtype == TYPE_PC){ ((CCharEntity*)m_PBaseEntity)->pushPacket(new CMessageBasicPacket(m_PBaseEntity, m_PBaseEntity, param0, param1, messageID)); } @@ -2691,7 +2691,7 @@ param0 = (uint32)lua_tointeger(L,2); if( !lua_isnil(L,3) && lua_isnumber(L,3) ) param1 = (uint32)lua_tointeger(L,3); - + ((CCharEntity*)m_PBaseEntity)->pushPacket(new CMessageSystemPacket(param0,param1,messageID)); return 0; } @@ -2730,7 +2730,7 @@ { if( m_PBaseEntity->objtype == TYPE_PC ) { - if (lua_gettop(L) < 2) + if (lua_gettop(L) < 2) { ShowDebug("lua:addShopItem : Not enough information for addItem[itemID,price]\n"); lua_pushnil(L); @@ -2768,13 +2768,13 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); - - uint8 fameArea = (uint8)lua_tointeger(L, -1); + + uint8 fameArea = (uint8)lua_tointeger(L, -1); uint16 fame = 0; CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - switch (fameArea) + switch (fameArea) { case 0: // San d'Oria case 1: // Bastock @@ -2808,7 +2808,7 @@ this->getFame(L); - uint16 fame = (uint16)lua_tointeger(L, -1); + uint16 fame = (uint16)lua_tointeger(L, -1); uint8 fameLevel = 1; if (fame >= 2450) @@ -2846,10 +2846,10 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,-2) || !lua_isnumber(L,-2)); - uint8 fameArea = (uint8) lua_tointeger(L,-2); + uint8 fameArea = (uint8) lua_tointeger(L,-2); uint16 fame = (uint16)lua_tointeger(L,-1); - - switch(fameArea) + + switch(fameArea) { case 0: // San d'Oria case 1: // Bastock @@ -2886,10 +2886,10 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,-1) || !lua_isnumber(L,-1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,-2) || !lua_isnumber(L,-2)); - uint8 fameArea = (uint8) lua_tointeger(L,-2); + uint8 fameArea = (uint8) lua_tointeger(L,-2); uint16 fame = (uint16)lua_tointeger(L,-1); - - switch(fameArea) + + switch(fameArea) { case 0: // San d'Oria case 1: // Bastock @@ -2910,14 +2910,14 @@ break; } return 0; -} +} //==========================================================// inline int32 CLuaBaseEntity::getAnimation(lua_State *L) { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - + lua_pushinteger(L, m_PBaseEntity->animation); return 1; } @@ -2959,7 +2959,7 @@ inline int32 CLuaBaseEntity::speed(lua_State *L) { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - + if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { uint8 speed = (uint8)dsp_min(lua_tointeger(L,-1), 255); @@ -2990,7 +2990,7 @@ inline int32 CLuaBaseEntity::AnimationSub(lua_State *L) { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - + if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) { uint8 animationsub = (uint8)lua_tointeger(L,-1); @@ -3022,7 +3022,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; if( !lua_isnil(L,-1) && lua_isnumber(L,-1) ) @@ -3122,7 +3122,7 @@ if( m_PBaseEntity != NULL ) { if( m_PBaseEntity->objtype == TYPE_PC ) - { + { // недостаточно условий, tractor можно читать только на мертвую цель if( !lua_isnil(L,-1) && lua_isnumber(L,-1) && @@ -3139,8 +3139,8 @@ ((CCharEntity*)m_PBaseEntity)->m_StartActionPos.y = (float)lua_tonumber(L, -2); ((CCharEntity*)m_PBaseEntity)->m_StartActionPos.z = (float)lua_tonumber(L, -3); ((CCharEntity*)m_PBaseEntity)->m_StartActionPos.rotation = (int8)lua_tonumber(L, -4); - - ((CCharEntity*)m_PBaseEntity)->pushPacket(new CRaiseTractorMenuPacket((CCharEntity*)m_PBaseEntity, TYPE_TRACTOR)); + + ((CCharEntity*)m_PBaseEntity)->pushPacket(new CRaiseTractorMenuPacket((CCharEntity*)m_PBaseEntity, TYPE_TRACTOR)); } return 0; } @@ -3160,7 +3160,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; @@ -3174,7 +3174,7 @@ else if(PChar->m_hasRaise == 0) { PChar->m_hasRaise = RaiseLevel; - PChar->pushPacket(new CRaiseTractorMenuPacket(PChar, TYPE_RAISE)); + PChar->pushPacket(new CRaiseTractorMenuPacket(PChar, TYPE_RAISE)); } return 0; } @@ -3189,12 +3189,12 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); DSP_DEBUG_BREAK_IF(lua_isnil(L,3) || !lua_isnumber(L,3)); DSP_DEBUG_BREAK_IF(lua_isnil(L,4) || !lua_isnumber(L,4)); - + int32 n = lua_gettop(L); CStatusEffect * PEffect = new CStatusEffect( @@ -3221,13 +3221,13 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); DSP_DEBUG_BREAK_IF(lua_isnil(L,3) || !lua_isnumber(L,3)); DSP_DEBUG_BREAK_IF(lua_isnil(L,4) || !lua_isnumber(L,4)); DSP_DEBUG_BREAK_IF(lua_isnil(L,5) || !lua_isnumber(L,5)); - + int32 n = lua_gettop(L); CStatusEffect * PEffect = new CStatusEffect( @@ -3250,7 +3250,7 @@ * * ************************************************************************/ -inline int32 CLuaBaseEntity::getPartyMember(lua_State* L) +inline int32 CLuaBaseEntity::getPartyMember(lua_State* L) { if( m_PBaseEntity != NULL ) { @@ -3259,7 +3259,7 @@ uint8 member = (uint8)lua_tonumber(L,-1); uint8 allianceparty = (uint8)lua_tonumber(L,-2); CBattleEntity* PTargetChar = NULL; - + if(allianceparty == 0 && member == 0) PTargetChar =((CBattleEntity*)m_PBaseEntity); else if(((CBattleEntity*)m_PBaseEntity)->PParty != NULL) @@ -3287,7 +3287,7 @@ return 1; } -inline int32 CLuaBaseEntity::getPartySize(lua_State* L) +inline int32 CLuaBaseEntity::getPartySize(lua_State* L) { if( m_PBaseEntity != NULL ) { @@ -3302,7 +3302,7 @@ else if( ((CBattleEntity*)m_PBaseEntity)->PParty->m_PAlliance != NULL) partysize = ((CBattleEntity*)m_PBaseEntity)->PParty->m_PAlliance->partyList.at(allianceparty)->members.size(); } - + lua_pushnumber( L,partysize ); return 1; } @@ -3311,7 +3311,7 @@ return 1; } -inline int32 CLuaBaseEntity::getAllianceSize(lua_State* L) +inline int32 CLuaBaseEntity::getAllianceSize(lua_State* L) { if( m_PBaseEntity != NULL ) { @@ -3338,7 +3338,7 @@ { if( !lua_isnil(L,1) && lua_isnumber(L,1) && !lua_isnil(L,2) && lua_isnumber(L,2) && - !lua_isnil(L,3) && lua_isnumber(L,3) && + !lua_isnil(L,3) && lua_isnumber(L,3) && !lua_isnil(L,4) && lua_isnumber(L,4) ) { int32 n = lua_gettop(L); @@ -3353,10 +3353,10 @@ (n >= 7 ? (uint16)lua_tointeger(L,7) : 0)); CCharEntity* PChar = ((CCharEntity*)m_PBaseEntity); - + for (int i=0; i< PChar->PParty->members.size(); ++i) { - if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) + if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) { PChar->PParty->members[i]->StatusEffectContainer->AddStatusEffect(PEffect); } @@ -3383,14 +3383,14 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); uint8 n = lua_gettop(L); - + CStatusEffect* PStatusEffect = ((CBattleEntity*)m_PBaseEntity)->StatusEffectContainer->GetStatusEffect( - (EFFECT)lua_tointeger(L,1), + (EFFECT)lua_tointeger(L,1), (n >= 2) ? (uint16)lua_tointeger(L,2) : 0); - + if (PStatusEffect == NULL) lua_pushnil(L); - else + else { lua_pop(L,1); lua_pushstring(L, CLuaStatusEffect::className); @@ -3425,9 +3425,9 @@ if (lua_gettop(L) >= 2) { hasEffect = ((CBattleEntity*)m_PBaseEntity)->StatusEffectContainer->HasStatusEffect( - (EFFECT)lua_tointeger(L,1), + (EFFECT)lua_tointeger(L,1), (uint16)lua_tointeger(L,2)); - } else { + } else { hasEffect = ((CBattleEntity*)m_PBaseEntity)->StatusEffectContainer->HasStatusEffect( (EFFECT)lua_tointeger(L,1)); } @@ -3462,7 +3462,7 @@ { /* Delete matching status effect any power */ result = ((CBattleEntity*)m_PBaseEntity)->StatusEffectContainer->DelStatusEffect((EFFECT)lua_tointeger(L,1)); - } + } } lua_pushboolean(L, result); @@ -3482,10 +3482,10 @@ int32 n = lua_gettop(L); CCharEntity* PChar = ((CCharEntity*)m_PBaseEntity); - + for (int i=0; i< PChar->PParty->members.size(); ++i) { - if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) + if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) { PChar->PParty->members[i]->StatusEffectContainer->DelStatusEffect((EFFECT)lua_tointeger(L,1)); } @@ -3505,16 +3505,16 @@ { if( m_PBaseEntity->objtype != TYPE_NPC ) { - + int32 n = lua_gettop(L); CCharEntity* PChar = ((CCharEntity*)m_PBaseEntity); if (PChar->PParty != NULL) { for (int i=0; i< PChar->PParty->members.size(); ++i) - { - if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) + { + if (PChar->PParty->members[i]->loc.zone == PChar->loc.zone) { - PChar->PParty->members[i]->StatusEffectContainer->HasStatusEffect((EFFECT)lua_tointeger(L,1)); + PChar->PParty->members[i]->StatusEffectContainer->HasStatusEffect((EFFECT)lua_tointeger(L,1)); } } return 1; @@ -3561,10 +3561,10 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); - + ((CBattleEntity*)m_PBaseEntity)->addModifier( lua_tointeger(L,1), lua_tointeger(L,2)); @@ -3577,10 +3577,10 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - lua_pushinteger(L,((CBattleEntity*)m_PBaseEntity)->getMod(lua_tointeger(L,1))); + lua_pushinteger(L,((CBattleEntity*)m_PBaseEntity)->getMod(lua_tointeger(L,1))); return 1; } @@ -3590,15 +3590,15 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); - + ((CBattleEntity*)m_PBaseEntity)->delModifier( lua_tointeger(L,1), lua_tointeger(L,2)); return 0; -} +} //==========================================================// @@ -3606,7 +3606,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_isnil(L,2) || !lua_isnumber(L,2)); @@ -3614,7 +3614,7 @@ lua_tointeger(L,1), lua_tointeger(L,2)); return 0; -} +} /************************************************************************ * * @@ -3742,7 +3742,7 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_tointeger(L,1) > 99); - + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; //PChar->jobs.exp[PChar->GetSJob()] = 0; @@ -3789,7 +3789,7 @@ DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); DSP_DEBUG_BREAK_IF(lua_tointeger(L,1) > 99); - + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->SetMLevel((uint8)lua_tointeger(L,1)); @@ -3852,7 +3852,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + ((CCharEntity*)m_PBaseEntity)->pushPacket(new CMessageStandardPacket( m_PBaseEntity->loc.p.x, m_PBaseEntity->loc.p.y, @@ -3919,7 +3919,7 @@ if (File) { CBasicPacket * PPacket = new CBasicPacket(); - + fseek(File,1,SEEK_SET); fread(&size,1,1,File); @@ -3965,13 +3965,13 @@ CItem* PItem = PChar->getStorage(LOC_INVENTORY)->GetItem(PChar->equip[SLOT]); - if((PItem != NULL) && (PItem->getType() & ITEM_ARMOR)) + if((PItem != NULL) && (PItem->getType() & ITEM_ARMOR)) { - lua_pushinteger(L,PItem->getID()); + lua_pushinteger(L,PItem->getID()); return 1; } } - lua_pushinteger(L,0); + lua_pushinteger(L,0); return 1; } @@ -3985,7 +3985,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); uint8 SLOT = (uint8)lua_tointeger(L,1); @@ -3995,7 +3995,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; charutils::EquipItem(PChar, 0, SLOT); - + PChar->m_EquipBlock |= 1 << SLOT; PChar->pushPacket(new CCharAppearancePacket(PChar)); PChar->pushPacket(new CEquipPacket(0, SLOT)); @@ -4015,7 +4015,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); uint8 SLOT = (uint8)lua_tointeger(L,1); @@ -4162,36 +4162,60 @@ inline int32 CLuaBaseEntity::updateEnmity(lua_State *L) { - DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_MOB); + DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); + DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_MOB); //DSP_DEBUG_BREAK_IF(lua_gettop(L) > 1); - DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isuserdata(L,1)); + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isuserdata(L,1)); - CLuaBaseEntity* PEntity = Lunar::check(L,1); + CLuaBaseEntity* PEntity = Lunar::check(L,1); - if (PEntity != NULL && + if (PEntity != NULL && PEntity->GetBaseEntity()->objtype != TYPE_NPC) - { + { ((CMobEntity*)m_PBaseEntity)->PEnmityContainer->AddBaseEnmity((CBattleEntity*)PEntity->GetBaseEntity()); - } - return 0; + } + return 0; } /************************************************************************ - Check if the mob has immunity for this type of spell - list at mobentity.h - return true if he has immunity, else false + Resets all enmity of player on mob. + Example: + mob:resetEnmity(target) ************************************************************************/ +inline int32 CLuaBaseEntity::resetEnmity(lua_State *L) +{ + DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); + DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_MOB); + + //DSP_DEBUG_BREAK_IF(lua_gettop(L) > 1); + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isuserdata(L,1)); + + CLuaBaseEntity* PEntity = Lunar::check(L,1); + + if (PEntity != NULL && + PEntity->GetBaseEntity()->objtype != TYPE_NPC) + { + ((CMobEntity*)m_PBaseEntity)->PEnmityContainer->LowerEnmityByPercent((CBattleEntity*)PEntity->GetBaseEntity(), 100, NULL); + } + return 0; +} + +/************************************************************************ + Check if the mob has immunity for this type of spell + list at mobentity.h + return true if he has immunity, else false +************************************************************************/ + inline int32 CLuaBaseEntity::hasImmunity(lua_State *L) { - DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_MOB); - DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); + DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); + DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_MOB); + DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - lua_pushboolean(L, ((CBattleEntity*)m_PBaseEntity)->hasImmunity((uint32)lua_tointeger(L,1))); - return 1; + lua_pushboolean(L, ((CBattleEntity*)m_PBaseEntity)->hasImmunity((uint32)lua_tointeger(L,1))); + return 1; } /************************************************************************ @@ -4202,11 +4226,11 @@ inline int32 CLuaBaseEntity::getBattleTime(lua_State *L) { - DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); - DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); + DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); + DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); lua_pushinteger(L, ((CBattleEntity*)m_PBaseEntity)->PBattleAI->GetBattleTime()); - return 1; + return 1; } /************************************************************************ @@ -4263,7 +4287,7 @@ CLuaBaseEntity* PEntity = Lunar::check(L,1); uint32 amount = lua_tointeger(L,2); - if (PEntity != NULL && + if (PEntity != NULL && PEntity->GetBaseEntity()->objtype == TYPE_PC)//TODO: Handle people curing skeletons { battleutils::GenerateCureEnmity((CBattleEntity*)m_PBaseEntity, (CBattleEntity*)PEntity->GetBaseEntity(), amount); @@ -4290,7 +4314,7 @@ CLuaBaseEntity* PEntity = Lunar::check(L,1); uint32 damage = lua_tointeger(L,2); - if (PEntity != NULL && + if (PEntity != NULL && PEntity->GetBaseEntity()->objtype != TYPE_NPC) { ((CMobEntity*)m_PBaseEntity)->PEnmityContainer->UpdateEnmityFromDamage((CBattleEntity*)PEntity->GetBaseEntity(),damage); @@ -4313,7 +4337,7 @@ if (!lua_isnil(L,-1) && lua_isboolean(L,-1)) { - m_PBaseEntity->loc.zoning = lua_toboolean(L,-1); + m_PBaseEntity->loc.zoning = lua_toboolean(L,-1); return 0; } lua_pushboolean( L, m_PBaseEntity->loc.zoning ); @@ -4332,7 +4356,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + CCharEntity* PChar = ((CCharEntity*)m_PBaseEntity); lua_pushinteger(L, PChar->getStorage(lua_tointeger(L,1))->GetSize()); return 1; @@ -4348,7 +4372,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); - + if( !lua_isnil(L,1) && lua_isnumber(L,1) && !lua_isnil(L,2) && lua_isnumber(L,2)) { @@ -4367,13 +4391,13 @@ ShowError(CL_RED"CLuaBaseEntity::changeContainerSize: bad container id (%u)\n", LocationID); } } - return 0; + return 0; } /************************************************************************ * * * * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::takeMagicDamage(lua_State *L) @@ -4397,7 +4421,7 @@ /************************************************************************ * * * Get Entity's id * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::getID(lua_State *L) @@ -4411,7 +4435,7 @@ /************************************************************************ * * * Get Entity's name * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::getName(lua_State *L) @@ -4425,7 +4449,7 @@ /************************************************************************ * * * Gets the current weapon's base DMG; used for WS calcs * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::getWeaponDmg(lua_State *L) @@ -4434,8 +4458,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_MAIN]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getWeaponDmg weapon in main slot is null!\n" CL_RESET); return 0; @@ -4448,7 +4472,7 @@ /************************************************************************ * * * Gets the current offhand weapon's base DMG; used for WS calcs * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::getOffhandDmg(lua_State *L) @@ -4457,8 +4481,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_SUB]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getOffhandDmg weapon in main slot is null!\n" CL_RESET); return 0; @@ -4470,7 +4494,7 @@ /************************************************************************ * * * Gets the skill type of weapon in slot * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::getWeaponSkillType(lua_State *L) { @@ -4480,13 +4504,13 @@ if( !lua_isnil(L,1) && lua_isstring(L,1) ) { uint8 SLOT = (uint8)lua_tointeger(L,1); - if (SLOT > 1) + if (SLOT > 1) { lua_pushinteger(L,0); return 1; } CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT]; - if(weapon == NULL) + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getOffhandDmg weapon in main slot is null!\n" CL_RESET); return 0; @@ -4504,8 +4528,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_RANGED]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getRangedDmg weapon in ranged slot is null!\n" CL_RESET); return 0; @@ -4522,8 +4546,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_AMMO]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getAmmoDmg weapon in ammo slot is null!\n" CL_RESET); return 0; @@ -4540,8 +4564,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_RANGED]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getRATT weapon in ranged slot is null!\n" CL_RESET); return 0; @@ -4559,8 +4583,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_RANGED]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getRACC weapon in ranged slot is null!\n" CL_RESET); return 0; @@ -4572,7 +4596,7 @@ if(skill>200){ acc = 200 + (skill-200)*0.9;} acc += PChar->getMod(MOD_RACC); acc += PChar->AGI()/2; - acc = ((100 + PChar->getMod(MOD_RACCP)) * acc)/100 + + acc = ((100 + PChar->getMod(MOD_RACCP)) * acc)/100 + dsp_min(((100 + PChar->getMod(MOD_FOOD_RACCP)) * acc)/100, PChar->getMod(MOD_FOOD_RACC_CAP)); lua_pushinteger( L, acc); @@ -4587,8 +4611,8 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype == TYPE_NPC); CItemWeapon* weapon = ((CBattleEntity*)m_PBaseEntity)->m_Weapons[SLOT_MAIN]; - - if(weapon == NULL) + + if(weapon == NULL) { ShowDebug(CL_CYAN"lua::getWeaponDmg weapon in main slot is null!\n" CL_RESET); return 0; @@ -4621,8 +4645,8 @@ } if(rand()%100 < hitrate){ - float DamageRatio = battleutils::GetDamageRatio(PAttacker, PDefender, false, 0); - int damage = (uint16)((PAttacker->m_Weapons[SLOT_MAIN]->getDamage() + battleutils::GetFSTR(PAttacker,PDefender,SLOT_MAIN)) * DamageRatio); + float DamageRatio = battleutils::GetDamageRatio(PAttacker, PDefender, false, 0); + int damage = (uint16)((PAttacker->m_Weapons[SLOT_MAIN]->getDamage() + battleutils::GetFSTR(PAttacker,PDefender,SLOT_MAIN)) * DamageRatio); lua_pushinteger( L,damage ); return 1; } @@ -4660,9 +4684,9 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; int instance = 0; - + DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + if(PChar->loc.zone->m_InstanceHandler->hasFreeInstance()){ int Pzone = PChar->getZone(); if(Pzone > 184 && Pzone < 189 || Pzone > 133 && Pzone < 136){ @@ -4673,7 +4697,7 @@ ShowDebug("Free BCNM Instance found for BCNMID %i \n",lua_tointeger(L,1)); instance = PChar->loc.zone->m_InstanceHandler->registerBcnm(lua_tointeger(L,1),PChar); } - + if(instance!=-1){ ShowDebug("Registration successful!\n"); lua_pushinteger( L,instance); @@ -4703,7 +4727,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + int Pzone = PChar->getZone(); if(Pzone > 184 && Pzone < 189 || Pzone > 133 && Pzone < 136){ if(PChar->StatusEffectContainer->HasStatusEffect(EFFECT_DYNAMIS)){ @@ -4768,7 +4792,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + if(PChar->m_insideBCNM){ lua_pushinteger( L,1); return 1; @@ -4785,7 +4809,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + uint8 inst = 255; if(PChar->loc.zone != NULL && PChar->loc.zone->m_InstanceHandler != NULL){ @@ -4805,7 +4829,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + uint8 inst = 255; if(PChar->loc.zone != NULL && PChar->loc.zone->m_InstanceHandler != NULL){ @@ -4827,7 +4851,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + uint8 full = 1; if(PChar->loc.zone!=NULL && PChar->loc.zone->m_InstanceHandler!=NULL && @@ -4843,7 +4867,7 @@ { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); @@ -4860,7 +4884,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + PChar->loc.zone->m_InstanceHandler->dynamisMessage(448,lua_tointeger(L,1)); return 1; @@ -4873,7 +4897,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; DSP_DEBUG_BREAK_IF(PChar->loc.zone->m_InstanceHandler == NULL); - + PChar->loc.zone->m_InstanceHandler->launchDynamisSecondPart(); return 1; @@ -4919,7 +4943,7 @@ /************************************************************************ * * * Открываем дверь и автоматически закрываем через 7 секунд * -* * +* * ************************************************************************/ inline int32 CLuaBaseEntity::openDoor(lua_State *L) @@ -4930,7 +4954,7 @@ if (m_PBaseEntity->animation == ANIMATION_CLOSE_DOOR) { uint32 OpenTime = (!lua_isnil(L,1) && lua_isnumber(L,1)) ? (uint32)lua_tointeger(L,1) * 1000 : 7000; - + m_PBaseEntity->animation = ANIMATION_OPEN_DOOR; m_PBaseEntity->loc.zone->PushPacket(m_PBaseEntity, CHAR_INRANGE, new CEntityUpdatePacket(m_PBaseEntity, ENTITY_UPDATE)); @@ -4953,7 +4977,7 @@ if (m_PBaseEntity->status == STATUS_NORMAL) { uint32 OpenTime = (!lua_isnil(L,1) && lua_isnumber(L,1)) ? (uint32)lua_tointeger(L,1) * 1000 : 15000; - + m_PBaseEntity->status = STATUS_DISAPPEAR; m_PBaseEntity->loc.zone->PushPacket(m_PBaseEntity, CHAR_INRANGE, new CEntityUpdatePacket(m_PBaseEntity, ENTITY_DESPAWN)); @@ -4970,7 +4994,7 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + lua_pushinteger( L, PChar->RegionPoints[PChar->profile.nation] ); return 1; } @@ -4982,14 +5006,14 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + int32 cp = (int32)lua_tointeger(L,1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->RegionPoints[PChar->profile.nation] += cp; charutils::SaveCharPoints(PChar); PChar->pushPacket(new CConquestPacket(PChar)); - + return 0; } @@ -5000,14 +5024,14 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + int32 cp = (int32)lua_tointeger(L,1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->RegionPoints[PChar->profile.nation] -= cp; charutils::SaveCharPoints(PChar); PChar->pushPacket(new CConquestPacket(PChar)); - + return 0; } @@ -5025,7 +5049,7 @@ int32 point = (int32)lua_tointeger(L,1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - + lua_pushinteger( L, PChar->RegionPoints[point] ); return 1; } @@ -5041,14 +5065,14 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1) || lua_isnil(L,2) || !lua_isnumber(L,2)); - + int32 type = (int32)lua_tointeger(L,1); int32 point = (int32)lua_tointeger(L,2); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->RegionPoints[type] += point; charutils::SaveCharPoints(PChar); - + return 0; } @@ -5063,14 +5087,14 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1) || lua_isnil(L,2) || !lua_isnumber(L,2)); - + int32 type = (int32)lua_tointeger(L,1); int32 point = (int32)lua_tointeger(L,2); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; PChar->RegionPoints[type] -= point; charutils::SaveCharPoints(PChar); - + return 0; } @@ -5085,11 +5109,11 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1)); - + int32 nation = (int32)lua_tointeger(L,1); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - - switch(nation) + + switch(nation) { case 0: lua_pushinteger( L, PChar->nationtp.sandoria ); return 1; break; case 1: lua_pushinteger( L, PChar->nationtp.bastok ); return 1; break; @@ -5099,7 +5123,7 @@ case 5: lua_pushinteger( L, PChar->nationtp.pastsandoria ); return 1; break; case 6: lua_pushinteger( L, PChar->nationtp.pastbastok ); return 1; break; case 7: lua_pushinteger( L, PChar->nationtp.pastwindurst ); return 1; break; - default : + default : ShowDebug(CL_CYAN"lua::getNationTeleport no region with this number!\n" CL_RESET); return 0; } @@ -5117,12 +5141,12 @@ DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); DSP_DEBUG_BREAK_IF(m_PBaseEntity->objtype != TYPE_PC); DSP_DEBUG_BREAK_IF(lua_isnil(L,1) || !lua_isnumber(L,1) || lua_isnil(L,2) || !lua_isnumber(L,2)); - + uint16 nation = (uint16)lua_tointeger(L,1); uint32 newTP = (uint32)lua_tointeger(L,2); CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; - - switch(nation) + + switch(nation) { case 0: PChar->nationtp.sandoria += newTP; break; case 1: PChar->nationtp.bastok += newTP; break; @@ -5132,7 +5156,7 @@ case 5: PChar->nationtp.pastsandoria += newTP; break; case 6: PChar->nationtp.pastbastok += newTP; break; case 7: PChar->nationtp.pastwindurst += newTP; break; - default : + default : ShowDebug(CL_CYAN"lua::addNationTeleport no region with this number!\n" CL_RESET); return 0; } @@ -5238,7 +5262,7 @@ CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; uint8 SoloPartyAlliance = 0; - if (PChar->PParty != NULL) + if (PChar->PParty != NULL) { SoloPartyAlliance = 1; if (PChar->PParty->m_PAlliance != NULL) SoloPartyAlliance = 2; @@ -5261,7 +5285,7 @@ CMobEntity* PMob = (CMobEntity*)PLuaBaseEntity->GetBaseEntity(); uint8 charlvl = PChar->GetMLevel(); uint8 maxlevel = PMob->m_HiPCLvl; - + if (map_config.fov_party_gap_penalties == 1) { if (maxlevel > 50 || maxlevel > (charlvl+7)) @@ -5337,13 +5361,13 @@ const int8 CLuaBaseEntity::className[] = "CBaseEntity"; -Lunar::Register_t CLuaBaseEntity::methods[] = +Lunar::Register_t CLuaBaseEntity::methods[] = { LUNAR_DECLARE_METHOD(CLuaBaseEntity,warp), LUNAR_DECLARE_METHOD(CLuaBaseEntity,leavegame), - LUNAR_DECLARE_METHOD(CLuaBaseEntity,getID), - LUNAR_DECLARE_METHOD(CLuaBaseEntity,getName), - LUNAR_DECLARE_METHOD(CLuaBaseEntity,getHP), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,getID), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,getName), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,getHP), LUNAR_DECLARE_METHOD(CLuaBaseEntity,addHP), LUNAR_DECLARE_METHOD(CLuaBaseEntity,delHP), LUNAR_DECLARE_METHOD(CLuaBaseEntity,setHP), @@ -5437,7 +5461,7 @@ LUNAR_DECLARE_METHOD(CLuaBaseEntity,delGil), LUNAR_DECLARE_METHOD(CLuaBaseEntity,setGil), LUNAR_DECLARE_METHOD(CLuaBaseEntity,addExp), - LUNAR_DECLARE_METHOD(CLuaBaseEntity,createShop), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,createShop), LUNAR_DECLARE_METHOD(CLuaBaseEntity,addShopItem), LUNAR_DECLARE_METHOD(CLuaBaseEntity,getFame), LUNAR_DECLARE_METHOD(CLuaBaseEntity,setFame), @@ -5470,7 +5494,8 @@ LUNAR_DECLARE_METHOD(CLuaBaseEntity,moghouseFlag), LUNAR_DECLARE_METHOD(CLuaBaseEntity,injectPacket), LUNAR_DECLARE_METHOD(CLuaBaseEntity,showPosition), - LUNAR_DECLARE_METHOD(CLuaBaseEntity,updateEnmity), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,updateEnmity), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,resetEnmity), LUNAR_DECLARE_METHOD(CLuaBaseEntity,updateEnmityFromDamage), LUNAR_DECLARE_METHOD(CLuaBaseEntity,getEquipID), LUNAR_DECLARE_METHOD(CLuaBaseEntity,lockEquipSlot),