class: name:SeeLightVF longname:See Light, variable flavor prefinputs:0 prefoutput:1 preflocation:1 vhints:32 # 32=receptor class icon:~ 34,3,7,100,50,90,50,90,40,70,40,80,50,70,60,90,60,90,50,4,10,10,50,30,30,40,55,53,47,53,1,55,53,50,46~ code:~ function init() { //initial setting of flavor value to be searching - uses Neuro.creature.user1 field Neuro.creature.user1 = 0; //field determining which flavor we're looking for } function go() { //receive sinal type "light", sending from distance=Fields.d (1e99 = from any distance) with flavor=Neuro.creature.user1 and precision=Fields.p (0 = with exact value of flavor) var smell = Neuro.signals.receiveFilter("light", Fields.d, Neuro.creature.user1, Fields.p); //if signal source is close enough (smell > Fields.li), or there is no such signal with selected flavor, then search for signal with next flavor (if Fields.i=1 then 0->1->2->3->4->0->1->...) if(smell > Fields.li || smell == 0){ Neuro.creature.user1 = Neuro.creature.user1 + Fields.i; if(Neuro.creature.user1 > 4){ Neuro.creature.user1 = 0; } } Neuro.state = Neuro.signals.receiveFilter("light", Fields.d, Neuro.creature.user1, Fields.p); } ~ prop: id:li name:signal strength limit type:f 0.01 100.0 2.0 prop: id:i name:next flavor interval type:f 0.01 4.0 1.0 prop: id:d name:distance for receiving signal type:f 0.01 1e99 1e99 prop: id:p name:precision for flavor of received signal type:f 0.0 4.0 0.0