Core/Conversation: Implemented OnConversationStart and OnConversationUpdate hooks

Port From (https://github.com/TrinityCore/TrinityCore/commit/7f14b64e093de23abb322b843b92260d9fe51123)
This commit is contained in:
hondacrx
2023-07-01 08:53:17 -04:00
parent 219b1e2b36
commit 6adc16c496
3 changed files with 23 additions and 0 deletions
+3
View File
@@ -48,6 +48,8 @@ namespace Game.Entities
public override void Update(uint diff) public override void Update(uint diff)
{ {
Global.ScriptMgr.OnConversationUpdate(this, diff);
if (GetDuration() > TimeSpan.FromMilliseconds(diff)) if (GetDuration() > TimeSpan.FromMilliseconds(diff))
{ {
_duration -= TimeSpan.FromMilliseconds(diff); _duration -= TimeSpan.FromMilliseconds(diff);
@@ -177,6 +179,7 @@ namespace Game.Entities
if (!GetMap().AddToMap(this)) if (!GetMap().AddToMap(this))
return false; return false;
Global.ScriptMgr.OnConversationStart(this);
return true; return true;
} }
+6
View File
@@ -779,8 +779,14 @@ namespace Game.Scripting
// Called when Conversation is created but not added to Map yet. // Called when Conversation is created but not added to Map yet.
public virtual void OnConversationCreate(Conversation conversation, Unit creator) { } public virtual void OnConversationCreate(Conversation conversation, Unit creator) { }
// Called when Conversation is started
public virtual void OnConversationStart(Conversation conversation) { }
// Called when player sends CMSG_CONVERSATION_LINE_STARTED with valid conversation guid // Called when player sends CMSG_CONVERSATION_LINE_STARTED with valid conversation guid
public virtual void OnConversationLineStarted(Conversation conversation, uint lineId, Player sender) { } public virtual void OnConversationLineStarted(Conversation conversation, uint lineId, Player sender) { }
// Called for each update tick
public virtual void OnConversationUpdate(Conversation conversation, uint diff) { }
} }
public class SceneScript : ScriptObject public class SceneScript : ScriptObject
+14
View File
@@ -1028,6 +1028,13 @@ namespace Game.Scripting
RunScript<ConversationScript>(script => script.OnConversationCreate(conversation, creator), conversation.GetScriptId()); RunScript<ConversationScript>(script => script.OnConversationCreate(conversation, creator), conversation.GetScriptId());
} }
public void OnConversationStart(Conversation conversation)
{
Cypher.Assert(conversation != null);
RunScript<ConversationScript>(script => script.OnConversationStart(conversation), conversation.GetScriptId());
}
public void OnConversationLineStarted(Conversation conversation, uint lineId, Player sender) public void OnConversationLineStarted(Conversation conversation, uint lineId, Player sender)
{ {
Cypher.Assert(conversation != null); Cypher.Assert(conversation != null);
@@ -1036,6 +1043,13 @@ namespace Game.Scripting
RunScript<ConversationScript>(script => script.OnConversationLineStarted(conversation, lineId, sender), conversation.GetScriptId()); RunScript<ConversationScript>(script => script.OnConversationLineStarted(conversation, lineId, sender), conversation.GetScriptId());
} }
public void OnConversationUpdate(Conversation conversation, uint diff)
{
Cypher.Assert(conversation != null);
RunScript<ConversationScript>(script => script.OnConversationUpdate(conversation, diff), conversation.GetScriptId());
}
//SceneScript //SceneScript
public void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) public void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate)
{ {