Также он проверят, есть ли у вас в инвентаре нужная еда для него.
В критических случаях делает Rest, чтобы уберечь вашего хомункулуса от голодной смерти

Возможно позже добавлю проверку еды в телеге.
Тестированно на OpenKore 1.9.4 SVN и последней eAthena.
Никаких изменений в config.txt делать не нужно.
Код: Выделить всё
#Homunculus feeding plugin
#Just put in your plugins folder
package homunculusFeeder;
use strict;
use Globals;
use Plugins;
use Log qw(debug message warning error);
use Utils;
use Misc;
use Skill;
use Commands;
use Network;
use Network::Send;
use AI;
use Task;
use Task::UseSkill;
use Task::ErrorReport;
Plugins::register('HomunculusFeeder', 'Plugin for automatic homunculus feeding', \&Unload);
my $hook = Plugins::addHooks(
['AI_pre', \&main]
);
our $homunculus;
sub Unload {
Plugins::delHooks($hook);
}
sub main {
return if (!$char->{homunculus} || ($char->{homunculus}{state} & 2) || ($char->{homunculus}{state} & 4));
my $homunculusJob = $char->{homunculus}{jobID};
my $food;
if($homunculusJob == 6001 || $homunculusJob == 6005 || $homunculusJob == 6009 || $homunculusJob == 6013){
$food ="Pet Food"; #Мы имеем дело с Lif
}elsif($homunculusJob == 6002 || $homunculusJob == 6006 || $homunculusJob == 6010 || $homunculusJob == 6014){
$food="Zargon"; #Мы имеем дело с Amistr
}elsif($homunculusJob == 6003 || $homunculusJob == 6007 || $homunculusJob == 6011 || $homunculusJob == 6015){
$food="Garlet"; #Мы имеем дело с Filir
}elsif($homunculusJob == 6004 || $homunculusJob == 6008 || $homunculusJob == 6012 || $homunculusJob == 6016){
$food="Scell"; #Это Vanilmirth
}
if(
$char->{homunculus}
&& !inInventory($food)
&& $char->{homunculus}{hunger} <= 12
&& !($char->{homunculus}{state} & 2)
&& !($char->{homunculus}{state} & 4)
&& timeOut($homunculus{lastRest}, 5)
){
my $rest = Skill->new(auto => 'AM_REST');
my $skillTask = new Task::UseSkill(
target => $char,
skill => $rest,
priority => Task::HIGH_PRIORITY
);
my $task = new Task::ErrorReport(task => $skillTask);
$taskManager->add($task);
$homunculus{lastRest} = time;
}
if (
!($char->{homunculus}{state} & 2)
&& !($char->{homunculus}{state} & 4)
&& $char->{homunculus}{hunger} <= 12
&& inInventory($food)
&& timeOut($homunculus{lastFeed}, 5)
){
$homunculus{lastFeed} = time;
message "Time to feed your Homunculus!\n";
$messageSender->sendHomunculusFeed();
message "Now your intimacy is $char->{homunculus}{intimacy}!\n";
}
}
return 1;