;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  Mystery and Mprime  ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   (:action load
        :parameters   (?cargo ?vehicle ?node ?size)
        :precondition (and (at ?cargo ?node)
                           (at ?vehicle ?node)
                           (capacity ?vehicle ?size), size >= 1)
        :effect       (and (not (at ?cargo ?node))
                           (in ?cargo ?vehicle)
                           (not (capacity ?vehicle ?size))
                           (capacity ?vehicle ?size-1))

   (:action move
        :parameters   (?vehicle ?nodeA ?nodeB ?levelA)
        :precondition (and (adjacent ?nodeA ?nodeB)
                           (at ?vehicle ?nodeA)
                           (fuel ?nodeA ?levelA), levelA >= 1)
        :effect       (and (not (at ?vehicle ?nodeA))
                           (at ?vehicle ?nodeB)
                           (not (fuel ?nodeA ?levelA))
                           (fuel ?nodeA ?levelA-1))

   (:action unload
        :parameters   (?cargo ?vehicle ?node ?size)
        :precondition (and (in ?cargo ?vehicle)
                           (at ?vehicle ?node)
                           (capacity ?vehicle ?size)
        :effect       (and (not (in ?cargo ?vehicle))
                           (at ?cargo ?node)
                           (not (capacity ?vehicle ?size))
                           (capacity ?vehicle ?size+1)

;;;;;;;;;;;;;;;;;;;;;
;;;  Mprime only  ;;;
;;;;;;;;;;;;;;;;;;;;;

   (:action squirt
        :parameters   (?nodeA ?nodeB ?levelA ?levelB)
        :precondition (and (fuel ?nodeA ?levelA), levelA >= 2
                           (fuel ?nodeB ?levelB))
        :effect       (and (not (fuel ?nodeA ?levelA))
                           (not (fuel ?nodeB ?levelB))
                           (fuel ?nodeA ?levelA-1)
                           (fuel ?nodeB ?levelB+1))

