Misc updates
This commit is contained in:
@@ -216,35 +216,35 @@ namespace Game.Chat
|
|||||||
var its = Global.ObjectMgr.GetItemTemplates();
|
var its = Global.ObjectMgr.GetItemTemplates();
|
||||||
foreach (var template in its)
|
foreach (var template in its)
|
||||||
{
|
{
|
||||||
if (template.Value.GetItemSet() == itemSetId)
|
if (template.Value.GetItemSet() != itemSetId)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
found = true;
|
||||||
|
List<ItemPosCount> dest = new();
|
||||||
|
InventoryResult msg = playerTarget.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, template.Value.GetId(), 1);
|
||||||
|
if (msg == InventoryResult.Ok)
|
||||||
{
|
{
|
||||||
found = true;
|
List<uint> bonusListIDsForItem = new(bonusListIDs); // copy, bonuses for each depending on context might be different for each item
|
||||||
List<ItemPosCount> dest = new();
|
if (itemContext != ItemContext.None && itemContext < ItemContext.Max)
|
||||||
InventoryResult msg = playerTarget.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, template.Value.GetId(), 1);
|
|
||||||
if (msg == InventoryResult.Ok)
|
|
||||||
{
|
{
|
||||||
List<uint> bonusListIDsForItem = new(bonusListIDs); // copy, bonuses for each depending on context might be different for each item
|
var contextBonuses = Global.DB2Mgr.GetDefaultItemBonusTree(template.Value.GetId(), itemContext);
|
||||||
if (itemContext != ItemContext.None && itemContext < ItemContext.Max)
|
bonusListIDsForItem.AddRange(contextBonuses);
|
||||||
{
|
|
||||||
var contextBonuses = Global.DB2Mgr.GetDefaultItemBonusTree(template.Value.GetId(), itemContext);
|
|
||||||
bonusListIDsForItem.AddRange(contextBonuses);
|
|
||||||
}
|
|
||||||
|
|
||||||
Item item = playerTarget.StoreNewItem(dest, template.Value.GetId(), true, 0, null, itemContext, bonusListIDsForItem);
|
|
||||||
|
|
||||||
// remove binding (let GM give it to another player later)
|
|
||||||
if (player == playerTarget)
|
|
||||||
item.SetBinding(false);
|
|
||||||
|
|
||||||
player.SendNewItem(item, 1, false, true);
|
|
||||||
if (player != playerTarget)
|
|
||||||
playerTarget.SendNewItem(item, 1, true, false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendEquipError(msg, null, null, template.Value.GetId());
|
|
||||||
handler.SendSysMessage(CypherStrings.ItemCannotCreate, template.Value.GetId(), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Item item = playerTarget.StoreNewItem(dest, template.Value.GetId(), true, 0, null, itemContext, bonusListIDsForItem);
|
||||||
|
|
||||||
|
// remove binding (let GM give it to another player later)
|
||||||
|
if (player == playerTarget)
|
||||||
|
item.SetBinding(false);
|
||||||
|
|
||||||
|
player.SendNewItem(item, 1, false, true);
|
||||||
|
if (player != playerTarget)
|
||||||
|
playerTarget.SendNewItem(item, 1, true, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.SendEquipError(msg, null, null, template.Value.GetId());
|
||||||
|
handler.SendSysMessage(CypherStrings.ItemCannotCreate, template.Value.GetId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3668,7 +3668,6 @@ namespace Game
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint count = 0;
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
uint entry = result.Read<uint>(0);
|
uint entry = result.Read<uint>(0);
|
||||||
@@ -3817,11 +3816,10 @@ namespace Game
|
|||||||
}
|
}
|
||||||
|
|
||||||
_gameObjectTemplateStorage[entry] = got;
|
_gameObjectTemplateStorage[entry] = got;
|
||||||
++count;
|
|
||||||
}
|
}
|
||||||
while (result.NextRow());
|
while (result.NextRow());
|
||||||
|
|
||||||
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} game object templates in {1} ms", count, Time.GetMSTimeDiffToNow(time));
|
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} game object templates in {1} ms", _gameObjectTemplateStorage.Count, Time.GetMSTimeDiffToNow(time));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void LoadGameObjectTemplateAddons()
|
public void LoadGameObjectTemplateAddons()
|
||||||
@@ -4239,48 +4237,43 @@ namespace Game
|
|||||||
uint count = 0;
|
uint count = 0;
|
||||||
|
|
||||||
// collect GO entries for GO that must activated
|
// collect GO entries for GO that must activated
|
||||||
foreach (var go in GetGameObjectTemplates())
|
foreach (var pair in GetGameObjectTemplates())
|
||||||
{
|
{
|
||||||
switch (go.Value.type)
|
switch (pair.Value.type)
|
||||||
{
|
{
|
||||||
case GameObjectTypes.QuestGiver:
|
case GameObjectTypes.QuestGiver:
|
||||||
_gameObjectForQuestStorage.Add(go.Value.entry);
|
|
||||||
++count;
|
|
||||||
break;
|
break;
|
||||||
case GameObjectTypes.Chest:
|
case GameObjectTypes.Chest:
|
||||||
{
|
{
|
||||||
// scan GO chest with loot including quest items
|
// scan GO chest with loot including quest items
|
||||||
uint loot_id = (go.Value.GetLootId());
|
uint lootId = pair.Value.GetLootId();
|
||||||
|
|
||||||
// find quest loot for GO
|
// find quest loot for GO
|
||||||
if (go.Value.Chest.questID != 0 || Loots.LootStorage.Gameobject.HaveQuestLootFor(loot_id))
|
if (pair.Value.Chest.questID != 0 || Loots.LootStorage.Gameobject.HaveQuestLootFor(lootId))
|
||||||
{
|
break;
|
||||||
_gameObjectForQuestStorage.Add(go.Value.entry);
|
|
||||||
++count;
|
continue;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case GameObjectTypes.Generic:
|
case GameObjectTypes.Generic:
|
||||||
{
|
{
|
||||||
if (go.Value.Generic.questID > 0) //quests objects
|
if (pair.Value.Generic.questID > 0) //quests objects
|
||||||
{
|
break;
|
||||||
_gameObjectForQuestStorage.Add(go.Value.entry);
|
|
||||||
++count;
|
continue;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case GameObjectTypes.Goober:
|
case GameObjectTypes.Goober:
|
||||||
{
|
{
|
||||||
if (go.Value.Goober.questID > 0) //quests objects
|
if (pair.Value.Goober.questID > 0) //quests objects
|
||||||
{
|
break;
|
||||||
_gameObjectForQuestStorage.Add(go.Value.entry);
|
|
||||||
++count;
|
continue;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_gameObjectForQuestStorage.Add(pair.Value.entry);
|
||||||
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} GameObjects for quests in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime));
|
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} GameObjects for quests in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime));
|
||||||
@@ -7308,8 +7301,7 @@ namespace Game
|
|||||||
|
|
||||||
if (qinfo.NextQuestInChain != 0)
|
if (qinfo.NextQuestInChain != 0)
|
||||||
{
|
{
|
||||||
var qNext = _questTemplates.LookupByKey(qinfo.NextQuestInChain);
|
if (!_questTemplates.ContainsKey(qinfo.NextQuestInChain))
|
||||||
if (qNext == null)
|
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Sql, "Quest {0} has `NextQuestIdChain` = {1} but quest {2} does not exist, quest chain will not work.",
|
Log.outError(LogFilter.Sql, "Quest {0} has `NextQuestIdChain` = {1} but quest {2} does not exist, quest chain will not work.",
|
||||||
qinfo.Id, qinfo.NextQuestInChain, qinfo.NextQuestInChain);
|
qinfo.Id, qinfo.NextQuestInChain, qinfo.NextQuestInChain);
|
||||||
@@ -7567,8 +7559,6 @@ namespace Game
|
|||||||
|
|
||||||
_questPOIStorage.Clear(); // need for reload case
|
_questPOIStorage.Clear(); // need for reload case
|
||||||
|
|
||||||
uint count = 0;
|
|
||||||
|
|
||||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||||
SQLResult result = DB.World.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID, NavigationPlayerConditionID, SpawnTrackingID, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1");
|
SQLResult result = DB.World.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID, NavigationPlayerConditionID, SpawnTrackingID, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1");
|
||||||
if (result.IsEmpty())
|
if (result.IsEmpty())
|
||||||
@@ -7632,7 +7622,6 @@ namespace Game
|
|||||||
poiData.QuestID = questID;
|
poiData.QuestID = questID;
|
||||||
poiData.Blobs.Add(new QuestPOIBlobData(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapId, priority, flags,
|
poiData.Blobs.Add(new QuestPOIBlobData(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapId, priority, flags,
|
||||||
worldEffectID, playerConditionID, navigationPlayerConditionID, spawnTrackingID, points, alwaysAllowMergingBlobs));
|
worldEffectID, playerConditionID, navigationPlayerConditionID, spawnTrackingID, points, alwaysAllowMergingBlobs));
|
||||||
++count;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7640,7 +7629,7 @@ namespace Game
|
|||||||
|
|
||||||
} while (result.NextRow());
|
} while (result.NextRow());
|
||||||
|
|
||||||
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} quest POI definitions in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime));
|
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} quest POI definitions in {1} ms", _questPOIStorage.Count, Time.GetMSTimeDiffToNow(oldMSTime));
|
||||||
}
|
}
|
||||||
public void LoadQuestAreaTriggers()
|
public void LoadQuestAreaTriggers()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user