1/* * module * 
    2% This is simple example explorer for the maze world.
    3%
    4%
    5% monster.pl
    6% July 11, 1996
    7% John Eikenberry
    8%
    9% Dec 13, 2035
   10% Douglas Miles
   11%
   12% Declare the module name and the exported (public) predicates.
   13*/
   14
   15
   16
   17% Declare the module name and the exported (public) predicates.
   18:-swi_module(mobExplorer,[]).   19
   20%:- dmsg( dumpST).
   21
   22%:- backtrace(200).
   23 
   24:- include(prologmud(mud_header)).   25% :- register_module_type (planning).
   26
   27tCol(mobExplorer).
   28
   29vette_idea(Agent,Act,Act):-var(Act),!,dmsg(vette_idea(Agent,Act)).
   30vette_idea(_,actSit,actSit):-!.
   31vette_idea(Agent,Act,Act):-dmsg(vette_idea(Agent,Act)).
   32
   33
   34prologHybrid(mudLabelTypeProps/3).
   35
   36% :- show_pred_info(mudLabelTypeProps/3).
   37
   38
   39:- sanity(arity(mudLabelTypeProps,3)).   40
   41prologHybrid(typeHasGlyph(tCol,ftString)).
   42% mudLabelTypeProps('Px',mobExplorer,[]).
   43typeHasGlyph(mobExplorer,"Px").
   44
   45world_agent_plan(_World,Agent,ActV):-
   46   tAgent(Agent),
   47  % isa(Agent,explorer),
   48   explorer_idea(Agent,Act),
   49   vette_idea(Agent,Act,ActV).
   50
   51==> genls(tElixer,tDrinkAble).
   52
   53% Possible agent actions.
   54explorer_idea(Agent,actEat(Elixer)) :-
   55	mudHealth(Agent,Damage),
   56	Damage < 15,
   57   mudPossess(Agent,List),
   58   obj_memb(Elixer,List),
   59   isa(Elixer,tElixer).
   60
   61explorer_idea(Agent,actEat(tFood)) :-
   62	mudEnergy(Agent,Charge),
   63	Charge < 150,
   64   mudPossess(Agent,List),
   65   obj_memb(Food,List),
   66   isa(Food,tFood).
   67
   68explorer_idea(Agent,actTake(Good)) :-
   69	mudNearBody(Agent,What),
   70        obj_memb(Good,What),
   71	isa_any(Good,[tGold,tElixer,tTreasure]).  
   72
   73explorer_idea(Agent,actTake(Good)) :-
   74	mudNearBody(Agent,What),
   75        obj_memb(Good,What),
   76	isa_any(Good,[tFood,tUsefull,tItem]).
   77
   78explorer_idea(Agent,actMove(1,Dir)) :-
   79	mudGetPrecepts(Agent,List),
   80	list_object_dir_sensed(_,List,tTreasure,Dir).
   81
   82explorer_idea(Agent,actMove(3,Dir)) :-
   83	mudGetPrecepts(Agent,List),
   84	list_object_dir_sensed(_,List,mobMonster,OppDir),
   85	reverse_dir(OppDir,Dir),
   86	number_to_dir(N,Dir,vHere),
   87        nth1(N,List,What),
   88	What == [].
   89
   90explorer_idea(Agent,actMove(1,Dir)) :-
   91	mudGetPrecepts(Agent,List),
   92	list_object_dir_sensed(_,List,tUsefull,Dir).
   93
   94explorer_idea(Agent,actMove(1,Dir)) :-
   95	mudGetPrecepts(Agent,List),
   96	list_object_dir_sensed(_,List,tAgent,Dir).
   97
   98explorer_idea(Agent,actMove(5,Dir)) :-
   99	mudMemory(Agent,aDirectionsFn([Dir|_])),
  100	number_to_dir(Num,Dir,vHere),
  101	mudNearReach(Agent,List),
  102	nth1(Num,List,What),
  103	What == [].
  104
  105explorer_idea(Agent,actAttack(Dir)) :-
  106	mudNearReach(Agent,List),
  107	list_object_dir_near(List,mobMonster,Dir).
  108
  109explorer_idea(Agent,actLook) :-
  110        req1(mudMemory(Agent,aDirectionsFn(Old))),
  111	del(mudMemory(Agent,aDirectionsFn(Old))),
  112	random_permutation(Old,New),
  113	ain(mudMemory(Agent,aDirectionsFn(New))).
  114
  115:- set_prolog_flag(runtime_debug,3).  116
  117:- include(prologmud(mud_footer)).