Наверное, было бы не плохо написать нормальное ожидание отхила но мне лень и без него на DRW нормально работает.
Code: Select all
//DRW. Ветеринария на загнанной в угол животном
//by Unholy. 2019
//
// В доме обставляем себя и живность всякими предметами, чтобы живность не убегала
// В сумке должна быть мойка для бинтов и сами бинты
// В руку можно взять что-нибудь и скрипт будет брать это в руки после применения бинтов.
//
// В настройках указать id подопытного животного и проверить совпадает ли тип мойки для бинтов.
Program veterinary;
const
animalId = $002BF04E; //Id подопытного животного
washBasinType = $1008; // Тип мойки для бинтов.
bandageClearType = $0E21;
bandageBloodType = $0E20;
var
weaponLeftArm, weaponRightArm: Word;
procedure init;
begin
weaponLeftArm := GetType( ObjAtLayer(LhandLayer) );
weaponRightArm := GetType( ObjAtLayer(RhandLayer) );
end;
procedure washBandages;
begin
if (FindType(bandageClearType, backpack) = 0) and (FindType(bandageBloodType, backpack) > 0) then
begin
AddToSystemJournal('Wash bandages');
if (FindType(washBasinType, backpack) > 0) then
begin
WaitTargetObject(FindItem);
UseType(bandageBloodType, $0000);
end;
end;
end;
procedure wearUp;
begin
AddToSystemJournal('Wearing weapon');
if (weaponLeftArm > 0) and (FindType(weaponLeftArm, backpack) > 0) then
Equip(LhandLayer, FindItem);
if (weaponRightArm > 0) and (FindType(weaponRightArm, backpack) > 0) then
Equip(RhandLayer, FindItem);
end;
procedure atackAnimal;
begin
AddToSystemJournal('Atack animal');
while GetHP(animalId) >= GetMaxHP(animalId) do
begin
Attack(animalId);
CheckLag(15000);
Wait(500);
end;
end;
procedure bandageAnimal;
begin
AddToSystemJournal('Heal animal');
while GetHP(animalId) < GetMaxHP(animalId) do
begin
washBandages;
if (WarMode = true) then
SetWarMode(false);
WaitTargetObject(animalId);
UseType(bandageClearType, $0000);
CheckLag(15000);
Wait(500);
end;
end;
procedure bandageSelf;
begin
AddToSystemJournal('Heal self');
while GetHP(animalId) < GetMaxHP(animalId) do
begin
washBandages;
if (WarMode = true) then
SetWarMode(false);
WaitTargetObject(Self);
UseType(bandageClearType, $0000);
CheckLag(15000);
end;
end;
begin
init;
while GetSkillValue('Veterinary') < 100 do
begin
atackAnimal;
bandageAnimal;
bandageSelf;
wearUp;
end;
end.