Core/Conditions: Added stringid condition type

Port From (https://github.com/TrinityCore/TrinityCore/commit/151dd67e2eb22e49ce84c2eb28b08985bcce7602)
This commit is contained in:
hondacrx
2024-02-06 09:50:23 -05:00
parent 80936edeab
commit 9668e07c16
3 changed files with 87 additions and 62 deletions
@@ -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
PlayerCondition = 56, // PlayerConditionId 0 0 true if player satisfies PlayerCondition
PrivateObject = 57, // 0 0 0 true if entity is private object
StringId = 58,
Max
}
+14
View File
@@ -458,6 +458,19 @@ namespace Game.Conditions
condMeets = !obj.GetPrivateObjectOwner().IsEmpty();
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:
break;
}
@@ -653,6 +666,7 @@ namespace Game.Conditions
public uint ConditionValue1;
public uint ConditionValue2;
public uint ConditionValue3;
public string ConditionStringValue1;
public uint ErrorType;
public uint ErrorTextId;
public uint ReferenceId;
+72 -62
View File
@@ -353,10 +353,11 @@ namespace Game
cond.ConditionValue1 = result.Read<uint>(7);
cond.ConditionValue2 = result.Read<uint>(8);
cond.ConditionValue3 = result.Read<uint>(9);
cond.NegativeCondition = result.Read<byte>(10) != 0;
cond.ErrorType = result.Read<uint>(11);
cond.ErrorTextId = result.Read<uint>(12);
cond.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(13));
cond.ConditionStringValue1 = result.Read<string>(10);
cond.NegativeCondition = result.Read<bool>(11);
cond.ErrorType = result.Read<uint>(12);
cond.ErrorTextId = result.Read<uint>(13);
cond.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(14));
if (iConditionTypeOrReference >= 0)
cond.ConditionType = (ConditionTypes)iConditionTypeOrReference;
@@ -1764,13 +1765,20 @@ namespace Game
LogUselessConditionValue(cond, 2, cond.ConditionValue2);
if (cond.ConditionValue3 != 0 && !StaticConditionTypeData[(int)cond.ConditionType].HasConditionValue3)
LogUselessConditionValue(cond, 3, cond.ConditionValue3);
if (!cond.ConditionStringValue1.IsEmpty() && !StaticConditionTypeData[(int)cond.ConditionType].HasConditionStringValue1)
LogUselessConditionValue(cond, 1, cond.ConditionStringValue1);
return true;
}
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()
@@ -2943,63 +2951,64 @@ namespace Game
public ConditionTypeInfo[] StaticConditionTypeData =
{
new ConditionTypeInfo("None", false,false, false),
new ConditionTypeInfo("Aura", true, true, true ),
new ConditionTypeInfo("Item Stored", true, true, true ),
new ConditionTypeInfo("Item Equipped", true, false, false),
new ConditionTypeInfo("Zone", true, false, false),
new ConditionTypeInfo("Reputation", true, true, false),
new ConditionTypeInfo("Team", true, false, false),
new ConditionTypeInfo("Skill", true, true, false),
new ConditionTypeInfo("Quest Rewarded", true, false, false),
new ConditionTypeInfo("Quest Taken", true, false, false),
new ConditionTypeInfo("Drunken", true, false, false),
new ConditionTypeInfo("WorldState", true, true, false),
new ConditionTypeInfo("Active Event", true, false, false),
new ConditionTypeInfo("Instance Info", true, true, true ),
new ConditionTypeInfo("Quest None", true, false, false),
new ConditionTypeInfo("Class", true, false, false),
new ConditionTypeInfo("Race", true, false, false),
new ConditionTypeInfo("Achievement", true, false, false),
new ConditionTypeInfo("Title", true, false, false),
new ConditionTypeInfo("SpawnMask", true, false, false),
new ConditionTypeInfo("Gender", true, false, false),
new ConditionTypeInfo("Unit State", true, false, false),
new ConditionTypeInfo("Map", true, false, false),
new ConditionTypeInfo("Area", true, false, false),
new ConditionTypeInfo("CreatureType", true, false, false),
new ConditionTypeInfo("Spell Known", true, false, false),
new ConditionTypeInfo("Phase", true, false, false),
new ConditionTypeInfo("Level", true, true, false),
new ConditionTypeInfo("Quest Completed", true, false, false),
new ConditionTypeInfo("Near Creature", true, true, true),
new ConditionTypeInfo("Near GameObject", true, true, false),
new ConditionTypeInfo("Object Entry or Guid", true, true, true ),
new ConditionTypeInfo("Object TypeMask", true, false, false),
new ConditionTypeInfo("Relation", true, true, false),
new ConditionTypeInfo("Reaction", true, true, false),
new ConditionTypeInfo("Distance", true, true, true ),
new ConditionTypeInfo("Alive", false,false, false),
new ConditionTypeInfo("Health Value", true, true, false),
new ConditionTypeInfo("Health Pct", true, true, false),
new ConditionTypeInfo("Realm Achievement", true, false, false),
new ConditionTypeInfo("In Water", false,false, false),
new ConditionTypeInfo("Terrain Swap", true, false, false),
new ConditionTypeInfo("Sit/stand state", true, true, false),
new ConditionTypeInfo("Daily Quest Completed",true, false, false),
new ConditionTypeInfo("Charmed", false,false, false),
new ConditionTypeInfo("Pet type", true, false, false),
new ConditionTypeInfo("On Taxi", false,false, false),
new ConditionTypeInfo("Quest state mask", true, true, false),
new ConditionTypeInfo("Quest objective progress", true, false, true),
new ConditionTypeInfo("Map Difficulty", true, false, false),
new ConditionTypeInfo("Is Gamemaster", true, false, false),
new ConditionTypeInfo("Object Entry or Guid", true, true, true),
new ConditionTypeInfo("Object TypeMask", true, false, false),
new ConditionTypeInfo("BattlePet Species Learned", true, true, true),
new ConditionTypeInfo("On Scenario Step", true, false, false),
new ConditionTypeInfo("Scene In Progress", true, false, false),
new ConditionTypeInfo("Player Condition", true, false, false)
new ConditionTypeInfo("None", false, false, false, false),
new ConditionTypeInfo("Aura", true, true, true, false),
new ConditionTypeInfo("Item Stored", true, true, true, false),
new ConditionTypeInfo("Item Equipped", true, false, false, false),
new ConditionTypeInfo("Zone", true, false, false, false),
new ConditionTypeInfo("Reputation", true, true, false, false),
new ConditionTypeInfo("Team", true, false, false, false),
new ConditionTypeInfo("Skill", true, true, false, false),
new ConditionTypeInfo("Quest Rewarded", true, false, false, false),
new ConditionTypeInfo("Quest Taken", true, false, false, false),
new ConditionTypeInfo("Drunken", true, false, false, false),
new ConditionTypeInfo("WorldState", true, true, false, false),
new ConditionTypeInfo("Active Event", true, false, false, false),
new ConditionTypeInfo("Instance Info", true, true, true, false),
new ConditionTypeInfo("Quest None", true, false, false, false),
new ConditionTypeInfo("Class", true, false, false, false),
new ConditionTypeInfo("Race", true, false, false, false),
new ConditionTypeInfo("Achievement", true, false, false, false),
new ConditionTypeInfo("Title", true, false, false, false),
new ConditionTypeInfo("SpawnMask", true, false, false, false),
new ConditionTypeInfo("Gender", true, false, false, false),
new ConditionTypeInfo("Unit State", true, false, false, false),
new ConditionTypeInfo("Map", true, false, false, false),
new ConditionTypeInfo("Area", true, false, false, false),
new ConditionTypeInfo("CreatureType", true, false, false, false),
new ConditionTypeInfo("Spell Known", true, false, false, false),
new ConditionTypeInfo("Phase", true, false, false, false),
new ConditionTypeInfo("Level", true, true, false, false),
new ConditionTypeInfo("Quest Completed", true, false, false, false),
new ConditionTypeInfo("Near Creature", true, true, true, false),
new ConditionTypeInfo("Near GameObject", true, true, false, false),
new ConditionTypeInfo("Object Entry or Guid", true, true, true, false),
new ConditionTypeInfo("Object TypeMask", true, false, false, false),
new ConditionTypeInfo("Relation", true, true, false, false),
new ConditionTypeInfo("Reaction", true, true, false, false),
new ConditionTypeInfo("Distance", true, true, true, false),
new ConditionTypeInfo("Alive", false, false, false, false),
new ConditionTypeInfo("Health Value", true, true, false, false),
new ConditionTypeInfo("Health Pct", true, true, false, false),
new ConditionTypeInfo("Realm Achievement", true, false, false, false),
new ConditionTypeInfo("In Water", false, false, false, false),
new ConditionTypeInfo("Terrain Swap", true, false, false, false),
new ConditionTypeInfo("Sit/stand state", true, true, false, false),
new ConditionTypeInfo("Daily Quest Completed",true, false, false, false),
new ConditionTypeInfo("Charmed", false, false, false, false),
new ConditionTypeInfo("Pet type", true, false, false, false),
new ConditionTypeInfo("On Taxi", false, false, false, false),
new ConditionTypeInfo("Quest state mask", true, true, false, false),
new ConditionTypeInfo("Quest objective progress", true, false, true, false),
new ConditionTypeInfo("Map Difficulty", true, false, false, false),
new ConditionTypeInfo("Is Gamemaster", true, false, false, false),
new ConditionTypeInfo("Object Entry or Guid", true, true, true, false),
new ConditionTypeInfo("Object TypeMask", true, false, false, false),
new ConditionTypeInfo("BattlePet Species Learned", true, true, true, false),
new ConditionTypeInfo("On Scenario Step", true, false, false, false),
new ConditionTypeInfo("Scene In Progress", true, false, false, false),
new ConditionTypeInfo("Player Condition", true, false, false, false),
new ConditionTypeInfo("String ID", true, false, false, true)
};
public struct ConditionTypeInfo
@@ -3016,6 +3025,7 @@ namespace Game
public bool HasConditionValue1;
public bool HasConditionValue2;
public bool HasConditionValue3;
public bool HasConditionStringValue1;
}
}