@@ -404,6 +404,58 @@ local creaturePick = function(creature, world, direction)
404
404
end
405
405
end
406
406
407
+ local creaturePut = function (creature , world , itemid , containerid )
408
+ local container = creature .items [containerid ];
409
+ local item = creature .items [itemid ];
410
+ if container and item then
411
+ if container .maxStorage <= 0 then
412
+ print (creature .name .. " can't put " .. item .name .. " in " .. container .name .. " because it's not a container" );
413
+ elseif container .liquidContainer then
414
+ if not item .liquid then
415
+ print (creature .name .. " can't put " .. item .name .. " in " .. container .name .. " because it's not a liquid" );
416
+ elseif # container .items >= container .maxStorage then
417
+ print (creature .name .. " can't put " .. item .name .. " in " .. container .name .. " because it's full" );
418
+ else
419
+ local _item = table.remove (creature .items , itemid );
420
+ table.insert (container .items , _item );
421
+ print (creature .name .. " put " .. _item .name .. " in " .. container .name );
422
+ end
423
+ elseif # container .items >= container .maxStorage then
424
+ print (creature .name .. " can't put " .. item .name .. " in " .. container .name .. " because it's full" );
425
+ elseif item .maxStorage > 0 then
426
+ if item .liquidContainer then
427
+ if # item .items > 0 then
428
+ local _item = table.remove (creature .items , itemid );
429
+ table.insert (container .items , _item );
430
+ print (creature .name .. " put " .. _item .name .. " in " .. container .name );
431
+ end
432
+ else
433
+ print (creature .name .. " can't put a container(" .. item .name .. " ) in antoher container(" .. container .name .. " )" );
434
+ end
435
+ else
436
+ local _item = table.remove (creature .items , itemid );
437
+ table.insert (container .items , _item );
438
+ print (creature .name .. " put " .. _item .name .. " in " .. container .name );
439
+ end
440
+ end
441
+ end
442
+
443
+ local creatureRemove = function (creature , world , itemid , containerid )
444
+ local container = creature .items [containerid ];
445
+ local item = container .items [itemid ];
446
+ if container and item then
447
+ if container .maxStorage <= 0 then
448
+ print (creature .name .. " can't remove " .. item .name .. " from " .. container .name .. " because it's not a container" );
449
+ elseif # container .items <= 0 then
450
+ print (creature .name .. " can't remove " .. item .name .. " from " .. container .name .. " because it's empty" );
451
+ else
452
+ local _item = table.remove (container .items , itemid );
453
+ table.insert (creature .items , _item );
454
+ print (creature .name .. " removed " .. _item .name .. " from " .. container .name );
455
+ end
456
+ end
457
+ end
458
+
407
459
local function Creature (name )
408
460
local self = {};
409
461
@@ -426,7 +478,9 @@ local function Creature(name)
426
478
poo = creaturePoo ,
427
479
sleep = creatureSleep ,
428
480
drop = creatureDrop ,
429
- pick = creaturePick
481
+ pick = creaturePick ,
482
+ put = creaturePut ,
483
+ remove = creatureRemove
430
484
};
431
485
432
486
self .plan = function (action , args , index )
0 commit comments