changeset 349:49996a1b406f

v0.5.10.10: Bugfixes in state-saving; Added new module GgrTF::PartyPlacer courtesy of Aloysha with some cleanups by Ggr (this module requires PSSMangler); Additional changes in PSSMangler required for PartyPlacer.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 10 Mar 2006 21:54:53 +0000
parents 9ba5345c4f53
children 43f28b64c8b5
files ggrtf-pplacer.tf ggrtf-pssmangle.tf ggrtf.tf
diffstat 3 files changed, 84 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ggrtf-pplacer.tf	Fri Mar 10 21:54:53 2006 +0000
@@ -0,0 +1,71 @@
+;;
+;; GgrTF::PartyPlacer - Automagic party formation saving and restoring
+;; (C) Copyright 2006 Aloysha & Matti Hämäläinen (Ggr)
+;;
+;; This file (triggerset) is Free Software distributed under
+;; GNU General Public License version 2.
+;;
+;; NOTICE! This file requires GgrTF (version 0.5.10 or later) to be loaded.
+;;
+/loaded GgrTF::PartyPlacer
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Find position of a player in party formation
+/def gparty_getpos =\
+	/let _crow=3%;\
+	/while (_crow>0) \
+		/let _ccol=3%;\
+		/while (_ccol>0) \
+			/let _gps=%{_crow}_%{_ccol}%;\
+			/eval /set gtestpos=$$[replace(" ","",gparty_%{_gps}_s)]%;\
+			/if (gtestpos=~{1}) \
+				/return _gps%;\
+			/endif%;\
+			/let _ccol=$[_ccol-1]%;\
+		/done%;\
+		/let _crow=$[_crow-1]%;\
+	/done%;\
+	/return
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Save currently known party formation
+/def ppsave =\
+	/msq Saving party current party formation ...%;\
+	/set gparty_gag=1%;\
+	/def gparty_save=1%;\
+	@@party status short
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Restore party formation (correct execution requires that you have
+;; recently invoked party status so GgrTF knows current party formation)
+/def ppreset =\
+	/msq Restoring saved party formation ...%;\
+	/let _crow=3%;\
+	/while (_crow>0) \
+		/let _ccol=3%;\
+		/while (_ccol>0) \
+			/let _gps=%{_crow}_%{_ccol}%;\
+			/eval /set gcurpos=$$[replace(" ","",gparty_%{_gps}_s)]%;\
+			/eval /set gwantpos=$$[replace(" ","",gparty_%{_gps}_fs)]%;\
+			/if (gcurpos!~gwantpos) \
+				/if (gcurpos!~"" & gwantpos!~"") \
+					@@party swap %{gcurpos} %{gwantpos}%;\
+					/let _gfpos=$[gparty_getpos(gwantpos)]%;\
+					/set gparty_%{_gfpos}_s=%{gcurpos}%;\
+					/set gparty_%{_gps}_s=%{gwantpos}%;\
+				/elseif (gwantpos!~"") \
+					@@party place %{gwantpos} %{_crow},%{_ccol}%;\
+					/let _gfpos=$[gparty_getpos(gwantpos)]%;\
+					/set gparty_%{_gfpos}_s=%;\
+					/set gparty_%{_gps}_s=%{gwantpos}%;\
+				/endif%;\
+			/endif%;\
+			/let _ccol=$[_ccol-1]%;\
+		/done%;\
+		/let _crow=$[_crow-1]%;\
+	/done%;\
+	/set gparty_gag=1%;\
+	@@party status short
+
--- a/ggrtf-pssmangle.tf	Fri Mar 10 18:57:51 2006 +0000
+++ b/ggrtf-pssmangle.tf	Fri Mar 10 21:54:53 2006 +0000
@@ -44,14 +44,6 @@
 	/echo `-----------------------------------------------------------------------'
 
 
-/def -i gparty_show2 =\
-	/echo ,-----------------------------------------------------------------------.%;\
-	/msw |$[gparty_sc1(1,1)]|$[gparty_sc1(2,1)]|$[gparty_sc1(3,1)]|%;\
-	/msw |$[gparty_sc1(1,2)]|$[gparty_sc1(2,2)]|$[gparty_sc1(3,2)]|%;\
-	/msw |$[gparty_sc1(1,3)]|$[gparty_sc1(2,3)]|$[gparty_sc1(3,3)]|%;\
-	/echo `-----------------------------------------------------------------------'
-
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Utility and grabbing triggers
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -103,11 +95,19 @@
 /def -i -F -p9999 -msimple -t'`-----------------------------------------------------------------------------\'' pss_getend =\
 	/if (gparty_gag)\
 		/substitute -ag%;\
+		/set gparty_gag=0%;\
 		/gparty_show1%;\
-		/set gparty_gag=0%;\
+	/endif%;\
+	/if (gparty_save)\
+		/msq saving!%;\
+		/set gparty_save=0%;\
+		/for _ccol 1 3 \
+			/for _crow 1 3 \
+				/let _gps=%%%{_crow}_%%%{_ccol}%%%;\
+				/eval /set gparty_%%%{_gps}_fs=$$$$[gparty_%%%{_gps}_s]%;\
 	/endif
 
 
 /def -i -F -p9999 -msimple -t'You are not in a party.' pss_noparty =\
-	/set gparty_gag=0
+	/set gparty_gag=0%;/set gparty_save=0
 
--- a/ggrtf.tf	Fri Mar 10 18:57:51 2006 +0000
+++ b/ggrtf.tf	Fri Mar 10 21:54:53 2006 +0000
@@ -1,8 +1,8 @@
 ;;
-;; GgrTF v0.5.10.9-svn - TinyFugue script for BatMUD
+;; GgrTF v0.5.10.10-svn - TinyFugue script for BatMUD
 ;; (C) Copyright 2004-2006 Matti Hämäläinen (Ggr Pupunen)
 ;;
-/set ggrtf_ver=0.5.10.9-svn
+/set ggrtf_ver=0.5.10.10-svn
 ;;
 ;; This triggerset is Free Software distributed under
 ;; GNU General Public License version 2.
@@ -373,7 +373,7 @@
 				/return%;\
 			/endif%;\
 		/endif%;\
-		/eval /set _gsa=/eval /set %{gsave_varpref}%{1}=%%{%{gsave_varpref}%{1}}%;\
+		/eval /set _gsa=/set %{gsave_varpref}%{1}=%%{%{gsave_varpref}%{1}}%;\
 		/if (tfwrite(gsave_file,_gsa) < 0)\
 			/gerror Error writing to file '@{Cyellow}%{gsave_filename}@{n}'!%;\
 			/return%;\