diff -Nru blobby-0.8-dfsg/ChangeLog blobby-0.9c/ChangeLog
--- blobby-0.8-dfsg/ChangeLog 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/ChangeLog 2011-11-06 15:06:50.000000000 +0000
@@ -1,3 +1,26 @@
+New in Beta 9 (rev. 622) since Alpha 8:
+- network game: reduced data transfer
+- fixed memleaks
+- OGL: improved text rendering speed
+- SDL: improved render speed for morphing blobs
+- generally improved performance
+- limited FPS in menu
+- chat
+- clock
+- blood in SDL mode
+- bots sorted
+- online replays
+- improved bots: difficulty adjustable, better api, better documentation
+- customizable rules file
+
+
+New in Alpha 8 (rev. 469) since Alpha 6:
+- some graphics improvements
+- performance improvements
+- names
+- credits added
+
+
New in Alpha 6 (rev. 335) since Alpha 5:
- More options
- Network support
diff -Nru blobby-0.8-dfsg/data/CMakeLists.txt blobby-0.9c/data/CMakeLists.txt
--- blobby-0.8-dfsg/data/CMakeLists.txt 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/CMakeLists.txt 2011-11-06 15:06:50.000000000 +0000
@@ -1,5 +1,5 @@
macro(add_zip_archive _dir _filetype)
- file(GLOB archive_src RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_dir}/*.${_filetype})
+ file(GLOB_RECURSE archive_src RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_dir}/*.${_filetype})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_dir}.zip
COMMAND zip ${CMAKE_CURRENT_BINARY_DIR}/${_dir}.zip ${archive_src}
@@ -24,7 +24,11 @@
${CMAKE_CURRENT_BINARY_DIR}/backgrounds.zip
config.xml
inputconfig.xml
- server.xml)
+ server.xml
+ lang_de.xml
+ lang_en.xml
+ lang_fr.xml
+ rules.lua)
if (WIN32)
install(FILES ${install_files} DESTINATION data)
diff -Nru blobby-0.8-dfsg/data/config.xml blobby-0.9c/data/config.xml
--- blobby-0.8-dfsg/data/config.xml 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/config.xml 2011-11-06 15:06:50.000000000 +0000
@@ -1,7 +1,7 @@
-
+
@@ -11,6 +11,7 @@
+
@@ -18,14 +19,17 @@
-
+
-
+
-
+
-
-
+
+
+
+
+
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/abbruchbild.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/abbruchbild.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball01.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball01.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball02.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball02.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball03.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball03.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball04.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball04.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball05.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball05.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball06.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball06.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball07.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball07.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball08.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball08.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball09.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball09.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball10.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball10.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball11.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball11.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball12.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball12.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball13.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball13.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball14.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball14.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball15.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball15.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/ball16.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/ball16.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobbym1.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobbym1.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobbym2.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobbym2.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobbym3.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobbym3.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobbym4.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobbym4.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobbym5.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobbym5.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/blobZeichenWeiss.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/blobZeichenWeiss.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/bvende.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/bvende.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/cursor.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/cursor.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font00.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font00.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font01.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font01.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font02.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font02.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font03.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font03.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font04.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font04.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font05.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font05.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font06.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font06.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font07.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font07.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font08.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font08.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font09.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font09.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font10.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font10.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font11.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font11.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font12.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font12.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font13.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font13.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font14.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font14.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font15.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font15.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font16.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font16.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font17.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font17.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font18.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font18.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font19.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font19.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font20.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font20.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font21.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font21.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font22.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font22.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font23.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font23.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font24.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font24.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font25.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font25.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font26.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font26.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font27.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font27.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font28.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font28.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font29.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font29.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font30.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font30.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font31.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font31.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font32.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font32.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font33.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font33.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font34.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font34.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font35.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font35.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font36.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font36.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font37.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font37.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font38.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font38.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font39.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font39.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font40.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font40.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font41.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font41.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font42.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font42.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font43.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font43.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font44.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font44.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font45.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font45.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font46.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font46.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font47.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font47.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font48.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font48.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font49.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font49.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font50.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font50.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font51.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font51.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font52.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font52.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font53.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font53.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font00.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font00.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font01.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font01.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font02.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font02.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font03.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font03.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font04.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font04.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font05.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font05.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font06.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font06.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font07.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font07.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font08.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font08.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font09.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font09.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font10.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font10.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font11.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font11.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font12.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font12.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font13.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font13.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font14.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font14.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font15.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font15.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font16.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font16.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font17.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font17.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font18.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font18.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font19.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font19.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font20.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font20.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font21.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font21.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font22.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font22.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font23.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font23.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font24.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font24.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font25.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font25.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font26.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font26.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font27.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font27.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font28.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font28.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font29.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font29.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font30.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font30.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font31.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font31.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font32.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font32.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font33.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font33.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font34.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font34.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font35.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font35.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font36.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font36.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font37.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font37.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font38.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font38.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font39.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font39.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font40.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font40.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font41.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font41.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font42.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font42.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font43.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font43.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font44.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font44.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font45.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font45.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font46.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font46.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font47.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font47.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font48.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font48.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font49.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font49.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font50.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font50.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font51.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font51.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font52.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font52.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/font53.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/font53.bmp differ
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/all-wcprops blobby-0.9c/data/gf2x/font_small/.svn/all-wcprops
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/all-wcprops 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/all-wcprops 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,329 @@
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small
+END
+font10.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font10.bmp
+END
+font11.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font11.bmp
+END
+font30.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font30.bmp
+END
+font12.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font12.bmp
+END
+font31.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font31.bmp
+END
+font13.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font13.bmp
+END
+font14.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font14.bmp
+END
+font32.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font32.bmp
+END
+font50.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font50.bmp
+END
+font15.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font15.bmp
+END
+font33.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font33.bmp
+END
+font51.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font51.bmp
+END
+font16.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font16.bmp
+END
+font34.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font34.bmp
+END
+font52.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font52.bmp
+END
+font17.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font17.bmp
+END
+font35.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font35.bmp
+END
+font53.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font53.bmp
+END
+font18.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font18.bmp
+END
+font36.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font36.bmp
+END
+font19.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font19.bmp
+END
+font37.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font37.bmp
+END
+font38.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font38.bmp
+END
+font39.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font39.bmp
+END
+font00.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font00.bmp
+END
+font01.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font01.bmp
+END
+font20.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font20.bmp
+END
+font02.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font02.bmp
+END
+font21.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font21.bmp
+END
+font03.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font03.bmp
+END
+font22.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font22.bmp
+END
+font04.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font04.bmp
+END
+font40.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font40.bmp
+END
+font23.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font23.bmp
+END
+font05.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font05.bmp
+END
+font41.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font41.bmp
+END
+font24.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font24.bmp
+END
+font06.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font06.bmp
+END
+font42.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font42.bmp
+END
+font25.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font25.bmp
+END
+font07.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font07.bmp
+END
+font43.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font43.bmp
+END
+font26.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font26.bmp
+END
+font08.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font08.bmp
+END
+font44.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font44.bmp
+END
+font27.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font27.bmp
+END
+font09.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font09.bmp
+END
+font45.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font45.bmp
+END
+font28.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font28.bmp
+END
+font46.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font46.bmp
+END
+font29.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font29.bmp
+END
+font47.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font47.bmp
+END
+font48.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font48.bmp
+END
+font49.bmp
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svnroot/blobby/!svn/ver/563/trunk/data/gf2x/font_small/font49.bmp
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/entries blobby-0.9c/data/gf2x/font_small/.svn/entries
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/entries 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/entries 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,1864 @@
+10
+
+dir
+634
+https://blobby.svn.sourceforge.net/svnroot/blobby/trunk/data/gf2x/font_small
+https://blobby.svn.sourceforge.net/svnroot/blobby
+
+
+
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5dffb9df-0d16-0410-88a9-e08e82185bbb
+
+font10.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+9ee6a91c7155fef459d7afd0dfd1780d
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font11.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+c9951011e5b32fca41d9b8956be01200
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font30.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+a55905c6491eb4c6180c8ba5d8c27a14
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font12.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+28eac8595ac85f9fdc00ab3f5f4b07c1
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font31.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+8d018bc679d586825e065a61413a68fc
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font13.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+32b41784439b782c2ecc00100e2b0a8a
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font14.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.828133Z
+61e6882759c446b99a002fac7a2a1474
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font32.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+5088f5fcd883c5103ee0bd8d13ce76c0
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font50.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+34adea3bc9b8ca91b4e29c9066170682
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font15.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+2439be68e482c195bd174fa381c79b51
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font33.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+a64a8f28b245b109bb3e3048c2e5d933
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font51.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+60c794fdcc2138928c1f697da107d1a3
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font16.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+287aa9f175a53c1e29602c83d0b39f32
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font34.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+6bb095eb28a6a3ee3ad0ee41cf98e2b2
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font52.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+f211384e41783c446e359826f0d2c3ac
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font17.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+4060315d463b8729771ca34a1ec26cd2
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font35.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+bf9eb78dbcac5000b1f4277d5ec0b206
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font53.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+05b61422651a8017dbd8ff0e32d6af8b
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font18.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+ec8e34953cef605da8b5dda29a22b3cf
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font36.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+d433a47e8a2ce4d9389a8b4e5edf44f8
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font19.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+f0b6a427e3f0b46dbb678689bc00ce95
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font37.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+38d7c91e4224961de1c9279b91b1855e
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font38.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+f9fa65086d1041819b96063844c7e2d0
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font39.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+e7099021e71f3b1c86c3d4a0a784d9b5
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font00.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+a5f70a6aa8e6e42161eab6dbbc21d588
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font01.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+0618c6431d248df01c2a3edccaa1da29
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font20.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+757710b8e7bfdc5b79485ade937ab286
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font02.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+f4d5dc89f762a1c4d872638a3e70b4c2
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font21.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+f7dcd95b818d8d618afdbf09cabeeb4c
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font03.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+c1692ea0a7fca58860a4d2af929bad79
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font04.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+bfebad21b439dbaa6833de0dc5351ec0
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font22.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.838133Z
+e7b0765e03e021e35ff187e97788df8d
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font40.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+edbf25cc207da2a21b35eb974e872c4c
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font23.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+405ffc73b206dedba12037a3e06a4844
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font05.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+b8c9d503312e7b397dcf71e625ffbc65
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font41.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+75c2c740f2f1557fe7bf89cf0736c525
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font24.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+b28a969ead0e3cf994e1a3646d56ca95
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font06.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+d4b846d988bf42db147cdbe7395a85f0
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font42.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+efa778ac0671c6a4a127ecf9aae26ce2
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font25.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+3c9f39c41877d1382a9f7d4bcaffc3c8
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font07.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+3b527362e809936bbd33eae35645a458
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font43.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+b72f664a2d86c55f1ce6d4165f809ec9
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font26.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+ceec5d8ccda4572250fba8e5a2bcf7e7
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font08.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+ed1b2b558ab73c6a3737495b8bcd58ea
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font44.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+d9569543eee3c2ceae909d54fe60b860
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font27.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+119d0c51cb59fb6ad8cdea8b3a89ad08
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font09.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+ad19f44f5690dd007a0fb7c7b6093266
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font45.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+8a08b10d8c6e78aa6ee37806b04bf842
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font28.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+1f383357cca28341afe49808cb162363
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font46.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+09c78443718f7b7549572e9312e4a212
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font29.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+badcc8bfec03aadf3b2a21ac28faa8ce
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font47.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+2d14a806eea3719e9168d496828fa2d8
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font48.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+d98a17306f9428484505d526e908d39b
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
+font49.bmp
+file
+
+
+
+
+2011-11-06T15:06:49.848133Z
+c1d16a8b114c7b4d1cf300d272c2f883
+2010-08-13T06:18:19.554296Z
+563
+danielknobe
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+246
+
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font00.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font00.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font00.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font00.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font01.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font01.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font01.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font01.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font02.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font02.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font02.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font02.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font03.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font03.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font03.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font03.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font04.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font04.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font04.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font04.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font05.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font05.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font05.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font05.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font06.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font06.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font06.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font06.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font07.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font07.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font07.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font07.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font08.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font08.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font08.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font08.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font09.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font09.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font09.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font09.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font10.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font10.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font10.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font10.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font11.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font11.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font11.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font11.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font12.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font12.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font12.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font12.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font13.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font13.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font13.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font13.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font14.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font14.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font14.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font14.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font15.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font15.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font15.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font15.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font16.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font16.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font16.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font16.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font17.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font17.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font17.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font17.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font18.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font18.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font18.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font18.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font19.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font19.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font19.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font19.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font20.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font20.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font20.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font20.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font21.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font21.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font21.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font21.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font22.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font22.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font22.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font22.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font23.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font23.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font23.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font23.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font24.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font24.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font24.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font24.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font25.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font25.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font25.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font25.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font26.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font26.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font26.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font26.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font27.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font27.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font27.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font27.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font28.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font28.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font28.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font28.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font29.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font29.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font29.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font29.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font30.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font30.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font30.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font30.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font31.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font31.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font31.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font31.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font32.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font32.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font32.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font32.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font33.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font33.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font33.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font33.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font34.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font34.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font34.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font34.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font35.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font35.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font35.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font35.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font36.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font36.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font36.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font36.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font37.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font37.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font37.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font37.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font38.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font38.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font38.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font38.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font39.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font39.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font39.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font39.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font40.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font40.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font40.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font40.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font41.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font41.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font41.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font41.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font42.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font42.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font42.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font42.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font43.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font43.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font43.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font43.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font44.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font44.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font44.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font44.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font45.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font45.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font45.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font45.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font46.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font46.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font46.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font46.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font47.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font47.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font47.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font47.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font48.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font48.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font48.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font48.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font49.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font49.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font49.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font49.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font50.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font50.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font50.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font50.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font51.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font51.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font51.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font51.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font52.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font52.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font52.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font52.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff -Nru blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font53.bmp.svn-base blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font53.bmp.svn-base
--- blobby-0.8-dfsg/data/gf2x/font_small/.svn/prop-base/font53.bmp.svn-base 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/gf2x/font_small/.svn/prop-base/font53.bmp.svn-base 2011-11-06 15:06:49.000000000 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font00.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font00.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font01.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font01.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font02.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font02.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font03.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font03.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font04.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font04.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font05.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font05.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font06.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font06.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font07.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font07.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font08.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font08.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font09.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font09.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font10.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font10.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font11.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font11.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font12.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font12.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font13.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font13.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font14.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font14.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font15.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font15.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font16.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font16.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font17.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font17.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font18.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font18.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font19.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font19.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font20.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font20.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font21.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font21.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font22.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font22.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font23.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font23.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font24.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font24.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font25.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font25.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font26.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font26.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font27.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font27.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font28.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font28.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font29.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font29.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font30.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font30.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font31.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font31.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font32.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font32.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font33.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font33.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font34.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font34.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font35.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font35.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font36.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font36.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font37.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font37.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font38.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font38.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font39.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font39.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font40.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font40.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font41.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font41.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font42.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font42.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font43.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font43.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font44.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font44.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font45.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font45.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font46.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font46.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font47.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font47.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font48.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font48.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font49.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font49.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font50.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font50.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font51.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font51.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font52.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font52.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/font_small/.svn/text-base/font53.bmp.svn-base and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/font_small/.svn/text-base/font53.bmp.svn-base differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/pfeil_oben.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/pfeil_oben.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/pfeil_unten.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/pfeil_unten.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/pokal.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/pokal.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/sch11.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/sch11.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/sch12.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/sch12.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/sch13.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/sch13.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/sch14.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/sch14.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/sch15.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/sch15.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/schball.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/schball.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/schild.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/schild.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/stange.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/stange.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/strand2.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/strand2.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gf2x/titel.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gf2x/titel.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/blood.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/blood.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font00.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font00.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font01.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font01.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font02.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font02.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font03.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font03.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font04.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font04.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font05.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font05.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font06.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font06.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font07.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font07.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font08.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font08.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font09.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font09.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font10.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font10.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font11.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font11.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font12.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font12.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font13.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font13.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font14.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font14.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font15.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font15.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font16.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font16.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font17.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font17.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font18.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font18.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font19.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font19.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font20.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font20.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font21.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font21.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font22.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font22.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font23.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font23.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font24.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font24.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font25.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font25.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font26.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font26.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font27.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font27.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font28.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font28.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font29.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font29.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font30.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font30.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font31.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font31.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font32.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font32.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font33.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font33.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font34.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font34.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font35.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font35.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font36.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font36.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font37.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font37.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font38.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font38.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font39.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font39.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font40.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font40.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font41.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font41.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font42.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font42.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font43.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font43.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font44.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font44.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font45.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font45.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font46.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font46.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font47.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font47.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font48.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font48.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font49.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font49.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font50.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font50.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font51.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font51.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font52.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font52.bmp differ
Binary files /tmp/0srkP_WiN0/blobby-0.8-dfsg/data/gfx/font_small/font53.bmp and /tmp/zGIqAWId6S/blobby-0.9c/data/gfx/font_small/font53.bmp differ
diff -Nru blobby-0.8-dfsg/data/lang_de.xml blobby-0.9c/data/lang_de.xml
--- blobby-0.8-dfsg/data/lang_de.xml 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/lang_de.xml 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru blobby-0.8-dfsg/data/lang_en.xml blobby-0.9c/data/lang_en.xml
--- blobby-0.8-dfsg/data/lang_en.xml 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/lang_en.xml 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru blobby-0.8-dfsg/data/lang_fr.xml blobby-0.9c/data/lang_fr.xml
--- blobby-0.8-dfsg/data/lang_fr.xml 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/lang_fr.xml 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru blobby-0.8-dfsg/data/rules.lua blobby-0.9c/data/rules.lua
--- blobby-0.8-dfsg/data/rules.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/rules.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,53 @@
+-- most simple ruleset: for each mistake, the opponent gets a point
+-- includes comments for documentation purposes
+
+-- rules.lua doc
+-- function OnMistake
+-- IMPLEMENTED BY RULES.lua
+-- called when a player makes a mistake
+-- when this function is called, servinglayer() returns which player has
+-- served (so it is not neccesarily the enemy of the player who made the mistake)
+-- param: player - player who made the mistake
+-- return: none
+
+-- when a player makes a mistake, the other one gets a point if he was the serving player
+function OnMistake(player)
+ -- function opponent
+ -- PREDEFINED
+ -- param: player - player of whom you want to get the opponent
+ -- return: opponent of the player, so, for LEFT_PLAYER, RIGHT_PLAYER is returned and vice-versa
+
+ -- function servingplayer
+ -- PREDEFINED
+ -- param: none
+ -- return: which player has served
+ if( opponent(player) == servingplayer() ) then
+ -- function score
+ -- PREDEFINED
+ -- param: player - player who gets a point
+ -- return: none
+
+ score(opponent(player))
+ end
+end
+
+-- function IsWinning
+-- IMPLEMENTED BY RULES.lua
+-- called when it is determined whether a player has won
+-- params: lscore: score of left player
+-- rscore: score of right player
+-- return: whether a player has won
+function IsWinning(lscore, rscore)
+ -- constant SCORE_TO_WIN: number of points for a player to win
+ if lscore >= SCORE_TO_WIN and lscore > rscore + 2 then
+ return true
+ end
+ if rscore >= SCORE_TO_WIN and rscore > lscore + 2 then
+ return true
+ end
+ return false
+end
+
+
+
+
diff -Nru blobby-0.8-dfsg/data/scripts/axji.lua blobby-0.9c/data/scripts/axji.lua
--- blobby-0.8-dfsg/data/scripts/axji.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/axji.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,43 +0,0 @@
-function OnOpponentServe()
- moveto(120)
-end
-
-wait = 0
-serv = true
-aggroservice = 64 -- versetzung zum Ball je gr�sser desto tiefer fliegt der Service 0-64
-
-
-function OnServe(ballready)
- moveto(ballx()) -- unter den Ball stellen
- wait = wait + 1 -- waittimer anwerfen
- serv = true -- servflag setzen
- if ballready then -- ball bereit
- if wait > 90 then -- 90 einheiten gewartet
- jump() -- Springen also eigentlich den Ball aufwerfen
- wait = 0 -- Wait timer zur�cksetzen
- end
- end
-end
-
-
-function OnGame()
-
- -- bestimmen wenn der service vertig ist
- if (ballx() > 400) then -- sobald der ball auf der anderen seite ist ;)
- serv = false -- serv flag zur�cksetzen
- end
-
- if serv then -- sprunganschlag code
- moveto(estimate()-aggroservice) -- Bewegt sich unter den Ball und schl�gt mit einer gewissen aggressivit�t an bei 64 knapp �bers Netz
- -- warscheinlich w�re ein Match.random() angebracht
- if bally() < 550 then -- wenn der Ball wieder runter kommt
- jump()
- end
- else
- if (estimate() < 0) then -- Falls der Ball von Hinten kommt
- moveto(math.abs(estimate())-100) -- funktioniert noch nicht richtig
- else
- moveto(estimate()-20) --sonst immer leicht hinter dem Ball bleiben
- end
- end
-end
diff -Nru blobby-0.8-dfsg/data/scripts/bert.ai blobby-0.9c/data/scripts/bert.ai
--- blobby-0.8-dfsg/data/scripts/bert.ai 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/bert.ai 1970-01-01 00:00:00.000000000 +0000
@@ -1,99 +0,0 @@
-// Note: This still needs to be ported to lua
-
-var bsizx,bsizy,cpud1;
-
-function main() {
- var i,alti,j,factor,direct,
- touchcnt,x,y,delay,bx,by,vbx,vby;
-
- bsizx=64;
- bsizy=64;
-
- j=side();
- factor=j*2-1;
-
- delay=0;
- while (1) {
- stop();
- stopjump();
-
- bx=ballx();
- by=bally();
- vbx=bspeedx();
- vby=bspeedy();
- touchcnt=touches();
- x=posx();
- y=posy();
-
- direct=1;
-
- i=estimate(200);
-
- if (i>-9000) {
- alti=i;
-
- if (j==1) {
- if (i>800-bsizx /2) {
- i=1600-i-bsizx;direct=0;
- }
- if (i<405+bsizx /2) {
- i=810+bsizx-i;direct=0;
- }
- if (i<500) {
- if (touchcnt<2) {
- i=i-bsizx /2;
- }
- }
- } else {
- if (i<0+bsizx /2) {
- i=-i+bsizx;
- direct=0;
- }
- if (i>395-bsizx /2) {
- i=790-bsizx-i;
- direct=0;
- }
- if (i>300) {
- if (touchcnt<2) {
- i=i+bsizx /2;
- }
- }
- }
-
- i=i+(bsizx / 3)*factor;
-
- //if (i>=x+7) right();
- //if (i<=x-7) left();
- moveto(i);
- }
- stopjump();
- if(vby<=10)
- if (factor*(x-bx)<21)
- if (factor*(bx-x)<7)
- if (abs(bx-x)<120)
- if (abs(vby)<65)
- if (by>200)
- if (by-y>70)
- if ((by<400) || (vby==0))
- if (abs(vbx)<20)
- if (!balldown()) jump();
- if (random(300)==0) jump();
- if (i>-9000) {
- if ((abs(i-x)>75) && (abs(bx-x)<65) && (vby<0) ) {
- jump();
- }
- }
- if (touching()) {
- stop();
- }
-
- if (!launched()) {
- delay+=1;
- stopjump();
- if (delay>=30) jump();
- }
-
- wait();
- } //while
-} //function
-
diff -Nru blobby-0.8-dfsg/data/scripts/com_04c.lua blobby-0.9c/data/scripts/com_04c.lua
--- blobby-0.8-dfsg/data/scripts/com_04c.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_04c.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,140 +0,0 @@
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-angriffsstaerke = 50 -- versetzung zum Ball je grösser desto tiefer fliegt der Service 0-64( 64 ist ca CONST_BALLRADIUS + CONST_BLOBBY_BAUCH_RADIUS)
-angriffsstaerkeNeuBerechnen =false -- neuberechnung von angriffsstaerke => Variable Angriffe
-
--- Konstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 157
-
--- Linke Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-
-
-
-function OnOpponentServe()
- moveto(120)
- generatenaechsterBallSchmettern() -- der gegner soll den smash ja nicht vorhersagen können
-end
-
-function OnServe(ballready)
- moveto(ballx())
- wait = wait + 1
- naechsterBallSchmettern = true
- if ballready then
- if wait > 90 then
- jump()
- wait = 0
- end
- end
-end
-
-function OnGame()
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG)
-
- if naechsterBallSchmettern then
- sprungattacke(angriffsstaerke)
- return
- end
-
- -- nun kümmern wir uns um die Bälle die ans netz prallen
- if ((target > CONST_NETZ_LINKS) and (ballx() < CONST_NETZ_LINKS)) then
- netzappraller(target)
- return
- end
-
- moveto(target)
-
-end
-
-
-function netzappraller(p_target)
- moveto(CONST_NETZ_LINKS - (p_target - CONST_NETZ_LINKS) + math.abs(bspeedx()*bspeedx()*1.4))
-end
-
-
-
-function sprungattacke(p_angriffsstaerke)
- moveto(ballx()-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
- if bally() < 580 then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- angriffsstaerkeNeuBerechnen = true -- da würde es sicher auch einen Inteligenteren Test geben.
- return
- end
-
- if (angriffsstaerkeNeuBerechnen == true) then
- generatenaechsterBallSchmettern()
- end
-
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- if (bally() > 500) then -- erst wenn der Ball hoeher als 500 fliegt sonst gibt es keinen schönen Schmetterball.
- naechsterBallSchmettern = true
- end
- return
- end
-
- if ((ballx() < (400-CONST_BALL_RADIUS)) and (bally() < 200) and (math.abs(bspeedx()) < 40)) then -- der ball könnte noch drüber fliegen ** noch optimieren
- naechsterBallSchmettern = true
- return
- end
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerkeNeuBerechnen = false;
- angriffsstaerke = math.random(15,64) -- variiert mit der Angriffsstärke also auch mit den Anschlägen
-end
-
-function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der Hinteren Ebene
- resultX = math.abs(CONST_BALL_RADIUS - resultX) + CONST_BALL_RADIUS
- end
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = CONST_FELD_LAENGE - (resultX - CONST_FELD_LAENGE)
- end
- -- test
--- if(resultX > CONST_MITTE - CONST_BALL_RADIUS)then
--- resultX = -resultX
--- end
-
- return resultX
-end
-
-function cleanMoveTo(position) -- eine nette Spielerei ;)
- if (posx() ~= position) then
- moveto(position)
- end
-end
diff -Nru blobby-0.8-dfsg/data/scripts/com_04d.lua blobby-0.9c/data/scripts/com_04d.lua
--- blobby-0.8-dfsg/data/scripts/com_04d.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_04d.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,139 +0,0 @@
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-angriffsstaerke = 50 -- versetzung zum Ball je grösser desto tiefer fliegt der Service 0-64( 64 ist ca CONST_BALLRADIUS + CONST_BLOBBY_BAUCH_RADIUS)
-angriffsstaerkeNeuBerechnen =false -- neuberechnung von angriffsstaerke => Variable Angriffe
-
--- Konstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 157
-
--- Linke Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-
-
-
-function OnOpponentServe()
- moveto(120)
- generatenaechsterBallSchmettern() -- der gegner soll den smash ja nicht vorhersagen können
-end
-
-function OnServe(ballready)
- moveto(ballx())
- wait = wait + 1
- naechsterBallSchmettern = true
- if ballready then
- if wait > 90 then
- jump()
- wait = 0
- end
- end
-end
-
-function OnGame()
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG)
-
- if target > 440 then
- moveto(120)
- else
- if naechsterBallSchmettern then
- sprungattacke(angriffsstaerke)
- return
- end
-
- -- nun kümmern wir uns um die Bälle die ans netz prallen
- if ((target > CONST_NETZ_LINKS) and (ballx() < CONST_NETZ_LINKS)) then
- netzappraller(target)
- return
- end
-
- moveto(target)
- end
-end
-
-
-function netzappraller(p_target)
- moveto(CONST_NETZ_LINKS - (p_target - CONST_NETZ_LINKS) + math.abs(bspeedx()*bspeedx()*1.4))
-end
-
-
-
-function sprungattacke(p_angriffsstaerke)
- moveto(ballx()-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
- if bally() < 580 then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- angriffsstaerkeNeuBerechnen = true -- da würde es sicher auch einen Inteligenteren Test geben.
- return
- end
-
- if (angriffsstaerkeNeuBerechnen == true) then
- generatenaechsterBallSchmettern()
- end
-
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- if (bally() > 500) then -- erst wenn der Ball hoeher als 500 fliegt sonst gibt es keinen schönen Schmetterball.
- naechsterBallSchmettern = true
- end
- return
- end
-
- if ((ballx() < (400-CONST_BALL_RADIUS)) and (bally() < 200) and (math.abs(bspeedx()) < 40)) then -- der ball könnte noch drüber fliegen ** noch optimieren
- naechsterBallSchmettern = true
- return
- end
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerkeNeuBerechnen = false;
- angriffsstaerke = math.random(20,55) -- variiert mit der Angriffsstärke also auch mit den Anschlägen
-end
-
-function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der Hinteren Ebene
- resultX = math.abs(CONST_BALL_RADIUS - resultX) + CONST_BALL_RADIUS
- end
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = CONST_FELD_LAENGE - (resultX - CONST_FELD_LAENGE)
- end
-
- return resultX
-end
-
-function cleanMoveTo(position) -- eine nette Spielerei ;)
- if (posx() ~= position) then
- moveto(position)
- end
-end
diff -Nru blobby-0.8-dfsg/data/scripts/com_10B2ex.lua blobby-0.9c/data/scripts/com_10B2ex.lua
--- blobby-0.8-dfsg/data/scripts/com_10B2ex.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10B2ex.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,146 +0,0 @@
--- Com 1.0 extrem Beta 2 Schmetter-Mod
--- by Oreon, Axji & Enormator
--- Name: com_10eB2_Schmettermod
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Ber�hrungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_ANGRIFFSGRUNDWERT_MIN = 30
-CONST_ANGRIFFSGRUNDWERT_MAX = 55
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
-ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
-
--- sonstige Einstellungen
-servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
-
--- ***ANFANG***
-
-function OnOpponentServe()
- moveto(130)
-end
-
-function OnServe(ballready)
- servex=ballx()+servexVersetzung
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
- moveto(servex)
- if ballready and (servex-2 < posx()) and (posx() < servex+2) then
- jump()
- end
-end
-
-function OnGame()
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
- targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- moveto(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
- sprungattacke(angriffsstaerke)
- else
- if (targetJump < CONST_MITTE / 2) then
- sprungattacke(-35) --an Rueckwand spielen
- else
- sprungattacke(0) --weiterleiten
- end
- end
- return
- end
-
- moveto(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
- p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
-
- moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die St�rke des gew�nschten schlages angegeben
-
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- naechsterBallSchmettern = true
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
-end
-
-function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding n�tigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()/math.abs(bspeedx())
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if (Frage == 1) then
- return resultX
- end
- if (Frage == 2) then
- return estimbspeedx
- end
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/com_10eB1.lua blobby-0.9c/data/scripts/com_10eB1.lua
--- blobby-0.8-dfsg/data/scripts/com_10eB1.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10eB1.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,162 +0,0 @@
--- Com 1.0 human Beta 1
--- by Oreon, Axji & Enormator
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_ANGRIFFSGRUNDWERT_MIN = 30
-CONST_ANGRIFFSGRUNDWERT_MAX = 55
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
-
-
--- ***ANFANG***
-
-function OnOpponentServe()
- moveto(130)
-end
-
-function OnServe(ballready)
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
- moveto(ballx())
- if ballready and (ballx()-3 < posx()) and (posx() < ballx()+3) then
- jump()
- end
-end
-
-function OnGame()
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
- targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- moveto(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- if ((math.abs(bspeedx()) < 4) or (bspeedx() < 0)) then
- sprungattacke(angriffsstaerke)
- else
- if (targetJump < CONST_MITTE / 2) then
- sprungattacke(-30) --an Rueckwand spielen
- else
- sprungattacke(0) --weiterleiten
- end
- end
- return
- end
-
- moveto(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- if (bally() < 550) and (math.abs(ballx() - posx()) > 200) then -- Falls nicht schmetterbar
- moveto (target - 25) --Dann Notloesung versuchen
- return
- end
-
- moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
-
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- return
- end
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
- naechsterBallSchmettern = true
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- naechsterBallSchmettern = true
- return
- end
- naechsterBallSchmettern = false
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
-end
-
-function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()/math.abs(bspeedx())
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if (Frage == 1) then
- return resultX
- end
- if (Frage == 2) then
- return estimbspeedx
- end
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/com_10eB2.lua blobby-0.9c/data/scripts/com_10eB2.lua
--- blobby-0.8-dfsg/data/scripts/com_10eB2.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10eB2.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,164 +0,0 @@
--- Com 1.0 extrem Beta 2
--- by Oreon, Axji & Enormator
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_ANGRIFFSGRUNDWERT_MIN = 30
-CONST_ANGRIFFSGRUNDWERT_MAX = 55
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
-ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
-
--- sonstige Einstellungen
-servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
-
--- ***ANFANG***
-
-function OnOpponentServe()
- moveto(130)
-end
-
-function OnServe(ballready)
- servex=ballx()+servexVersetzung
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
- moveto(servex)
- if ballready and (servex-2 < posx()) and (posx() < servex+2) then
- jump()
- end
-end
-
-function OnGame()
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
- targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- moveto(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
- sprungattacke(angriffsstaerke)
- else
- if (targetJump < CONST_MITTE / 2) then
- sprungattacke(-35) --an Rueckwand spielen
- else
- sprungattacke(0) --weiterleiten
- end
- end
- return
- end
-
- moveto(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
- p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
-
- moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
-
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- return
- end
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
- naechsterBallSchmettern = true
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- naechsterBallSchmettern = true
- return
- end
- naechsterBallSchmettern = false
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
-end
-
-function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()/math.abs(bspeedx())
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if (Frage == 1) then
- return resultX
- end
- if (Frage == 2) then
- return estimbspeedx
- end
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/com_10hB1.lua blobby-0.9c/data/scripts/com_10hB1.lua
--- blobby-0.8-dfsg/data/scripts/com_10hB1.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10hB1.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,210 +0,0 @@
--- Com 1.0 human Beta 1
--- by Oreon, Axji & Enormator
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-quatschFlag = 0
-mood = math.random(1,3)+3 --Startlaune zwischen 4 und 6
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_MIN_MOOD = 0
-CONST_MAX_MOOD = 10
-
-CONST_ANGRIFFSGRUNDWERT_MIN = 35
-CONST_ANGRIFFSGRUNDWERT_MAX = 60
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN-mood
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX-mood
-
-CONST_GEDULD = 0.01 --weniger ist mehr Geduld
-
--- ***ANFANG***
-
-function OnOpponentServe()
- BallLinks=false
- if (LauneBerechnet == false) then
- mood=mood-1 --schlechter gelaunt
- LauneBerechnen () --anwenden auf Angriffswert
- LauneBerechnet = true
- end
- moveto(130)
-end
-
-function OnServe(ballready)
- BallLinks=true
- if (LauneBerechnet == false) then
- mood=mood+1 --besser gelaunt
- LauneBerechnen () --anwenden auf Angriffswert
- LauneBerechnet = true
- end
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
-
- if (quatschFlag == 0) then
- quatschFlag = math.random(5,10)
- end
- if (mood > quatschFlag) then --je besser gelaunt, desto wahrscheinlicher Quatsch
- quatschFlag = enormerQuatsch()
- else
- moveto(ballx())
- if ballready and (ballx()-3 < posx()) and (posx() < ballx()+3) then
- jump()
- end
- end
-end
-
-function OnGame()
- debug (mood)
- if (BallLinks == (ballx() > CONST_MITTE)) then --Bei jedem Ballwechsel
- mood = mood - CONST_GEDULD --um CONST_GEDULD schlechter gelaunt sein
- LauneBerechnen ()
- BallLinks = (ballx() < CONST_MITTE)
- end
- LauneBerechnet=false --Flag setzen für Berechnung beim Aufschlag
- quatschFlag=0 --Flag setzen für Berechnung beim Aufschlag
- los=false --Flag setzen für Berechnung beim Aufschlag
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG) --X Ziel in Blobbyhoehe
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP) --X Ziel in Schmetterhoehe
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- moveto(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- sprungattacke(angriffsstaerke)
- return
- end
-
- moveto(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- if (bally() < 550) and (math.abs(ballx() - posx()) > 200) then -- Falls nicht schmetterbar
- moveto (target - 25) --Dann Notloesung versuchen
- return
- end
- if ((bally() < 600) and (bspeedy() < 0)) or (math.abs(bspeedx()) > 2) or (math.abs(targetJump-posx()) > 40) then -- erst im letzten Moment bewegen -> unvorhersehbar
- moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
- end
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- return
- end
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 1) and (math.abs(bspeedx()) < 2) and (mood < CONST_MAX_MOOD) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt und er nicht zu gut gelaunt ist
- naechsterBallSchmettern = true
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- naechsterBallSchmettern = true
- return
- end
- naechsterBallSchmettern = false
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE) -- variiert mit der Laune
-end
-
-function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
- return resultX
-end
-
-function enormerQuatsch()
- if los then
- left()
- jump()
- else
- right()
- end
- if (posx() > 350) then
- los=true
- end
- if (posx() < 60) then
- los=false
- return CONST_MAX_MOOD + 1 -- MaxLaune+1 kann nie erreicht werden -> stop
- end
- return quatschFlag -- Wenn nicht fertig, dann nix aendern
-end
-
-function LauneBerechnen ()
- if (mood < CONST_MIN_MOOD) then
- mood = 0
- end
- if (mood > CONST_MAX_MOOD) then
- mood = 10
- end
- MIN_ANGRIFFSSTAERKE=CONST_ANGRIFFSGRUNDWERT_MIN-mood
- MAX_ANGRIFFSSTAERKE=CONST_ANGRIFFSGRUNDWERT_MAX-mood
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/com_10.lua blobby-0.9c/data/scripts/com_10.lua
--- blobby-0.8-dfsg/data/scripts/com_10.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,178 +0,0 @@
--- Combot 1.0
--- by Oreon, Axji & Enormator
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_ANGRIFFSGRUNDWERT_MIN = 30
-CONST_ANGRIFFSGRUNDWERT_MAX = 55
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
-ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
-
--- sonstige Einstellungen
-servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
-
--- ***ANFANG***
-
-function OnOpponentServe()
- movetoX(130)
-end
-
-function OnServe(ballready)
- servex=ballx()+servexVersetzung
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
- if ballready and movetoX(servex) then
- jump()
- end
-end
-
-function OnGame()
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
- targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- movetoX(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
- sprungattacke(angriffsstaerke)
- else
- if (targetJump < CONST_MITTE / 2) then
- sprungattacke(-35) --an Rueckwand spielen
- else
- sprungattacke(0) --weiterleiten
- end
- end
- return
- end
-
- movetoX(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
- p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
-
- movetoX(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
-
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
- naechsterBallSchmettern = false
- return
- end
-
- if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
- naechsterBallSchmettern = false
- return
- end
-
- if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
- naechsterBallSchmettern = true
- return
- end
-
- if (touches() == 2) then -- nach der 2. Berührung angreifen
- naechsterBallSchmettern = true
- return
- end
- naechsterBallSchmettern = false
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
-end
-
-function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()/math.abs(bspeedx())
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if (Frage == 1) then
- return resultX
- end
- if (Frage == 2) then
- return estimbspeedx
- end
-end
-
-function movetoX (x)
- if (math.abs(posx()-x)>math.abs(posx()+4.5-x)) then
- right()
- done=false
- else
- if (math.abs(posx()-x)>math.abs(posx()-4.5-x)) then
- left()
- done=false
- else
- done=true
- end
- end
- return done
-end
diff -Nru blobby-0.8-dfsg/data/scripts/com_10Schm.lua blobby-0.9c/data/scripts/com_10Schm.lua
--- blobby-0.8-dfsg/data/scripts/com_10Schm.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/com_10Schm.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,160 +0,0 @@
--- Combot 1.0 - Schmettermod
--- by Oreon, Axji & Enormator
-
--- Flags und runners
-wait = 0
-naechsterBallSchmettern = true -- evtl Variablennamen wechseln
-
-
--- Weltkonstanten
-
-CONST_FELD_LAENGE = 800
-CONST_BALL_RADIUS = 31.5
-CONST_GROUND_PLANE = 100
-
-CONST_BALL_GRAVITY = 0.28
-
-CONST_MITTE = CONST_FELD_LAENGE/2
-CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
-
-CONST_BLOBBY_HOEHE = 89
-CONST_BLOBBY_KOPF_RADIUS = 25
-CONST_BLOBBY_BAUCH_RADIUS = 33
-CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
-CONST_BLOBBY_MAXJUMP = 393.625
-
-CONST_NETZ_RADIUS = 7
-CONST_NETZ_HOEHE = 323
-
--- Berührungsebene des Balls falls er ans Netz kommt
-CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
-CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
-
--- Charakter
-CONST_ANGRIFFSGRUNDWERT_MIN = 30
-CONST_ANGRIFFSGRUNDWERT_MAX = 55
-MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
-MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
-ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
-
--- sonstige Einstellungen
-servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
-
--- ***ANFANG***
-
-function OnOpponentServe()
- movetoX(130)
-end
-
-function OnServe(ballready)
- servex=ballx()+servexVersetzung
- naechsterBallSchmettern = true
- generatenaechsterBallSchmettern()
- if ballready and movetoX(servex) then
- jump()
- end
-end
-
-function OnGame()
- target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
- targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
- targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
- targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
- naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
-
- if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
- generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
- end
-
- if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
- movetoX(135) --Dann auf Standartposition warten
- else
- if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
- naechsterBallSchmettern = true
- end
-
- if naechsterBallSchmettern then
- if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
- sprungattacke(angriffsstaerke)
- else
- if (targetJump < CONST_MITTE / 2) then
- sprungattacke(-35) --an Rueckwand spielen
- else
- sprungattacke(0) --weiterleiten
- end
- end
- return
- end
-
- movetoX(target)
- end
-end
-
-
-function sprungattacke(p_angriffsstaerke)
- p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
- p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
-
- movetoX(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
-
- if (bally() < 580) and (bspeedy() < 0) then
- jump()
- end
-end
-
-function naechsterBallSchmetternFlagTesten()
- naechsterBallSchmettern = true
-end
-
-function generatenaechsterBallSchmettern()
- angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
-end
-
-function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
- bgrav = 0.28
-
- time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
- resultX = (vbx * time1) + bx
- estimbspeedx=bspeedx()/math.abs(bspeedx())
-
- if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
- resultX = 2 * CONST_FELD_LAENGE - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
- resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
- estimbspeedx=-estimbspeedx
- KollisionLinks = true
- else
- KollisionLinks = false
- end
-
- if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
- resultX = 2 * CONST_NETZ_LINKS - resultX
- estimbspeedx=-estimbspeedx
- end
-
- if (Frage == 1) then
- return resultX
- end
- if (Frage == 2) then
- return estimbspeedx
- end
-end
-
-function movetoX (x)
- if (math.abs(posx()-x)>math.abs(posx()+4.5-x)) then
- right()
- done=false
- else
- if (math.abs(posx()-x)>math.abs(posx()-4.5-x)) then
- left()
- done=false
- else
- done=true
- end
- end
- return done
-end
-
diff -Nru blobby-0.8-dfsg/data/scripts/gintonicV6.lua blobby-0.9c/data/scripts/gintonicV6.lua
--- blobby-0.8-dfsg/data/scripts/gintonicV6.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/gintonicV6.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,230 +0,0 @@
---Gin Tonic v6 - No Comments, sorry :P
-
-CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
-CT_ServeOpp = { 140, 200, 240 }
-CT_ServeIndex = 0
-CT_Tolerance = 5
-CT_Action = ""
-CT_ShotDecision = 0
-CT_NextGround = 9999
-CT_LastTouches = 0
-CT_LastHeight = 0
-
-CT_WaitCounter = 0
-CT_WaitName = ""
-CT_WaitMoveTo = 0
-
-function IsAt(position)
- return (math.abs(posx()-position) <= CT_Tolerance)
-end
-
-function Wait(name, time, moveto)
- if (CT_WaitName == name) then
- if (CT_WaitCounter == 0) then
- return false
- end
- end
- CT_WaitCounter = time
- CT_WaitName = name
- CT_WaitMoveTo = moveto
- return true
-end
-
-function WaitQueue()
- if (CT_WaitCounter > 0) then
- CT_WaitCounter = CT_WaitCounter - 1
- if (CT_WaitMoveTo > 0) then
- if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
- end
- return true
- else
- return false
- end
-end
-
-function ResetWait()
- CT_WaitCounter = 0
- CT_WaitName = ""
-end
-
-function OnOpponentServe()
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,3)
- end
- if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
-end
-
-function OnServe(ballready)
- if (WaitQueue()) then return end
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,6)
- end
- if (ballready) then
- if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
- if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
- jump()
- else
- moveto(CT_ServeSelf[CT_ServeIndex])
- end
- else
- if (posx() < 150) then
- jump()
- end
- moveto(40)
- end
-end
-
-function OnGame()
- ResetWait()
- CT_ServeIndex = 0
-
- local timeJump = timeToHitHeight(380, 390, 20)
- local timeGround = timeToHitHeight(200, 222, 40)
- local timeBlock = timeToOppSmash(390)
- local estimhx = r_estimx(timeJump)
- local estimGround = r_estimx(timeGround)
- local estimBlock = r_estimx(timeBlock)
- local block = 0
- local wallcoll = willHitWall(time)
- if (timeBlock ~= -1) then block = timeBlock+(estimBlock-400)/13 end
- if (timeBlock == -1) then timeBlock = 9999 end
- if (timeJump == -1) then estimhx = 9999 end
- if (timeGround == -1) then estimGround = 210 end
-
- if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
- CT_LastHeight = posy()
-
- if (CT_Action == "NetBlock") then
- if ((posy() < 150) or (timeBlock < 4 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 10)) then
- CT_Action = ""
- else
- jump()
- moveto(400)
- return
- end
- elseif (CT_Action == "JumpPlayFwd") then
- if (posy() < 150) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (posy() > 300) then
- if (math.abs(bally()-posy()) < 18) then
- moveto(ballx()+bspeedx())
- elseif (estimhx < 200) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() > 600 and oppy() < 150) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() < 600 and oppy() > 180) then
- moveto(estimhx-40)
- else
- moveto(estimhx-60)
- end
- else
- moveto(estimhx-60)
- end
- return
- end
- elseif (CT_Action == "JumpPlayRev") then
- if (posy() < 150) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,9) end
- moveto(estimhx+5*CT_ShotDecision)
- return
- end
- end
-
- if (touches() ~= CT_LastTouches) then
- CT_LastTouches = touches()
- CT_NextGround = math.random(-20,20)
- end
-
- if (CT_Action == "") then
- if ((ballx() < 400 or bspeedx() < -2) and estimGround < 400) then
- if (touches() >= 2) then
- moveto(estimGround+(posx()-500)/22)
- elseif (math.abs(bspeedx()) > 8) then
- moveto(estimGround)
- else
- moveto(estimGround+CT_NextGround)
- end
- elseif (estimhx < 600 and math.abs(bspeedx()) < 6) then
- moveto(280)
- elseif (estimhx > 650) then
- moveto(250)
- else
- moveto(190)
- end
- end
-
- if (posy() > 150) then return end
-
- if (timeBlock >= 17 and timeBlock <= 19) then
- if (posx() > 210 and estimBlock > 395 and estimBlock < 640) then
- jump()
- moveto(400)
- CT_Action = "NetBlock"
- return
- end
- end
- if (timeJump >= 17 and timeJump <= 19) then
- if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or (not wallcoll))) then
- if (estimGround > 400 or bally() > 250) then
- CT_Action = "JumpPlayFwd"
- CT_ShotDecision = 0
- jump()
- end
- end
- if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
- if (estimGround > 400 or bally() > 250) then
- if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
- CT_Action = "JumpPlayRev"
- CT_ShotDecision = 0
- jump()
- end
- end
- end
-end
-
-
-function timeToHitHeight(minheight, maxheight, depth)
- local i = 0
- for i=1, depth do
- if (estimy(i) >= minheight and estimy(i) <= maxheight and estimx(i) <= 420) then
- return i
- end
- end
- return -1
-end
-
-function timeToOppSmash(height)
- if (bally() < height) then return -1 end
- local i = 0
- for i=1, 17 do
- if (estimy(i) < height) then
- return i
- end
- end
- return -1
-end
-
-function r_estimx(time)
- local estim = estimx(time)
- if estim < 31.5 then estim = 63-estim end
- if estim > 768.5 then estim = 1537-estim end
- if (bally() < 330) then
- if (ballx() < 400 and estim > 400) then estim = 723-estim end
- if (ballx() > 400 and estim < 400) then estim = 877-estim end
- end
- return estim
-end
-
-function willHitWall(time)
- if (estimx(time) < 31.5) then return true end
- return false
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/gintonicV7.lua blobby-0.9c/data/scripts/gintonicV7.lua
--- blobby-0.8-dfsg/data/scripts/gintonicV7.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/gintonicV7.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,231 +0,0 @@
---Gin Tonic v7 - No Comments, sorry :P
-
-CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
-CT_ServeOpp = { 140, 200, 240 }
-CT_ServeIndex = 0
-CT_Tolerance = 5
-CT_Action = ""
-CT_ShotDecision = 0
-CT_NextGround = 9999
-CT_LastTouches = 0
-CT_LastHeight = 0
-
-CT_WaitCounter = 0
-CT_WaitName = ""
-CT_WaitMoveTo = 0
-
-function IsAt(position)
- return (math.abs(posx()-position) <= CT_Tolerance)
-end
-
-function Wait(name, time, moveto)
- if (CT_WaitName == name) then
- if (CT_WaitCounter == 0) then
- return false
- end
- end
- CT_WaitCounter = time
- CT_WaitName = name
- CT_WaitMoveTo = moveto
- return true
-end
-
-function WaitQueue()
- if (CT_WaitCounter > 0) then
- CT_WaitCounter = CT_WaitCounter - 1
- if (CT_WaitMoveTo > 0) then
- if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
- end
- return true
- else
- return false
- end
-end
-
-function ResetWait()
- CT_WaitCounter = 0
- CT_WaitName = ""
-end
-
-function OnOpponentServe()
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,3)
- end
- if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
-end
-
-function OnServe(ballready)
- if (WaitQueue()) then return end
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,6)
- end
- if (ballready) then
- if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
- if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
- jump()
- else
- moveto(CT_ServeSelf[CT_ServeIndex])
- end
- else
- if (posx() < 150) then
- jump()
- end
- moveto(40)
- end
-end
-
-function OnGame()
- ResetWait()
- CT_ServeIndex = 0
-
- local timeJump = timeToHitHeight(380, 390, 20)
- local timeGround = timeToHitHeight(200, 222, 40)
- local timeBlock = timeToOppSmash(390)
- local estimhx = r_estimx(timeJump)
- local estimGround = r_estimx(timeGround)
- local estimBlock = r_estimx(timeBlock)
- local block = 0
- local wallcoll = willHitWall(timeJump)
- if (timeBlock ~= -1) then block = timeBlock+(estimBlock-400)/13 end
- if (timeBlock == -1) then timeBlock = 9999 end
- if (timeJump == -1) then estimhx = 9999 end
- if (timeGround == -1) then estimGround = 210 end
-
- if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
- CT_LastHeight = posy()
-
- if (CT_Action == "NetBlock") then
- if ((posy() < 150) or (timeBlock < 4 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 10)) then
- CT_Action = ""
- else
- jump()
- moveto(400)
- return
- end
- elseif (CT_Action == "JumpPlayFwd") then
- if (posy() < 150) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (posy() > 300) then
- if (math.abs(bally()-posy()) < 18) then
- moveto(ballx()+bspeedx())
- elseif (estimhx < 200) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() > 600 and oppy() < 150) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() < 600 and oppy() > 180) then
- moveto(estimhx-40)
- else
- moveto(estimhx-60)
- end
- else
- moveto(estimhx-60)
- end
- return
- end
- elseif (CT_Action == "JumpPlayRev") then
- if (posy() < 150 or touches() ~= CT_LastTouches) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,9) end
- moveto(estimhx+5*CT_ShotDecision)
- return
- end
- end
-
- if (touches() ~= CT_LastTouches) then
- CT_LastTouches = touches()
- CT_NextGround = math.random(-20,20)
- end
-
- if (CT_Action == "") then
- if ((ballx() < 400 or bspeedx() < -2) and estimGround < 400) then
- if (touches() >= 2) then
- moveto(estimGround+(posx()-500)/22)
- elseif (math.abs(bspeedx()) > 8) then
- moveto(estimGround)
- else
- moveto(estimGround+CT_NextGround)
- end
- elseif (estimhx < 600 and math.abs(bspeedx()) < 6) then
- moveto(280)
- elseif (estimhx > 650) then
- moveto(250)
- else
- moveto(190)
- end
- end
-
- if (posy() > 150) then return end
- if (touches() > 2) then return end
-
- if (timeBlock >= 17 and timeBlock <= 19) then
- if (posx() > 210 and estimBlock > 395 and estimBlock < 640 and not wallcoll) then
- jump()
- moveto(400)
- CT_Action = "NetBlock"
- return
- end
- end
- if (timeJump >= 17 and timeJump <= 19) then
- if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or not wallcoll)) then
- if (estimGround > 400 or bally() > 250) then
- CT_Action = "JumpPlayFwd"
- CT_ShotDecision = 0
- jump()
- end
- end
- if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
- if (estimGround > 400 or bally() > 250) then
- if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
- CT_Action = "JumpPlayRev"
- CT_ShotDecision = 0
- jump()
- end
- end
- end
-end
-
-
-function timeToHitHeight(minheight, maxheight, depth)
- local i = 0
- for i=1, depth do
- if (estimy(i) >= minheight and estimy(i) <= maxheight and estimx(i) <= 420) then
- return i
- end
- end
- return -1
-end
-
-function timeToOppSmash(height)
- if (bally() < height) then return -1 end
- local i = 0
- for i=1, 17 do
- if (estimy(i) < height) then
- return i
- end
- end
- return -1
-end
-
-function r_estimx(time)
- local estim = estimx(time)
- if estim < 31.5 then estim = 63-estim end
- if estim > 768.5 then estim = 1537-estim end
- if (bally() < 330) then
- if (ballx() < 400 and estim > 400) then estim = 723-estim end
- if (ballx() > 400 and estim < 400) then estim = 877-estim end
- end
- return estim
-end
-
-function willHitWall(time)
- if (estimx(time) < 31.5) then return true end
- return false
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/gintonicV8.lua blobby-0.9c/data/scripts/gintonicV8.lua
--- blobby-0.8-dfsg/data/scripts/gintonicV8.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/gintonicV8.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,240 +0,0 @@
---Gin Tonic v8 - No Comments, sorry :P
-
-CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
-CT_ServeOpp = { 140, 200, 240 }
-CT_ServeIndex = 0
-CT_Tolerance = 5
-CT_Action = ""
-CT_ShotDecision = 0
-CT_NextGround = 9999
-CT_LastTouches = 9999
-CT_LastHeight = 0
-CT_SkipNextBlock = 0
-
-CT_WaitCounter = 0
-CT_WaitName = ""
-CT_WaitMoveTo = 0
-
-function IsAt(position)
- return (math.abs(posx()-position) <= CT_Tolerance)
-end
-
-function Wait(name, time, moveto)
- if (CT_WaitName == name) then
- if (CT_WaitCounter == 0) then
- return false
- end
- end
- CT_WaitCounter = time
- CT_WaitName = name
- CT_WaitMoveTo = moveto
- return true
-end
-
-function WaitQueue()
- if (CT_WaitCounter > 0) then
- CT_WaitCounter = CT_WaitCounter - 1
- if (CT_WaitMoveTo > 0) then
- if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
- end
- return true
- else
- return false
- end
-end
-
-function ResetWait()
- CT_WaitCounter = 0
- CT_WaitName = ""
-end
-
-function OnOpponentServe()
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,3)
- end
- if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
-end
-
-function OnServe(ballready)
- if (WaitQueue()) then return end
- if (CT_ServeIndex == 0) then
- CT_ServeIndex = math.random(1,6)
- end
- if (ballready) then
- if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
- if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
- jump()
- else
- moveto(CT_ServeSelf[CT_ServeIndex])
- end
- else
- if (posx() < 150) then
- jump()
- end
- moveto(40)
- end
-end
-
-function OnGame()
- ResetWait()
- CT_ServeIndex = 0
-
- local timeJump = timeToHitHeight(380, 390, 20)
- local timeGround = timeToHitHeight(200, 222, 40)
- local timeBlock = timeToOppSmash(390)
- local estimhx = r_estimx(timeJump)
- local estimGround = r_estimx(timeGround)
- local estimBlock = r_estimx(timeBlock)
- local block = 0
- local wallcoll = willHitWall(timeJump)
- if (timeBlock ~= -1) then timeBlock = timeBlock+(estimBlock-400)/13 end
- if (timeBlock == -1) then timeBlock = 9999 end
- if (timeJump == -1) then estimhx = 9999 end
- if (timeGround == -1) then estimGround = 210 end
- if (CT_SkipNextBlock == 0) then CT_SkipNextBlock = math.random(1,10) end
-
- if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
- CT_LastHeight = posy()
-
- if (CT_Action == "NetBlock") then
- if ((posy() < 150) or (timeBlock <= 8 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 9)) then
- CT_Action = ""
- else
- jump()
- moveto(400)
- return
- end
- elseif (CT_Action == "JumpPlayFwd") then
- if (posy() < 150) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (posy() > 300) then
- if (math.abs(bally()-posy()) < 18) then
- moveto(ballx()+bspeedx())
- elseif (estimhx < 200) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() > 600 and oppy() < 150) then
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
- moveto(estimhx-10*CT_ShotDecision)
- elseif (oppx() < 600 and oppy() > 180) then
- moveto(estimhx-40)
- else
- moveto(estimhx-60)
- end
- else
- moveto(estimhx-50)
- end
- return
- end
- elseif (CT_Action == "JumpPlayRev") then
- if (posy() < 150 or touches() ~= CT_LastTouches) then
- CT_Action = ""
- else
- if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
- jump()
- if (CT_ShotDecision == 0 and touches() == 2) then CT_ShotDecision = math.random(5,7) end
- if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,8) end
- if (math.abs(bally()-posy()) < 18) then
- moveto(ballx()+bspeedx())
- else
- moveto(estimhx+5*CT_ShotDecision)
- end
- return
- end
- end
-
- if (touches() ~= CT_LastTouches) then
- CT_LastTouches = touches()
- CT_NextGround = math.random(-20,20)
- CT_SkipNextBlock = 0
- end
-
- if (CT_Action == "") then
- if ((ballx() < 400 or bspeedx() < -2 or bspeedx() > 10) and estimGround < 400) then
- if (touches() >= 2) then
- moveto(estimGround+(posx()-500)/22)
- elseif (math.abs(bspeedx()) > 8) then
- moveto(estimGround)
- else
- moveto(estimGround+CT_NextGround)
- end
- elseif (estimhx < 650 and math.abs(bspeedx()) < 6) then
- moveto(215)
- elseif (estimhx > 650) then
- moveto(250)
- else
- moveto(180)
- end
- end
-
- if (posy() > 150) then return end
- if (touches() > 2) then return end
-
- if (timeBlock >= 23 and timeBlock <= 25 and CT_SkipNextBlock ~= 1) then
- if (posx() > 210 and estimBlock > 395 and estimBlock < 650 and not wallcoll) then
- jump()
- moveto(400)
- CT_Action = "NetBlock"
- return
- end
- end
- if (timeJump >= 17 and timeJump <= 19) then
- if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or not wallcoll)) then
- if (estimGround > 400 or bally() > 250) then
- CT_Action = "JumpPlayFwd"
- CT_ShotDecision = 0
- jump()
- end
- end
- if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
- if (estimGround > 400 or bally() > 250) then
- if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
- CT_Action = "JumpPlayRev"
- CT_ShotDecision = 0
- jump()
- end
- end
- end
-end
-
-
-function timeToHitHeight(minheight, maxheight, depth)
- local i = 0
- for i=1, depth do
- if (estimy(i) >= minheight and estimy(i) <= maxheight) then
- return i
- end
- end
- return -1
-end
-
-function timeToOppSmash(height)
- if (bally() < height) then return -1 end
- local i = 0
- for i=1, 17 do
- if (estimy(i) < height) then
- return i
- end
- end
- return -1
-end
-
-function r_estimx(time)
- local estim = estimx(time)
- if estim < 31.5 then estim = 63-estim end
- if estim > 768.5 then estim = 1537-estim end
- if (bally() < 330) then
- if (ballx() < 400 and estim > 400) then estim = 723-estim end
- if (ballx() > 400 and estim < 400) then estim = 877-estim end
- end
- return estim
-end
-
-function willHitWall(time)
- if (estimx(time) < 31.5) then return true end
- if (estimx(time) > 768.5) then return true end
- return false
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/hyp010.lua blobby-0.9c/data/scripts/hyp010.lua
--- blobby-0.8-dfsg/data/scripts/hyp010.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp010.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,514 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-p0=0
-p1=0.5
-p2=1
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=0.4
-esto1=10
-esto2=10
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function lob()
-
- if (math.abs(est-esto2)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto2=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- if (impfimp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>740) then break end
- end
- if (t>12) then t=t-6 else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- --p=0.5
- end
-
-end
-
-
-function attack()
-
- if (math.abs(est-esto1)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
- h2=900
--- debug(-10)
- esto1=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- xat=xaf
- yat=yaf
- vxat=vxaf
- vyat=vyaf
- break
- end
- end
- h2t=yb(yat,vyat,(400-xat)/vxat)
- if (h2t316+31.5+10) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
- end
- if (t>12) then t=t-6
- else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
-
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- move(est)
- --p=0.9
- end
-end
-
-
-function netp()
-
- if (math.abs(est-esto)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto=est
- imp=0
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt>imp) and (impt<431.5) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>428) then break end
- end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- end
-
-end
-
-
-function OnOpponentServe()
-y1p=144.5
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-valid=1
-
-
-end
-
-function OnServe(ballready)
-y1p=144.5
- est=700
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-180)<2) then
- jump()
- else
- move(180)
- end
- end
-valid=1
-end
-
-
-
-function OnGame()
-
-yp2=y1p
-y1p=oppy()
-vp=y1p-yp2
-
-
-esttold=estt
-netold=net
-toucho=touch
-touch=touches()
-if (touch400-31.5) then
- move (250)
- elseif (est<400-10) and (est>400-22) then
- move(200)
- elseif (est<400) and (est>400-10) then
- move(180)
- else
- move(230)
-end
-
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp011com.lua blobby-0.9c/data/scripts/hyp011com.lua
--- blobby-0.8-dfsg/data/scripts/hyp011com.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp011com.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,634 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-p0=0
-p1=0.5
-p2=1
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=0.4
-esto1=10
-esto2=10
-esto3=10
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function lob()
-
- if (math.abs(est-esto2)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto2=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- if (impfimp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>740) then break end
- end
- if (t>12) then t=t-6 else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- --p=0.5
- end
-
-end
-
-
-function attack()
-
- if (math.abs(est-esto1)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
- h2=900
--- debug(-10)
- esto1=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- xat=xaf
- yat=yaf
- vxat=vxaf
- vyat=vyaf
- break
- end
- end
- h2t=yb(yat,vyat,(400-xat)/vxat)
- if (h2t316+31.5+10) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
- end
- if (t>12) then t=t-6
- else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
-
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- move(est)
- --p=0.9
- end
-end
-
-
-function netp()
-
- if (math.abs(est-esto3)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto3=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est-4.5)
- end
-
-end
-
-
-
-
-
-function posplay()
-
- if (math.abs(est-esto3)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto3=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5280) and (impf<340) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (math.abs(impt-310)0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- end
-
-end
-
-
-
-
-
-
-function OnOpponentServe()
-y1p=144.5
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-valid=1
-nettime=0
-phase=0
-
-end
-
-function OnServe(ballready)
-nettime=0
-y1p=144.5
-phase=0
- est=700
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-180)<2) then
- jump()
- else
- move(180)
- end
- end
-valid=1
-end
-
-
-
-function OnGame()
-
-yp2=y1p
-y1p=oppy()
-vp=y1p-yp2
-
-
-esttold=estt
-netold=net
-toucho=touch
-touch=touches()
-if (touch431.5) or (est<368.5)) then
- nettime=10
- phase=4
- elseif (phase==4) and (nettime>0) then
- nettime=nettime-1
- else
- if (est>431.5) then
- phase=3
- elseif (est<431.5) and (est>368.5) then
- phase=2
- else
- phase=1
- end
-end
-
-if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
-
-
---1 Player
---2 Ball
--- debug(0)
--- debug(est)
--- debug(imp)
--- debug(t2)
---
--- if (est<(400-31.5)) then
--- if (p<1) then netp()
--- else lob()
--- end
--- elseif (est<400-22) and (est>400-31.5) then
--- move (250)
--- elseif (est<400-10) and (est>400-22) then
--- move(200)
--- elseif (est<400) and (est>400-10) then
--- move(180)
--- else
--- move(100)
--- end
-if (phase==3) then
- move(100)
- elseif (phase==1) then
--- if (p<0.4) then
--- attack()
--- elseif (p>=0.4) and (p<0.7) then
--- lob()
--- else
- if (touches()==0) then
- posplay()
- elseif (touches()==1) then
- netp()
- else
- attack()
- end
--- end
- elseif (phase==2) then
- if (tnet<=tp(393)+1) or (nettime>0) then jump() end
- if (math.abs(posx()-360)/4.5-10<=tnet) then
- left()
- else
- right()
- end
- elseif (phase==4) then
- right()
- jump()
- elseif (phase==5) then
- if (posx()>300) then jump() end
- right()
-end
-
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp011.lua blobby-0.9c/data/scripts/hyp011.lua
--- blobby-0.8-dfsg/data/scripts/hyp011.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp011.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,634 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-p0=0
-p1=0.5
-p2=1
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=0.4
-esto1=10
-esto2=10
-esto3=10
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function lob()
-
- if (math.abs(est-esto2)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto2=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- if (impfimp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>740) then break end
- end
- if (t>12) then t=t-6 else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- --p=0.5
- end
-
-end
-
-
-function attack()
-
- if (math.abs(est-esto1)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
- h2=900
--- debug(-10)
- esto1=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- xat=xaf
- yat=yaf
- vxat=vxaf
- vyat=vyaf
- break
- end
- end
- h2t=yb(yat,vyat,(400-xat)/vxat)
- if (h2t316+31.5+10) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
- end
- if (t>12) then t=t-6
- else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
-
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- move(est)
- --p=0.9
- end
-end
-
-
-function netp()
-
- if (math.abs(est-esto3)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto3=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est-4.5)
- end
-
-end
-
-
-
-
-
-function posplay()
-
- if (math.abs(est-esto3)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto3=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5280) and (impf<340) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (math.abs(impt-310)0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- end
-
-end
-
-
-
-
-
-
-function OnOpponentServe()
-y1p=144.5
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-valid=1
-nettime=0
-phase=0
-
-end
-
-function OnServe(ballready)
-nettime=0
-y1p=144.5
-phase=0
- est=700
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-180)<2) then
- jump()
- else
- move(180)
- end
- end
-valid=1
-end
-
-
-
-function OnGame()
-
-yp2=y1p
-y1p=oppy()
-vp=y1p-yp2
-
-
-esttold=estt
-netold=net
-toucho=touch
-touch=touches()
-if (touch431.5) or (est<368.5)) then
- nettime=10
- phase=4
- elseif (phase==4) and (nettime>0) then
- nettime=nettime-1
- else
- if (est>431.5) then
- phase=3
- elseif (est<431.5) and (est>368.5) then
- phase=2
- else
- phase=1
- end
-end
-
-if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
-
-
---1 Player
---2 Ball
--- debug(0)
--- debug(est)
--- debug(imp)
--- debug(t2)
---
--- if (est<(400-31.5)) then
--- if (p<1) then netp()
--- else lob()
--- end
--- elseif (est<400-22) and (est>400-31.5) then
--- move (250)
--- elseif (est<400-10) and (est>400-22) then
--- move(200)
--- elseif (est<400) and (est>400-10) then
--- move(180)
--- else
--- move(100)
--- end
-if (phase==3) then
- move(100)
- elseif (phase==1) then
- if (p<0.4) then
- attack()
- elseif (p>=0.4) and (p<0.7) then
- lob()
- else
- if (touches()==0) then
- posplay()
- elseif (touches()==1) then
- netp()
- else
- attack()
- end
- end
- elseif (phase==2) then
- if (tnet<=tp(393)+1) or (nettime>0) then jump() end
- if (math.abs(posx()-360)/4.5-10<=tnet) then
- left()
- else
- right()
- end
- elseif (phase==4) then
- right()
- jump()
- elseif (phase==5) then
- if (posx()>300) then jump() end
- right()
-end
-
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp012.lua blobby-0.9c/data/scripts/hyp012.lua
--- blobby-0.8-dfsg/data/scripts/hyp012.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp012.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,649 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=math.random()/2+0.5
-esto1=10
-esto2=10
-esto3=10
-esto4=10
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function lob()
-
- if (math.abs(est-esto2)>0.2) then
- esto2=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- if (impfimp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>740) then break end
- end
- if (t>12) then t=t-6 else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
--- move(est)
-p=math.random()
-esto2=0
- end
-
-end
-
-
-function attack()
-
- if (math.abs(est-esto1)>0.2) then
- h2=900
- esto1=est
- imp=0
- x1=0
- t=30
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(pos(x2f)+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- xat=xaf
- yat=yaf
- vxat=vxaf
- vyat=vyaf
- break
- end
- end
- h2t=yb(yat,vyat,(400-xat)/vxat)
- if (h2t316+31.5+10) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2>316+31.5+10) and (h2<316+31.5+60) then break end
- end
- if (t>12) then t=t-6
- else t=t-4 end
- end
- t2=t2+1
- end
- t2=t2-1
-
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
--- move(est-5)
- --p=0.9
-p=math.random()
-esto1=0
- end
-end
-
-
-function netp()
-
- if (math.abs(est-esto3)>0.2) then
- esto3=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
--- move(est-4.5)
-p=math.random()
-esto3=0
- end
-
-end
-
-
-
-
-
-function playto(dest)
---310
-
- if (math.abs(est-esto4)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto4=est
- imp=500
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5dest-30) and (impf0) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (math.abs(impt-dest)0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
--- move(est)
-p=math.random()
-esto4=0
- end
-
-end
-
-
-
-
-
-
-function OnOpponentServe()
-pp=math.random()
- y1p=144.5
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- move(200)
- end
- valid=1
- nettime=0
- phase=0
- imp1=0
- imp2=0
- imp=0
- active=1
-end
-
-function OnServe(ballready)
-pp=math.random()
- active=1
- nettime=0
- y1p=144.5
- phase=0
- est=700
- imp1=0
- imp2=0
- imp=0
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-198)<2) then
- jump()
- else
- move(198)
- end
- end
- valid=1
-end
-
-
-
-function OnGame()
-
- yp2=y1p
- y1p=oppy()
- vp=y1p-yp2
-
- if (math.abs(imp1-imp)>0.1) then
- imp2=imp1
- imp1=imp
- end
-
- esttold=estt
- netold=net
- toucho=touch
- touch=touches()
- if (touch431.5) or (est<368.5)) then
- nettime=11
- phase=4
- elseif (phase==4) and (nettime>0) then
- nettime=nettime-1
- else
- if (est>431.5) then
- phase=3
- elseif (est<431.5) and (est>368.5) then
- phase=2
- else
- phase=1
- end
- end
- else
- phase=6
- end
- if (bally()<130) then active=0 end
-
- if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
-
- if (phase==3) then
- move(170)
- elseif (phase==1) then
-
- if (p<0.5) then
- if (touch==0) then
- playto(310)
- elseif (touch==1) then
- if (p<0.2) then
- netp()
- elseif (p>=0.2) and (p<0.35) then
- playto(pp*300+450)
- elseif (p>=0.35) and (p<0.5) then
- attack()
- end
- else
- attack()
- end
- else
- if (touch==0) then
- if (p>=0.5) and (p<0.75) then
- playto(pp*300+450)
- elseif (p>=0.75) and (p<=1.0) then
- attack()
- end
- else
- attack()
- end
- end
- elseif (phase==2) then
- if (tnet<=tp(393)+1) or (nettime>0) then jump() end
- if (math.abs(posx()-360)/4.5-10<=tnet) then
- left()
- else
- right()
- end
- elseif (phase==4) then
- right()
- jump()
- elseif (phase==5) then
- if (posx()>300) then
- jump()
- end
- right()
- end
-
- if ((x1==0) or (imp==0)) and (phase==1) then
--- debug(-1)
- move(est)
- end
---debug(phase)
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp013.lua blobby-0.9c/data/scripts/hyp013.lua
--- blobby-0.8-dfsg/data/scripts/hyp013.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp013.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,592 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-h=31.5+19+25
- estt=0
-p=0.654
-
-function reset()
- est=0
- imp,imp1,imp2=0,0,0
-
- nettime=0
- touch=0
- esto1=0
- esto2=0
- esto3=0
- esto4=0
- esto5=0
- esto6=0
- phase=0
- valid=1
- active=1
- nettime=0
- y1p=posy()
-end
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
- local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos2(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=vx
- vyr=vy
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jum,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,7,0.2 do
-
- if (jum==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
-
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function playto(position)
-
- if (math.abs(est-esto3)>0.2) then
- delta=30
- esto3=est
- imp,impt,impf=0,0,0
- x1=0
- t=27
- typ1=60
- typ2=120
- if (position<400) then
- n1=2
- n2=-3
- elseif (position>600) then
- n1=-4
- n2=-11
- else
- n1=-1
- n2=-8
- end
- while (t>=0) do
-
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(math.ceil((tp2(posy(),vp))))1) and (t2f>1) then
-
- for x1f=pos(x2f)+n1*4.5,pos(x2f)+n2*4.5,-4.5 do
- impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
-
- if (impf>position-delta) and (math.abs(posx()-x1f)/4.5+10) and (x1f<330) and (impfposition+delta) and ((x1f-pos(x2f))/4.5<0) then break end
- end
-
-
- end
- if (imp>position-delta) and (imp15) then t=t-6
- else t=t-3 end
- end
- t2=t2+1
-
- end
-
- if (x1>0) and (imp>0) then
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- move(est+4.5)
- end
-end
-
-function net()
-
- if (math.abs(est-esto2)>0.2) then
- esto2=est
- imp,impt,impf=0,0,0
- x1=0
- t=27
- typ1=60
- typ2=120
-
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(math.ceil((tp2(posy(),vp))))+21) and (t2f>1) then
- for x1f=pos(x2f)-1*4.5,pos(x2f)-10*4.5,-4.5 do
- impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
- if (impf>400) and (math.abs(posx()-x1f)/4.50) and (x1f<330) and (impf<438) then
- imp=impf
- x1=x1f
- y1=y1f
- t1=t1f
- x2=x2f
- y2=y2f
- t2=t2f
- vx2=vx2f
- vy2=vy2f
- xa=xaf
- ya=yaf
- vxa=vxaf
- vya=vyaf
- break
- end
- if (imp>400) then break end
- end
-
-
- end
- if (imp>400) and (imp<438) then break end
- if (t>15) then t=t-6
- else t=t-3 end
- end
- t2=t2+1
-
- end
-
- if (x1>0) and (imp>0) then
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- playto(600)
- end
-end
-
-
-function attack()
-
- if (math.abs(est-esto1)>0.2) then
- h2=900
- esto1=est
- imp,impt,impf=0,0,0
- x1=0
- t=27
- typ1=60
- typ2=120
-
- while (t>=0) do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(math.ceil((tp2(posy(),vp))))+21) and (t2f>1) then
- for x1f=pos(x2f)-20*4.5,pos(x2f)-4*4.5,4.5 do
- impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
- h1=yb(yaf,vyaf,(380-xaf)/vxaf)
- h2=yb(yaf,vyaf,(420-xaf)/vxaf)
- height=316+7+31.5
-
- if (impf>432) and (math.abs(posx()-x1f)/4.5+10) and (x1f<330) and (h2>height+typ1) and (h1>height+typ1) and (h2432) and (h2>height+typ2) then break end
- end
-
-
- end
- if (imp>0) then break end
- if (t>15) then t=t-6
- else t=t-3 end
- end
- t2=t2+1
-
- end
-
- if (x1>0) and (imp>0) then
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- playto(600)
- end
-end
-
-
-
-
-
-function OnOpponentServe()
-reset()
- if (math.abs(pos2(posx())-posx())>1) then
- move(400)
- else
- move(200)
- end
-end
-
-function OnServe(ballready)
-reset()
- if (math.abs(pos2(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-198)<2) then
- jump()
- else
- move(198)
- end
- end
-end
-
-
-
-function OnGame()
-
- yp2=y1p
- y1p=posy()
- vp=y1p-yp2
-
- if (math.abs(imp1-imp)>0.1) then
- imp2=imp1
- imp1=imp
- end
-
- esttold=estt
- netold=netc
- toucho=touch
- touch=touches()
- if (touch438.5) or (est<361.5)) then
- nettime=11
- phase=4
- elseif (phase==4) and (nettime>0) then
- nettime=nettime-1
- else
- if (est>438.5) then
- phase=2
- elseif (est<438.5) and (est>361.5) then
- if (((vyestt-g*(80-estt)/vxestt)>0) or (vxestt<0)) and ((360-posx())/4.5=0.2)) then
- attack()
- else
- playto(600)
- end
- elseif (p>=0.6) and (p<0.9) then
- if (p<0.7) and (touch==0) then
- playto(300)
- else
- playto(770)
- end
--- elseif (p>=0.9) and (p<0.95) then
--- playto(480)
- else
- if (p<0.95) and (touch==0) then
- playto(300)
- elseif (touch==1) or ((touch==0) and (p>=0.95)) then
- playto(480)
- else
- playto(600)
- end
- end
- elseif (phase==3) then
- if (tnet<=tp(393)-3) or (nettime>0) then jump() end
- if (math.abs(posx()-360)/4.5-7<=tnet) then
- left()
- else
- right()
- end
- elseif (phase==4) then
- right()
- jump()
- elseif (phase==5) then
- move(200)
- elseif (phase==6) then
- if (posx()>300) then
- jump()
- end
- right()
- end
-
- if ((x1==0) or (imp==0)) and (phase==1) then
- move(est)
- end
--- debug(0)
--- debug(imp)
--- debug(est)
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp07.lua blobby-0.9c/data/scripts/hyp07.lua
--- blobby-0.8-dfsg/data/scripts/hyp07.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp07.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,409 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-
-
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function est(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-
-
-
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
--- if (x1>360) then x1=2*360-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=est(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2
-end
-
-
-
-
-
-
-function nothing()
---[[ if (math.abs(xe-xo)>0.1) then
- xo=xe
- for test=30,0,-3 do
- t1=test
- y1=yp(t1)
- t2=math.floor(tb(y,vy,y1+31.5+25+19,2))
- y2=yb(y,vy,t2)
-
- x2,y2,vx2,vy2,t2,_=est(x,y,vx,vy,y2+0.1)
- t2=t2
- if (vx2>2) then
- n=0
- elseif (vx2>0.5) then
- n=5
- else
- n=13
- end
- xi,yi=impact(x2,y2,vx2,vy2,pos(x2-n*4.5),y1,220,1,0)
-
- if (math.abs(posx()-(x2-n*4.5))/4.580) and (t2-1>t1) and (xi>400) then
- break
- end
- end
- end
-
- move(x2-n*4.5)
- if (t2<=t1) then
- jump()
- end
- --]]
-
-end
-
-
-
-
-
-
-function OnOpponentServe()
-xdo=0
-xe=0
-s=1
-touch=0
-xodo=0
-change=1
-stop=0
-t1,t2,y1,y2,x,y,vx,vy=0,0,0,0,0,0,0,0
-calc=0
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-xo=0
-c=0
-end
-
-function OnServe(ballready)
-xe=0
-s=1
-xodo=0
-xdo=0
-change=1
-touch=0
-stop=0
-t1,t2,y1,y2,x,y,vx,vy=0,0,0,0,0,0,0,0
-xo=0
-c=0
-if (math.abs(pos(posx())-posx())>1) then move(400) else
- if (math.abs(posx()-180)<2) then jump() else move(180) end
- end
-end
-
-function OnGame()
-
-if (change==0) and (touches()=te) then jump() end
- if (math.abs(posx()-360)/4.50.2) then
- xodo=xdo
- imp=0
- x1=0
- for t=27,0,-3 do
- t1f=t
- y1f=yp(t1f)
- t2f=math.floor(tb(y,vy,y1f+h,2))
- if (t2f>0) then
--- debug(0)
--- debug(t2f)
- y2f=yb(y,vy,t2f)
--- debug(y2f)
- vy2f=vy-g*t2f
- x2f,y2f,vx2f,vy2f,t2f,_=est(x,y,vx,vy,y2f-vy2f/10,2)
--- debug(t2f)
--- debug(y2f)
--- debug(vy)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- impt=0
- if (t1f<=t2f-2) then
- for x1f=pos(x2f)-25*4.5,pos(x2f)+4.5,4.5 do
- impf,_=impact(x2f,y2f,vx2f,vy2f,pos(x1f),y1f,220,1,0)
- if (impf>440) and (math.abs(posx()-x1f)/4.5400) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>400) then break end
- end
- end
- end
- t2=t2+1
- end
- t2=t2-1
- if (s==1) then
- move(x1)
- if (t2<=t1+0.1) then jump() end
- end
- else
- move(200)
- end
-end
-
-if (bally()<140) then s=0 end
-
--- debug(0)
--- debug(x2)
--- debug(ballx())
--- debug(y2)
--- debug(bally())
--- debug(vx2)
--- debug(bspeedx())
--- debug(vy2)
--- debug(bspeedy())
--- debug(xe)
--- debug(imp)
--- debug(t2)
--- debug(0)
-end
-
-
diff -Nru blobby-0.8-dfsg/data/scripts/hyp09.lua blobby-0.9c/data/scripts/hyp09.lua
--- blobby-0.8-dfsg/data/scripts/hyp09.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp09.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,503 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-p0=0
-p1=0.5
-p2=1
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=0.4
-esto=10
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)146) then
- return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
- else
- return 0
- end
-end
-
-function time(t)
-return 1/5*math.ceil(5*t)
-end
-
-
---
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-function lob()
-
- if (math.abs(est-esto)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto=est
- imp=0
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5700) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt>imp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>740) then break end
- end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- end
-
-end
-
-
-function attack()
-
- if (math.abs(est-esto)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
- h2=900
--- debug(-10)
- esto=est
- imp=0
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- xat=xaf
- yat=yaf
- vxat=vxaf
- vyat=vyaf
- break
- end
- end
- h2t=yb(yat,vyat,(400-xat)/vxat)
- if (h2t316+31.5) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2<316+31.5+10) and (h2>316+31.5) then break end
- end
- end
- t2=t2+1
- end
- t2=t2-1
-
- if (x1>0) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump()
- end
- else
- move(est)
- end
-end
-
-
-function netp()
-
- if (math.abs(est-esto)>0.2) then
- x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- t2g=0
--- debug(-10)
- esto=est
- imp=0
- x1=0
- for t=33,0,-3 do
- if (t==0) then j=0 else j=1 end
- t1f=t
- y1f=yp(t1f)
- t2g=math.floor(tb(y,vy,y1f+h,2))
- y2f=yb(y,vy,t2g)
- vy2f=vy-g*t2g
- x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.50) then
- impt=impf
- x1t=x1f
- y1t=y1f
- t1t=t1f
- x2t=x2f
- y2t=y2f
- t2t=t2f
- vx2t=vx2f
- vy2t=vy2f
- break
- end
- end
- if (impt>imp) and (impt<431.5) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>428) then break end
- end
- end
- t2=t2+1
- end
- t2=t2-1
- if (x1>0) and (est<368.5) then
- move(x1)
- if (t2<=t1+0.1) and (y1>146) then
- jump() end
- else
- move(est)
- end
-
-end
-
-
-function OnOpponentServe()
-y1p=144.5
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-valid=1
-
-
-end
-
-function OnServe(ballready)
-y1p=144.5
- est=700
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-180)<2) then
- jump()
- else
- move(180)
- end
- end
-valid=1
-end
-
-
-
-function OnGame()
-
-yp2=y1p
-y1p=oppy()
-vp=y1p-yp2
-
-
-esttold=estt
-netold=net
-toucho=touch
-touch=touches()
-if (touch400-31.5) then
- move (250)
- elseif (est<400-10) and (est>400-22) then
- move(200)
- elseif (est<400) and (est>400-10) then
- move(180)
- else
- move(230)
-end
-
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyp8.lua blobby-0.9c/data/scripts/hyp8.lua
--- blobby-0.8-dfsg/data/scripts/hyp8.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyp8.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,531 +0,0 @@
-g=0.28
-pg=0.88
-v0=14.5
-v_p=4.5
-pj=0.44
-r1=31.5
-p0=0
-p1=0.5
-p2=1
-h=31.5+19+25
-
-
-estt=0
-nettime=0
-touch=0
-est=0
-p=0.4
-esto=10
-
-
-function yb(y,vy,t)
-
- return y+(vy-g/10)*t-1/2*g*t^2
-
-end
-
-function move(x)
-
- if (posx()2.26) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
- end
-
-end
-
-function tb(y,vy,height,typ)
-local sgn=0
- if (typ==1)
- then
- sgn=-1
- else
- sgn=1
- end
- if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
- then return -1
- else
- return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function time(t)
-
- return 1/5*math.ceil(5*t)
-
-end
-
-function pos(x)
-
- local x1,x2
- x1=4.5*math.ceil((1/4.5)*x)
- x2=4.5*math.floor((1/4.5)*x)
- if (x1<0) or (x2<0) then return 0
- else
- if (math.abs(x1-x)
-
-function collide(x,y,vx,vy,objx,objy,r2)
-
- local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
- local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
- local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
- local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
- local t=-1
- if (t1150) then t=-1 end
-
- return t
-
-end
-
-
-
-function estimate(x,y,vx,vy,height,typ)
-
- local collision=1
- local tw,tn,ts=0,0,0
- local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
-
- while(collision==1) do
- ts=collide(x,y,vx,vy,400,316,7)
- if (vx>0)
- then
- tw=time((768.5-x)/vx)
- tn=time((361.5-x)/vx)
- else
- tw=time((31.5-x)/vx)
- tn=time((438.5-x)/vx)
- end
- local th=time(tb(y,vy,height,typ))
- local t=10000
-
- if ((ts>0) and (ts0) and (tn0) and (twt)
- then
- if (t==ts)
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vy=vy-g*t
- xr=x
- yr=y
- vxr=0
- vyr=0
- n=1
- collision=0
- elseif ((t==tn) or (t==tw))
- then
- tr=tr+t
- x=x+vx*t
- y=yb(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- tr=tr+th
- vxr=vx
- vyr=vy-g*th
- xr=x+vx*th
- yr=yb(y,vy,th)
- collision=0
- end
- end
- if (tr<0)
- then
- return -1,-1,-1,-1,-1,-1
- else
- return xr,yr,vxr,vyr,tr,n
- end
-end
-
-
-function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
-local x1,y1,vx1,vy1=0,0,0,0
-local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
-local xpos1=xpos
-local ypos1=ypos
-for t=0,20,0.2 do
-
- if (jump==1) then
- ypos1=yp(tp(ypos)+t)
- end
- x1=x+vx*t
- if (x1<31.5) then x1=2*31.5-x1 end
- if (x1>368.5) then x1=2*368.5-x1 end
- y1=yb(y,vy,t)
-
- if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
- local dx=x1-xpos1
- local dy=y1-(ypos1+19)
- local l=math.sqrt(dx^2+dy^2)
- vx1=dx/l
- vy1=dy/l
- x1=x1+vx1*3
- y1=y1+vy1*3
- vy1=vy1*13.125
- vx1=vx1*13.125
- x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
- break
- end
-end
-
-return x2,y2,x1,y1,vx1,vy1
-end
-
-
-function netp()
-
- if (math.abs(est-esto)>0.2) then
- esto=est
- imp=0
- x1=0
- for t=27,0,-3 do
- t1f=t
- y1f=yp(t1f)
- t2f=math.floor(tb(y,vy,y1f+h,2))
- if (t2f>0) then
- y2f=yb(y,vy,t2f)
- vy2f=vy-g*t2f
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/10,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- impt=0
- if (t1f<=t2f-2) and (math.abs(posx()-x2f)/4.5400) and (math.abs(posx()-x1f)/4.5imp) and (impt<431.5) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>415) then break end
- end
- end
- end
- t2=t2+1
- end
-
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) and (y1>150) then jump() end
-
-end
-
-
-
-function lob()
-
- if (math.abs(est-esto)>0.2) then
- esto=est
- imp=0
- x1=0
- for t=27,0,-3 do
- t1f=t
- y1f=yp(t1f)
- t2f=math.floor(tb(y,vy,y1f+h,2))
- if (t2f>0) then
- y2f=yb(y,vy,t2f)
- vy2f=vy-g*t2f
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/10,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- impt=0
- if (t1f<=t2f-2) then
- for x1f=pos(x2f)+4.5,pos(x2f)-15*4.5,-4.5 do
- impf,_=impact(x2f,y2f,vx2f,vy2f,pos(x1f),y1f,220,1,0)
- if (impf>700) and (math.abs(posx()-x1f)/4.5imp) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- end
- if (imp>750) then break end
- end
- end
- end
- t2=t2+1
- end
-
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) then jump() end
-
-end
-
-
-
-function attack()
-h2=900
- if (math.abs(est-esto)>0.2) then
- esto=est
- imp=0
- x1=0
- for t=27,0,-3 do
- t1f=t
- y1f=yp(t1f)
- t2f=math.floor(tb(y,vy,y1f+h,2))
- if (t2f>0) then
- y2f=yb(y,vy,t2f)
- vy2f=vy-g*t2f
- x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/10,2)
- t1f=math.floor(tp(y2f-h))
- y1f=yp(t1f)
- impt=0
- if (t1f<=t2f-2) then
- for x1f=pos(x2f)-25*4.5,pos(x2f)+4.5,4.5 do
- impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,pos(x1f),y1f,220,1,0)
- if (impf>400) and (math.abs(posx()-x1f)/4.5316+7+31.5) then
- imp=impt
- x1=x1t
- y1=y1t
- t1=t1t
- x2=x2t
- y2=y2t
- t2=t2t
- vx2=vx2t
- vy2=vy2t
- xa=xat
- ya=yat
- vxa=vxat
- vya=vyat
- end
- h2=yb(ya,vya,(400-xa)/vxa)
- if (h2<316+7+31.5+20) and (h2>316+7+20) then break end
- end
- end
- end
- t2=t2+1
- t2t=t2t+1
- end
-
-if (imp>400) then
- t2=t2-1
- move(x1)
- if (t2<=t1+0.1) then jump() end
- else
- t2t=t2t-1
- move(x1t)
- if (t2t<=t1t+0.1) then jump() end
-end
-
-end
-
-
-
-
-
-
-function OnOpponentServe()
-
-if (math.abs(pos(posx())-posx())>1) then move(400) else
-move(200)
-end
-valid=1
-end
-
-function OnServe(ballready)
- est=700
-
- if (math.abs(pos(posx())-posx())>1) then
- move(400)
- else
- if (math.abs(posx()-180)<2) then
- jump()
- else
- move(180)
- end
- end
-valid=1
-end
-
-
-
-function OnGame()
-
-esttold=estt
-netold=net
-
-
-x,y,vx,vy=ballx(),bally(),bspeedx(),bspeedy()
-estt,_,_,_,tnet,net=estimate(x,y,vx,vy,220)
-
-if (math.abs(esttold-estt)<0.1) then -- Schutz gegen Fehler bei der estimate-Funktion während Netz/Wandkollisionen
- est=estt
-end
-
--- phase1 -> Eigener Angriff
--- phase2 -> Gegner hat den Ball
--- phase3 -> Netzball blocken
--- phase4 -> Ball ist nicht mehr gültig
-
-if (bally()<144) then valid=0 end
-
-if (net==1) then -- klare Netzkollision
- if (yb(y,vy,(380-x)/vx)>370) then
- phase=3
- else
- phase=4
- end
- else
- if (netold==1) then -- Ball hat gerade das Netz getroffen
- nettime=8 -- Rest des Kollisionsskriptes abarbeiten
- phase=3
- elseif (netold==0) and (nettime>0) then
- nettime=nettime-1 -- Zeit runterzählen für den Rest des Kollisionsskriptes
- phase=3
- else -- Keine direkte Netzkollision und deren Nachwirkungen
- if (est>431.5) and (est<460) and (oppx()<700) then -- Ball kommt nahe ans Netz und der Gegner kann blocken
- phase=3
- elseif (est<400-31.5) then -- eigener Angriff
- phase=1
- else -- gegnerischer Angriff
- phase=2
- end
- end
-end
-
-if (valid==0) then phase=5 end -- Ãœberschreibt alle vorherigen Berechnungen
-
-toucho=touch
-touch=touches()
-
-if (touch=tnet) then jump() end
- if (math.abs(posx()-360)/4.5ball_radius) and (x<361.5) then impact=x end
-if (x361.5)
- then
- if (ballx()<361.5)
- then
- if(ypos(timetox(361.5))3) then moveto(x-40) end
- if (timetoy(333)<10) then jump() end
- else
- x=estimate(333)
- if (math.abs((x-20)-posx())>3) then moveto(x-20) end
- if (timetoy(333)<10) then jump() end
- end
-end
-
-function ueberspielen()
-
-if (posx()<280)
- then
- x=estimate(437)
- if (math.abs((x-30)-posx())>3) then moveto(x-30) end
- if (timetoy(437)<24) then jump() end
- else
- x=estimate(437)
- if (math.abs((x-15)-posx())>3) then moveto(x-15) end
- if (timetoy(437)<24) then jump() end
- end
-end
-
-
-function schmettern()
- x=estimate(437)
- t=timetoy(437)
- if (t>24) and (math.abs((x-90)-posx())>3) then moveto(x-90) end
- if (t<24) then jump() end
- if (t<5) then right() end
-end
-
--- [Hauptprogramm]
-
-function OnServe(ballready)
-
-if (new==nil) then new=1 end
-if (new==1) then
- j=math.random()
- p=math.random(30,55)
- new=2
- end
-
-if (j>0.5)
- then
- if (math.abs(posx()-200)>3) then moveto(200) else jump() end
- else
- if (math.abs(posx()-(200-p))>3) then moveto(200-p) else jump() end
- end
-end
-
-function OnOpponentServe()
-moveto(200)
-end
-
-function OnGame()
-new=1
-x=estimate(220.5)
-
-if (x<420)
- then
- if (touches()==0)
- then
- moveto(x)
- newp=1
- end
- if (touches()==1)
- then
- if (newp==1)
- then
- p1=math.random()
- newp=2
- end
- if (oppx()>300)
- then
- if(p1>0.4)
- then
- ueberspielen()
- else
- schmettern()
- end
- else
- if(p1>0.6)
- then
- ueberspielen()
- else
- schmettern()
- end
- end
- end
- if (touches()==2)
- then
- retten()
- end
- else
- moveto(200)
-end
-
-end
diff -Nru blobby-0.8-dfsg/data/scripts/hyperion6.lua blobby-0.9c/data/scripts/hyperion6.lua
--- blobby-0.8-dfsg/data/scripts/hyperion6.lua 2009-12-26 03:54:55.000000000 +0000
+++ blobby-0.9c/data/scripts/hyperion6.lua 1970-01-01 00:00:00.000000000 +0000
@@ -1,331 +0,0 @@
--- Dies ist der BlobbyVolley2 Bot "Hyperion"
--- geschrieben und getestet wurde der Bot mit der SVN-Version
--- Die Version Blobby0.6 hatte verschiedene Bugs, unter anderem bei der oppx() und der estimate() Funktion
---
--- Hyperion ver. 0.6
-
--- - Einige Konstanten die die physikalische Welt in BlobbyVolley2 beschreiben
-
-g=0.28
-g_p=0.88
-v0=14.5
-v_p=4.5
-jb_p=0.44
-r1=31.5
-
---
-
-
--- - kleine unkomplizierte Hilfsfunktionen die ich benötige
-
-function max(a,b)
- if (a>b) then
- return a
- else
- return b
- end
-end
-
-function min(a,b)
- if (a2.6) then right()
- elseif (posx()>x) and (math.abs(posx()-x)>2.6) then left()
- end
-end
-
-function t1_y(y,vy,height)
--- Eingabe: Position und Geschwindigkeit des Balles, Höhe die der Ball erreichen soll
--- Ausgabe: Ausgabe der Zeit bis zur Höhe height
- if (vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0) then
- return -1
- else
- return -1/10+vy/g-math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function t2_y(y,vy,height)
--- Eingabe: Position und Geschwindigkeit des Balles, Höhe die der Ball erreichen soll
--- Ausgabe: Ausgabe der Zeit bis zur Höhe height
- if (vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0) then
- return -1
- else
- return -1/10+vy/g+math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
- end
-end
-
-function y_p(y,t)
--- Eingabe: Position und Geschwindigkeit des Players, Zeitpunkt an dem man die y-Koordinate des Players wissen möchte
--- Ausgabe: Höhe des Players nach der Zeit t
- return y+(v0+jb_p/2+g_p/10)*t-1/2*(g_p-jb_p)*t^2
-end
-
-tp_peak=(14.5+0.44/2+0.88/10)/(0.88-0.44)
-yp_max=y_p(144.5,tp_peak)
-
-function time(t)
- return 1/5*math.ceil(5*t)
-end
-
-function t2_yp(y,vy,height)
-y=144.5
- return (v0+jb_p/2+g_p/10)/(g_p-jb_p)+math.sqrt((v0+jb_p/2+g_p/10)^2/(g_p-jb_p)^2+2*y/(g_p-jb_p))
-end
---
-
-
--- - Komplizierte Funktionen die die Game-Engine nachbilden und so Einschlagpunkte, etc. berechnen.
-
-function collide(x,y,vx,vy,x2,y2,r2)
--- Berechnet, ob und nach welcher Zeit der Ball im Zustand (x,y,vx,vy) mit der Kugel an (x2,y2) mit Radius r2 kollidiert
-local leftb=x2-r2-r1
-local rightb=x2+r2+r1
-local lowerb=y2-r2-r1
-local upperb=y2+r2+r1
-
-local txlb=time((leftb-x)/vx) -- Zeit zur linken Begrenzung
-local txrb=time((rightb-x)/vx) -- Zeit zur rechten Begrenzung
-local tyla=time(t1_y(y,vy,lowerb)) --untere Grenze steigend (ascending)
-local tyld=time(t2_y(y,vy,lowerb)) --untere Grenze fallend (descending)
-local tyua=time(t1_y(y,vy,upperb)) --obere Grenze steigend (ascending)
-local tyud=time(t2_y(y,vy,upperb)) --obere Grenze fallend (descending)
-local tp=time(vy/g-1/10) -- Zeit bis die Ballkurve auf dem Höhepunkt ist (kann in der Vergangenheit liegen)
-
-local t1,t2,t_coll=0,0,-1
-
-if (vx>0) then
- t1=max(max(txlb,tyla),0)
- t2=min(txrb,tyld)
- else
- t1=max(max(txrb,tyla),0)
- t2=min(txlb,tyld)
-end
-
-if (t10)
- then
- t_wall=time((768.5-x)/vx)
- t_net=time((361.5-x)/vx)
- else
- t_wall=time((31.5-x)/vx)
- t_net=time((438.5-x)/vx)
- end
- local t=10000
- if ((t_netsphere>0) and (t_netsphere0) and (t_net0) and (t_wallt) then
- if (t==t_netsphere) then
- t_ret=t_ret+t
- vx_ret=0
- vy_ret=0
- x_ret=400
- y_ret=316
- collision=0
- end
- if (t==t_net) or (t==t_wall) then
- t_ret=t_ret+t
- x=x+vx*t
- y=y_b(y,vy,t)
- vx=-vx
- vy=vy-g*t
- collision=1
- end
- else
- t_ret=t_ret+t_height
- vx_ret=vx
- vy_ret=vy-g*t_height
- x_ret=x+vx*t_height
- y_ret=y_b(y,vy,t_height)
- collision=0
- end
-
-
-end -- while Ende
-return x_ret,y_ret,vx_ret,vy_ret,t_ret
-end
-
-
-
-
-function impact(x,y,vx,vy,xpos,ypos)
--- schätzt den Einschlagsort des Balles wenn er mit dem Blobby an Position xpos kollidiert ist und dann losfliegt.
--- Funktioniert mit minimalem Fehler
-
-r1=31.5
-r2=25
---local x,y,vx,vy,t1=estimate_t(x,y,vx,vy,(ypos+19+25)+31.5) Die Wete haben schon nahe genug zu sein
-local t=time(collide(x,y,vx,vy,xpos,ypos+19,25))
-if(t>0) then
- x=x+vx*t
- y=y_b(y,vy,t)
- dx=x-xpos
- dy=y-(ypos+19)
- l=math.sqrt(dx^2+dy^2)
- vx=dx/l
- vy=dy/l
- x=x+vx*3
- y=y+vy*3
- vy=vy*13.125
- vx=vx*13.125
--- x=x+vx/5
--- y=y+vy/5
- x,y,vx,vy,t=estimate_t(x,y,vx,vy,220.5)
- return x,y,vx,vy,t
-else
- return -1,-1,-1,-1,-1
-end
-
-end -- Funktionsende
-
-function xtoplayto(target,height)
-
-local x,y,vx,vy,t=estimate_t(ballx(),bally(),bspeedx(),bspeedy(),height+(25+19)+31.5+5)
-local xpos=estimate_t(ballx(),bally(),bspeedx(),bspeedy(),height+(25+19)+31.5)
-local sgn=0
-if (x
-
--- - High-Level Funktionen die bestimmen wo man s
-
-function stellen(tox,height)
---t2_yp
---t2_y
-if (tox<390) then
-
-elseif (390410) then
-
-end
-
-move(xplayto(tox,posy()))
-end
-
-
-function schmettern()
-
-end
-
-function ueberspielen()
-
-end
-
-
-
---
-
--- - Die Hauptfunktionen des Spiels
-function OnOpponentServe()
-end
-
-function OnServe(ballready)
-if (math.abs(math.floor(posx()/4.5)-posx()/4.5)<0.4)
- then
- if(math.abs(180-posx())<2) then jump() else moveto(180) end
- else
- moveto(400)
- end
- old=5
-end
-
-function OnGame()
-
-
-
-
-x1=ballx()
-y1=bally()
-vx1=bspeedx()
-vy1=bspeedy()
-x2=oppx()
-y2=163.5
-r2=25
-
-xe=estimate_t(x1,y1,vx1,vy1,220.5)
---debug(xe)
--- debug(x2)
-xr,yr,vxr,vyr,tr=impact(x1,y1,vx1,vy1,x2,144.5)
-
-
--- debug(xr)
--- debug(0)
-
-
-if (xe<400) then
-
- if (touches()==0) then
- test=xtoplayto(320,144.5)
- move(test)
- else
- test=xtoplayto(400,144.5)
- move(test-3.1)
- end
-
-
-elseif (xe==400) then
- move(180)
-else
- move(180)
-end
-old=touches()
-end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/axji.lua blobby-0.9c/data/scripts/old/axji.lua
--- blobby-0.8-dfsg/data/scripts/old/axji.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/axji.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,43 @@
+function OnOpponentServe()
+ moveto(120)
+end
+
+wait = 0
+serv = true
+aggroservice = 64 -- versetzung zum Ball je gr�sser desto tiefer fliegt der Service 0-64
+
+
+function OnServe(ballready)
+ moveto(ballx()) -- unter den Ball stellen
+ wait = wait + 1 -- waittimer anwerfen
+ serv = true -- servflag setzen
+ if ballready then -- ball bereit
+ if wait > 90 then -- 90 einheiten gewartet
+ jump() -- Springen also eigentlich den Ball aufwerfen
+ wait = 0 -- Wait timer zur�cksetzen
+ end
+ end
+end
+
+
+function OnGame()
+
+ -- bestimmen wenn der service vertig ist
+ if (ballx() > 400) then -- sobald der ball auf der anderen seite ist ;)
+ serv = false -- serv flag zur�cksetzen
+ end
+
+ if serv then -- sprunganschlag code
+ moveto(estimate()-aggroservice) -- Bewegt sich unter den Ball und schl�gt mit einer gewissen aggressivit�t an bei 64 knapp �bers Netz
+ -- warscheinlich w�re ein Match.random() angebracht
+ if bally() < 550 then -- wenn der Ball wieder runter kommt
+ jump()
+ end
+ else
+ if (estimate() < 0) then -- Falls der Ball von Hinten kommt
+ moveto(math.abs(estimate())-100) -- funktioniert noch nicht richtig
+ else
+ moveto(estimate()-20) --sonst immer leicht hinter dem Ball bleiben
+ end
+ end
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/bert.ai blobby-0.9c/data/scripts/old/bert.ai
--- blobby-0.8-dfsg/data/scripts/old/bert.ai 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/bert.ai 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,99 @@
+// Note: This still needs to be ported to lua
+
+var bsizx,bsizy,cpud1;
+
+function main() {
+ var i,alti,j,factor,direct,
+ touchcnt,x,y,delay,bx,by,vbx,vby;
+
+ bsizx=64;
+ bsizy=64;
+
+ j=side();
+ factor=j*2-1;
+
+ delay=0;
+ while (1) {
+ stop();
+ stopjump();
+
+ bx=ballx();
+ by=bally();
+ vbx=bspeedx();
+ vby=bspeedy();
+ touchcnt=touches();
+ x=posx();
+ y=posy();
+
+ direct=1;
+
+ i=estimate(200);
+
+ if (i>-9000) {
+ alti=i;
+
+ if (j==1) {
+ if (i>800-bsizx /2) {
+ i=1600-i-bsizx;direct=0;
+ }
+ if (i<405+bsizx /2) {
+ i=810+bsizx-i;direct=0;
+ }
+ if (i<500) {
+ if (touchcnt<2) {
+ i=i-bsizx /2;
+ }
+ }
+ } else {
+ if (i<0+bsizx /2) {
+ i=-i+bsizx;
+ direct=0;
+ }
+ if (i>395-bsizx /2) {
+ i=790-bsizx-i;
+ direct=0;
+ }
+ if (i>300) {
+ if (touchcnt<2) {
+ i=i+bsizx /2;
+ }
+ }
+ }
+
+ i=i+(bsizx / 3)*factor;
+
+ //if (i>=x+7) right();
+ //if (i<=x-7) left();
+ moveto(i);
+ }
+ stopjump();
+ if(vby<=10)
+ if (factor*(x-bx)<21)
+ if (factor*(bx-x)<7)
+ if (abs(bx-x)<120)
+ if (abs(vby)<65)
+ if (by>200)
+ if (by-y>70)
+ if ((by<400) || (vby==0))
+ if (abs(vbx)<20)
+ if (!balldown()) jump();
+ if (random(300)==0) jump();
+ if (i>-9000) {
+ if ((abs(i-x)>75) && (abs(bx-x)<65) && (vby<0) ) {
+ jump();
+ }
+ }
+ if (touching()) {
+ stop();
+ }
+
+ if (!launched()) {
+ delay+=1;
+ stopjump();
+ if (delay>=30) jump();
+ }
+
+ wait();
+ } //while
+} //function
+
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_04c.lua blobby-0.9c/data/scripts/old/com_04c.lua
--- blobby-0.8-dfsg/data/scripts/old/com_04c.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_04c.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,140 @@
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+angriffsstaerke = 50 -- versetzung zum Ball je grösser desto tiefer fliegt der Service 0-64( 64 ist ca CONST_BALLRADIUS + CONST_BLOBBY_BAUCH_RADIUS)
+angriffsstaerkeNeuBerechnen =false -- neuberechnung von angriffsstaerke => Variable Angriffe
+
+-- Konstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 157
+
+-- Linke Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+
+
+
+function OnOpponentServe()
+ moveto(120)
+ generatenaechsterBallSchmettern() -- der gegner soll den smash ja nicht vorhersagen können
+end
+
+function OnServe(ballready)
+ moveto(ballx())
+ wait = wait + 1
+ naechsterBallSchmettern = true
+ if ballready then
+ if wait > 90 then
+ jump()
+ wait = 0
+ end
+ end
+end
+
+function OnGame()
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG)
+
+ if naechsterBallSchmettern then
+ sprungattacke(angriffsstaerke)
+ return
+ end
+
+ -- nun kümmern wir uns um die Bälle die ans netz prallen
+ if ((target > CONST_NETZ_LINKS) and (ballx() < CONST_NETZ_LINKS)) then
+ netzappraller(target)
+ return
+ end
+
+ moveto(target)
+
+end
+
+
+function netzappraller(p_target)
+ moveto(CONST_NETZ_LINKS - (p_target - CONST_NETZ_LINKS) + math.abs(bspeedx()*bspeedx()*1.4))
+end
+
+
+
+function sprungattacke(p_angriffsstaerke)
+ moveto(ballx()-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+ if bally() < 580 then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ angriffsstaerkeNeuBerechnen = true -- da würde es sicher auch einen Inteligenteren Test geben.
+ return
+ end
+
+ if (angriffsstaerkeNeuBerechnen == true) then
+ generatenaechsterBallSchmettern()
+ end
+
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ if (bally() > 500) then -- erst wenn der Ball hoeher als 500 fliegt sonst gibt es keinen schönen Schmetterball.
+ naechsterBallSchmettern = true
+ end
+ return
+ end
+
+ if ((ballx() < (400-CONST_BALL_RADIUS)) and (bally() < 200) and (math.abs(bspeedx()) < 40)) then -- der ball könnte noch drüber fliegen ** noch optimieren
+ naechsterBallSchmettern = true
+ return
+ end
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerkeNeuBerechnen = false;
+ angriffsstaerke = math.random(15,64) -- variiert mit der Angriffsstärke also auch mit den Anschlägen
+end
+
+function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der Hinteren Ebene
+ resultX = math.abs(CONST_BALL_RADIUS - resultX) + CONST_BALL_RADIUS
+ end
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = CONST_FELD_LAENGE - (resultX - CONST_FELD_LAENGE)
+ end
+ -- test
+-- if(resultX > CONST_MITTE - CONST_BALL_RADIUS)then
+-- resultX = -resultX
+-- end
+
+ return resultX
+end
+
+function cleanMoveTo(position) -- eine nette Spielerei ;)
+ if (posx() ~= position) then
+ moveto(position)
+ end
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_04d.lua blobby-0.9c/data/scripts/old/com_04d.lua
--- blobby-0.8-dfsg/data/scripts/old/com_04d.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_04d.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,139 @@
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+angriffsstaerke = 50 -- versetzung zum Ball je grösser desto tiefer fliegt der Service 0-64( 64 ist ca CONST_BALLRADIUS + CONST_BLOBBY_BAUCH_RADIUS)
+angriffsstaerkeNeuBerechnen =false -- neuberechnung von angriffsstaerke => Variable Angriffe
+
+-- Konstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 157
+
+-- Linke Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+
+
+
+function OnOpponentServe()
+ moveto(120)
+ generatenaechsterBallSchmettern() -- der gegner soll den smash ja nicht vorhersagen können
+end
+
+function OnServe(ballready)
+ moveto(ballx())
+ wait = wait + 1
+ naechsterBallSchmettern = true
+ if ballready then
+ if wait > 90 then
+ jump()
+ wait = 0
+ end
+ end
+end
+
+function OnGame()
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG)
+
+ if target > 440 then
+ moveto(120)
+ else
+ if naechsterBallSchmettern then
+ sprungattacke(angriffsstaerke)
+ return
+ end
+
+ -- nun kümmern wir uns um die Bälle die ans netz prallen
+ if ((target > CONST_NETZ_LINKS) and (ballx() < CONST_NETZ_LINKS)) then
+ netzappraller(target)
+ return
+ end
+
+ moveto(target)
+ end
+end
+
+
+function netzappraller(p_target)
+ moveto(CONST_NETZ_LINKS - (p_target - CONST_NETZ_LINKS) + math.abs(bspeedx()*bspeedx()*1.4))
+end
+
+
+
+function sprungattacke(p_angriffsstaerke)
+ moveto(ballx()-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+ if bally() < 580 then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ angriffsstaerkeNeuBerechnen = true -- da würde es sicher auch einen Inteligenteren Test geben.
+ return
+ end
+
+ if (angriffsstaerkeNeuBerechnen == true) then
+ generatenaechsterBallSchmettern()
+ end
+
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ if (bally() > 500) then -- erst wenn der Ball hoeher als 500 fliegt sonst gibt es keinen schönen Schmetterball.
+ naechsterBallSchmettern = true
+ end
+ return
+ end
+
+ if ((ballx() < (400-CONST_BALL_RADIUS)) and (bally() < 200) and (math.abs(bspeedx()) < 40)) then -- der ball könnte noch drüber fliegen ** noch optimieren
+ naechsterBallSchmettern = true
+ return
+ end
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerkeNeuBerechnen = false;
+ angriffsstaerke = math.random(20,55) -- variiert mit der Angriffsstärke also auch mit den Anschlägen
+end
+
+function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der Hinteren Ebene
+ resultX = math.abs(CONST_BALL_RADIUS - resultX) + CONST_BALL_RADIUS
+ end
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = CONST_FELD_LAENGE - (resultX - CONST_FELD_LAENGE)
+ end
+
+ return resultX
+end
+
+function cleanMoveTo(position) -- eine nette Spielerei ;)
+ if (posx() ~= position) then
+ moveto(position)
+ end
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10B2ex.lua blobby-0.9c/data/scripts/old/com_10B2ex.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10B2ex.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10B2ex.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,146 @@
+-- Com 1.0 extrem Beta 2 Schmetter-Mod
+-- by Oreon, Axji & Enormator
+-- Name: com_10eB2_Schmettermod
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Ber�hrungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_ANGRIFFSGRUNDWERT_MIN = 30
+CONST_ANGRIFFSGRUNDWERT_MAX = 55
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
+ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
+
+-- sonstige Einstellungen
+servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ moveto(130)
+end
+
+function OnServe(ballready)
+ servex=ballx()+servexVersetzung
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+ moveto(servex)
+ if ballready and (servex-2 < posx()) and (posx() < servex+2) then
+ jump()
+ end
+end
+
+function OnGame()
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
+ targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ moveto(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
+ sprungattacke(angriffsstaerke)
+ else
+ if (targetJump < CONST_MITTE / 2) then
+ sprungattacke(-35) --an Rueckwand spielen
+ else
+ sprungattacke(0) --weiterleiten
+ end
+ end
+ return
+ end
+
+ moveto(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
+ p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
+
+ moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die St�rke des gew�nschten schlages angegeben
+
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ naechsterBallSchmettern = true
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
+end
+
+function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding n�tigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()/math.abs(bspeedx())
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if (Frage == 1) then
+ return resultX
+ end
+ if (Frage == 2) then
+ return estimbspeedx
+ end
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10eB1.lua blobby-0.9c/data/scripts/old/com_10eB1.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10eB1.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10eB1.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,162 @@
+-- Com 1.0 human Beta 1
+-- by Oreon, Axji & Enormator
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_ANGRIFFSGRUNDWERT_MIN = 30
+CONST_ANGRIFFSGRUNDWERT_MAX = 55
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
+
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ moveto(130)
+end
+
+function OnServe(ballready)
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+ moveto(ballx())
+ if ballready and (ballx()-3 < posx()) and (posx() < ballx()+3) then
+ jump()
+ end
+end
+
+function OnGame()
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
+ targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ moveto(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ if ((math.abs(bspeedx()) < 4) or (bspeedx() < 0)) then
+ sprungattacke(angriffsstaerke)
+ else
+ if (targetJump < CONST_MITTE / 2) then
+ sprungattacke(-30) --an Rueckwand spielen
+ else
+ sprungattacke(0) --weiterleiten
+ end
+ end
+ return
+ end
+
+ moveto(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ if (bally() < 550) and (math.abs(ballx() - posx()) > 200) then -- Falls nicht schmetterbar
+ moveto (target - 25) --Dann Notloesung versuchen
+ return
+ end
+
+ moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
+ naechsterBallSchmettern = true
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ naechsterBallSchmettern = true
+ return
+ end
+ naechsterBallSchmettern = false
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
+end
+
+function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()/math.abs(bspeedx())
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if (Frage == 1) then
+ return resultX
+ end
+ if (Frage == 2) then
+ return estimbspeedx
+ end
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10eB2.lua blobby-0.9c/data/scripts/old/com_10eB2.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10eB2.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10eB2.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,164 @@
+-- Com 1.0 extrem Beta 2
+-- by Oreon, Axji & Enormator
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_ANGRIFFSGRUNDWERT_MIN = 30
+CONST_ANGRIFFSGRUNDWERT_MAX = 55
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
+ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
+
+-- sonstige Einstellungen
+servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ moveto(130)
+end
+
+function OnServe(ballready)
+ servex=ballx()+servexVersetzung
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+ moveto(servex)
+ if ballready and (servex-2 < posx()) and (posx() < servex+2) then
+ jump()
+ end
+end
+
+function OnGame()
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
+ targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ moveto(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
+ sprungattacke(angriffsstaerke)
+ else
+ if (targetJump < CONST_MITTE / 2) then
+ sprungattacke(-35) --an Rueckwand spielen
+ else
+ sprungattacke(0) --weiterleiten
+ end
+ end
+ return
+ end
+
+ moveto(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
+ p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
+
+ moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
+ naechsterBallSchmettern = true
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ naechsterBallSchmettern = true
+ return
+ end
+ naechsterBallSchmettern = false
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
+end
+
+function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()/math.abs(bspeedx())
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if (Frage == 1) then
+ return resultX
+ end
+ if (Frage == 2) then
+ return estimbspeedx
+ end
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10hB1.lua blobby-0.9c/data/scripts/old/com_10hB1.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10hB1.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10hB1.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,210 @@
+-- Com 1.0 human Beta 1
+-- by Oreon, Axji & Enormator
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+quatschFlag = 0
+mood = math.random(1,3)+3 --Startlaune zwischen 4 und 6
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_MIN_MOOD = 0
+CONST_MAX_MOOD = 10
+
+CONST_ANGRIFFSGRUNDWERT_MIN = 35
+CONST_ANGRIFFSGRUNDWERT_MAX = 60
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN-mood
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX-mood
+
+CONST_GEDULD = 0.01 --weniger ist mehr Geduld
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ BallLinks=false
+ if (LauneBerechnet == false) then
+ mood=mood-1 --schlechter gelaunt
+ LauneBerechnen () --anwenden auf Angriffswert
+ LauneBerechnet = true
+ end
+ moveto(130)
+end
+
+function OnServe(ballready)
+ BallLinks=true
+ if (LauneBerechnet == false) then
+ mood=mood+1 --besser gelaunt
+ LauneBerechnen () --anwenden auf Angriffswert
+ LauneBerechnet = true
+ end
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+
+ if (quatschFlag == 0) then
+ quatschFlag = math.random(5,10)
+ end
+ if (mood > quatschFlag) then --je besser gelaunt, desto wahrscheinlicher Quatsch
+ quatschFlag = enormerQuatsch()
+ else
+ moveto(ballx())
+ if ballready and (ballx()-3 < posx()) and (posx() < ballx()+3) then
+ jump()
+ end
+ end
+end
+
+function OnGame()
+ debug (mood)
+ if (BallLinks == (ballx() > CONST_MITTE)) then --Bei jedem Ballwechsel
+ mood = mood - CONST_GEDULD --um CONST_GEDULD schlechter gelaunt sein
+ LauneBerechnen ()
+ BallLinks = (ballx() < CONST_MITTE)
+ end
+ LauneBerechnet=false --Flag setzen für Berechnung beim Aufschlag
+ quatschFlag=0 --Flag setzen für Berechnung beim Aufschlag
+ los=false --Flag setzen für Berechnung beim Aufschlag
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG) --X Ziel in Blobbyhoehe
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP) --X Ziel in Schmetterhoehe
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ moveto(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ sprungattacke(angriffsstaerke)
+ return
+ end
+
+ moveto(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ if (bally() < 550) and (math.abs(ballx() - posx()) > 200) then -- Falls nicht schmetterbar
+ moveto (target - 25) --Dann Notloesung versuchen
+ return
+ end
+ if ((bally() < 600) and (bspeedy() < 0)) or (math.abs(bspeedx()) > 2) or (math.abs(targetJump-posx()) > 40) then -- erst im letzten Moment bewegen -> unvorhersehbar
+ moveto(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+ end
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 1) and (math.abs(bspeedx()) < 2) and (mood < CONST_MAX_MOOD) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt und er nicht zu gut gelaunt ist
+ naechsterBallSchmettern = true
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ naechsterBallSchmettern = true
+ return
+ end
+ naechsterBallSchmettern = false
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE) -- variiert mit der Laune
+end
+
+function estimImpact(bx,by,vbx,vby,destY) -- erlaubt ein besseres Estimate mit ein paar umbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+ return resultX
+end
+
+function enormerQuatsch()
+ if los then
+ left()
+ jump()
+ else
+ right()
+ end
+ if (posx() > 350) then
+ los=true
+ end
+ if (posx() < 60) then
+ los=false
+ return CONST_MAX_MOOD + 1 -- MaxLaune+1 kann nie erreicht werden -> stop
+ end
+ return quatschFlag -- Wenn nicht fertig, dann nix aendern
+end
+
+function LauneBerechnen ()
+ if (mood < CONST_MIN_MOOD) then
+ mood = 0
+ end
+ if (mood > CONST_MAX_MOOD) then
+ mood = 10
+ end
+ MIN_ANGRIFFSSTAERKE=CONST_ANGRIFFSGRUNDWERT_MIN-mood
+ MAX_ANGRIFFSSTAERKE=CONST_ANGRIFFSGRUNDWERT_MAX-mood
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10.lua blobby-0.9c/data/scripts/old/com_10.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,178 @@
+-- Combot 1.0
+-- by Oreon, Axji & Enormator
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_ANGRIFFSGRUNDWERT_MIN = 30
+CONST_ANGRIFFSGRUNDWERT_MAX = 55
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
+ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
+
+-- sonstige Einstellungen
+servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ movetoX(130)
+end
+
+function OnServe(ballready)
+ servex=ballx()+servexVersetzung
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+ if ballready and movetoX(servex) then
+ jump()
+ end
+end
+
+function OnGame()
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
+ targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ movetoX(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
+ sprungattacke(angriffsstaerke)
+ else
+ if (targetJump < CONST_MITTE / 2) then
+ sprungattacke(-35) --an Rueckwand spielen
+ else
+ sprungattacke(0) --weiterleiten
+ end
+ end
+ return
+ end
+
+ movetoX(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
+ p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
+
+ movetoX(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ if (touches() == 3) then -- falls der Bot einen Anschlag Findet der Direckt punktet so wird der Wer nicht neu berechnet da er dann nciht auf 3 Berührungen kommt
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (ballx() > CONST_MITTE) then -- wenn der ball auf der Anderen Seite ist soll der bot nicht naechsterBallSchmettern sein
+ naechsterBallSchmettern = false
+ return
+ end
+
+ if (touches() == 1) and (math.abs(bspeedx()) < 2) then -- schon nach der 1ten Beruehrung angreifen wenn der Ball gut kommt
+ naechsterBallSchmettern = true
+ return
+ end
+
+ if (touches() == 2) then -- nach der 2. Berührung angreifen
+ naechsterBallSchmettern = true
+ return
+ end
+ naechsterBallSchmettern = false
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
+end
+
+function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()/math.abs(bspeedx())
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if (Frage == 1) then
+ return resultX
+ end
+ if (Frage == 2) then
+ return estimbspeedx
+ end
+end
+
+function movetoX (x)
+ if (math.abs(posx()-x)>math.abs(posx()+4.5-x)) then
+ right()
+ done=false
+ else
+ if (math.abs(posx()-x)>math.abs(posx()-4.5-x)) then
+ left()
+ done=false
+ else
+ done=true
+ end
+ end
+ return done
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/com_10Schm.lua blobby-0.9c/data/scripts/old/com_10Schm.lua
--- blobby-0.8-dfsg/data/scripts/old/com_10Schm.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/com_10Schm.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,160 @@
+-- Combot 1.0 - Schmettermod
+-- by Oreon, Axji & Enormator
+
+-- Flags und runners
+wait = 0
+naechsterBallSchmettern = true -- evtl Variablennamen wechseln
+
+
+-- Weltkonstanten
+
+CONST_FELD_LAENGE = 800
+CONST_BALL_RADIUS = 31.5
+CONST_GROUND_PLANE = 100
+
+CONST_BALL_GRAVITY = 0.28
+
+CONST_MITTE = CONST_FELD_LAENGE/2
+CONST_RECHTER_RAND = CONST_FELD_LAENGE - CONST_BALL_RADIUS
+
+CONST_BLOBBY_HOEHE = 89
+CONST_BLOBBY_KOPF_RADIUS = 25
+CONST_BLOBBY_BAUCH_RADIUS = 33
+CONST_BLOBBY_KOPF_BERUEHRUNG = CONST_GROUND_PLANE + CONST_BLOBBY_HOEHE + CONST_BALL_RADIUS
+CONST_BLOBBY_MAXJUMP = 393.625
+
+CONST_NETZ_RADIUS = 7
+CONST_NETZ_HOEHE = 323
+
+-- Berührungsebene des Balls falls er ans Netz kommt
+CONST_NETZ_LINKS = CONST_MITTE - CONST_NETZ_RADIUS - CONST_BALL_RADIUS
+CONST_NETZ_RECHTS = CONST_MITTE + CONST_NETZ_RADIUS + CONST_BALL_RADIUS
+
+-- Charakter
+CONST_ANGRIFFSGRUNDWERT_MIN = 30
+CONST_ANGRIFFSGRUNDWERT_MAX = 55
+MIN_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MIN
+MAX_ANGRIFFSSTAERKE = CONST_ANGRIFFSGRUNDWERT_MAX
+ANGRIFFSEINSCHRAENKUNG_HINTEN = 10
+
+-- sonstige Einstellungen
+servexVersetzung=-7 --Wert ist so gewaehlt, dass der Ball nah ans Netz fliegt, der Gegner ihn aber grade nicht erreichen kann
+
+-- ***ANFANG***
+
+function OnOpponentServe()
+ movetoX(130)
+end
+
+function OnServe(ballready)
+ servex=ballx()+servexVersetzung
+ naechsterBallSchmettern = true
+ generatenaechsterBallSchmettern()
+ if ballready and movetoX(servex) then
+ jump()
+ end
+end
+
+function OnGame()
+ target = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,1) --X Ziel in Blobbyhoehe
+ targets = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_KOPF_BERUEHRUNG,2) --X Richtung (-1 oder 1) bei Einschlag
+ targetNetz = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_NETZ_HOEHE,1) --X Ziel in Netzhoehe (Netzrollerberechnung)
+ targetJump = estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,1) --X Ziel in Schmetterhoehe
+ naechsterBallSchmetternFlagTesten() -- schaut ob der bot angreifen soll oder nicht
+
+ if (ballx() > CONST_NETZ_RECHTS) then --Wenn Ball auf rechter Spielfeldseite dann
+ generatenaechsterBallSchmettern() --Angriffsstaerke neu berechnen
+ end
+
+ if (target > CONST_MITTE) and (ballx() > CONST_NETZ_RECHTS) then --Wenn der Ball mich nix angeht
+ movetoX(135) --Dann auf Standartposition warten
+ else
+ if (targetNetz > CONST_NETZ_LINKS - 10) then --Bei Netzroller einfach schmettern
+ naechsterBallSchmettern = true
+ end
+
+ if naechsterBallSchmettern then
+ if ((math.abs(bspeedx()) < 4) or (estimImpact(ballx(),bally(),bspeedx(),bspeedy(),CONST_BLOBBY_MAXJUMP,2) < 0)) then
+ sprungattacke(angriffsstaerke)
+ else
+ if (targetJump < CONST_MITTE / 2) then
+ sprungattacke(-35) --an Rueckwand spielen
+ else
+ sprungattacke(0) --weiterleiten
+ end
+ end
+ return
+ end
+
+ movetoX(target)
+ end
+end
+
+
+function sprungattacke(p_angriffsstaerke)
+ p_angriffsstaerke=math.max(p_angriffsstaerke, MIN_ANGRIFFSSTAERKE + ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so hoch spielen (kommt nicht auf die andere Seite)
+ p_angriffsstaerke=math.min(p_angriffsstaerke, MAX_ANGRIFFSSTAERKE - ANGRIFFSEINSCHRAENKUNG_HINTEN * (targetJump / CONST_NETZ_LINKS)) --Weiter hinten nicht ganz so tief spielen (kommt ans Netz)
+
+ movetoX(targetJump-p_angriffsstaerke) -- Bei der Sprungatacke wird die Stärke des gewünschten schlages angegeben
+
+ if (bally() < 580) and (bspeedy() < 0) then
+ jump()
+ end
+end
+
+function naechsterBallSchmetternFlagTesten()
+ naechsterBallSchmettern = true
+end
+
+function generatenaechsterBallSchmettern()
+ angriffsstaerke = math.random(MIN_ANGRIFFSSTAERKE,MAX_ANGRIFFSSTAERKE)
+end
+
+function estimImpact(bx,by,vbx,vby,destY,Frage) -- erlaubt ein besseres Estimate mit ein paar unbeding nötigen Angaben
+ bgrav = 0.28
+
+ time1 =(-vby-math.sqrt((vby^2)-(-2*bgrav*(by-destY))))/(-bgrav)
+ resultX = (vbx * time1) + bx
+ estimbspeedx=bspeedx()/math.abs(bspeedx())
+
+ if(resultX > CONST_RECHTER_RAND) then -- Korrigieren der Appraller an der Rechten Ebene
+ resultX = 2 * CONST_FELD_LAENGE - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if(resultX < CONST_BALL_RADIUS) then -- korrigieren der Appraller an der linken Ebene
+ resultX = math.abs(resultX - CONST_BALL_RADIUS) + CONST_BALL_RADIUS
+ estimbspeedx=-estimbspeedx
+ KollisionLinks = true
+ else
+ KollisionLinks = false
+ end
+
+ if (resultX > CONST_NETZ_RECHTS) and (estimbspeedx > 0) and ((KollisionLinks == true) or (ballx() < CONST_NETZ_LINKS)) then -- Abpraller am Netz unterhalb der Kugel erst wenn Netzroller ausgeschlossen sind
+ resultX = 2 * CONST_NETZ_LINKS - resultX
+ estimbspeedx=-estimbspeedx
+ end
+
+ if (Frage == 1) then
+ return resultX
+ end
+ if (Frage == 2) then
+ return estimbspeedx
+ end
+end
+
+function movetoX (x)
+ if (math.abs(posx()-x)>math.abs(posx()+4.5-x)) then
+ right()
+ done=false
+ else
+ if (math.abs(posx()-x)>math.abs(posx()-4.5-x)) then
+ left()
+ done=false
+ else
+ done=true
+ end
+ end
+ return done
+end
+
diff -Nru blobby-0.8-dfsg/data/scripts/old/gintonicV6.lua blobby-0.9c/data/scripts/old/gintonicV6.lua
--- blobby-0.8-dfsg/data/scripts/old/gintonicV6.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/gintonicV6.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,230 @@
+--Gin Tonic v6 - No Comments, sorry :P
+
+CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
+CT_ServeOpp = { 140, 200, 240 }
+CT_ServeIndex = 0
+CT_Tolerance = 5
+CT_Action = ""
+CT_ShotDecision = 0
+CT_NextGround = 9999
+CT_LastTouches = 0
+CT_LastHeight = 0
+
+CT_WaitCounter = 0
+CT_WaitName = ""
+CT_WaitMoveTo = 0
+
+function IsAt(position)
+ return (math.abs(posx()-position) <= CT_Tolerance)
+end
+
+function Wait(name, time, moveto)
+ if (CT_WaitName == name) then
+ if (CT_WaitCounter == 0) then
+ return false
+ end
+ end
+ CT_WaitCounter = time
+ CT_WaitName = name
+ CT_WaitMoveTo = moveto
+ return true
+end
+
+function WaitQueue()
+ if (CT_WaitCounter > 0) then
+ CT_WaitCounter = CT_WaitCounter - 1
+ if (CT_WaitMoveTo > 0) then
+ if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
+ end
+ return true
+ else
+ return false
+ end
+end
+
+function ResetWait()
+ CT_WaitCounter = 0
+ CT_WaitName = ""
+end
+
+function OnOpponentServe()
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,3)
+ end
+ if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
+end
+
+function OnServe(ballready)
+ if (WaitQueue()) then return end
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,6)
+ end
+ if (ballready) then
+ if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
+ if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
+ jump()
+ else
+ moveto(CT_ServeSelf[CT_ServeIndex])
+ end
+ else
+ if (posx() < 150) then
+ jump()
+ end
+ moveto(40)
+ end
+end
+
+function OnGame()
+ ResetWait()
+ CT_ServeIndex = 0
+
+ local timeJump = timeToHitHeight(380, 390, 20)
+ local timeGround = timeToHitHeight(200, 222, 40)
+ local timeBlock = timeToOppSmash(390)
+ local estimhx = r_estimx(timeJump)
+ local estimGround = r_estimx(timeGround)
+ local estimBlock = r_estimx(timeBlock)
+ local block = 0
+ local wallcoll = willHitWall(time)
+ if (timeBlock ~= -1) then block = timeBlock+(estimBlock-400)/13 end
+ if (timeBlock == -1) then timeBlock = 9999 end
+ if (timeJump == -1) then estimhx = 9999 end
+ if (timeGround == -1) then estimGround = 210 end
+
+ if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
+ CT_LastHeight = posy()
+
+ if (CT_Action == "NetBlock") then
+ if ((posy() < 150) or (timeBlock < 4 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 10)) then
+ CT_Action = ""
+ else
+ jump()
+ moveto(400)
+ return
+ end
+ elseif (CT_Action == "JumpPlayFwd") then
+ if (posy() < 150) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (posy() > 300) then
+ if (math.abs(bally()-posy()) < 18) then
+ moveto(ballx()+bspeedx())
+ elseif (estimhx < 200) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() > 600 and oppy() < 150) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() < 600 and oppy() > 180) then
+ moveto(estimhx-40)
+ else
+ moveto(estimhx-60)
+ end
+ else
+ moveto(estimhx-60)
+ end
+ return
+ end
+ elseif (CT_Action == "JumpPlayRev") then
+ if (posy() < 150) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,9) end
+ moveto(estimhx+5*CT_ShotDecision)
+ return
+ end
+ end
+
+ if (touches() ~= CT_LastTouches) then
+ CT_LastTouches = touches()
+ CT_NextGround = math.random(-20,20)
+ end
+
+ if (CT_Action == "") then
+ if ((ballx() < 400 or bspeedx() < -2) and estimGround < 400) then
+ if (touches() >= 2) then
+ moveto(estimGround+(posx()-500)/22)
+ elseif (math.abs(bspeedx()) > 8) then
+ moveto(estimGround)
+ else
+ moveto(estimGround+CT_NextGround)
+ end
+ elseif (estimhx < 600 and math.abs(bspeedx()) < 6) then
+ moveto(280)
+ elseif (estimhx > 650) then
+ moveto(250)
+ else
+ moveto(190)
+ end
+ end
+
+ if (posy() > 150) then return end
+
+ if (timeBlock >= 17 and timeBlock <= 19) then
+ if (posx() > 210 and estimBlock > 395 and estimBlock < 640) then
+ jump()
+ moveto(400)
+ CT_Action = "NetBlock"
+ return
+ end
+ end
+ if (timeJump >= 17 and timeJump <= 19) then
+ if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or (not wallcoll))) then
+ if (estimGround > 400 or bally() > 250) then
+ CT_Action = "JumpPlayFwd"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
+ if (estimGround > 400 or bally() > 250) then
+ if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
+ CT_Action = "JumpPlayRev"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ end
+end
+
+
+function timeToHitHeight(minheight, maxheight, depth)
+ local i = 0
+ for i=1, depth do
+ if (estimy(i) >= minheight and estimy(i) <= maxheight and estimx(i) <= 420) then
+ return i
+ end
+ end
+ return -1
+end
+
+function timeToOppSmash(height)
+ if (bally() < height) then return -1 end
+ local i = 0
+ for i=1, 17 do
+ if (estimy(i) < height) then
+ return i
+ end
+ end
+ return -1
+end
+
+function r_estimx(time)
+ local estim = estimx(time)
+ if estim < 31.5 then estim = 63-estim end
+ if estim > 768.5 then estim = 1537-estim end
+ if (bally() < 330) then
+ if (ballx() < 400 and estim > 400) then estim = 723-estim end
+ if (ballx() > 400 and estim < 400) then estim = 877-estim end
+ end
+ return estim
+end
+
+function willHitWall(time)
+ if (estimx(time) < 31.5) then return true end
+ return false
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/gintonicV7.lua blobby-0.9c/data/scripts/old/gintonicV7.lua
--- blobby-0.8-dfsg/data/scripts/old/gintonicV7.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/gintonicV7.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,231 @@
+--Gin Tonic v7 - No Comments, sorry :P
+
+CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
+CT_ServeOpp = { 140, 200, 240 }
+CT_ServeIndex = 0
+CT_Tolerance = 5
+CT_Action = ""
+CT_ShotDecision = 0
+CT_NextGround = 9999
+CT_LastTouches = 0
+CT_LastHeight = 0
+
+CT_WaitCounter = 0
+CT_WaitName = ""
+CT_WaitMoveTo = 0
+
+function IsAt(position)
+ return (math.abs(posx()-position) <= CT_Tolerance)
+end
+
+function Wait(name, time, moveto)
+ if (CT_WaitName == name) then
+ if (CT_WaitCounter == 0) then
+ return false
+ end
+ end
+ CT_WaitCounter = time
+ CT_WaitName = name
+ CT_WaitMoveTo = moveto
+ return true
+end
+
+function WaitQueue()
+ if (CT_WaitCounter > 0) then
+ CT_WaitCounter = CT_WaitCounter - 1
+ if (CT_WaitMoveTo > 0) then
+ if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
+ end
+ return true
+ else
+ return false
+ end
+end
+
+function ResetWait()
+ CT_WaitCounter = 0
+ CT_WaitName = ""
+end
+
+function OnOpponentServe()
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,3)
+ end
+ if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
+end
+
+function OnServe(ballready)
+ if (WaitQueue()) then return end
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,6)
+ end
+ if (ballready) then
+ if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
+ if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
+ jump()
+ else
+ moveto(CT_ServeSelf[CT_ServeIndex])
+ end
+ else
+ if (posx() < 150) then
+ jump()
+ end
+ moveto(40)
+ end
+end
+
+function OnGame()
+ ResetWait()
+ CT_ServeIndex = 0
+
+ local timeJump = timeToHitHeight(380, 390, 20)
+ local timeGround = timeToHitHeight(200, 222, 40)
+ local timeBlock = timeToOppSmash(390)
+ local estimhx = r_estimx(timeJump)
+ local estimGround = r_estimx(timeGround)
+ local estimBlock = r_estimx(timeBlock)
+ local block = 0
+ local wallcoll = willHitWall(timeJump)
+ if (timeBlock ~= -1) then block = timeBlock+(estimBlock-400)/13 end
+ if (timeBlock == -1) then timeBlock = 9999 end
+ if (timeJump == -1) then estimhx = 9999 end
+ if (timeGround == -1) then estimGround = 210 end
+
+ if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
+ CT_LastHeight = posy()
+
+ if (CT_Action == "NetBlock") then
+ if ((posy() < 150) or (timeBlock < 4 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 10)) then
+ CT_Action = ""
+ else
+ jump()
+ moveto(400)
+ return
+ end
+ elseif (CT_Action == "JumpPlayFwd") then
+ if (posy() < 150) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (posy() > 300) then
+ if (math.abs(bally()-posy()) < 18) then
+ moveto(ballx()+bspeedx())
+ elseif (estimhx < 200) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() > 600 and oppy() < 150) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() < 600 and oppy() > 180) then
+ moveto(estimhx-40)
+ else
+ moveto(estimhx-60)
+ end
+ else
+ moveto(estimhx-60)
+ end
+ return
+ end
+ elseif (CT_Action == "JumpPlayRev") then
+ if (posy() < 150 or touches() ~= CT_LastTouches) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,9) end
+ moveto(estimhx+5*CT_ShotDecision)
+ return
+ end
+ end
+
+ if (touches() ~= CT_LastTouches) then
+ CT_LastTouches = touches()
+ CT_NextGround = math.random(-20,20)
+ end
+
+ if (CT_Action == "") then
+ if ((ballx() < 400 or bspeedx() < -2) and estimGround < 400) then
+ if (touches() >= 2) then
+ moveto(estimGround+(posx()-500)/22)
+ elseif (math.abs(bspeedx()) > 8) then
+ moveto(estimGround)
+ else
+ moveto(estimGround+CT_NextGround)
+ end
+ elseif (estimhx < 600 and math.abs(bspeedx()) < 6) then
+ moveto(280)
+ elseif (estimhx > 650) then
+ moveto(250)
+ else
+ moveto(190)
+ end
+ end
+
+ if (posy() > 150) then return end
+ if (touches() > 2) then return end
+
+ if (timeBlock >= 17 and timeBlock <= 19) then
+ if (posx() > 210 and estimBlock > 395 and estimBlock < 640 and not wallcoll) then
+ jump()
+ moveto(400)
+ CT_Action = "NetBlock"
+ return
+ end
+ end
+ if (timeJump >= 17 and timeJump <= 19) then
+ if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or not wallcoll)) then
+ if (estimGround > 400 or bally() > 250) then
+ CT_Action = "JumpPlayFwd"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
+ if (estimGround > 400 or bally() > 250) then
+ if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
+ CT_Action = "JumpPlayRev"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ end
+end
+
+
+function timeToHitHeight(minheight, maxheight, depth)
+ local i = 0
+ for i=1, depth do
+ if (estimy(i) >= minheight and estimy(i) <= maxheight and estimx(i) <= 420) then
+ return i
+ end
+ end
+ return -1
+end
+
+function timeToOppSmash(height)
+ if (bally() < height) then return -1 end
+ local i = 0
+ for i=1, 17 do
+ if (estimy(i) < height) then
+ return i
+ end
+ end
+ return -1
+end
+
+function r_estimx(time)
+ local estim = estimx(time)
+ if estim < 31.5 then estim = 63-estim end
+ if estim > 768.5 then estim = 1537-estim end
+ if (bally() < 330) then
+ if (ballx() < 400 and estim > 400) then estim = 723-estim end
+ if (ballx() > 400 and estim < 400) then estim = 877-estim end
+ end
+ return estim
+end
+
+function willHitWall(time)
+ if (estimx(time) < 31.5) then return true end
+ return false
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/gintonicV8.lua blobby-0.9c/data/scripts/old/gintonicV8.lua
--- blobby-0.8-dfsg/data/scripts/old/gintonicV8.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/gintonicV8.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,240 @@
+--Gin Tonic v8 - No Comments, sorry :P
+
+CT_ServeSelf = { 152, 163, 180, 195, 205, 240 }
+CT_ServeOpp = { 140, 200, 240 }
+CT_ServeIndex = 0
+CT_Tolerance = 5
+CT_Action = ""
+CT_ShotDecision = 0
+CT_NextGround = 9999
+CT_LastTouches = 9999
+CT_LastHeight = 0
+CT_SkipNextBlock = 0
+
+CT_WaitCounter = 0
+CT_WaitName = ""
+CT_WaitMoveTo = 0
+
+function IsAt(position)
+ return (math.abs(posx()-position) <= CT_Tolerance)
+end
+
+function Wait(name, time, moveto)
+ if (CT_WaitName == name) then
+ if (CT_WaitCounter == 0) then
+ return false
+ end
+ end
+ CT_WaitCounter = time
+ CT_WaitName = name
+ CT_WaitMoveTo = moveto
+ return true
+end
+
+function WaitQueue()
+ if (CT_WaitCounter > 0) then
+ CT_WaitCounter = CT_WaitCounter - 1
+ if (CT_WaitMoveTo > 0) then
+ if (not IsAt(CT_WaitMoveTo)) then moveto(CT_WaitMoveTo) end
+ end
+ return true
+ else
+ return false
+ end
+end
+
+function ResetWait()
+ CT_WaitCounter = 0
+ CT_WaitName = ""
+end
+
+function OnOpponentServe()
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,3)
+ end
+ if (not IsAt(CT_ServeOpp[CT_ServeIndex])) then moveto(CT_ServeOpp[CT_ServeIndex]) end
+end
+
+function OnServe(ballready)
+ if (WaitQueue()) then return end
+ if (CT_ServeIndex == 0) then
+ CT_ServeIndex = math.random(1,6)
+ end
+ if (ballready) then
+ if (Wait("ServeDelay",math.random(28,90),CT_ServeSelf[CT_ServeIndex]+math.random(-150, 150))) then return end
+ if (IsAt(CT_ServeSelf[CT_ServeIndex])) then
+ jump()
+ else
+ moveto(CT_ServeSelf[CT_ServeIndex])
+ end
+ else
+ if (posx() < 150) then
+ jump()
+ end
+ moveto(40)
+ end
+end
+
+function OnGame()
+ ResetWait()
+ CT_ServeIndex = 0
+
+ local timeJump = timeToHitHeight(380, 390, 20)
+ local timeGround = timeToHitHeight(200, 222, 40)
+ local timeBlock = timeToOppSmash(390)
+ local estimhx = r_estimx(timeJump)
+ local estimGround = r_estimx(timeGround)
+ local estimBlock = r_estimx(timeBlock)
+ local block = 0
+ local wallcoll = willHitWall(timeJump)
+ if (timeBlock ~= -1) then timeBlock = timeBlock+(estimBlock-400)/13 end
+ if (timeBlock == -1) then timeBlock = 9999 end
+ if (timeJump == -1) then estimhx = 9999 end
+ if (timeGround == -1) then estimGround = 210 end
+ if (CT_SkipNextBlock == 0) then CT_SkipNextBlock = math.random(1,10) end
+
+ if (posy() < CT_LastHeight and posy() > 150 and posy() < 330) then CT_Action = "" end
+ CT_LastHeight = posy()
+
+ if (CT_Action == "NetBlock") then
+ if ((posy() < 150) or (timeBlock <= 8 and oppy() < 150) or (ballx() <= posx()) or (touches() <= 0 and bspeedx() > 9)) then
+ CT_Action = ""
+ else
+ jump()
+ moveto(400)
+ return
+ end
+ elseif (CT_Action == "JumpPlayFwd") then
+ if (posy() < 150) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (posy() > 300) then
+ if (math.abs(bally()-posy()) < 18) then
+ moveto(ballx()+bspeedx())
+ elseif (estimhx < 200) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,5) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() > 600 and oppy() < 150) then
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(4,6) end
+ moveto(estimhx-10*CT_ShotDecision)
+ elseif (oppx() < 600 and oppy() > 180) then
+ moveto(estimhx-40)
+ else
+ moveto(estimhx-60)
+ end
+ else
+ moveto(estimhx-50)
+ end
+ return
+ end
+ elseif (CT_Action == "JumpPlayRev") then
+ if (posy() < 150 or touches() ~= CT_LastTouches) then
+ CT_Action = ""
+ else
+ if (estimhx == 9999) then estimhx = ballx()+bspeedx() end
+ jump()
+ if (CT_ShotDecision == 0 and touches() == 2) then CT_ShotDecision = math.random(5,7) end
+ if (CT_ShotDecision == 0) then CT_ShotDecision = math.random(3,8) end
+ if (math.abs(bally()-posy()) < 18) then
+ moveto(ballx()+bspeedx())
+ else
+ moveto(estimhx+5*CT_ShotDecision)
+ end
+ return
+ end
+ end
+
+ if (touches() ~= CT_LastTouches) then
+ CT_LastTouches = touches()
+ CT_NextGround = math.random(-20,20)
+ CT_SkipNextBlock = 0
+ end
+
+ if (CT_Action == "") then
+ if ((ballx() < 400 or bspeedx() < -2 or bspeedx() > 10) and estimGround < 400) then
+ if (touches() >= 2) then
+ moveto(estimGround+(posx()-500)/22)
+ elseif (math.abs(bspeedx()) > 8) then
+ moveto(estimGround)
+ else
+ moveto(estimGround+CT_NextGround)
+ end
+ elseif (estimhx < 650 and math.abs(bspeedx()) < 6) then
+ moveto(215)
+ elseif (estimhx > 650) then
+ moveto(250)
+ else
+ moveto(180)
+ end
+ end
+
+ if (posy() > 150) then return end
+ if (touches() > 2) then return end
+
+ if (timeBlock >= 23 and timeBlock <= 25 and CT_SkipNextBlock ~= 1) then
+ if (posx() > 210 and estimBlock > 395 and estimBlock < 650 and not wallcoll) then
+ jump()
+ moveto(400)
+ CT_Action = "NetBlock"
+ return
+ end
+ end
+ if (timeJump >= 17 and timeJump <= 19) then
+ if (bspeedx() <= 7 and estimhx >= 65 and estimhx <= 420 and posx()-estimhx <= 120 and (bspeedx() >= -7 or not wallcoll)) then
+ if (estimGround > 400 or bally() > 250) then
+ CT_Action = "JumpPlayFwd"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ if ((wallcoll or bspeedx() >= -7) and estimhx <= 250 and posx()-estimhx <= 180 and posx()-estimhx >= -120) then
+ if (estimGround > 400 or bally() > 250) then
+ if (CT_Action == "JumpPlayFwd" and (touches() >= 2 or math.random(100) > 15)) then return end
+ CT_Action = "JumpPlayRev"
+ CT_ShotDecision = 0
+ jump()
+ end
+ end
+ end
+end
+
+
+function timeToHitHeight(minheight, maxheight, depth)
+ local i = 0
+ for i=1, depth do
+ if (estimy(i) >= minheight and estimy(i) <= maxheight) then
+ return i
+ end
+ end
+ return -1
+end
+
+function timeToOppSmash(height)
+ if (bally() < height) then return -1 end
+ local i = 0
+ for i=1, 17 do
+ if (estimy(i) < height) then
+ return i
+ end
+ end
+ return -1
+end
+
+function r_estimx(time)
+ local estim = estimx(time)
+ if estim < 31.5 then estim = 63-estim end
+ if estim > 768.5 then estim = 1537-estim end
+ if (bally() < 330) then
+ if (ballx() < 400 and estim > 400) then estim = 723-estim end
+ if (ballx() > 400 and estim < 400) then estim = 877-estim end
+ end
+ return estim
+end
+
+function willHitWall(time)
+ if (estimx(time) < 31.5) then return true end
+ if (estimx(time) > 768.5) then return true end
+ return false
+end
\ No newline at end of file
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp010.lua blobby-0.9c/data/scripts/old/hyp010.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp010.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp010.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,514 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+p0=0
+p1=0.5
+p2=1
+h=31.5+19+25
+
+
+estt=0
+nettime=0
+touch=0
+est=0
+p=0.4
+esto1=10
+esto2=10
+
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function lob()
+
+ if (math.abs(est-esto2)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto2=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ if (impfimp) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>740) then break end
+ end
+ if (t>12) then t=t-6 else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ --p=0.5
+ end
+
+end
+
+
+function attack()
+
+ if (math.abs(est-esto1)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+ h2=900
+-- debug(-10)
+ esto1=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ xat=xaf
+ yat=yaf
+ vxat=vxaf
+ vyat=vyaf
+ break
+ end
+ end
+ h2t=yb(yat,vyat,(400-xat)/vxat)
+ if (h2t316+31.5+10) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ xa=xat
+ ya=yat
+ vxa=vxat
+ vya=vyat
+ end
+ h2=yb(ya,vya,(400-xa)/vxa)
+ if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
+ end
+ if (t>12) then t=t-6
+ else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ move(est)
+ --p=0.9
+ end
+end
+
+
+function netp()
+
+ if (math.abs(est-esto)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto=est
+ imp=0
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (impt>imp) and (impt<431.5) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>428) then break end
+ end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ end
+
+end
+
+
+function OnOpponentServe()
+y1p=144.5
+if (math.abs(pos(posx())-posx())>1) then move(400) else
+move(200)
+end
+valid=1
+
+
+end
+
+function OnServe(ballready)
+y1p=144.5
+ est=700
+
+ if (math.abs(pos(posx())-posx())>1) then
+ move(400)
+ else
+ if (math.abs(posx()-180)<2) then
+ jump()
+ else
+ move(180)
+ end
+ end
+valid=1
+end
+
+
+
+function OnGame()
+
+yp2=y1p
+y1p=oppy()
+vp=y1p-yp2
+
+
+esttold=estt
+netold=net
+toucho=touch
+touch=touches()
+if (touch400-31.5) then
+ move (250)
+ elseif (est<400-10) and (est>400-22) then
+ move(200)
+ elseif (est<400) and (est>400-10) then
+ move(180)
+ else
+ move(230)
+end
+
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp011com.lua blobby-0.9c/data/scripts/old/hyp011com.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp011com.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp011com.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,634 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+p0=0
+p1=0.5
+p2=1
+h=31.5+19+25
+
+
+estt=0
+nettime=0
+touch=0
+est=0
+p=0.4
+esto1=10
+esto2=10
+esto3=10
+
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function lob()
+
+ if (math.abs(est-esto2)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto2=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ if (impfimp) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>740) then break end
+ end
+ if (t>12) then t=t-6 else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ --p=0.5
+ end
+
+end
+
+
+function attack()
+
+ if (math.abs(est-esto1)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+ h2=900
+-- debug(-10)
+ esto1=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ xat=xaf
+ yat=yaf
+ vxat=vxaf
+ vyat=vyaf
+ break
+ end
+ end
+ h2t=yb(yat,vyat,(400-xat)/vxat)
+ if (h2t316+31.5+10) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ xa=xat
+ ya=yat
+ vxa=vxat
+ vya=vyat
+ end
+ h2=yb(ya,vya,(400-xa)/vxa)
+ if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
+ end
+ if (t>12) then t=t-6
+ else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ move(est)
+ --p=0.9
+ end
+end
+
+
+function netp()
+
+ if (math.abs(est-esto3)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto3=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (impt0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est-4.5)
+ end
+
+end
+
+
+
+
+
+function posplay()
+
+ if (math.abs(est-esto3)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto3=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5280) and (impf<340) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (math.abs(impt-310)0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ end
+
+end
+
+
+
+
+
+
+function OnOpponentServe()
+y1p=144.5
+if (math.abs(pos(posx())-posx())>1) then move(400) else
+move(200)
+end
+valid=1
+nettime=0
+phase=0
+
+end
+
+function OnServe(ballready)
+nettime=0
+y1p=144.5
+phase=0
+ est=700
+
+ if (math.abs(pos(posx())-posx())>1) then
+ move(400)
+ else
+ if (math.abs(posx()-180)<2) then
+ jump()
+ else
+ move(180)
+ end
+ end
+valid=1
+end
+
+
+
+function OnGame()
+
+yp2=y1p
+y1p=oppy()
+vp=y1p-yp2
+
+
+esttold=estt
+netold=net
+toucho=touch
+touch=touches()
+if (touch431.5) or (est<368.5)) then
+ nettime=10
+ phase=4
+ elseif (phase==4) and (nettime>0) then
+ nettime=nettime-1
+ else
+ if (est>431.5) then
+ phase=3
+ elseif (est<431.5) and (est>368.5) then
+ phase=2
+ else
+ phase=1
+ end
+end
+
+if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
+
+
+--1 Player
+--2 Ball
+-- debug(0)
+-- debug(est)
+-- debug(imp)
+-- debug(t2)
+--
+-- if (est<(400-31.5)) then
+-- if (p<1) then netp()
+-- else lob()
+-- end
+-- elseif (est<400-22) and (est>400-31.5) then
+-- move (250)
+-- elseif (est<400-10) and (est>400-22) then
+-- move(200)
+-- elseif (est<400) and (est>400-10) then
+-- move(180)
+-- else
+-- move(100)
+-- end
+if (phase==3) then
+ move(100)
+ elseif (phase==1) then
+-- if (p<0.4) then
+-- attack()
+-- elseif (p>=0.4) and (p<0.7) then
+-- lob()
+-- else
+ if (touches()==0) then
+ posplay()
+ elseif (touches()==1) then
+ netp()
+ else
+ attack()
+ end
+-- end
+ elseif (phase==2) then
+ if (tnet<=tp(393)+1) or (nettime>0) then jump() end
+ if (math.abs(posx()-360)/4.5-10<=tnet) then
+ left()
+ else
+ right()
+ end
+ elseif (phase==4) then
+ right()
+ jump()
+ elseif (phase==5) then
+ if (posx()>300) then jump() end
+ right()
+end
+
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp011.lua blobby-0.9c/data/scripts/old/hyp011.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp011.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp011.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,634 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+p0=0
+p1=0.5
+p2=1
+h=31.5+19+25
+
+
+estt=0
+nettime=0
+touch=0
+est=0
+p=0.4
+esto1=10
+esto2=10
+esto3=10
+
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function lob()
+
+ if (math.abs(est-esto2)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto2=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ if (impfimp) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>740) then break end
+ end
+ if (t>12) then t=t-6 else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ --p=0.5
+ end
+
+end
+
+
+function attack()
+
+ if (math.abs(est-esto1)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+ h2=900
+-- debug(-10)
+ esto1=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ xat=xaf
+ yat=yaf
+ vxat=vxaf
+ vyat=vyaf
+ break
+ end
+ end
+ h2t=yb(yat,vyat,(400-xat)/vxat)
+ if (h2t316+31.5+10) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ xa=xat
+ ya=yat
+ vxa=vxat
+ vya=vyat
+ end
+ h2=yb(ya,vya,(400-xa)/vxa)
+ if (h2>316+31.5+10) and (h2<316+31.5+45) then break end
+ end
+ if (t>12) then t=t-6
+ else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ move(est)
+ --p=0.9
+ end
+end
+
+
+function netp()
+
+ if (math.abs(est-esto3)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto3=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (impt0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est-4.5)
+ end
+
+end
+
+
+
+
+
+function posplay()
+
+ if (math.abs(est-esto3)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto3=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5280) and (impf<340) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (math.abs(impt-310)0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ end
+
+end
+
+
+
+
+
+
+function OnOpponentServe()
+y1p=144.5
+if (math.abs(pos(posx())-posx())>1) then move(400) else
+move(200)
+end
+valid=1
+nettime=0
+phase=0
+
+end
+
+function OnServe(ballready)
+nettime=0
+y1p=144.5
+phase=0
+ est=700
+
+ if (math.abs(pos(posx())-posx())>1) then
+ move(400)
+ else
+ if (math.abs(posx()-180)<2) then
+ jump()
+ else
+ move(180)
+ end
+ end
+valid=1
+end
+
+
+
+function OnGame()
+
+yp2=y1p
+y1p=oppy()
+vp=y1p-yp2
+
+
+esttold=estt
+netold=net
+toucho=touch
+touch=touches()
+if (touch431.5) or (est<368.5)) then
+ nettime=10
+ phase=4
+ elseif (phase==4) and (nettime>0) then
+ nettime=nettime-1
+ else
+ if (est>431.5) then
+ phase=3
+ elseif (est<431.5) and (est>368.5) then
+ phase=2
+ else
+ phase=1
+ end
+end
+
+if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
+
+
+--1 Player
+--2 Ball
+-- debug(0)
+-- debug(est)
+-- debug(imp)
+-- debug(t2)
+--
+-- if (est<(400-31.5)) then
+-- if (p<1) then netp()
+-- else lob()
+-- end
+-- elseif (est<400-22) and (est>400-31.5) then
+-- move (250)
+-- elseif (est<400-10) and (est>400-22) then
+-- move(200)
+-- elseif (est<400) and (est>400-10) then
+-- move(180)
+-- else
+-- move(100)
+-- end
+if (phase==3) then
+ move(100)
+ elseif (phase==1) then
+ if (p<0.4) then
+ attack()
+ elseif (p>=0.4) and (p<0.7) then
+ lob()
+ else
+ if (touches()==0) then
+ posplay()
+ elseif (touches()==1) then
+ netp()
+ else
+ attack()
+ end
+ end
+ elseif (phase==2) then
+ if (tnet<=tp(393)+1) or (nettime>0) then jump() end
+ if (math.abs(posx()-360)/4.5-10<=tnet) then
+ left()
+ else
+ right()
+ end
+ elseif (phase==4) then
+ right()
+ jump()
+ elseif (phase==5) then
+ if (posx()>300) then jump() end
+ right()
+end
+
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp012.lua blobby-0.9c/data/scripts/old/hyp012.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp012.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp012.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,649 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+
+h=31.5+19+25
+
+
+estt=0
+nettime=0
+touch=0
+est=0
+p=math.random()/2+0.5
+esto1=10
+esto2=10
+esto3=10
+esto4=10
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function lob()
+
+ if (math.abs(est-esto2)>0.2) then
+ esto2=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5730) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ if (impfimp) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>740) then break end
+ end
+ if (t>12) then t=t-6 else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+-- move(est)
+p=math.random()
+esto2=0
+ end
+
+end
+
+
+function attack()
+
+ if (math.abs(est-esto1)>0.2) then
+ h2=900
+ esto1=est
+ imp=0
+ x1=0
+ t=30
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(pos(x2f)+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ xat=xaf
+ yat=yaf
+ vxat=vxaf
+ vyat=vyaf
+ break
+ end
+ end
+ h2t=yb(yat,vyat,(400-xat)/vxat)
+ if (h2t316+31.5+10) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ xa=xat
+ ya=yat
+ vxa=vxat
+ vya=vyat
+ end
+ h2=yb(ya,vya,(400-xa)/vxa)
+ if (h2>316+31.5+10) and (h2<316+31.5+60) then break end
+ end
+ if (t>12) then t=t-6
+ else t=t-4 end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+-- move(est-5)
+ --p=0.9
+p=math.random()
+esto1=0
+ end
+end
+
+
+function netp()
+
+ if (math.abs(est-esto3)>0.2) then
+ esto3=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5380) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (impt0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+-- move(est-4.5)
+p=math.random()
+esto3=0
+ end
+
+end
+
+
+
+
+
+function playto(dest)
+--310
+
+ if (math.abs(est-esto4)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto4=est
+ imp=500
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5dest-30) and (impf0) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (math.abs(impt-dest)0) and (est<368.5) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+-- move(est)
+p=math.random()
+esto4=0
+ end
+
+end
+
+
+
+
+
+
+function OnOpponentServe()
+pp=math.random()
+ y1p=144.5
+ if (math.abs(pos(posx())-posx())>1) then
+ move(400)
+ else
+ move(200)
+ end
+ valid=1
+ nettime=0
+ phase=0
+ imp1=0
+ imp2=0
+ imp=0
+ active=1
+end
+
+function OnServe(ballready)
+pp=math.random()
+ active=1
+ nettime=0
+ y1p=144.5
+ phase=0
+ est=700
+ imp1=0
+ imp2=0
+ imp=0
+
+ if (math.abs(pos(posx())-posx())>1) then
+ move(400)
+ else
+ if (math.abs(posx()-198)<2) then
+ jump()
+ else
+ move(198)
+ end
+ end
+ valid=1
+end
+
+
+
+function OnGame()
+
+ yp2=y1p
+ y1p=oppy()
+ vp=y1p-yp2
+
+ if (math.abs(imp1-imp)>0.1) then
+ imp2=imp1
+ imp1=imp
+ end
+
+ esttold=estt
+ netold=net
+ toucho=touch
+ touch=touches()
+ if (touch431.5) or (est<368.5)) then
+ nettime=11
+ phase=4
+ elseif (phase==4) and (nettime>0) then
+ nettime=nettime-1
+ else
+ if (est>431.5) then
+ phase=3
+ elseif (est<431.5) and (est>368.5) then
+ phase=2
+ else
+ phase=1
+ end
+ end
+ else
+ phase=6
+ end
+ if (bally()<130) then active=0 end
+
+ if (math.sqrt((ballx()-400)^2+(bally()-316)^2)<(31.5+7)) and (math.sqrt((bspeedx())^2+(bspeedy())^2)<2) then phase=5 end
+
+ if (phase==3) then
+ move(170)
+ elseif (phase==1) then
+
+ if (p<0.5) then
+ if (touch==0) then
+ playto(310)
+ elseif (touch==1) then
+ if (p<0.2) then
+ netp()
+ elseif (p>=0.2) and (p<0.35) then
+ playto(pp*300+450)
+ elseif (p>=0.35) and (p<0.5) then
+ attack()
+ end
+ else
+ attack()
+ end
+ else
+ if (touch==0) then
+ if (p>=0.5) and (p<0.75) then
+ playto(pp*300+450)
+ elseif (p>=0.75) and (p<=1.0) then
+ attack()
+ end
+ else
+ attack()
+ end
+ end
+ elseif (phase==2) then
+ if (tnet<=tp(393)+1) or (nettime>0) then jump() end
+ if (math.abs(posx()-360)/4.5-10<=tnet) then
+ left()
+ else
+ right()
+ end
+ elseif (phase==4) then
+ right()
+ jump()
+ elseif (phase==5) then
+ if (posx()>300) then
+ jump()
+ end
+ right()
+ end
+
+ if ((x1==0) or (imp==0)) and (phase==1) then
+-- debug(-1)
+ move(est)
+ end
+--debug(phase)
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp013.lua blobby-0.9c/data/scripts/old/hyp013.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp013.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp013.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,592 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+h=31.5+19+25
+ estt=0
+p=0.654
+
+function reset()
+ est=0
+ imp,imp1,imp2=0,0,0
+
+ nettime=0
+ touch=0
+ esto1=0
+ esto2=0
+ esto3=0
+ esto4=0
+ esto5=0
+ esto6=0
+ phase=0
+ valid=1
+ active=1
+ nettime=0
+ y1p=posy()
+end
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+ local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos2(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=vx
+ vyr=vy
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jum,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,7,0.2 do
+
+ if (jum==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function playto(position)
+
+ if (math.abs(est-esto3)>0.2) then
+ delta=30
+ esto3=est
+ imp,impt,impf=0,0,0
+ x1=0
+ t=27
+ typ1=60
+ typ2=120
+ if (position<400) then
+ n1=2
+ n2=-3
+ elseif (position>600) then
+ n1=-4
+ n2=-11
+ else
+ n1=-1
+ n2=-8
+ end
+ while (t>=0) do
+
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(math.ceil((tp2(posy(),vp))))1) and (t2f>1) then
+
+ for x1f=pos(x2f)+n1*4.5,pos(x2f)+n2*4.5,-4.5 do
+ impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
+
+ if (impf>position-delta) and (math.abs(posx()-x1f)/4.5+10) and (x1f<330) and (impfposition+delta) and ((x1f-pos(x2f))/4.5<0) then break end
+ end
+
+
+ end
+ if (imp>position-delta) and (imp15) then t=t-6
+ else t=t-3 end
+ end
+ t2=t2+1
+
+ end
+
+ if (x1>0) and (imp>0) then
+ t2=t2-1
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ move(est+4.5)
+ end
+end
+
+function net()
+
+ if (math.abs(est-esto2)>0.2) then
+ esto2=est
+ imp,impt,impf=0,0,0
+ x1=0
+ t=27
+ typ1=60
+ typ2=120
+
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(math.ceil((tp2(posy(),vp))))+21) and (t2f>1) then
+ for x1f=pos(x2f)-1*4.5,pos(x2f)-10*4.5,-4.5 do
+ impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
+ if (impf>400) and (math.abs(posx()-x1f)/4.50) and (x1f<330) and (impf<438) then
+ imp=impf
+ x1=x1f
+ y1=y1f
+ t1=t1f
+ x2=x2f
+ y2=y2f
+ t2=t2f
+ vx2=vx2f
+ vy2=vy2f
+ xa=xaf
+ ya=yaf
+ vxa=vxaf
+ vya=vyaf
+ break
+ end
+ if (imp>400) then break end
+ end
+
+
+ end
+ if (imp>400) and (imp<438) then break end
+ if (t>15) then t=t-6
+ else t=t-3 end
+ end
+ t2=t2+1
+
+ end
+
+ if (x1>0) and (imp>0) then
+ t2=t2-1
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ playto(600)
+ end
+end
+
+
+function attack()
+
+ if (math.abs(est-esto1)>0.2) then
+ h2=900
+ esto1=est
+ imp,impt,impf=0,0,0
+ x1=0
+ t=27
+ typ1=60
+ typ2=120
+
+ while (t>=0) do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(math.ceil((tp2(posy(),vp))))+21) and (t2f>1) then
+ for x1f=pos(x2f)-20*4.5,pos(x2f)-4*4.5,4.5 do
+ impf,_,xaf,yaf,vxaf,vyaf=impact(x2f,y2f,vx2f,vy2f,x1f,y1f,220,j,0)
+ h1=yb(yaf,vyaf,(380-xaf)/vxaf)
+ h2=yb(yaf,vyaf,(420-xaf)/vxaf)
+ height=316+7+31.5
+
+ if (impf>432) and (math.abs(posx()-x1f)/4.5+10) and (x1f<330) and (h2>height+typ1) and (h1>height+typ1) and (h2432) and (h2>height+typ2) then break end
+ end
+
+
+ end
+ if (imp>0) then break end
+ if (t>15) then t=t-6
+ else t=t-3 end
+ end
+ t2=t2+1
+
+ end
+
+ if (x1>0) and (imp>0) then
+ t2=t2-1
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ playto(600)
+ end
+end
+
+
+
+
+
+function OnOpponentServe()
+reset()
+ if (math.abs(pos2(posx())-posx())>1) then
+ move(400)
+ else
+ move(200)
+ end
+end
+
+function OnServe(ballready)
+reset()
+ if (math.abs(pos2(posx())-posx())>1) then
+ move(400)
+ else
+ if (math.abs(posx()-198)<2) then
+ jump()
+ else
+ move(198)
+ end
+ end
+end
+
+
+
+function OnGame()
+
+ yp2=y1p
+ y1p=posy()
+ vp=y1p-yp2
+
+ if (math.abs(imp1-imp)>0.1) then
+ imp2=imp1
+ imp1=imp
+ end
+
+ esttold=estt
+ netold=netc
+ toucho=touch
+ touch=touches()
+ if (touch438.5) or (est<361.5)) then
+ nettime=11
+ phase=4
+ elseif (phase==4) and (nettime>0) then
+ nettime=nettime-1
+ else
+ if (est>438.5) then
+ phase=2
+ elseif (est<438.5) and (est>361.5) then
+ if (((vyestt-g*(80-estt)/vxestt)>0) or (vxestt<0)) and ((360-posx())/4.5=0.2)) then
+ attack()
+ else
+ playto(600)
+ end
+ elseif (p>=0.6) and (p<0.9) then
+ if (p<0.7) and (touch==0) then
+ playto(300)
+ else
+ playto(770)
+ end
+-- elseif (p>=0.9) and (p<0.95) then
+-- playto(480)
+ else
+ if (p<0.95) and (touch==0) then
+ playto(300)
+ elseif (touch==1) or ((touch==0) and (p>=0.95)) then
+ playto(480)
+ else
+ playto(600)
+ end
+ end
+ elseif (phase==3) then
+ if (tnet<=tp(393)-3) or (nettime>0) then jump() end
+ if (math.abs(posx()-360)/4.5-7<=tnet) then
+ left()
+ else
+ right()
+ end
+ elseif (phase==4) then
+ right()
+ jump()
+ elseif (phase==5) then
+ move(200)
+ elseif (phase==6) then
+ if (posx()>300) then
+ jump()
+ end
+ right()
+ end
+
+ if ((x1==0) or (imp==0)) and (phase==1) then
+ move(est)
+ end
+-- debug(0)
+-- debug(imp)
+-- debug(est)
+end
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp07.lua blobby-0.9c/data/scripts/old/hyp07.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp07.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp07.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,409 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+
+
+
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function est(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+
+
+
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+-- if (x1>360) then x1=2*360-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=est(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2
+end
+
+
+
+
+
+
+function nothing()
+--[[ if (math.abs(xe-xo)>0.1) then
+ xo=xe
+ for test=30,0,-3 do
+ t1=test
+ y1=yp(t1)
+ t2=math.floor(tb(y,vy,y1+31.5+25+19,2))
+ y2=yb(y,vy,t2)
+
+ x2,y2,vx2,vy2,t2,_=est(x,y,vx,vy,y2+0.1)
+ t2=t2
+ if (vx2>2) then
+ n=0
+ elseif (vx2>0.5) then
+ n=5
+ else
+ n=13
+ end
+ xi,yi=impact(x2,y2,vx2,vy2,pos(x2-n*4.5),y1,220,1,0)
+
+ if (math.abs(posx()-(x2-n*4.5))/4.580) and (t2-1>t1) and (xi>400) then
+ break
+ end
+ end
+ end
+
+ move(x2-n*4.5)
+ if (t2<=t1) then
+ jump()
+ end
+ --]]
+
+end
+
+
+
+
+
+
+function OnOpponentServe()
+xdo=0
+xe=0
+s=1
+touch=0
+xodo=0
+change=1
+stop=0
+t1,t2,y1,y2,x,y,vx,vy=0,0,0,0,0,0,0,0
+calc=0
+if (math.abs(pos(posx())-posx())>1) then move(400) else
+move(200)
+end
+xo=0
+c=0
+end
+
+function OnServe(ballready)
+xe=0
+s=1
+xodo=0
+xdo=0
+change=1
+touch=0
+stop=0
+t1,t2,y1,y2,x,y,vx,vy=0,0,0,0,0,0,0,0
+xo=0
+c=0
+if (math.abs(pos(posx())-posx())>1) then move(400) else
+ if (math.abs(posx()-180)<2) then jump() else move(180) end
+ end
+end
+
+function OnGame()
+
+if (change==0) and (touches()=te) then jump() end
+ if (math.abs(posx()-360)/4.50.2) then
+ xodo=xdo
+ imp=0
+ x1=0
+ for t=27,0,-3 do
+ t1f=t
+ y1f=yp(t1f)
+ t2f=math.floor(tb(y,vy,y1f+h,2))
+ if (t2f>0) then
+-- debug(0)
+-- debug(t2f)
+ y2f=yb(y,vy,t2f)
+-- debug(y2f)
+ vy2f=vy-g*t2f
+ x2f,y2f,vx2f,vy2f,t2f,_=est(x,y,vx,vy,y2f-vy2f/10,2)
+-- debug(t2f)
+-- debug(y2f)
+-- debug(vy)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ impt=0
+ if (t1f<=t2f-2) then
+ for x1f=pos(x2f)-25*4.5,pos(x2f)+4.5,4.5 do
+ impf,_=impact(x2f,y2f,vx2f,vy2f,pos(x1f),y1f,220,1,0)
+ if (impf>440) and (math.abs(posx()-x1f)/4.5400) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>400) then break end
+ end
+ end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (s==1) then
+ move(x1)
+ if (t2<=t1+0.1) then jump() end
+ end
+ else
+ move(200)
+ end
+end
+
+if (bally()<140) then s=0 end
+
+-- debug(0)
+-- debug(x2)
+-- debug(ballx())
+-- debug(y2)
+-- debug(bally())
+-- debug(vx2)
+-- debug(bspeedx())
+-- debug(vy2)
+-- debug(bspeedy())
+-- debug(xe)
+-- debug(imp)
+-- debug(t2)
+-- debug(0)
+end
+
+
diff -Nru blobby-0.8-dfsg/data/scripts/old/hyp09.lua blobby-0.9c/data/scripts/old/hyp09.lua
--- blobby-0.8-dfsg/data/scripts/old/hyp09.lua 1970-01-01 00:00:00.000000000 +0000
+++ blobby-0.9c/data/scripts/old/hyp09.lua 2011-11-06 15:06:50.000000000 +0000
@@ -0,0 +1,503 @@
+g=0.28
+pg=0.88
+v0=14.5
+v_p=4.5
+pj=0.44
+r1=31.5
+p0=0
+p1=0.5
+p2=1
+h=31.5+19+25
+
+
+estt=0
+nettime=0
+touch=0
+est=0
+p=0.4
+esto=10
+
+
+function yb(y,vy,t)
+
+ return y+(vy-g/10)*t-1/2*g*t^2
+
+end
+
+function move(x)
+
+ if (posx()2.26) then right()
+ elseif (posx()>x) and (math.abs(posx()-x)>2.26) then left()
+ end
+
+end
+
+function tb(y,vy,height,typ)
+local sgn=0
+ if (typ==1)
+ then
+ sgn=-1
+ else
+ sgn=1
+ end
+ if vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g<0
+ then return -1
+ else
+ return -1/10+vy/g+sgn*math.sqrt( vy^2/g^2-vy/(5*g)+1/100+2*(y-height)/g )
+ end
+end
+
+function time(t)
+
+ return 1/5*math.ceil(5*t)
+
+end
+
+function pos(x)
+
+ local x1,x2
+ x1=4.5*math.ceil((1/4.5)*x)
+ x2=4.5*math.floor((1/4.5)*x)
+ if (x1<0) or (x2<0) then return 0
+ else
+ if (math.abs(x1-x)146) then
+ return (v1p/0.88-1/2+math.sqrt((v1p/0.88-1/2)^2-(144.5-y1p)/0.44))
+ else
+ return 0
+ end
+end
+
+function time(t)
+return 1/5*math.ceil(5*t)
+end
+
+
+--
+
+function collide(x,y,vx,vy,objx,objy,r2)
+
+ local t1=time(math.max(tb(y,vy,objy-(r1+r2),1)-0.2,0))
+ local t2=time(tb(y,vy,objy+(r1+r2),1)+0.2)
+ local t3=time(math.max(tb(y,vy,objy+(r1+r2),2)-0.2,0))
+ local t4=time(tb(y,vy,objy-(r1+r2),2)+0.2)
+ local t=-1
+ if (t1150) then t=-1 end
+
+ return t
+
+end
+
+
+
+function estimate(x,y,vx,vy,height,typ)
+
+ local collision=1
+ local tw,tn,ts=0,0,0
+ local tr,xr,yr,vxr,vyr,n=0,0,0,0,0,0
+
+ while(collision==1) do
+ ts=collide(x,y,vx,vy,400,316,7)
+ if (vx>0)
+ then
+ tw=time((768.5-x)/vx)
+ tn=time((361.5-x)/vx)
+ else
+ tw=time((31.5-x)/vx)
+ tn=time((438.5-x)/vx)
+ end
+ local th=time(tb(y,vy,height,typ))
+ local t=10000
+
+ if ((ts>0) and (ts0) and (tn0) and (twt)
+ then
+ if (t==ts)
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vy=vy-g*t
+ xr=x
+ yr=y
+ vxr=0
+ vyr=0
+ n=1
+ collision=0
+ elseif ((t==tn) or (t==tw))
+ then
+ tr=tr+t
+ x=x+vx*t
+ y=yb(y,vy,t)
+ vx=-vx
+ vy=vy-g*t
+ collision=1
+ end
+ else
+ tr=tr+th
+ vxr=vx
+ vyr=vy-g*th
+ xr=x+vx*th
+ yr=yb(y,vy,th)
+ collision=0
+ end
+ end
+ if (tr<0)
+ then
+ return -1,-1,-1,-1,-1,-1
+ else
+ return xr,yr,vxr,vyr,tr,n
+ end
+end
+
+
+function impact(x,y,vx,vy,xpos,ypos,targety,jump,move)
+local x1,y1,vx1,vy1=0,0,0,0
+local x2,y2,vx2,vy2,t2,nn=0,0,0,0,0,0
+local xpos1=xpos
+local ypos1=ypos
+for t=0,20,0.2 do
+
+ if (jump==1) then
+ ypos1=yp(tp(ypos)+t)
+ end
+ x1=x+vx*t
+ if (x1<31.5) then x1=2*31.5-x1 end
+ if (x1>368.5) then x1=2*368.5-x1 end
+ y1=yb(y,vy,t)
+
+ if ((xpos1-x1)^2+(ypos1+19-y1)^2<(31.5+25)^2) then
+ local dx=x1-xpos1
+ local dy=y1-(ypos1+19)
+ local l=math.sqrt(dx^2+dy^2)
+ vx1=dx/l
+ vy1=dy/l
+ x1=x1+vx1*3
+ y1=y1+vy1*3
+ vy1=vy1*13.125
+ vx1=vx1*13.125
+ x2,y2,vx2,vy2,t2,nn=estimate(x1,y1,vx1,vy1,targety,2)
+ break
+ end
+end
+
+return x2,y2,x1,y1,vx1,vy1
+end
+
+function lob()
+
+ if (math.abs(est-esto)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto=est
+ imp=0
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5700) and (math.abs(posx()-x1f)/4.50) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ break
+ end
+ end
+ if (impt>imp) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ end
+ if (imp>740) then break end
+ end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump() end
+ else
+ move(est)
+ end
+
+end
+
+
+function attack()
+
+ if (math.abs(est-esto)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+ h2=900
+-- debug(-10)
+ esto=est
+ imp=0
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,_=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5+10) and (x1f<360) then
+ impt=impf
+ x1t=x1f
+ y1t=y1f
+ t1t=t1f
+ x2t=x2f
+ y2t=y2f
+ t2t=t2f
+ vx2t=vx2f
+ vy2t=vy2f
+ xat=xaf
+ yat=yaf
+ vxat=vxaf
+ vyat=vyaf
+ break
+ end
+ end
+ h2t=yb(yat,vyat,(400-xat)/vxat)
+ if (h2t316+31.5) then
+ imp=impt
+ x1=x1t
+ y1=y1t
+ t1=t1t
+ x2=x2t
+ y2=y2t
+ t2=t2t
+ vx2=vx2t
+ vy2=vy2t
+ xa=xat
+ ya=yat
+ vxa=vxat
+ vya=vyat
+ end
+ h2=yb(ya,vya,(400-xa)/vxa)
+ if (h2<316+31.5+10) and (h2>316+31.5) then break end
+ end
+ end
+ t2=t2+1
+ end
+ t2=t2-1
+
+ if (x1>0) then
+ move(x1)
+ if (t2<=t1+0.1) and (y1>146) then
+ jump()
+ end
+ else
+ move(est)
+ end
+end
+
+
+function netp()
+
+ if (math.abs(est-esto)>0.2) then
+ x1,y1,t1,x2,y2,t2,vx2,vy2,x1f,y1f,t1f,x2f,y2f,t2f,vx2f,vy2f,x1t,y1t,t1t,x2t,y2t,t2t,vx2t,vy2t=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ t2g=0
+-- debug(-10)
+ esto=est
+ imp=0
+ x1=0
+ for t=33,0,-3 do
+ if (t==0) then j=0 else j=1 end
+ t1f=t
+ y1f=yp(t1f)
+ t2g=math.floor(tb(y,vy,y1f+h,2))
+ y2f=yb(y,vy,t2g)
+ vy2f=vy-g*t2g
+ x2f,y2f,vx2f,vy2f,t2f,nn=estimate(x,y,vx,vy,y2f-vy2f/30,2)
+ t1f=math.floor(tp(y2f-h))
+ y1f=yp(t1f)
+ if (t1f+math.abs(tp2(posy(),vp))1) and (t2f>1) and ((math.abs(posx()-(x2f+4.5))/4.5400) and (math.abs(posx()-x1f)/4.5