| 
														
															@@ -111,21 +111,6 @@ Actions: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 4 | Return to top level | r 
														 | 
														
														 | 
														
															 4 | Return to top level | r 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ") 
														 | 
														
														 | 
														
															 ") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-(defparameter *resource-opt-lookup* (list (cons 'pf "petrofuel") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'petrofuel "petrofuel") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'gr "gruel") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'gruel "gruel") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'sp "spice") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'spice "spice") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'am "ammo") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'ammo "ammo") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'ar "archeotech") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					  (cons 'archeotech "archeotech"))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-(defun handle-str-lookup (input-str lookup-table) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  (let ((handler (cdr (assoc input-str lookup-table)))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    (if handler (return-from handle-str-lookup handler) (format t "Invalid resource~%~%")))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 (defun buy-transaction (resource quantity) 
														 | 
														
														 | 
														
															 (defun buy-transaction (resource quantity) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   "Do they actual purchase transaction, not intended to be called interactively" 
														 | 
														
														 | 
														
															   "Do they actual purchase transaction, not intended to be called interactively" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   (let* ((available-player-funds (player-ship-credits *player-ship*)) 
														 | 
														
														 | 
														
															   (let* ((available-player-funds (player-ship-credits *player-ship*)) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -147,35 +132,85 @@ Actions: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	    (case resource-sym 
														 | 
														
														 | 
														
															 	    (case resource-sym 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	      ;;; This is insanely annoying, and will need to be duplicated 
														 | 
														
														 | 
														
															 	      ;;; This is insanely annoying, and will need to be duplicated 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	      ;;; for the sell logic, but don't know how else to handle this here 
														 | 
														
														 | 
														
															 	      ;;; for the sell logic, but don't know how else to handle this here 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      ('gruel (progn 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (gruel (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
														
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(setf (player-inventory-gruel inventory) 
														 | 
														
														 | 
														
															 			(setf (player-inventory-gruel inventory) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			      (+ (player-inventory-gruel inventory) quantity)))) 
														 | 
														
														 | 
														
															 			      (+ (player-inventory-gruel inventory) quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      ('archeotech (progn 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (archeotech (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
														
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(setf (player-inventory-archeotech inventory) 
														 | 
														
														 | 
														
															 			(setf (player-inventory-archeotech inventory) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			      (+ (player-inventory-archeotech inventory) quantity)))) 
														 | 
														
														 | 
														
															 			      (+ (player-inventory-archeotech inventory) quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      ('petrofuel (progn 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (petrofuel (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
														
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(setf (player-inventory-petrofuel inventory) 
														 | 
														
														 | 
														
															 			(setf (player-inventory-petrofuel inventory) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			      (+ (player-inventory-petrofuel inventory) quantity)))) 
														 | 
														
														 | 
														
															 			      (+ (player-inventory-petrofuel inventory) quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      ('spice (progn 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (spice (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
														
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(setf (player-inventory-spice inventory) 
														 | 
														
														 | 
														
															 			(setf (player-inventory-spice inventory) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			      (+ (player-inventory-spice inventory) quantity)))) 
														 | 
														
														 | 
														
															 			      (+ (player-inventory-spice inventory) quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      ('ammo (progn 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (ammo (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
														
														 | 
														
															 			(funcall minus-funds total-cost) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(setf (player-inventory-ammo inventory) 
														 | 
														
														 | 
														
															 			(setf (player-inventory-ammo inventory) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			      (+ (player-inventory-ammo inventory) quantity)))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	      (otherwise (format T "Invalid")))))))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			      (+ (player-inventory-ammo inventory) quantity)))))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (format T "Successfully purchased ~A ~A~%" quantity resource))))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 (defun buy-menu () 
														 | 
														
														 | 
														
															 (defun buy-menu () 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   (let ((item-to-buy (prompt-read "Enter a resource to buy: ")) 
														 | 
														
														 | 
														
															   (let ((item-to-buy (prompt-read "Enter a resource to buy: ")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	(quantity (prompt-read "Enter a quantity to buy: "))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    (handle-str-lookup (read-from-string item-to-buy) *resource-opt-lookup*))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(quantity (parse-integer (prompt-read "Enter a quantity to buy: ")))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    (if (member item-to-buy '("gruel" "ammo" "petrofuel" "archeotech" "spice") :test #'string=) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (buy-transaction item-to-buy quantity) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(trade-menu)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+(defun sell-transaction (resource quantity) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  "Do the sale transaction, not intended to be called interactively" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  (let* ((available-player-funds (player-ship-credits *player-ship*)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 (inventory (player-ship-inventory *player-ship*)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 (available-player-resource (funcall (symbol-function (find-symbol (string-upcase 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+									    (concatenate 'string "player-inventory-" resource)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					     inventory)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 (price (funcall (symbol-function (find-symbol (string-upcase 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							(concatenate 'string "market-price-of-" resource)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			 (sector-market *sector*))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 (total-profit (* quantity price))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    (if (> quantity available-player-resource) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (format T "Not enough ~A to sell ~A. You have ~A~%" resource quantity available-player-resource) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (return-from sell-transaction NIL)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (let ((resource-sym (read-from-string resource)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		(remove-resource (lambda (amount) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				   (let ((new-credits (+ available-player-funds total-profit))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				     (setf (player-ship-credits *player-ship*) new-credits)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				   (- available-player-resource amount)))) ; This is pretty convoluted 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	    ;;; remove-resource lambda is a pretty bad idea 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	    ;;; it is used to set the new credits amount and then return the amount needed to 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	    ;;; be removed from the resource in the player inventory. I did it this way 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	    ;;; to keep the logic concise, but it smells bad and is probably stupid 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	    (case resource-sym 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      ;;; This is insanely annoying, and will need to be duplicated 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      ;;; for the sell logic, but don't know how else to handle this here 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (gruel (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		       (setf (player-inventory-gruel inventory) (funcall remove-resource quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (petrofuel (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			(setf (player-inventory-petrofuel inventory) (funcall remove-resource quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (spice (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			(setf (player-inventory-spice inventory) (funcall remove-resource quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (ammo (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			(setf (player-inventory-ammo inventory) (funcall remove-resource quantity)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	      (archeotech (progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			    (setf (player-inventory-archeotech inventory) (funcall remove-resource quantity)))))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (format T "Successfully sold ~A ~A~%" quantity resource))))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 (defun sell-menu () 
														 | 
														
														 | 
														
															 (defun sell-menu () 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  (format T "Called sell menu~%")) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  (let ((item-to-sell (prompt-read "Enter a resource to sell: ")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(quantity (parse-integer (prompt-read "Enter a quantity to sell: ")))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    (if (member item-to-sell '("gruel" "ammo" "petrofuel" "archeotech" "spice") :test #'string=) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(progn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	  (sell-transaction item-to-sell quantity) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	(trade-menu)))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 (defun display-prices () 
														 | 
														
														 | 
														
															 (defun display-prices () 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ;;; (funcall (symbol-function (find-symbol (string-upcase (concatenate 'string "market-price-of-" item)))) (sector-market *sector*)) ;;; A call by string reference method for function calls 
														 | 
														
														 | 
														
															 ;;; (funcall (symbol-function (find-symbol (string-upcase (concatenate 'string "market-price-of-" item)))) (sector-market *sector*)) ;;; A call by string reference method for function calls 
														 |