protected override void ActorTalk(byte[] msg)
{
var stringWrap = false;
ConvertMessageToString(msg, _charsetBuffer, 0);
// Play associated speech, if any
PlaySpeech(_lastStringTag);
if (Game.GameId == GameId.Dig || Game.GameId == GameId.CurseOfMonkeyIsland)
{
if (Variables[VariableHaveMessage.Value] != 0)
StopTalk();
}
else
{
if (!_keepText)
StopTalk();
}
if (_actorToPrintStrFor == 0xFF)
{
TalkingActor = 0xFF;
_charsetColor = String[0].Color;
}
else
{
var a = Actors[_actorToPrintStrFor];
TalkingActor = a.Number;
if (!String[0].NoTalkAnim)
{
a.RunActorTalkScript(a.TalkStartFrame);
}
_charsetColor = a.TalkColor;
}
_charsetBufPos = 0;
_talkDelay = 0;
_haveMsg = 1;
if (Game.GameId == GameId.FullThrottle)
Variables[VariableHaveMessage.Value] = 0xFF;
_haveActorSpeechMsg = (Game.GameId == GameId.FullThrottle) ? true : (!Sound.IsSoundRunning(Sound.TalkSoundID));
if (Game.GameId == GameId.Dig || Game.GameId == GameId.CurseOfMonkeyIsland)
{
stringWrap = String[0].Wrapping;
String[0].Wrapping = true;
}
Charset();
if (Game.GameId == GameId.Dig || Game.GameId == GameId.CurseOfMonkeyIsland)
{
if (Game.Version == 8)
Variables[VariableHaveMessage.Value] = (String[0].NoTalkAnim) ? 2 : 1;
else
Variables[VariableHaveMessage.Value] = 1;
String[0].Wrapping = stringWrap;
}
}