50 static n_int local_social;
54 local_logging = output_function;
55 local_social = social;
71 n_int learned_preference_index=-1;
72 if (local_episodic == 0L)
86 if ((local_episodic[episode_index].arg&2)!=0)
99 if (learned_preference_index>-1)
101 if ((local_episodic[episode_index].arg&1)!=0)
136 if (
being_awake(local_sim, local_being) == 0)
return;
143 if (!local_episodic)
return;
147 if (local_episodic[i].event == 0)
continue;
157 local_episodic[i].
event = 0;
161 episodic_intention_update(local_sim, local_being, i);
174 local_episodic[i].
affect++;
188 local_episodic[i].
affect--;
212 n_int i,j,celebrity=0,ctr,aff;
217 if (!meeter_episodic)
return 0;
231 if (meeter_episodic[i].first_name[j]==first_name)
237 if (meeter_episodic[i].family_name[j]==family_name)
252 if (celebrity>16) celebrity=16;
253 if (celebrity<-16) celebrity=-16;
270 n_int i,hits=0,memories=0;
272 if (local_episodic == 0L)
280 if (local_episodic[i].event>0)
303 return hits*100/memories;
327 static n_int noble_episodic_replace_index(
336 n_int abs_aff = affect;
344 if (!local_episodic)
return -1;
347 abs_aff =
ABS(abs_aff);
352 if (local_episodic[i].event == event)
355 if ((local_episodic[i].first_name[
BEING_MEETER]==name1) &&
376 if (local_episodic[i].event == 0)
414 static void episodic_store_full(
430 if (local_episodic == 0L)
437 replace = noble_episodic_replace_index(event,affect,name1,family1,name2,family2,local,local_sim);
439 if (replace == -1)
return;
441 old_event = local_episodic[replace].
event;
445 local_episodic[replace].
event = event;
456 local_episodic[replace].
food=food;
457 local_episodic[replace].
arg=arg;
459 if ((event == 0) || (event>=
EVENTS))
466 if ((old_event != event) || ((old_time+10) < (new_time)))
478 if ((local_social == 1) && (social_event == 0))
487 (*local_logging)(combination);
500 episodic_store_full(local,
EVENT_EAT, energy, local_sim,
526 episodic_store_full(local,event,affect,local_sim,name1,family1,name2,family2, arg, 0);
565 local, event, affect, local_sim,
587 local, event, affect, local_sim,
617 if (local_episodic == 0L)
622 event = local_episodic[episode_index].
event;
624 if (event==0)
return 0;
626 time = local_sim->
land->
time + mins_ahead;
640 local_episodic[episode_index].
arg = args;
655 replace = noble_episodic_replace_index(
660 local_episodic[episode_index].first_name[
BEING_MET],
661 local_episodic[episode_index].family_name[BEING_MET],
664 if (replace == -1)
return 0;
666 local_episodic[replace] = local_episodic[episode_index];
672 local_episodic[replace].
arg = args;
693 n_int replace,mult=1;
695 if (local_episodic == 0L || other_episodic == 0L || local == other)
731 if (affect<-32000) affect=-32000;
732 if (affect>32000) affect=32000;
736 replace = noble_episodic_replace_index(
744 if (replace==-1)
return 0;
747 other_episodic[replace].
event = event;