[Compound subschool support
clinton@unknownlamer.org**20080427172553] hunk ./src/spells.lisp 58
+
+(defclass spell-compound-subschool ()
+  ((schools :initarg :schools :accessor spell-schools)
+   (kind :initarg :kind :accessor compound-school-kind
+	 :type (member :alternative :additional)))
+  (:metaclass persistent-metaclass))
+
+(defmethod insert-item (spell (scs spell-compound-subschool))
+  "Add spell to each subschool"
+  (map-pset (curry #'insert-item spell)
+	    (spell-schools scs)))
+
+(defmethod remove-item (spell (scs spell-compound-subschool))
+  "Remove spell from each subschool"
+  (map-pset (curry #'remove-item spell)
+	    (spell-schools scs)))
+
+(defmethod alternative-subschoolsp ((s spell-compound-subschool))
+  (eq (compound-school-kind s) :alternative))
+
+(defmethod additional-subschoolsp ((s spell-compound-subschool))
+  (eq (compound-school-kind s) :additional))