I'm getting this error aswell on iRO.
It only happens when you use the teleport skill. I checked with Xkore 2 what was happening, and it seems it double casts teleport so you appear in the new place with a dialog box still open. Openkore then tries to continue on but is unable to cast any skills because of the box.
Console output looks like:
Code: Select all
You are casting Teleport on yourself (Delay: 0ms)
----------------- Warp Portal --------------------
# Place Map
--------------------------------------------------
You use Teleport on yourself (Lv: 1)
Monster X (2) hit You when your HP is under 25. Teleporting...
[ 17/ 46] Monster X (2) attacks you (Dmg: 187) (Delay: 576ms)
Monster X (3) uses Blooddrain on Player Y (0) (Dmg: 149) (Delay: 576ms)
Teleporting due to insufficient HP/SP or too many aggressives
Map Change: map.gat (264, 51)
----------------- Warp Portal --------------------
# Place Map
--------------------------------------------------
You use Teleport on yourself (Lv: 1)
And the AI gets stuck on skill_use.
To me it seems its being called twice by two different pieces of code.
Once in Corelogic.pm line 2870:
Code: Select all
message T("Teleporting due to insufficient HP/SP or too many aggressives\n"), "teleport";
$ai_v{temp}{clear_aiQueue} = 1 if (useTeleport(1));
$timeout{ai_teleport_hp}{time} = time;
And is overlapping with line 2706 in Misc.pm:
Code: Select all
} elsif ($config{$player->{configPrefix}.'teleportAuto_hp'} && percent_hp($player) <= $config{$player->{configPrefix}.'teleportAuto_hp'}) {
message TF("%s hit %s when %s HP is under %d. Teleporting...\n",
$monster, $player, $player->verb(T('your'), T('its')), $config{$player->{configPrefix}.'teleportAuto_hp'}), "teleport";
$teleport = 1;
...
useTeleport(1, undef, 1) if ($teleport);
Then to useTeleport() again in Misc.pm line 2894:
Code: Select all
if ($use_lvl == 1) {
Plugins::callHook('teleport_sent', \%args);
$messageSender->sendWarpTele(26, "Random");
return 1;
Then to ServerType0.pm line 1456:
Code: Select all
sub sendWarpTele { # type: 26=tele, 27=warp
my ($self, $skillID, $map) = @_;
my $msg = pack('v2 Z16', 0x011B, $skillID, stringToBytes($map));
$self->sendToServer($msg);
debug "Sent ". ($skillID == 26 ? "Teleport" : "Open Warp") . "\n", "sendPacket", 2
}
With a lot of testing I found if i set ai_teleport_hp to a high number like 5, it pretty much eliminates the problem. So I think the offending code is Corelogic.pm line 2870. Although I'm not sure of how to change the code to solve the error from happening without a high timeout.