- (for-each
- (lambda (m2)
- (let ((res (catch #t
- (lambda () (fun (cdr m1) (cdr m2)))
- (lambda (key . args) #f))))
- (cond ((and (list? res) (>= (length res) 2))
- (let ((id1 (car m1)) (id2 (car m2))
- (r1 (car res)) (r2 (cadr res)))
- (return-data id1 (cadr types) r1)
- (return-data id2 (car types) r2)
-)))))
- t2))
- t1)))))
+ (let ((id1 (m1 'get-mob-id)))
+ (for-each
+ (lambda (m2)
+ (let ((id2 (m2 'get-mob-id)))
+ (cond ((not (eq? id1 id2))
+ (let ((res (catch #t
+ (lambda () (fun (m1 'get-data) (m2 'get-data)))
+ (lambda (key . args) #f))))
+ (cond ((and (list? res) (>= (length res) 2))
+ (return-data id1 t2 (car res))
+ (return-data id2 t1 (cadr res)))))))))
+ mobs-t2)))
+ mobs-t1)))))