Core/Conditions: Added stringid condition type
Port From (https://github.com/TrinityCore/TrinityCore/commit/151dd67e2eb22e49ce84c2eb28b08985bcce7602)
This commit is contained in:
@@ -63,6 +63,7 @@ namespace Framework.Constants
|
|||||||
SceneInProgress = 55, // SceneScriptPackageId 0 0 true if player is playing a scene with ScriptPackageId equal to given value
|
SceneInProgress = 55, // SceneScriptPackageId 0 0 true if player is playing a scene with ScriptPackageId equal to given value
|
||||||
PlayerCondition = 56, // PlayerConditionId 0 0 true if player satisfies PlayerCondition
|
PlayerCondition = 56, // PlayerConditionId 0 0 true if player satisfies PlayerCondition
|
||||||
PrivateObject = 57, // 0 0 0 true if entity is private object
|
PrivateObject = 57, // 0 0 0 true if entity is private object
|
||||||
|
StringId = 58,
|
||||||
Max
|
Max
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -458,6 +458,19 @@ namespace Game.Conditions
|
|||||||
condMeets = !obj.GetPrivateObjectOwner().IsEmpty();
|
condMeets = !obj.GetPrivateObjectOwner().IsEmpty();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ConditionTypes.StringId:
|
||||||
|
{
|
||||||
|
Creature creature = obj.ToCreature();
|
||||||
|
if (creature != null)
|
||||||
|
condMeets = creature.HasStringId(ConditionStringValue1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GameObject go = obj.ToGameObject();
|
||||||
|
if (go != null)
|
||||||
|
condMeets = go.HasStringId(ConditionStringValue1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -653,6 +666,7 @@ namespace Game.Conditions
|
|||||||
public uint ConditionValue1;
|
public uint ConditionValue1;
|
||||||
public uint ConditionValue2;
|
public uint ConditionValue2;
|
||||||
public uint ConditionValue3;
|
public uint ConditionValue3;
|
||||||
|
public string ConditionStringValue1;
|
||||||
public uint ErrorType;
|
public uint ErrorType;
|
||||||
public uint ErrorTextId;
|
public uint ErrorTextId;
|
||||||
public uint ReferenceId;
|
public uint ReferenceId;
|
||||||
|
|||||||
@@ -353,10 +353,11 @@ namespace Game
|
|||||||
cond.ConditionValue1 = result.Read<uint>(7);
|
cond.ConditionValue1 = result.Read<uint>(7);
|
||||||
cond.ConditionValue2 = result.Read<uint>(8);
|
cond.ConditionValue2 = result.Read<uint>(8);
|
||||||
cond.ConditionValue3 = result.Read<uint>(9);
|
cond.ConditionValue3 = result.Read<uint>(9);
|
||||||
cond.NegativeCondition = result.Read<byte>(10) != 0;
|
cond.ConditionStringValue1 = result.Read<string>(10);
|
||||||
cond.ErrorType = result.Read<uint>(11);
|
cond.NegativeCondition = result.Read<bool>(11);
|
||||||
cond.ErrorTextId = result.Read<uint>(12);
|
cond.ErrorType = result.Read<uint>(12);
|
||||||
cond.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(13));
|
cond.ErrorTextId = result.Read<uint>(13);
|
||||||
|
cond.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(14));
|
||||||
|
|
||||||
if (iConditionTypeOrReference >= 0)
|
if (iConditionTypeOrReference >= 0)
|
||||||
cond.ConditionType = (ConditionTypes)iConditionTypeOrReference;
|
cond.ConditionType = (ConditionTypes)iConditionTypeOrReference;
|
||||||
@@ -1764,13 +1765,20 @@ namespace Game
|
|||||||
LogUselessConditionValue(cond, 2, cond.ConditionValue2);
|
LogUselessConditionValue(cond, 2, cond.ConditionValue2);
|
||||||
if (cond.ConditionValue3 != 0 && !StaticConditionTypeData[(int)cond.ConditionType].HasConditionValue3)
|
if (cond.ConditionValue3 != 0 && !StaticConditionTypeData[(int)cond.ConditionType].HasConditionValue3)
|
||||||
LogUselessConditionValue(cond, 3, cond.ConditionValue3);
|
LogUselessConditionValue(cond, 3, cond.ConditionValue3);
|
||||||
|
if (!cond.ConditionStringValue1.IsEmpty() && !StaticConditionTypeData[(int)cond.ConditionType].HasConditionStringValue1)
|
||||||
|
LogUselessConditionValue(cond, 1, cond.ConditionStringValue1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogUselessConditionValue(Condition cond, byte index, uint value)
|
void LogUselessConditionValue(Condition cond, byte index, uint value)
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Sql, "{0} has useless data in ConditionValue{1} ({2})!", cond.ToString(true), index, value);
|
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has useless data in ConditionValue{index} ({value})!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void LogUselessConditionValue(Condition cond, byte index, string value)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has useless data in ConditionStringValue{index} ({value})!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clean()
|
void Clean()
|
||||||
@@ -2943,63 +2951,64 @@ namespace Game
|
|||||||
|
|
||||||
public ConditionTypeInfo[] StaticConditionTypeData =
|
public ConditionTypeInfo[] StaticConditionTypeData =
|
||||||
{
|
{
|
||||||
new ConditionTypeInfo("None", false,false, false),
|
new ConditionTypeInfo("None", false, false, false, false),
|
||||||
new ConditionTypeInfo("Aura", true, true, true ),
|
new ConditionTypeInfo("Aura", true, true, true, false),
|
||||||
new ConditionTypeInfo("Item Stored", true, true, true ),
|
new ConditionTypeInfo("Item Stored", true, true, true, false),
|
||||||
new ConditionTypeInfo("Item Equipped", true, false, false),
|
new ConditionTypeInfo("Item Equipped", true, false, false, false),
|
||||||
new ConditionTypeInfo("Zone", true, false, false),
|
new ConditionTypeInfo("Zone", true, false, false, false),
|
||||||
new ConditionTypeInfo("Reputation", true, true, false),
|
new ConditionTypeInfo("Reputation", true, true, false, false),
|
||||||
new ConditionTypeInfo("Team", true, false, false),
|
new ConditionTypeInfo("Team", true, false, false, false),
|
||||||
new ConditionTypeInfo("Skill", true, true, false),
|
new ConditionTypeInfo("Skill", true, true, false, false),
|
||||||
new ConditionTypeInfo("Quest Rewarded", true, false, false),
|
new ConditionTypeInfo("Quest Rewarded", true, false, false, false),
|
||||||
new ConditionTypeInfo("Quest Taken", true, false, false),
|
new ConditionTypeInfo("Quest Taken", true, false, false, false),
|
||||||
new ConditionTypeInfo("Drunken", true, false, false),
|
new ConditionTypeInfo("Drunken", true, false, false, false),
|
||||||
new ConditionTypeInfo("WorldState", true, true, false),
|
new ConditionTypeInfo("WorldState", true, true, false, false),
|
||||||
new ConditionTypeInfo("Active Event", true, false, false),
|
new ConditionTypeInfo("Active Event", true, false, false, false),
|
||||||
new ConditionTypeInfo("Instance Info", true, true, true ),
|
new ConditionTypeInfo("Instance Info", true, true, true, false),
|
||||||
new ConditionTypeInfo("Quest None", true, false, false),
|
new ConditionTypeInfo("Quest None", true, false, false, false),
|
||||||
new ConditionTypeInfo("Class", true, false, false),
|
new ConditionTypeInfo("Class", true, false, false, false),
|
||||||
new ConditionTypeInfo("Race", true, false, false),
|
new ConditionTypeInfo("Race", true, false, false, false),
|
||||||
new ConditionTypeInfo("Achievement", true, false, false),
|
new ConditionTypeInfo("Achievement", true, false, false, false),
|
||||||
new ConditionTypeInfo("Title", true, false, false),
|
new ConditionTypeInfo("Title", true, false, false, false),
|
||||||
new ConditionTypeInfo("SpawnMask", true, false, false),
|
new ConditionTypeInfo("SpawnMask", true, false, false, false),
|
||||||
new ConditionTypeInfo("Gender", true, false, false),
|
new ConditionTypeInfo("Gender", true, false, false, false),
|
||||||
new ConditionTypeInfo("Unit State", true, false, false),
|
new ConditionTypeInfo("Unit State", true, false, false, false),
|
||||||
new ConditionTypeInfo("Map", true, false, false),
|
new ConditionTypeInfo("Map", true, false, false, false),
|
||||||
new ConditionTypeInfo("Area", true, false, false),
|
new ConditionTypeInfo("Area", true, false, false, false),
|
||||||
new ConditionTypeInfo("CreatureType", true, false, false),
|
new ConditionTypeInfo("CreatureType", true, false, false, false),
|
||||||
new ConditionTypeInfo("Spell Known", true, false, false),
|
new ConditionTypeInfo("Spell Known", true, false, false, false),
|
||||||
new ConditionTypeInfo("Phase", true, false, false),
|
new ConditionTypeInfo("Phase", true, false, false, false),
|
||||||
new ConditionTypeInfo("Level", true, true, false),
|
new ConditionTypeInfo("Level", true, true, false, false),
|
||||||
new ConditionTypeInfo("Quest Completed", true, false, false),
|
new ConditionTypeInfo("Quest Completed", true, false, false, false),
|
||||||
new ConditionTypeInfo("Near Creature", true, true, true),
|
new ConditionTypeInfo("Near Creature", true, true, true, false),
|
||||||
new ConditionTypeInfo("Near GameObject", true, true, false),
|
new ConditionTypeInfo("Near GameObject", true, true, false, false),
|
||||||
new ConditionTypeInfo("Object Entry or Guid", true, true, true ),
|
new ConditionTypeInfo("Object Entry or Guid", true, true, true, false),
|
||||||
new ConditionTypeInfo("Object TypeMask", true, false, false),
|
new ConditionTypeInfo("Object TypeMask", true, false, false, false),
|
||||||
new ConditionTypeInfo("Relation", true, true, false),
|
new ConditionTypeInfo("Relation", true, true, false, false),
|
||||||
new ConditionTypeInfo("Reaction", true, true, false),
|
new ConditionTypeInfo("Reaction", true, true, false, false),
|
||||||
new ConditionTypeInfo("Distance", true, true, true ),
|
new ConditionTypeInfo("Distance", true, true, true, false),
|
||||||
new ConditionTypeInfo("Alive", false,false, false),
|
new ConditionTypeInfo("Alive", false, false, false, false),
|
||||||
new ConditionTypeInfo("Health Value", true, true, false),
|
new ConditionTypeInfo("Health Value", true, true, false, false),
|
||||||
new ConditionTypeInfo("Health Pct", true, true, false),
|
new ConditionTypeInfo("Health Pct", true, true, false, false),
|
||||||
new ConditionTypeInfo("Realm Achievement", true, false, false),
|
new ConditionTypeInfo("Realm Achievement", true, false, false, false),
|
||||||
new ConditionTypeInfo("In Water", false,false, false),
|
new ConditionTypeInfo("In Water", false, false, false, false),
|
||||||
new ConditionTypeInfo("Terrain Swap", true, false, false),
|
new ConditionTypeInfo("Terrain Swap", true, false, false, false),
|
||||||
new ConditionTypeInfo("Sit/stand state", true, true, false),
|
new ConditionTypeInfo("Sit/stand state", true, true, false, false),
|
||||||
new ConditionTypeInfo("Daily Quest Completed",true, false, false),
|
new ConditionTypeInfo("Daily Quest Completed",true, false, false, false),
|
||||||
new ConditionTypeInfo("Charmed", false,false, false),
|
new ConditionTypeInfo("Charmed", false, false, false, false),
|
||||||
new ConditionTypeInfo("Pet type", true, false, false),
|
new ConditionTypeInfo("Pet type", true, false, false, false),
|
||||||
new ConditionTypeInfo("On Taxi", false,false, false),
|
new ConditionTypeInfo("On Taxi", false, false, false, false),
|
||||||
new ConditionTypeInfo("Quest state mask", true, true, false),
|
new ConditionTypeInfo("Quest state mask", true, true, false, false),
|
||||||
new ConditionTypeInfo("Quest objective progress", true, false, true),
|
new ConditionTypeInfo("Quest objective progress", true, false, true, false),
|
||||||
new ConditionTypeInfo("Map Difficulty", true, false, false),
|
new ConditionTypeInfo("Map Difficulty", true, false, false, false),
|
||||||
new ConditionTypeInfo("Is Gamemaster", true, false, false),
|
new ConditionTypeInfo("Is Gamemaster", true, false, false, false),
|
||||||
new ConditionTypeInfo("Object Entry or Guid", true, true, true),
|
new ConditionTypeInfo("Object Entry or Guid", true, true, true, false),
|
||||||
new ConditionTypeInfo("Object TypeMask", true, false, false),
|
new ConditionTypeInfo("Object TypeMask", true, false, false, false),
|
||||||
new ConditionTypeInfo("BattlePet Species Learned", true, true, true),
|
new ConditionTypeInfo("BattlePet Species Learned", true, true, true, false),
|
||||||
new ConditionTypeInfo("On Scenario Step", true, false, false),
|
new ConditionTypeInfo("On Scenario Step", true, false, false, false),
|
||||||
new ConditionTypeInfo("Scene In Progress", true, false, false),
|
new ConditionTypeInfo("Scene In Progress", true, false, false, false),
|
||||||
new ConditionTypeInfo("Player Condition", true, false, false)
|
new ConditionTypeInfo("Player Condition", true, false, false, false),
|
||||||
|
new ConditionTypeInfo("String ID", true, false, false, true)
|
||||||
};
|
};
|
||||||
|
|
||||||
public struct ConditionTypeInfo
|
public struct ConditionTypeInfo
|
||||||
@@ -3016,6 +3025,7 @@ namespace Game
|
|||||||
public bool HasConditionValue1;
|
public bool HasConditionValue1;
|
||||||
public bool HasConditionValue2;
|
public bool HasConditionValue2;
|
||||||
public bool HasConditionValue3;
|
public bool HasConditionValue3;
|
||||||
|
public bool HasConditionStringValue1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user