	IF1
INCLUDE COMDEF.INC              ; Include command definition
        ENDIF
VOL     EQU     0               ; Define volume number
LOGIC   SEGMENT BYTE
        ASSUME  CS:LOGIC
        BEGIN                   ; Start up

; logic 112, полет чаек. Алгоритм заимствован из King Quest ]I[ и расширен
;                        до управления тремя чайками.
; Логика снабжена минимальными комментариями. Надеюсь вам будет очень
; полезно разобраться в этом интересном алгоритме самостоятельно.

        if_
          isset 5 
        else_ NotNr

; инициализационная часть

          set_horizon 55         
	  
          load_view  249 ; чайки
	   
          animate_obj 12       ; первая чайка
          set_view    12, 249 
          position    12,  21, 76
          ignore_objs 12 
          wander      12 
          set        202
	   
          if_
            greatern 36, 0 
          else_ X38
	    
            set_loop 12, 1 
            jump X41
	      
X38:      set_loop     12, 0 
X41:      fix_loop     12 
          set_cel      12, 2 
          set_priority 12, 7 
          draw         12
; ...............................................
	   
          animate_obj 13       ; вторая чайка
          set_view    13, 249
	   
          if_
            greatern  36, 0 
          else_ X69
	    
            set_loop 13, 1 
            jump X72
	     
X69:      set_loop     13, 0 
X72:      fix_loop     13 
          position     13, 20, 68
          ignore_objs  13 
          wander       13 
          set         203
          set_cel      13, 1 
          set_priority 13, 7 
          draw         13

; ...............................................
	   
          animate_obj  14      ; третья чайка
          set_view     14, 249
	   
          if_
            greatern   36, 0 
          else_ X110
	    
            set_loop   14, 1 
            jump X113
	     
X110:     set_loop     14, 0 
X113:     fix_loop     14 
          position     14,  20, 85
          ignore_objs  14 
          wander       14 
          set         204
          set_cel      14, 0 
          set_priority 14, 7 
          draw         14


; ---------------------------------------------------
	   
NotNr: ; основная часть
 
        get_posn 12, 37, 38
 
        if_
          greatern 38, 140 
        else_ X157
	 
          normal_motion 12 
          assignn       38,   1 
          set_dir       12,  38 
          reset        202 
          jump X168
	   
X157:   if_
          not_
          isset 202 
        else_ X168
	 
          wander  12 
          set    202
	   
X168:   get_posn 13, 37, 38
 
        if_
          greatern 38, 120
        else_ X192
	 
          normal_motion 13 
          assignn       38,   1 
          set_dir       13,  38 
          reset        203 
          jump X203
	   
X192:   if_
          not_
          isset 203 
        else_ X203
	 
          set    203 
          wander  13
	   
	   
X203:   get_posn 14, 37, 38
 
        if_
          greatern 38, 130
        else_ X227
	 
          normal_motion 14 
          assignn       38,   1 
          set_dir       14,  38 
          reset        204 
          jump X238
	   
X227:   if_
          not_
          isset 204 
        else_ X238
	 
          set    204 
          wander  14
	   

X238:   get_dir 12, 38 

        if_
          greatern 38, 3 
          lessn    38, 7 
        else_ X276

          current_loop 12, 36
	   
          if_
            not_
            greatern 36, 0 
          else_ X268
	   
            set_cel 12, 4 
            jump X271
	     
X268:     set_cel 12, 0 
X271:     stop_cycling 12 
          jump X278
	   
X276:   start_cycling 12

 
X278:   get_dir 14, 38
 
        if_
          greatern 38, 3 
          lessn    38, 7 
        else_ X316
	 
          current_loop 14,  36 

          if_
            not_
            greatern 36, 0 
          else_ X308 

            set_cel 14, 4 
            jump X311
	     
X308:     set_cel      14,   0 
X311:     stop_cycling 14 
          jump X318
	   
X316:   start_cycling 14
 
X318:   return

         MESSAGES 0
VERYEND EQU $
LOGIC   ENDS
        END