changeset 1495:34d742910e20

Implement spider demon drain timer. Might be working wrong, dunno lol. :P
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 12 Jun 2012 20:11:52 +0300
parents bd219dde5c1c
children 75f99ae1cdb3
files gm-spider.tf
diffstat 1 files changed, 76 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/gm-spider.tf	Tue Jun 12 20:11:22 2012 +0300
+++ b/gm-spider.tf	Tue Jun 12 20:11:52 2012 +0300
@@ -13,11 +13,31 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Initialization and options
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/set spider_drain_t=0
-/set spider_ctrl_t=0
-/set spider_drains=0
-/set spider_easy=0
-/set spider_easy_n=0
+/set spider_warn_t=15
+/set spider_avgn_min=60
+/set spider_avgq_min=80
+
+/def -i prrepval_do =\
+	/for _i 1 %{1} /echo %{2}
+
+/def -i prrepval =\
+	/return "$(/prrepval_do %{1} %{2})"
+
+/def -i gspider_reset =\
+	/set spider_drain_t=0%;\
+	/set spider_ctrl_t=0%;\
+	/set spider_drains=0%;\
+	/set spider_easy=0%;\
+	/set spider_easy_n=0%;\
+	/set spider_type=0
+
+/def -i gspider_reset_extra =\
+	/set spider_avgn_val=$[prrepval(5, spider_avgn_min)]%;\
+	/set spider_avgq_val=$[prrepval(5, spider_avgq_min)]
+
+/gspider_reset
+/gspider_reset_extra
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Spider related lites
@@ -28,18 +48,8 @@
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Spider demon control
+;; Helper functions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/eval /def -i -F -p9999 -ag -msimple -t"You feed %{set_plrname}'s spider demon's hunger with your ritual." gspider_ctrl =\
-	/msq @{BCgreen}Demon controlled.@{n}%%;\
-	/set spider_ctrl_t=$$[time()]%%;\
-	/set spider_drains=0
-
-;; Point used or not?
-/eval /def -i -F -p9999 -ag -msimple -t"%{set_plrname}'s demon feels easier to control than usual." gspider_easydrain =\
-	/set spider_easy=1
-
-;; Spider demon channelling message
 /def -i gspider_drain =\
 	/if (spider_easy)\
 		/set spider_easy_n=$[spider_easy_n+1]%;\
@@ -48,21 +58,65 @@
 	/set spider_drains=$[spider_drains+1]%;\
 	/set spider_easy=0
 
+
+/def -i gspider_inform =\
+	/msq @{Cgreen}Upcoming spider demon drain in %{spider_warn_t}s.@{n}
+	
+
+/def -i gspider_setup_timer =\
+	/if ({1} >= 15)\
+		/set spider_next_drain=$[time() + {1}]%;\
+		/set spider_pid=$(/grepeat -$[{1} - spider_warn_t] 1 /gspider_inform)%;\
+	/endif
+
+/def -i gspider_tick_normal =\
+	/if (spider_ctrl_t > 0)\
+		/let _ddelta=$[time() - spider_ctrl_t]%;\
+		/set spider_avgn_val=$(/prnth %{spider_avgn_val} %{_ddelta})%;\
+		/let _dtime=$(/praverage %{spider_avgn_val})%;\
+		/test gspider_setup_timer(_dtime)%;\
+	/endif
+
+/def -i gspider_tick_queen =\
+	/if (spider_ctrl_t > 0)\
+		/let _ddelta=$[time() - spider_ctrl_t]%;\
+		/set spider_avgq_val=$(/prnth %{spider_avgq_val} %{_ddelta})%;\
+		/let _dtime=$(/praverage %{spider_avgq_val})%;\
+		/test gspider_setup_timer(_dtime)%;\
+	/endif
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Spider demon control
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+/eval /def -i -F -p9999 -ag -msimple -t"You feed %{set_plrname}'s spider demon's hunger with your ritual." gspider_ctrl =\
+	/msq @{BCgreen}Demon controlled.@{n}%%;\
+	/set spider_ctrl_t=$$[time()]%%;\
+	/set spider_type=0%%;\
+	/set spider_drains=0
+
+
+;; Point used or not?
+/eval /def -i -F -p9999 -ag -msimple -t"%{set_plrname}'s demon feels easier to control than usual." gspider_easydrain =\
+	/set spider_easy=1
+
+;; Spider demon channelling message
 /eval /def -i -F -p9999 -msimple -t"%{set_plrname}'s spider demon draws power from you." gspider_normaldrain =\
 	/if (spider_easy)\
 		/mss @{BCgreen}Demon channelled with points.@{n}%%;\
 	/else \
 		/mss @{BCred}Demon channelled without points!!!@{n}%%;\
 	/endif%%;\
-	/set spider_last=0%%;\
-	/gspider_drain
+	/gspider_drain%%;\
+	/gspider_tick_normal
 
 ;; Channelling with help from queen
 /def -i -F -p9999 -msimple -t"Spider Queen smiles upon you and helps you control the demon." gspider_queendrain =\
 	/mss @{BCgreen}The Spider Queen is smiling, demon battlechannelled.@{n}%;\
+	/gspider_drain%;\
+	/gspider_tick_queen%;\
 	/set spider_ctrl_t=$[time()]%;\
-	/set spider_last=1%;\
-	/gspider_drain
+	/set spider_type=1
 
 
 ;;@command /spidstatus
@@ -70,7 +124,7 @@
 ;;@desc (and possibly other demon status information in future).
 /def -i spidstatus =\
 	/if (spider_ctrl_t > 0)\
-		/if (spider_last)\
+		/if (spider_type)\
 			/let _extra=@{Cred}battle/queen@{n}%;\
 		/else \
 			/let _extra=normal%;\
@@ -93,8 +147,7 @@
 
 ;; Demon banished
 /def -i -F -p9999 -msimple -t"You feel your mind returning back to normal." gspider_banished =\
-	/set spider_drains=0%;\
-	/set spider_drain_t=0
+	/gspider_reset
 
 ;; Banish failure
 /def -i -F -p9999 -msimple -t"Alien thoughts invade your mind! Your body no longer is yours alone!" gspider_banishfail =\