Compare commits
166 Commits
master
...
stable-5.3
Author | SHA1 | Date |
---|---|---|
Armin Burgmeier | 5dd2d45502 | |
Armin Burgmeier | fa68227e6e | |
Günther Brammer | 518a1b741a | |
Günther Brammer | c765822fc3 | |
Günther Brammer | b05aac2a79 | |
Günther Brammer | d5d72344ef | |
Günther Brammer | acc37860ed | |
Günther Brammer | 21432d997b | |
Günther Brammer | 07f1b75488 | |
Günther Brammer | f9f784a285 | |
Peter Wortmann | b78664b43c | |
Peter Wortmann | cd5c5fe30c | |
Nicolas Hake | eabd15469f | |
Nicolas Hake | b73bb9cfaa | |
Nicolas Hake | f1062fe1a0 | |
Nicolas Hake | 3c937c51a7 | |
Nicolas Hake | 1e05480625 | |
Tobias Zwick | d314d9d338 | |
Tobias Zwick | 60cb601618 | |
Günther Brammer | cfe2bb1f37 | |
Günther Brammer | c481ecde97 | |
Günther Brammer | 44efec3c22 | |
Günther Brammer | efc77ba125 | |
Günther Brammer | 9f3489c053 | |
Armin Burgmeier | 6c531abbfe | |
David Dormagen | b70d1f7e06 | |
Günther Brammer | cfd99b09a4 | |
Maikel de Vries | 19955fd03d | |
Günther Brammer | ce49a25d20 | |
Sven Eberhardt | 8602298f0d | |
Sven Eberhardt | 4ced5be9c4 | |
Sven Eberhardt | 59d8ef0bde | |
Günther Brammer | 4ff7d3c8c9 | |
Sven Eberhardt | 14f52ac5ce | |
Martin Plicht | da27e5aa5b | |
Tobias Zwick | b1e323b49b | |
Oliver Schneider | c38cd59a28 | |
Sven Eberhardt | d3634334a2 | |
Sven Eberhardt | 4864b2252f | |
Sven Eberhardt | 57b8e5c17d | |
Sven Eberhardt | 30a7348ce6 | |
Sven Eberhardt | 0b6126c384 | |
Sven Eberhardt | 486d6a33be | |
Nicolas Hake | faf0303dd4 | |
Sven Eberhardt | 28fd57fbed | |
Nicolas Hake | d0acabd816 | |
Armin Burgmeier | 043a1c6966 | |
Martin Plicht | ca1c4538ee | |
Nicolas Hake | a202001564 | |
Günther Brammer | ce164830a7 | |
Günther Brammer | 77480b08da | |
Günther Brammer | 1472824d70 | |
Nicolas Hake | a3721c64e1 | |
Nicolas Hake | f53cdfb286 | |
Nicolas Hake | df4275ed0f | |
Julius Michaelis | 920b69ee03 | |
Armin Burgmeier | 52a0ab8d05 | |
Armin Burgmeier | bf6e701ad7 | |
Günther Brammer | 3c83efe426 | |
Nicolas Hake | 66c3c41d5d | |
Günther Brammer | fda45b1b29 | |
Nicolas Hake | 6344a2ea87 | |
Günther Brammer | 48ae8d2eef | |
Günther Brammer | d72b0ac4b0 | |
Nicolas Hake | e2f18d8b16 | |
Nicolas Hake | 7a13be20e8 | |
Sven Eberhardt | ed971eba46 | |
Peter Wortmann | 4a3a6e5260 | |
Sven Eberhardt | 18839efc23 | |
David Dormagen | 2a0365ef26 | |
Maikel de Vries | d53fadfbeb | |
Charles Spurrill | 34bf221354 | |
Charles Spurrill | f6b3790fed | |
David Dormagen | 08246163b7 | |
Sven Eberhardt | 2ee7f54d2a | |
David Dormagen | 3d3cd1866b | |
Charles Spurrill | 275629bac5 | |
Maikel de Vries | 71043f39de | |
Charles Spurrill | fca93c0b11 | |
Charles Spurrill | 1e9af1577f | |
Charles Spurrill | ea1de6bf28 | |
Charles Spurrill | 8a2ac6091b | |
Charles Spurrill | 974073b728 | |
Maikel de Vries | b92b83a01f | |
Maikel de Vries | 151f275618 | |
Maikel de Vries | 3529769011 | |
Maikel de Vries | ff47339e80 | |
Maikel de Vries | 9c73e68871 | |
Charles Spurrill | 8e90011bca | |
Tobias Zwick | c8b4c52d7e | |
Tobias Zwick | 374f398ad4 | |
Tobias Zwick | d2bd18b7d8 | |
Tobias Zwick | 0d37166baf | |
Tobias Zwick | dc25e52c9c | |
Sven Eberhardt | c9afadbe00 | |
Sven Eberhardt | 8e086e7ce7 | |
Armin Burgmeier | f19caa12f1 | |
Tobias Zwick | d0cf12192a | |
Tobias Zwick | c784efa2b5 | |
Charles Spurrill | ef72fb651d | |
Andriel | 64202e2aef | |
Charles Spurrill | 1ffc6c5318 | |
Charles Spurrill | 4843b6bfdc | |
Charles Spurrill | 34288e6c63 | |
Charles Spurrill | f95cf01016 | |
Charles Spurrill | 43beaca4ba | |
Charles Spurrill | 6d20c9b053 | |
Charles Spurrill | 88251bd737 | |
Charles Spurrill | e42161b8a7 | |
Charles Spurrill | 7f28ead26d | |
Maikel de Vries | e922a1cf5d | |
Charles Spurrill | 9ffe48b335 | |
Charles Spurrill | cd23eb17e9 | |
Charles Spurrill | 49af589f6a | |
Charles Spurrill | 8d3ae71290 | |
Charles Spurrill | 229a9c59fb | |
Charles Spurrill | af644f6965 | |
Günther Brammer | 1ccc75f5eb | |
Günther Brammer | 0e80440c29 | |
David Dormagen | 85d720f88e | |
David Dormagen | f509d052e3 | |
David Dormagen | b985dcc931 | |
David Dormagen | fcba3e9a0e | |
Peter Wortmann | 4dfa3f9309 | |
Peter Wortmann | 114bfb6365 | |
Peter Wortmann | 75a404090d | |
Peter Wortmann | 8dcf8d1552 | |
Maikel de Vries | b3fb126124 | |
Maikel de Vries | 4b31ac8a72 | |
Maikel de Vries | aace5eb55a | |
Tobias Zwick | 210f798913 | |
Armin Burgmeier | 5daf87bed0 | |
Charles Spurrill | d9498a022b | |
Charles Spurrill | 881816a3ca | |
Tobias Zwick | 0e823cb38d | |
Tobias Zwick | 7ee8a3eda4 | |
Charles Spurrill | 3ba7c3477f | |
Tobias Zwick | 67e11130cd | |
Tobias Zwick | 3747393b49 | |
Tobias Zwick | 299a53eb86 | |
Charles Spurrill | f42a2933dc | |
David Dormagen | b694edd92d | |
Tobias Zwick | 0fb880d7aa | |
David Dormagen | 41e56f6a01 | |
David Dormagen | b830d15280 | |
David Dormagen | dfc942a08e | |
David Dormagen | b710623186 | |
David Dormagen | 9ca16d2965 | |
David Dormagen | acb9e7aaa9 | |
David Dormagen | d69bb6b378 | |
Russell | 1d9d8002a3 | |
Maikel de Vries | 1d1ad7252e | |
Maikel de Vries | 930505ee0d | |
Maikel de Vries | be410432a8 | |
Charles Spurrill | 5663bd2c4d | |
Maikel de Vries | 1af30d25ff | |
Tobias Zwick | 1cbca0b0a4 | |
Maikel de Vries | b94fd27a09 | |
Philipp Kern | 0a3098a496 | |
Tobias Zwick | 95a5afe82f | |
Tobias Zwick | 84cd06ce3c | |
Maikel de Vries | 70b63f6765 | |
Tobias Zwick | 17a17c0df9 | |
Maikel de Vries | f4368d7bff | |
Maikel de Vries | f4c3e5f0ea | |
Armin Burgmeier | 161cea8f9e |
|
@ -0,0 +1 @@
|
||||||
|
node: $Format:%H$
|
|
@ -0,0 +1,3 @@
|
||||||
|
.git_archival export-subst
|
||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
|
@ -1,5 +1,3 @@
|
||||||
syntax: glob
|
|
||||||
|
|
||||||
autom4te.cache
|
autom4te.cache
|
||||||
*~
|
*~
|
||||||
*.bak
|
*.bak
|
|
@ -488,7 +488,6 @@ set(OC_CLONK_SOURCES
|
||||||
src/object/C4Shape.h
|
src/object/C4Shape.h
|
||||||
src/platform/C4App.cpp
|
src/platform/C4App.cpp
|
||||||
src/platform/C4App.h
|
src/platform/C4App.h
|
||||||
src/platform/C4AppT.cpp
|
|
||||||
src/platform/C4AppWin32Impl.h
|
src/platform/C4AppWin32Impl.h
|
||||||
src/platform/C4FileMonitor.cpp
|
src/platform/C4FileMonitor.cpp
|
||||||
src/platform/C4FileMonitor.h
|
src/platform/C4FileMonitor.h
|
||||||
|
@ -502,6 +501,8 @@ set(OC_CLONK_SOURCES
|
||||||
src/platform/C4SoundLoaders.h
|
src/platform/C4SoundLoaders.h
|
||||||
src/platform/C4SoundSystem.cpp
|
src/platform/C4SoundSystem.cpp
|
||||||
src/platform/C4SoundSystem.h
|
src/platform/C4SoundSystem.h
|
||||||
|
src/platform/C4StdInProc.cpp
|
||||||
|
src/platform/C4StdInProc.h
|
||||||
src/platform/C4Video.cpp
|
src/platform/C4Video.cpp
|
||||||
src/platform/C4Video.h
|
src/platform/C4Video.h
|
||||||
src/platform/C4Window.h
|
src/platform/C4Window.h
|
||||||
|
@ -633,6 +634,10 @@ elseif(USE_SDL_MAINLOOP)
|
||||||
src/platform/C4AppSDL.cpp
|
src/platform/C4AppSDL.cpp
|
||||||
src/platform/C4WindowSDL.cpp
|
src/platform/C4WindowSDL.cpp
|
||||||
)
|
)
|
||||||
|
elseif(USE_CONSOLE)
|
||||||
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
|
src/platform/C4AppT.cpp
|
||||||
|
)
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
list(APPEND OC_SYSTEM_SOURCES
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
src/editor/C4ConsoleWin32.cpp
|
src/editor/C4ConsoleWin32.cpp
|
||||||
|
@ -734,10 +739,8 @@ CHECK_INCLUDE_FILE_CXX(natupnp.h HAVE_NATUPNP_H)
|
||||||
# 'Bool' and 'Window' to be defined. Unfortunately, this doesn't exist
|
# 'Bool' and 'Window' to be defined. Unfortunately, this doesn't exist
|
||||||
# as a CXX version (yet?).
|
# as a CXX version (yet?).
|
||||||
include(CheckIncludeFiles)
|
include(CheckIncludeFiles)
|
||||||
CHECK_INCLUDE_FILES(X11/Xlib.h X11/extensions/xf86vmode.h HAVE_X11_EXTENSIONS_XF86VMODE_H)
|
|
||||||
CHECK_INCLUDE_FILES(X11/Xlib.h X11/extensions/Xrandr.h HAVE_X11_EXTENSIONS_XRANDR_H)
|
CHECK_INCLUDE_FILES(X11/Xlib.h X11/extensions/Xrandr.h HAVE_X11_EXTENSIONS_XRANDR_H)
|
||||||
CHECK_INCLUDE_FILES(X11/Xlib.h X11/keysym.h HAVE_X11_KEYSYM_H)
|
CHECK_INCLUDE_FILES(X11/Xlib.h X11/keysym.h HAVE_X11_KEYSYM_H)
|
||||||
CHECK_INCLUDE_FILES(X11/Xlib.h X11/xpm.h HAVE_X11_XPM_H)
|
|
||||||
CHECK_INCLUDE_FILE_CXX(iconv.h HAVE_ICONV)
|
CHECK_INCLUDE_FILE_CXX(iconv.h HAVE_ICONV)
|
||||||
|
|
||||||
if(HAVE_ICONV)
|
if(HAVE_ICONV)
|
||||||
|
@ -1234,13 +1237,9 @@ if(USE_GTK)
|
||||||
endif()
|
endif()
|
||||||
if(USE_X11)
|
if(USE_X11)
|
||||||
FINDLIB(X11_LIBRARIES X11)
|
FINDLIB(X11_LIBRARIES X11)
|
||||||
FINDLIB(XPM_LIBRARIES Xpm)
|
|
||||||
FINDLIB(XXF86VM_LIBRARIES Xxf86vm)
|
|
||||||
FINDLIB(XRANDR_LIBRARIES Xrandr)
|
FINDLIB(XRANDR_LIBRARIES Xrandr)
|
||||||
target_link_libraries(clonk
|
target_link_libraries(clonk
|
||||||
${X11_LIBRARIES}
|
${X11_LIBRARIES}
|
||||||
${XPM_LIBRARIES}
|
|
||||||
${XXF86VM_LIBRARIES}
|
|
||||||
${XRANDR_LIBRARIES}
|
${XRANDR_LIBRARIES}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -22,4 +22,4 @@ David Dormagen (Zapper)
|
||||||
Tobias Zwick (Newton)
|
Tobias Zwick (Newton)
|
||||||
|
|
||||||
<Thanks to Contributors>
|
<Thanks to Contributors>
|
||||||
Benjamin Herr (Loriel), Matthias Rottländer (Matthi), Felix Riese (Fungiform), Manuel Riecke (MrBeast), Benedict Etzel (B_E), Carl-Philip Hänsch (Carli), Alexander Semeniuk (AlteredARMOR), Florian Graier (Nachtfalter), ST-DDT, Asmageddon, Merten Ehmig (Pluto), Mark Haßelbusch (Marky), Luchs, Peewee, Lauri Niskanen (Ape), Dominik Bayerl (Kanibal), Faby, Checkmaty, Gurkenglas, Clonkine, mizipzor, mixi, RedWolf Design GmbH and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.
|
Benjamin Herr (Loriel), Matthias Rottländer (Matthi), Felix Riese (Fungiform), Manuel Riecke (MrBeast), Benedict Etzel (B_E), Carl-Philip Hänsch (Carli), Alexander Semeniuk (AlteredARMOR), Florian Graier (Nachtfalter), Daniel Theuke (ST-DDT), Asmageddon, Merten Ehmig (Pluto), Mark Haßelbusch (Marky), Luchs, Peewee, Lauri Niskanen (Ape), Dominik Bayerl (Kanibal), Faby, Checkmaty, Gurkenglas, Clonkine, mizipzor, mixi, Pyrit, grgecko, Koronis, RedWolf Design GmbH and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.
|
54
Makefile.am
|
@ -76,7 +76,8 @@ do_subst = sed -e 's,[@]C4PROJECT[@],'"$$(sed -n 's/SET(C4PROJECT\s\+"\(.\+\)")/
|
||||||
-e 's,[@]C4XVER3[@],'"$$(sed -n 's/SET(C4XVER3\s\+\(.\+\))/\1/ p' $(srcdir)/Version.txt)"',g' \
|
-e 's,[@]C4XVER3[@],'"$$(sed -n 's/SET(C4XVER3\s\+\(.\+\))/\1/ p' $(srcdir)/Version.txt)"',g' \
|
||||||
-e 's,[@]C4XVER4[@],'"$$(sed -n 's/SET(C4XVER4\s\+\(.\+\))/\1/ p' $(srcdir)/Version.txt)"',g' \
|
-e 's,[@]C4XVER4[@],'"$$(sed -n 's/SET(C4XVER4\s\+\(.\+\))/\1/ p' $(srcdir)/Version.txt)"',g' \
|
||||||
-e 's,[@]C4VERSIONBUILDNAME[@],'"$$(sed -n 's/SET(C4VERSIONBUILDNAME\s\+"\(.\+\)")/\1/ p' $(srcdir)/Version.txt)"',g' \
|
-e 's,[@]C4VERSIONBUILDNAME[@],'"$$(sed -n 's/SET(C4VERSIONBUILDNAME\s\+"\(.\+\)")/\1/ p' $(srcdir)/Version.txt)"',g' \
|
||||||
-e 's,[@]C4VERSIONEXTRA[@],'"$$(sed -n 's/SET(C4VERSIONEXTRA\s\+"\(.\+\)")/\1/ p' $(srcdir)/Version.txt)"',g'
|
-e 's,[@]C4VERSIONEXTRA[@],'"$$(sed -n 's/SET(C4VERSIONEXTRA\s\+"\(.\+\)")/\1/ p' $(srcdir)/Version.txt)"',g' \
|
||||||
|
-e 's,[@]OC_BUILD_ID[@],,g'
|
||||||
|
|
||||||
C4Version.h: $(srcdir)/src/C4Version.h.in $(srcdir)/Version.txt
|
C4Version.h: $(srcdir)/src/C4Version.h.in $(srcdir)/Version.txt
|
||||||
$(do_subst) < $< > $@
|
$(do_subst) < $< > $@
|
||||||
|
@ -203,7 +204,6 @@ src/game/C4GraphicsSystem.h \
|
||||||
src/game/C4Physics.h \
|
src/game/C4Physics.h \
|
||||||
src/game/C4Viewport.cpp \
|
src/game/C4Viewport.cpp \
|
||||||
src/game/C4Viewport.h \
|
src/game/C4Viewport.h \
|
||||||
src/game/ClonkMain.cpp \
|
|
||||||
src/gamescript/C4Effect.cpp \
|
src/gamescript/C4Effect.cpp \
|
||||||
src/gamescript/C4Effects.h \
|
src/gamescript/C4Effects.h \
|
||||||
src/gamescript/C4FindObject.cpp \
|
src/gamescript/C4FindObject.cpp \
|
||||||
|
@ -304,8 +304,6 @@ src/gui/C4StartupPlrSelDlg.cpp \
|
||||||
src/gui/C4StartupPlrSelDlg.h \
|
src/gui/C4StartupPlrSelDlg.h \
|
||||||
src/gui/C4StartupScenSelDlg.cpp \
|
src/gui/C4StartupScenSelDlg.cpp \
|
||||||
src/gui/C4StartupScenSelDlg.h \
|
src/gui/C4StartupScenSelDlg.h \
|
||||||
src/gui/C4UpdateDlg.cpp \
|
|
||||||
src/gui/C4UpdateDlg.h \
|
|
||||||
src/gui/C4UpperBoard.cpp \
|
src/gui/C4UpperBoard.cpp \
|
||||||
src/gui/C4UpperBoard.h \
|
src/gui/C4UpperBoard.h \
|
||||||
src/landscape/C4Landscape.cpp \
|
src/landscape/C4Landscape.cpp \
|
||||||
|
@ -452,7 +450,6 @@ src/object/C4Shape.cpp \
|
||||||
src/object/C4Shape.h \
|
src/object/C4Shape.h \
|
||||||
src/platform/C4App.cpp \
|
src/platform/C4App.cpp \
|
||||||
src/platform/C4App.h \
|
src/platform/C4App.h \
|
||||||
src/platform/C4AppT.cpp \
|
|
||||||
src/platform/C4AppWin32Impl.h \
|
src/platform/C4AppWin32Impl.h \
|
||||||
src/platform/C4FileMonitor.cpp \
|
src/platform/C4FileMonitor.cpp \
|
||||||
src/platform/C4FileMonitor.h \
|
src/platform/C4FileMonitor.h \
|
||||||
|
@ -466,6 +463,8 @@ src/platform/C4SoundLoaders.cpp \
|
||||||
src/platform/C4SoundLoaders.h \
|
src/platform/C4SoundLoaders.h \
|
||||||
src/platform/C4SoundSystem.cpp \
|
src/platform/C4SoundSystem.cpp \
|
||||||
src/platform/C4SoundSystem.h \
|
src/platform/C4SoundSystem.h \
|
||||||
|
src/platform/C4StdInProc.cpp \
|
||||||
|
src/platform/C4StdInProc.h \
|
||||||
src/platform/C4Video.cpp \
|
src/platform/C4Video.cpp \
|
||||||
src/platform/C4Video.h \
|
src/platform/C4Video.h \
|
||||||
src/platform/C4Window.h \
|
src/platform/C4Window.h \
|
||||||
|
@ -537,6 +536,16 @@ src/res/engine.rc \
|
||||||
src/res/resource.h
|
src/res/resource.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if MACOSX
|
||||||
|
clonk_SOURCES += \
|
||||||
|
src/platform/C4AppDelegate.h \
|
||||||
|
src/platform/C4AppDelegate.mm \
|
||||||
|
src/platform/C4FileMonitorMac.mm
|
||||||
|
else
|
||||||
|
clonk_SOURCES += \
|
||||||
|
src/game/ClonkMain.cpp
|
||||||
|
endif
|
||||||
|
|
||||||
if SDL_MAIN_LOOP
|
if SDL_MAIN_LOOP
|
||||||
clonk_SOURCES += \
|
clonk_SOURCES += \
|
||||||
src/platform/C4AppSDL.cpp \
|
src/platform/C4AppSDL.cpp \
|
||||||
|
@ -551,6 +560,10 @@ src/platform/C4AppGTK.cpp \
|
||||||
src/platform/C4AppGTKImpl.h \
|
src/platform/C4AppGTKImpl.h \
|
||||||
src/platform/C4WindowGTK.cpp
|
src/platform/C4WindowGTK.cpp
|
||||||
else
|
else
|
||||||
|
if CONSOLE
|
||||||
|
clonk_SOURCES += \
|
||||||
|
src/platform/C4AppT.cpp
|
||||||
|
else
|
||||||
if WIN32
|
if WIN32
|
||||||
clonk_SOURCES += \
|
clonk_SOURCES += \
|
||||||
src/editor/C4ConsoleWin32.cpp \
|
src/editor/C4ConsoleWin32.cpp \
|
||||||
|
@ -561,23 +574,28 @@ endif
|
||||||
if MACOSX
|
if MACOSX
|
||||||
clonk_SOURCES += \
|
clonk_SOURCES += \
|
||||||
src/editor/C4ConsoleCocoa.mm \
|
src/editor/C4ConsoleCocoa.mm \
|
||||||
|
src/editor/C4EditorWindowController.h \
|
||||||
|
src/editor/C4EditorWindowController.mm \
|
||||||
|
src/graphics/C4DrawGLMac.h \
|
||||||
|
src/graphics/C4DrawGLMac.mm \
|
||||||
|
src/platform/C4AppDelegate+MainMenuActions.h \
|
||||||
|
src/platform/C4AppDelegate+MainMenuActions.mm \
|
||||||
src/platform/C4AppMac.mm \
|
src/platform/C4AppMac.mm \
|
||||||
src/platform/C4FileMonitorMac.mm \
|
src/platform/C4WindowController.h \
|
||||||
|
src/platform/C4WindowController.mm \
|
||||||
src/platform/C4WindowMac.mm \
|
src/platform/C4WindowMac.mm \
|
||||||
src/platform/ClonkAppDelegate.h \
|
|
||||||
src/platform/ClonkAppDelegate.mm \
|
|
||||||
src/platform/ConsoleWindowController.h \
|
|
||||||
src/platform/ConsoleWindowController.mm \
|
|
||||||
src/platform/ClonkWindowController.h \
|
|
||||||
src/platform/ClonkWindowController.mm \
|
|
||||||
src/platform/ClonkOpenGLView.h \
|
|
||||||
src/platform/ClonkOpenGLView.mm \
|
|
||||||
src/platform/CocoaKeycodeMap.h \
|
src/platform/CocoaKeycodeMap.h \
|
||||||
src/platform/ClonkMainMenuActions.h \
|
src/platform/ObjectiveCAssociated.h
|
||||||
src/platform/ClonkMainMenuActions.mm
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if AUTOUPDATE
|
||||||
|
clonk_SOURCES += \
|
||||||
|
src/gui/C4UpdateDlg.cpp \
|
||||||
|
src/gui/C4UpdateDlg.h
|
||||||
|
endif
|
||||||
|
|
||||||
if LIBUPNP
|
if LIBUPNP
|
||||||
clonk_SOURCES += src/network/C4Network2UPnPLinux.cpp
|
clonk_SOURCES += src/network/C4Network2UPnPLinux.cpp
|
||||||
|
@ -718,7 +736,9 @@ c4groups = \
|
||||||
Sound.ocg \
|
Sound.ocg \
|
||||||
System.ocg \
|
System.ocg \
|
||||||
Objects.ocd \
|
Objects.ocd \
|
||||||
BackToTheRocks.ocf \
|
Arena.ocf \
|
||||||
|
Parkour.ocf \
|
||||||
|
Settlement.ocf \
|
||||||
Tutorial.ocf
|
Tutorial.ocf
|
||||||
|
|
||||||
CLEANFILES += $(c4groups)
|
CLEANFILES += $(c4groups)
|
||||||
|
|
22
Version.txt
|
@ -13,8 +13,8 @@ SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}")
|
||||||
|
|
||||||
SET(C4XVER1 5)
|
SET(C4XVER1 5)
|
||||||
SET(C4XVER2 3)
|
SET(C4XVER2 3)
|
||||||
SET(C4XVER3 1)
|
SET(C4XVER3 3)
|
||||||
SET(C4XVER4 23)
|
SET(C4XVER4 25)
|
||||||
|
|
||||||
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
||||||
# for alpha and beta releases, and meaningful and stable for stable releases.
|
# for alpha and beta releases, and meaningful and stable for stable releases.
|
||||||
|
@ -23,22 +23,10 @@ SET(C4VERSIONBUILDNAME " Beyond the Rocks")
|
||||||
SET(C4VERSIONEXTRA " Delta")
|
SET(C4VERSIONEXTRA " Delta")
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# Get revision from Mercurial
|
# Get revision from Git
|
||||||
############################################################################
|
############################################################################
|
||||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.hg_archival.txt")
|
include(GitGetChangesetID)
|
||||||
# Archives generated by hg archive
|
git_get_changeset_id(C4REVISION)
|
||||||
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/.hg_archival.txt" C4REVISION
|
|
||||||
LIMIT_COUNT 1
|
|
||||||
REGEX "node: [0-9a-f]+"
|
|
||||||
)
|
|
||||||
string(SUBSTRING "${C4REVISION}" 6 12 C4REVISION)
|
|
||||||
else()
|
|
||||||
# Working copies
|
|
||||||
execute_process(WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
COMMAND "hg" "id" "--id"
|
|
||||||
OUTPUT_VARIABLE C4REVISION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# Get year
|
# Get year
|
||||||
|
|
|
@ -24,15 +24,17 @@
|
||||||
|
|
||||||
find_path(UPNP_INCLUDE_DIR NAMES upnp.h PATH_SUFFIXES upnp)
|
find_path(UPNP_INCLUDE_DIR NAMES upnp.h PATH_SUFFIXES upnp)
|
||||||
set(UPNP_NAMES ${UPNP_NAMES} upnp)
|
set(UPNP_NAMES ${UPNP_NAMES} upnp)
|
||||||
|
set(THREADUTIL_NAMES ${THREADUTIL_NAMES} threadutil)
|
||||||
set(IXML_NAMES ${IXML_NAMES} ixml)
|
set(IXML_NAMES ${IXML_NAMES} ixml)
|
||||||
find_library(UPNP_LIBRARY NAMES ${UPNP_NAMES})
|
find_library(UPNP_LIBRARY NAMES ${UPNP_NAMES})
|
||||||
|
find_library(THREADUTIL_LIBRARY NAMES ${THREADUTIL_NAMES})
|
||||||
find_library(IXML_LIBRARY NAMES ${IXML_NAMES})
|
find_library(IXML_LIBRARY NAMES ${IXML_NAMES})
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UPNP DEFAULT_MSG UPNP_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UPNP DEFAULT_MSG UPNP_LIBRARY THREADUTIL_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
||||||
|
|
||||||
if(UPNP_FOUND)
|
if(UPNP_FOUND)
|
||||||
set(UPNP_LIBRARIES ${UPNP_LIBRARY} ${IXML_LIBRARY})
|
set(UPNP_LIBRARIES ${UPNP_LIBRARY} ${THREADUTIL_LIBRARY} ${IXML_LIBRARY})
|
||||||
set(UPNP_INCLUDE_DIR ${UPNP_INCLUDE_DIR})
|
set(UPNP_INCLUDE_DIR ${UPNP_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
function(git_get_changeset_id VAR)
|
||||||
|
find_package(Git QUIET)
|
||||||
|
if (GIT_FOUND)
|
||||||
|
execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
COMMAND "${GIT_EXECUTABLE}" "rev-parse" "HEAD"
|
||||||
|
RESULT_VARIABLE GIT_RESULT
|
||||||
|
OUTPUT_VARIABLE C4REVISION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET)
|
||||||
|
|
||||||
|
if(GIT_RESULT EQUAL 0)
|
||||||
|
string(SUBSTRING "${C4REVISION}" 0 12 C4REVISION)
|
||||||
|
execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
COMMAND "${GIT_EXECUTABLE}" "status" "--porcelain"
|
||||||
|
OUTPUT_VARIABLE GIT_STATUS
|
||||||
|
)
|
||||||
|
string(REGEX MATCH "^[MADRC ][MD ]" WORKDIR_DIRTY "${GIT_STATUS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if (NOT C4REVISION)
|
||||||
|
# Git not found or not a git workdir
|
||||||
|
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/.git_archival" C4REVISION
|
||||||
|
LIMIT_COUNT 1
|
||||||
|
REGEX "node: [0-9a-f]+"
|
||||||
|
)
|
||||||
|
string(LENGTH "${C4REVISION}" revlength)
|
||||||
|
if(revlength LESS 18)
|
||||||
|
set(C4REVISION "unknown")
|
||||||
|
message(WARNING "Could not retrieve git revision. Please set GIT_EXECUTABLE!")
|
||||||
|
else()
|
||||||
|
string(SUBSTRING "${C4REVISION}" 6 12 C4REVISION)
|
||||||
|
endif()
|
||||||
|
unset(revlength)
|
||||||
|
endif()
|
||||||
|
if(WORKDIR_DIRTY)
|
||||||
|
set(C4REVISION "${C4REVISION}+")
|
||||||
|
endif()
|
||||||
|
set(${VAR} "${C4REVISION}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
|
@ -111,18 +111,12 @@
|
||||||
|
|
||||||
#cmakedefine HAVE_VFW32
|
#cmakedefine HAVE_VFW32
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/extensions/xf86vmode.h> header file. */
|
|
||||||
#cmakedefine HAVE_X11_EXTENSIONS_XF86VMODE_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
|
/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
|
||||||
#cmakedefine HAVE_X11_EXTENSIONS_XRANDR_H 1
|
#cmakedefine HAVE_X11_EXTENSIONS_XRANDR_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/keysym.h> header file. */
|
/* Define to 1 if you have the <X11/keysym.h> header file. */
|
||||||
#cmakedefine HAVE_X11_KEYSYM_H 1
|
#cmakedefine HAVE_X11_KEYSYM_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/xpm.h> header file. */
|
|
||||||
#cmakedefine HAVE_X11_XPM_H 1
|
|
||||||
|
|
||||||
/* Define as const if the declaration of iconv() needs const. */
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
#cmakedefine ICONV_CONST
|
#cmakedefine ICONV_CONST
|
||||||
|
|
||||||
|
|
|
@ -120,18 +120,12 @@
|
||||||
/* */
|
/* */
|
||||||
#undef HAVE_VFW32
|
#undef HAVE_VFW32
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/extensions/xf86vmode.h> header file. */
|
|
||||||
#undef HAVE_X11_EXTENSIONS_XF86VMODE_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
|
/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
|
||||||
#undef HAVE_X11_EXTENSIONS_XRANDR_H
|
#undef HAVE_X11_EXTENSIONS_XRANDR_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/keysym.h> header file. */
|
/* Define to 1 if you have the <X11/keysym.h> header file. */
|
||||||
#undef HAVE_X11_KEYSYM_H
|
#undef HAVE_X11_KEYSYM_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <X11/xpm.h> header file. */
|
|
||||||
#undef HAVE_X11_XPM_H
|
|
||||||
|
|
||||||
/* Define as const if the declaration of iconv() needs const. */
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
#undef ICONV_CONST
|
#undef ICONV_CONST
|
||||||
|
|
||||||
|
|
11
configure.ac
|
@ -147,7 +147,7 @@ AC_ARG_WITH([openal],
|
||||||
[AS_HELP_STRING([--with-openal],[compile with openal support [default=no]])],
|
[AS_HELP_STRING([--with-openal],[compile with openal support [default=no]])],
|
||||||
, [with_openal=no])
|
, [with_openal=no])
|
||||||
if test $with_openal = yes; then
|
if test $with_openal = yes; then
|
||||||
PKG_CHECK_MODULES(OPENAL, [vorbis vorbisfile openal])
|
PKG_CHECK_MODULES(OPENAL, [vorbis vorbisfile openal freealut])
|
||||||
AC_DEFINE([USE_OPEN_AL], 1, [OpenAL sound])
|
AC_DEFINE([USE_OPEN_AL], 1, [OpenAL sound])
|
||||||
if test $enable_sound = no; then
|
if test $enable_sound = no; then
|
||||||
AC_MSG_ERROR([--with-openal cannot be used with --disable-sound.])
|
AC_MSG_ERROR([--with-openal cannot be used with --disable-sound.])
|
||||||
|
@ -208,6 +208,7 @@ else
|
||||||
enable_sdlmainloop=no
|
enable_sdlmainloop=no
|
||||||
VL_LIB_READLINE
|
VL_LIB_READLINE
|
||||||
fi
|
fi
|
||||||
|
AM_CONDITIONAL([CONSOLE], [test $enable_console = yes])
|
||||||
|
|
||||||
# Check for boost
|
# Check for boost
|
||||||
AX_BOOST_BASE([1.40.0], [], [
|
AX_BOOST_BASE([1.40.0], [], [
|
||||||
|
@ -256,19 +257,15 @@ if test $enable_console = no; then
|
||||||
AC_DEFINE(HAVE_FREETYPE, 1, [Define to 1 if you have FreeType2.])
|
AC_DEFINE(HAVE_FREETYPE, 1, [Define to 1 if you have FreeType2.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# X11, Xpm, Xrandr
|
# X11, Xrandr
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
if test $have_x = yes; then
|
if test $have_x = yes; then
|
||||||
AC_DEFINE(USE_X11, 1, [Define to 1 if the X Window System is used])
|
AC_DEFINE(USE_X11, 1, [Define to 1 if the X Window System is used])
|
||||||
CLONK_LIBS="$X_LIBS $CLONK_LIBS"
|
CLONK_LIBS="$X_LIBS $CLONK_LIBS"
|
||||||
AC_CHECK_HEADERS([X11/keysym.h X11/extensions/xf86vmode.h X11/xpm.h X11/extensions/Xrandr.h], ,
|
AC_CHECK_HEADERS([X11/keysym.h X11/extensions/Xrandr.h], ,
|
||||||
[AC_MSG_ERROR([A required X11 header was not found.])], [[#include <X11/Xlib.h>]])
|
[AC_MSG_ERROR([A required X11 header was not found.])], [[#include <X11/Xlib.h>]])
|
||||||
AC_CHECK_LIB(X11, XOpenDisplay, [CLONK_LIBS="-lX11 $CLONK_LIBS"],
|
AC_CHECK_LIB(X11, XOpenDisplay, [CLONK_LIBS="-lX11 $CLONK_LIBS"],
|
||||||
[AC_MSG_ERROR([libX11 not found.])], [$X_LIBS])
|
[AC_MSG_ERROR([libX11 not found.])], [$X_LIBS])
|
||||||
AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [CLONK_LIBS="-lXpm $CLONK_LIBS"],
|
|
||||||
[AC_MSG_ERROR([libXpm not found.])], [$X_LIBS])
|
|
||||||
AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [CLONK_LIBS="-lXxf86vm $CLONK_LIBS"],
|
|
||||||
[AC_MSG_ERROR([XF86VidMode not found.])], [$X_LIBS])
|
|
||||||
AC_CHECK_LIB(Xrandr, XRRQueryExtension, [CLONK_LIBS="-lXrandr $CLONK_LIBS"],
|
AC_CHECK_LIB(Xrandr, XRRQueryExtension, [CLONK_LIBS="-lXrandr $CLONK_LIBS"],
|
||||||
[AC_MSG_ERROR([libXrandr not found.])], [$X_LIBS])
|
[AC_MSG_ERROR([libXrandr not found.])], [$X_LIBS])
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -140,6 +140,17 @@ if ($link && $db) {
|
||||||
$version = $row['new_version'];
|
$version = $row['new_version'];
|
||||||
if ($version) {
|
if ($version) {
|
||||||
$message .= 'Version=' . $version . PHP_EOL;
|
$message .= 'Version=' . $version . PHP_EOL;
|
||||||
|
// strip build version from client request
|
||||||
|
$n = 0;
|
||||||
|
for($i=0;$i<strlen($client_version);$i++){
|
||||||
|
if($client_version[$i]=='.'){
|
||||||
|
$n++;
|
||||||
|
if($n>=3){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$client_version = substr($client_version,0,$i);
|
||||||
if (version_compare($client_version, $version) < 0) { //We need to update
|
if (version_compare($client_version, $version) < 0) { //We need to update
|
||||||
$result = mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `old_version` = \'' . $client_version . '\' AND `platform` = \'' . $platform . '\'');
|
$result = mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `old_version` = \'' . $client_version . '\' AND `platform` = \'' . $platform . '\'');
|
||||||
$row = mysql_fetch_assoc($result);
|
$row = mysql_fetch_assoc($result);
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
* -crlf
|
||||||
|
|
|
@ -3,7 +3,6 @@ Icon=13
|
||||||
Title=FrozenFortress
|
Title=FrozenFortress
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
MaxPlayer=8
|
|
||||||
Difficulty=80
|
Difficulty=80
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -20,8 +20,8 @@ protected func Initialize()
|
||||||
|
|
||||||
// Goal: Capture the flag, with bases in both hideouts.
|
// Goal: Capture the flag, with bases in both hideouts.
|
||||||
var goal = CreateObject(Goal_CaptureTheFlag, 0, 0, NO_OWNER);
|
var goal = CreateObject(Goal_CaptureTheFlag, 0, 0, NO_OWNER);
|
||||||
goal->SetFlagBase(1, 135, 264);
|
goal->SetFlagBase(1, 135, 266);
|
||||||
goal->SetFlagBase(2, LandscapeWidth() - 135, 264);
|
goal->SetFlagBase(2, LandscapeWidth() - 135, 266);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
|
||||||
var gate = CreateObject(StoneDoor, 345, 272, NO_OWNER);
|
var gate = CreateObject(StoneDoor, 345, 272, NO_OWNER);
|
||||||
|
|
|
@ -45,7 +45,9 @@ public func FxFrostboltTimer(pTarget, effect, iEffectTime)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
CreateObject(Dynamite,x,y,effect.owner)->BlueExplode();
|
CreateObject(Dynamite,x,y,effect.owner)->BlueExplode();
|
||||||
CreateObject(Star,x,y,-1)->Sound("GlassShatter");
|
var dummy = CreateObject(Dummy,x,y,-1);
|
||||||
|
dummy->Sound("GlassShatter");
|
||||||
|
ScheduleCall(dummy, "RemoveObject", 36);
|
||||||
for(var i=0; i<=60;i++)
|
for(var i=0; i<=60;i++)
|
||||||
{
|
{
|
||||||
var r=Random(10)+Random(18);
|
var r=Random(10)+Random(18);
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
#appendto StoneDoor
|
#appendto StoneDoor
|
||||||
|
|
||||||
private func GetStrength() { return 300; }
|
|
||||||
|
|
||||||
protected func Damage()
|
protected func Damage()
|
||||||
{
|
{
|
||||||
// Destroy if damage above strength.
|
// Destroy if damage above strength.
|
||||||
|
|
|
@ -3,7 +3,6 @@ Icon=13
|
||||||
Title=Hideout
|
Title=Hideout
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
MaxPlayer=8
|
|
||||||
Difficulty=90
|
Difficulty=90
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -14,34 +14,43 @@ protected func Initialize()
|
||||||
|
|
||||||
// Goal: Capture the flag, with bases in both hideouts.
|
// Goal: Capture the flag, with bases in both hideouts.
|
||||||
var goal = CreateObject(Goal_CaptureTheFlag, 0, 0, NO_OWNER);
|
var goal = CreateObject(Goal_CaptureTheFlag, 0, 0, NO_OWNER);
|
||||||
goal->SetFlagBase(1, 120, 504);
|
goal->SetFlagBase(1, 120, 506);
|
||||||
goal->SetFlagBase(2, LandscapeWidth() - 120, 504);
|
goal->SetFlagBase(2, LandscapeWidth() - 120, 506);
|
||||||
|
|
||||||
// Rules
|
// Rules
|
||||||
CreateObject(Rule_Restart);
|
CreateObject(Rule_Restart);
|
||||||
CreateObject(Rule_ObjectFade)->DoFadeTime(5 * 36);
|
CreateObject(Rule_ObjectFade)->DoFadeTime(5 * 36);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
|
var lwidth = LandscapeWidth();
|
||||||
|
|
||||||
// Doors and spinwheels.
|
// Doors and spinwheels.
|
||||||
var gate, wheel;
|
var gate, wheel;
|
||||||
gate = CreateObject(StoneDoor, 365, 448, NO_OWNER);
|
gate = CreateObject(StoneDoor, 364, 448, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", 360, 446, 360, 448, 368, 448, 368, 446);
|
||||||
gate->DoDamage(50); // Upper doors are easier to destroy
|
gate->DoDamage(50); // Upper doors are easier to destroy
|
||||||
gate->SetAutoControl(1);
|
gate->SetAutoControl(1);
|
||||||
gate = CreateObject(StoneDoor, 341, 584, NO_OWNER);
|
gate = CreateObject(StoneDoor, 340, 584, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", 336, 582, 336, 584, 344, 584, 344, 582);
|
||||||
gate->SetAutoControl(1);
|
gate->SetAutoControl(1);
|
||||||
gate = CreateObject(StoneDoor, 693, 544, NO_OWNER);
|
gate = CreateObject(StoneDoor, 692, 544, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", 688, 542, 688, 544, 696, 544, 696, 542);
|
||||||
gate->DoDamage(80); // Middle doors even easier
|
gate->DoDamage(80); // Middle doors even easier
|
||||||
wheel = CreateObject(SpinWheel, 660, 552, NO_OWNER);
|
wheel = CreateObject(SpinWheel, 660, 552, NO_OWNER);
|
||||||
wheel->SetStoneDoor(gate);
|
wheel->SetStoneDoor(gate);
|
||||||
|
|
||||||
gate = CreateObject(StoneDoor, LandscapeWidth() - 364, 448, NO_OWNER);
|
gate = CreateObject(StoneDoor, lwidth - 364, 448, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", lwidth - 361, 446, lwidth - 361, 448, lwidth - 365, 448, lwidth - 365, 446);
|
||||||
gate->DoDamage(50); // Upper doors are easier to destroy
|
gate->DoDamage(50); // Upper doors are easier to destroy
|
||||||
gate->SetAutoControl(2);
|
gate->SetAutoControl(2);
|
||||||
gate = CreateObject(StoneDoor, LandscapeWidth() - 340, 584, NO_OWNER);
|
gate = CreateObject(StoneDoor, lwidth - 340, 584, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", lwidth - 337, 582, lwidth - 337, 584, lwidth - 345, 584, lwidth - 345, 582);
|
||||||
gate->SetAutoControl(2);
|
gate->SetAutoControl(2);
|
||||||
gate = CreateObject(StoneDoor, LandscapeWidth() - 692, 544, NO_OWNER);
|
gate = CreateObject(StoneDoor, lwidth - 692, 544, NO_OWNER);
|
||||||
|
DrawMaterialQuad("Tunnel-brickback", lwidth - 689, 542, lwidth - 689, 544, lwidth - 697, 544, lwidth - 697, 542);
|
||||||
gate->DoDamage(80); // Middle doors even easier
|
gate->DoDamage(80); // Middle doors even easier
|
||||||
wheel = CreateObject(SpinWheel, LandscapeWidth() - 660, 552, NO_OWNER);
|
wheel = CreateObject(SpinWheel, lwidth - 660, 552, NO_OWNER);
|
||||||
wheel->SetStoneDoor(gate);
|
wheel->SetStoneDoor(gate);
|
||||||
|
|
||||||
// Chests with weapons.
|
// Chests with weapons.
|
||||||
|
@ -55,16 +64,16 @@ protected func Initialize()
|
||||||
chest = CreateObject(Chest, 730, 408, NO_OWNER);
|
chest = CreateObject(Chest, 730, 408, NO_OWNER);
|
||||||
chest->MakeInvincible();
|
chest->MakeInvincible();
|
||||||
AddEffect("FillOtherChest", chest, 100, 6 * 36);
|
AddEffect("FillOtherChest", chest, 100, 6 * 36);
|
||||||
chest = CreateObject(Chest, LandscapeWidth() - 110, 592, NO_OWNER);
|
chest = CreateObject(Chest, lwidth - 110, 592, NO_OWNER);
|
||||||
chest->MakeInvincible();
|
chest->MakeInvincible();
|
||||||
AddEffect("FillBaseChest", chest, 100, 6 * 36,nil,nil,true);
|
AddEffect("FillBaseChest", chest, 100, 6 * 36,nil,nil,true);
|
||||||
chest = CreateObject(Chest, LandscapeWidth() - 25, 464, NO_OWNER);
|
chest = CreateObject(Chest, lwidth - 25, 464, NO_OWNER);
|
||||||
chest->MakeInvincible();
|
chest->MakeInvincible();
|
||||||
AddEffect("FillBaseChest", chest, 100, 6 * 36,nil,nil,false);
|
AddEffect("FillBaseChest", chest, 100, 6 * 36,nil,nil,false);
|
||||||
chest = CreateObject(Chest, LandscapeWidth() - 730, 408, NO_OWNER);
|
chest = CreateObject(Chest, lwidth - 730, 408, NO_OWNER);
|
||||||
chest->MakeInvincible();
|
chest->MakeInvincible();
|
||||||
AddEffect("FillOtherChest", chest, 100, 6 * 36);
|
AddEffect("FillOtherChest", chest, 100, 6 * 36);
|
||||||
chest = CreateObject(Chest, LandscapeWidth()/2, 512, NO_OWNER);
|
chest = CreateObject(Chest, lwidth/2, 512, NO_OWNER);
|
||||||
chest->MakeInvincible();
|
chest->MakeInvincible();
|
||||||
AddEffect("FillSpecialChest", chest, 100, 4 * 36);
|
AddEffect("FillSpecialChest", chest, 100, 4 * 36);
|
||||||
|
|
||||||
|
@ -76,7 +85,7 @@ protected func Initialize()
|
||||||
cannon->SetDir(DIR_Right);
|
cannon->SetDir(DIR_Right);
|
||||||
cannon->SetR(15);
|
cannon->SetR(15);
|
||||||
cannon->CreateContents(PowderKeg);
|
cannon->CreateContents(PowderKeg);
|
||||||
cannon = CreateObject(Cannon, LandscapeWidth() - 429, 444, NO_OWNER);
|
cannon = CreateObject(Cannon, lwidth - 429, 444, NO_OWNER);
|
||||||
cannon->SetDir(DIR_Left);
|
cannon->SetDir(DIR_Left);
|
||||||
cannon->SetR(-15);
|
cannon->SetR(-15);
|
||||||
cannon->CreateContents(PowderKeg);
|
cannon->CreateContents(PowderKeg);
|
||||||
|
|
|
@ -3,7 +3,6 @@ Title=MoltenMonarch
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
Icon=23
|
Icon=23
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
MaxPlayer=8
|
|
||||||
Difficulty=70
|
Difficulty=70
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -17,6 +17,7 @@ protected func Initialize()
|
||||||
// Objects fade after 7 seconds.
|
// Objects fade after 7 seconds.
|
||||||
CreateObject(Rule_ObjectFade)->DoFadeTime(7 * 36);
|
CreateObject(Rule_ObjectFade)->DoFadeTime(7 * 36);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
//make lava collapse
|
//make lava collapse
|
||||||
CreateObject(Firestone,625,480);
|
CreateObject(Firestone,625,480);
|
||||||
|
|
|
@ -12,6 +12,7 @@ protected func Initialize()
|
||||||
// Goal.
|
// Goal.
|
||||||
CreateObject(Goal_LastManStanding);
|
CreateObject(Goal_LastManStanding);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
//Enviroment.
|
//Enviroment.
|
||||||
Cloud->Place(25);
|
Cloud->Place(25);
|
||||||
|
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
@ -2,7 +2,6 @@
|
||||||
Title=Bottom
|
Title=Bottom
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
MaxPlayer=4
|
|
||||||
Difficulty=20
|
Difficulty=20
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -11,6 +11,7 @@ protected func Initialize()
|
||||||
// Goal.
|
// Goal.
|
||||||
CreateObject(Goal_LastManStanding, 0, 0, NO_OWNER);
|
CreateObject(Goal_LastManStanding, 0, 0, NO_OWNER);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
// Chests with weapons.
|
// Chests with weapons.
|
||||||
CreateObject(Chest, 108, 248, NO_OWNER)->MakeInvincible();
|
CreateObject(Chest, 108, 248, NO_OWNER)->MakeInvincible();
|
||||||
|
@ -18,17 +19,47 @@ protected func Initialize()
|
||||||
|
|
||||||
// Objects fade after 5 seconds.
|
// Objects fade after 5 seconds.
|
||||||
CreateObject(Rule_ObjectFade)->DoFadeTime(7 * 36);
|
CreateObject(Rule_ObjectFade)->DoFadeTime(7 * 36);
|
||||||
|
|
||||||
|
// Some decoration trunks ranks and a waterfall.
|
||||||
|
var trunk = CreateObject(Trunk, 76, 324);
|
||||||
|
trunk->SetR(60); trunk.Plane = 510;
|
||||||
|
trunk.MeshTransformation = [-731, 0, 682, 0, 0, 1000, 0, 0, -682, 0, -731, 0];
|
||||||
|
trunk = CreateObject(Trunk, 123, 68);
|
||||||
|
trunk->SetR(115); trunk.Plane = 510;
|
||||||
|
trunk.MeshTransformation = [469, 0, 883, 0, 0, 1000, 0, 0, -883, 0, 469, 0];
|
||||||
|
trunk = CreateObject(Trunk, 172, 134);
|
||||||
|
trunk->SetR(-110); trunk.Plane = 510;
|
||||||
|
trunk.MeshTransformation = [-545, 0, -839, 0, 0, 1000, 0, 0, 839, 0, -545, 0];
|
||||||
|
|
||||||
|
var waterfall;
|
||||||
|
waterfall = CreateWaterfall(130, 53, 2, "Water");
|
||||||
|
waterfall->SetDirection(4, 0, 3, 6);
|
||||||
|
waterfall = CreateWaterfall(144, 50, 8, "Water");
|
||||||
|
waterfall->SetDirection(6, 0, 5, 6);
|
||||||
|
CreateLiquidDrain(100, 315, 10);
|
||||||
|
CreateLiquidDrain(130, 315, 10);
|
||||||
|
CreateLiquidDrain(160, 315, 10);
|
||||||
|
|
||||||
|
CreateObject(Fern, 48, 114);
|
||||||
|
CreateObject(Fern, 284, 128);
|
||||||
|
CreateObject(Lorry, 294, 128)->SetR(20);
|
||||||
|
CreateObject(Pickaxe, 260, 128)->SetR(-45);
|
||||||
|
CreateObject(Mushroom, 271, 136);
|
||||||
|
|
||||||
|
CreateObject(Rank, 146, 302)->SetR(180);
|
||||||
|
CreateObject(Rank, 198, 190)->SetR(225);
|
||||||
|
CreateObject(Rank, 54, 66)->SetR(180);
|
||||||
|
CreateObject(Rank, 42, 232)->SetR(120);
|
||||||
|
CreateObject(Rank, 269, 230)->SetR(-120);
|
||||||
|
|
||||||
|
for (var i = 0; i < 2 + Random(6); i++)
|
||||||
|
CreateObject(Rank, 114, 10 + Random(140))->SetR(RandomX(60, 120));
|
||||||
|
for (var i = 0; i < 2 + Random(6); i++)
|
||||||
|
CreateObject(Rank, 190, 10 + Random(140))->SetR(-RandomX(60, 120));
|
||||||
|
|
||||||
//Water needs to be OK
|
|
||||||
AddEffect("Refiller",nil,100,6);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
global func FxRefillerTimer(object pTarget, effect, int timer)
|
|
||||||
{
|
|
||||||
for(var i=0; i<10; i++) if(!GBackLiquid(100,315)) InsertMaterial(Material("Water"),135,385);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gamecall from LastManStanding goal, on respawning.
|
// Gamecall from LastManStanding goal, on respawning.
|
||||||
protected func OnPlayerRelaunch(int plr)
|
protected func OnPlayerRelaunch(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,7 @@ private func OpenWeaponMenu(object clonk)
|
||||||
var weapons = WeaponList();
|
var weapons = WeaponList();
|
||||||
if(weapons)
|
if(weapons)
|
||||||
{
|
{
|
||||||
menu = clonk->CreateRingMenu(Clonk, this);
|
menu = clonk->CreateRingMenu(this, this);
|
||||||
for (var weapon in weapons)
|
for (var weapon in weapons)
|
||||||
{
|
{
|
||||||
if(weapon == Firestone) menu->AddItem(weapon,2);
|
if(weapon == Firestone) menu->AddItem(weapon,2);
|
||||||
|
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
@ -2,7 +2,6 @@
|
||||||
Title=Ruins
|
Title=Ruins
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
MaxPlayer=6
|
|
||||||
Difficulty=30
|
Difficulty=30
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -12,6 +12,7 @@ protected func Initialize()
|
||||||
// Goal.
|
// Goal.
|
||||||
CreateObject(Goal_LastManStanding, 0, 0, NO_OWNER);
|
CreateObject(Goal_LastManStanding, 0, 0, NO_OWNER);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
// Mood.
|
// Mood.
|
||||||
SetSkyAdjust(RGBa(255, 255, 255, 127), RGB(255, 200, 150));
|
SetSkyAdjust(RGBa(255, 255, 255, 127), RGB(255, 200, 150));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[Head]
|
[Head]
|
||||||
Title=Overcast
|
Title=ScorchedGardens
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MinPlayer=2
|
MinPlayer=2
|
||||||
Difficulty=40
|
Difficulty=40
|
||||||
|
|
|
@ -14,6 +14,7 @@ protected func Initialize()
|
||||||
// Goal.
|
// Goal.
|
||||||
CreateObject(Goal_DeathMatch, 0, 0, NO_OWNER);
|
CreateObject(Goal_DeathMatch, 0, 0, NO_OWNER);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
//Enviroment.
|
//Enviroment.
|
||||||
CreateObject(Rule_ObjectFade)->DoFadeTime(10 * 36);
|
CreateObject(Rule_ObjectFade)->DoFadeTime(10 * 36);
|
||||||
|
@ -64,24 +65,37 @@ public func FxMeteorSparkleStart(obj, effect, iTemp, natural)
|
||||||
|
|
||||||
global func FxMeteorsparkleTimer(obj, effect, time)
|
global func FxMeteorsparkleTimer(obj, effect, time)
|
||||||
{
|
{
|
||||||
|
if (!obj)
|
||||||
|
return -1;
|
||||||
var x=obj->GetX(), y=obj->GetY();
|
var x=obj->GetX(), y=obj->GetY();
|
||||||
CreateParticle("FireballSmoke",x,y,Sin(Random(360),2),Cos(Random(360),2),RandomX(120,180),RGBa(100,100,100,70));
|
CreateParticle("FireballSmoke",x,y,Sin(Random(360),2),Cos(Random(360),2),RandomX(120,180),RGBa(100,100,100,70));
|
||||||
for(var i=0; i<6; i++) CreateParticle("MagicFire",x,y,Sin(Random(360),RandomX(5,6)),Cos(Random(360),RandomX(5,6)),RandomX(50,90),HSL(Random(50), 200+Random(25), Random(100)));
|
for(var i=0; i<6; i++) CreateParticle("MagicFire",x,y,Sin(Random(360),RandomX(5,6)),Cos(Random(360),RandomX(5,6)),RandomX(50,90),HSL(Random(50), 200+Random(25), Random(100)));
|
||||||
CreateParticle("MagicSpark",x,y,Sin(Random(360),RandomX(15,33)),Cos(Random(360),RandomX(15,33)),RandomX(30,70),RGB(255,255,255));
|
CreateParticle("MagicSpark",x,y,Sin(Random(360),RandomX(15,33)),Cos(Random(360),RandomX(15,33)),RandomX(30,70),RGB(255,255,255));
|
||||||
if(obj->Contained()) obj->Hit();
|
if (obj->Contained())
|
||||||
if(Abs(obj->GetXDir())<3 && Abs(obj->GetYDir())<3) effect.count++;
|
{
|
||||||
|
obj->Hit();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (Abs(obj->GetXDir())<3 && Abs(obj->GetYDir())<3)
|
||||||
|
effect.count++;
|
||||||
else effect.count=0;
|
else effect.count=0;
|
||||||
|
|
||||||
if(obj) // meteor not yet destroyed by Hit() above?
|
if (effect.count>10)
|
||||||
if(effect.count>10) obj->Hit();
|
{
|
||||||
|
obj->Hit();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
global func FxMeteorsparkleStop (obj, effect, reason, iTemp)
|
global func FxMeteorsparkleStop (obj, effect, reason, iTemp)
|
||||||
{
|
{
|
||||||
if(iTemp) return;
|
if (iTemp)
|
||||||
for(var i=0; i<30; i++) CreateParticle("MagicSpark",obj->GetX(),obj->GetY(),Sin(Random(360),RandomX(15,33)),Cos(Random(360),RandomX(15,33)),RandomX(30,70),RGB(255,255,255));
|
return;
|
||||||
|
if (!obj)
|
||||||
return ;
|
return;
|
||||||
|
for (var i = 0; i < 30; i++)
|
||||||
|
CreateParticle("MagicSpark",obj->GetX(),obj->GetY(),Sin(Random(360),RandomX(15,33)),Cos(Random(360),RandomX(15,33)),RandomX(30,70),RGB(255,255,255));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private func PlaceEdges()
|
private func PlaceEdges()
|
||||||
|
@ -143,4 +157,3 @@ func OnClonkLeftRelaunch(object clonk)
|
||||||
|
|
||||||
|
|
||||||
func WinKillCount() { return 5; }
|
func WinKillCount() { return 5; }
|
||||||
func RelaunchWeaponList() { return []; }
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ protected func Initialize()
|
||||||
goal->SetPointLimit(5);
|
goal->SetPointLimit(5);
|
||||||
AddEffect("BlessTheKing",goal,100,1,nil);
|
AddEffect("BlessTheKing",goal,100,1,nil);
|
||||||
CreateObject(Rule_KillLogs);
|
CreateObject(Rule_KillLogs);
|
||||||
|
CreateObject(Rule_Gravestones);
|
||||||
|
|
||||||
//Enviroment.
|
//Enviroment.
|
||||||
//SetSkyAdjust(RGBa(250,250,255,128),RGB(200,200,220));
|
//SetSkyAdjust(RGBa(250,250,255,128),RGB(200,200,220));
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
Icon=39
|
Icon=39
|
||||||
Title=Windmill
|
Title=Windmill
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
MaxPlayer=8
|
|
||||||
Difficulty=10
|
Difficulty=10
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
|
|
|
@ -9,19 +9,14 @@ uniform sampler3D materialTex;
|
||||||
// Resolution of the landscape texture
|
// Resolution of the landscape texture
|
||||||
uniform vec2 resolution;
|
uniform vec2 resolution;
|
||||||
|
|
||||||
// Use sampler if the GPU doesn't support enough uniforms to
|
|
||||||
// get the matMap as an array
|
|
||||||
#if MAX_FRAGMENT_UNIFORM_COMPONENTS < 259
|
|
||||||
#define BROKEN_ARRAYS_WORKAROUND
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Texture map
|
// Texture map
|
||||||
#ifdef BROKEN_ARRAYS_WORKAROUND
|
#ifndef NO_BROKEN_ARRAYS_WORKAROUND
|
||||||
uniform sampler1D matMapTex;
|
uniform sampler1D matMapTex;
|
||||||
#else
|
#else
|
||||||
uniform float matMap[256];
|
uniform float matMap[256];
|
||||||
#endif
|
#endif
|
||||||
uniform int materialDepth;
|
uniform int materialDepth;
|
||||||
|
uniform vec2 materialSize;
|
||||||
|
|
||||||
// Expected parameters for the scaler
|
// Expected parameters for the scaler
|
||||||
const vec2 scalerStepX = vec2(1.0 / 8.0, 0.0);
|
const vec2 scalerStepX = vec2(1.0 / 8.0, 0.0);
|
||||||
|
@ -41,7 +36,7 @@ int f2i(float x) {
|
||||||
|
|
||||||
float queryMatMap(int pix)
|
float queryMatMap(int pix)
|
||||||
{
|
{
|
||||||
#ifdef BROKEN_ARRAYS_WORKAROUND
|
#ifndef NO_BROKEN_ARRAYS_WORKAROUND
|
||||||
int idx = f2i(texture1D(matMapTex, float(pix) / 256.0 + 0.5 / 256.0).r);
|
int idx = f2i(texture1D(matMapTex, float(pix) / 256.0 + 0.5 / 256.0).r);
|
||||||
return float(idx) / 256.0 + 0.5 / float(materialDepth);
|
return float(idx) / 256.0 + 0.5 / float(materialDepth);
|
||||||
#else
|
#else
|
||||||
|
@ -104,10 +99,11 @@ void main()
|
||||||
vec4 lopx = texture2D(landscapeTex[0], otherCoo);
|
vec4 lopx = texture2D(landscapeTex[0], otherCoo);
|
||||||
|
|
||||||
// Get material pixels
|
// Get material pixels
|
||||||
|
vec2 tcoo = gl_TexCoord[0].st * resolution / materialSize;
|
||||||
float mi = queryMatMap(f2i(lpx.r));
|
float mi = queryMatMap(f2i(lpx.r));
|
||||||
vec4 mpx = texture3D(materialTex, vec3(gl_TexCoord[0].st * resolution / vec2(512.0, 512.0) * vec2(4.0, 4.0), mi));
|
vec4 mpx = texture3D(materialTex, vec3(tcoo, mi));
|
||||||
float omi = queryMatMap(f2i(lopx.r));
|
float omi = queryMatMap(f2i(lopx.r));
|
||||||
vec4 ompx = texture3D(materialTex, vec3(gl_TexCoord[0].st * resolution / vec2(512.0, 512.0) * vec2(4.0, 4.0), omi));
|
vec4 ompx = texture3D(materialTex, vec3(tcoo, omi));
|
||||||
|
|
||||||
// Brightness
|
// Brightness
|
||||||
float ambientBright = 1.0, shadeBright = 0.8;
|
float ambientBright = 1.0, shadeBright = 0.8;
|
||||||
|
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 49 KiB |
|
@ -26,6 +26,6 @@ Dig2Object=Snow
|
||||||
Dig2ObjectRatio=400
|
Dig2ObjectRatio=400
|
||||||
|
|
||||||
[Reaction]
|
[Reaction]
|
||||||
Type=Convert
|
Type=Poof
|
||||||
TargetSpec=Incindiary
|
TargetSpec=Incindiary
|
||||||
ConvertMat=Water
|
|
||||||
|
|
|
@ -1,40 +1,33 @@
|
||||||
# Static Map Material/Texture Table
|
# Static Map Material/Texture Table
|
||||||
# Index +128 for underground materials
|
# Index +128 for underground materials
|
||||||
|
|
||||||
10=Tunnel-tunnel
|
10=Tunnel-tunnel
|
||||||
11=Tunnel-tunnel
|
|
||||||
12=Tunnel-brickback
|
12=Tunnel-brickback
|
||||||
|
|
||||||
13=BrickSoft-brick1
|
13=BrickSoft-brick1
|
||||||
|
|
||||||
19=DuroLava-lava_red
|
19=DuroLava-lava_red
|
||||||
20=Water-water1-water2-water3-water1-water3-water2
|
20=Water-water1-water2-water3-water1-water3-water2
|
||||||
#21=Oil-Liquid
|
|
||||||
22=Acid-acid
|
22=Acid-acid
|
||||||
23=Lava-lava_red
|
23=Lava-lava_red
|
||||||
24=DuroLava-lava_red
|
|
||||||
25=Water-water
|
25=Water-water
|
||||||
#26=Oil-Smooth
|
|
||||||
27=Acid-acid
|
28=Earth-earth
|
||||||
28=Lava-lava_red
|
|
||||||
29=Earth-earth_dry
|
29=Earth-earth_dry
|
||||||
30=Earth-earth_rough
|
30=Earth-earth_rough
|
||||||
31=Earth-earth_topsoil
|
31=Earth-earth_topsoil
|
||||||
32=Earth-earth_midsoil
|
32=Earth-earth_midsoil
|
||||||
33=Ashes-ashes
|
33=Ashes-ashes
|
||||||
#34=Ashes-Rough
|
|
||||||
#35=Ashes-Ridge
|
|
||||||
|
|
||||||
36=Ore-ore
|
36=Ore-ore
|
||||||
37=Ore-ore
|
|
||||||
38=Ore-ore
|
|
||||||
|
|
||||||
40=Granite-granite
|
40=Granite-granite
|
||||||
41=Granite-granite
|
|
||||||
42=Granite-rock
|
42=Granite-rock
|
||||||
|
|
||||||
45=Gold-gold
|
45=Gold-gold
|
||||||
|
|
||||||
50=Rock-rock
|
50=Rock-rock
|
||||||
51=Rock-rock_cracked
|
51=Rock-rock_cracked
|
||||||
52=Rock-rock
|
|
||||||
|
|
||||||
53=Sulphur-sulphur
|
53=Sulphur-sulphur
|
||||||
|
|
||||||
|
@ -42,28 +35,10 @@
|
||||||
|
|
||||||
55=Sand-sand_rough
|
55=Sand-sand_rough
|
||||||
56=Sand-sand_smooth
|
56=Sand-sand_smooth
|
||||||
#57=Sand-Smooth3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#59=FlyAshes-Smooth
|
|
||||||
|
|
||||||
#60=Crystal-Flare
|
|
||||||
#61=Crystal-Structure
|
|
||||||
#62=Crystal-Structure2
|
|
||||||
|
|
||||||
65=Ice-ice2
|
65=Ice-ice2
|
||||||
66=Ice-ice2
|
|
||||||
67=Ice-ice3
|
67=Ice-ice3
|
||||||
68=Ice-ice3
|
|
||||||
|
|
||||||
70=Snow-snow1
|
70=Snow-snow1
|
||||||
71=Snow-snow1
|
|
||||||
72=Snow-snow1
|
|
||||||
73=Brick-brick1
|
73=Brick-brick1
|
||||||
|
|
||||||
#80=FlySand-Smooth2
|
|
||||||
#81=FlySand-Smooth3
|
|
||||||
#82=FlySand-Smooth
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=Skin_Alchemist
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_StaticBack
|
|
|
@ -383,7 +383,7 @@ func Footstep()
|
||||||
Sound("StepHard?");
|
Sound("StepHard?");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var dir = GetXDir() / Abs(GetXDir());
|
var dir = Sign(GetXDir());
|
||||||
var clr = GetAverageTextureColor(GetTexture(0,10));
|
var clr = GetAverageTextureColor(GetTexture(0,10));
|
||||||
CreateParticle("Dust2", dir*-4, 8, dir*-2, -2, 25+Random(5), DoRGBaValue(clr,-150,0));
|
CreateParticle("Dust2", dir*-4, 8, dir*-2, -2, 25+Random(5), DoRGBaValue(clr,-150,0));
|
||||||
CreateParticle("Dust2", dir*-4, 8, dir*-3, -3, 25+Random(5), DoRGBaValue(clr,-150,0));
|
CreateParticle("Dust2", dir*-4, 8, dir*-3, -3, 25+Random(5), DoRGBaValue(clr,-150,0));
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=Skin_Farmer
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_StaticBack
|
|
|
@ -153,37 +153,10 @@ protected func Death(int killed_by)
|
||||||
Sound("FDie");
|
Sound("FDie");
|
||||||
CloseEyes(1);
|
CloseEyes(1);
|
||||||
|
|
||||||
//Are gravestones used in the scenario?
|
|
||||||
if(FindObject(Find_ID(Rule_Gravestones)))
|
|
||||||
AddEffect("GravestoneAdd", this, 1, 1, this);
|
|
||||||
|
|
||||||
DeathAnnounce();
|
DeathAnnounce();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func FxGravestoneAddTimer(object target, proplist effect, int timer)
|
|
||||||
{
|
|
||||||
//is the death animation over?
|
|
||||||
if(timer >= 20){
|
|
||||||
AddEffect("Gravestone",this, 1, nil, this);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func FxGravestoneStart(object clonk, proplist effect){
|
|
||||||
effect.grave = CreateObject(Clonk_Grave,0,0,clonk->GetController());
|
|
||||||
this->Enter(effect.grave);
|
|
||||||
|
|
||||||
//smoke effect
|
|
||||||
CastParticles("ExploSmoke", RandomX(10,15), 0, 0, 6, 200, 250, HSLa(0,0,255,64), HSLa(0,0,255,64));
|
|
||||||
}
|
|
||||||
|
|
||||||
func FxGravestoneStop(object clonk, proplist effect){
|
|
||||||
clonk->Exit();
|
|
||||||
effect.grave->RemoveObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected func Destruction()
|
protected func Destruction()
|
||||||
{
|
{
|
||||||
_inherited(...);
|
_inherited(...);
|
||||||
|
@ -562,17 +535,17 @@ func SetSkin(int skin)
|
||||||
|
|
||||||
//Steampunk
|
//Steampunk
|
||||||
if(skin == 1)
|
if(skin == 1)
|
||||||
{ SetGraphics(nil, Skin_Steampunk);
|
{ SetGraphics("Steampunk");
|
||||||
gender = 1; }
|
gender = 1; }
|
||||||
|
|
||||||
//Alchemist
|
//Alchemist
|
||||||
if(skin == 2)
|
if(skin == 2)
|
||||||
{ SetGraphics(nil, Skin_Alchemist);
|
{ SetGraphics("Alchemist");
|
||||||
gender = 0; }
|
gender = 0; }
|
||||||
|
|
||||||
//Farmer
|
//Farmer
|
||||||
if(skin == 3)
|
if(skin == 3)
|
||||||
{ SetGraphics(nil, Skin_Farmer);
|
{ SetGraphics("Farmer");
|
||||||
gender = 1; }
|
gender = 1; }
|
||||||
|
|
||||||
RemoveBackpack(); //add a backpack
|
RemoveBackpack(); //add a backpack
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=Skin_Steampunk
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_StaticBack
|
|
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 222 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 282 KiB After Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
@ -47,14 +47,15 @@ protected func Initialize()
|
||||||
SetComDir(COMD_None);
|
SetComDir(COMD_None);
|
||||||
SetPhase(RandomX(1,16));
|
SetPhase(RandomX(1,16));
|
||||||
|
|
||||||
//Push low flying clouds up to proper height
|
// Push low flying clouds up to proper height
|
||||||
while(MaterialDepthCheck(GetX(),GetY(),"Sky",150)!=true)
|
while (MaterialDepthCheck(GetX(), GetY(), "Sky", 150) != true)
|
||||||
{
|
{
|
||||||
SetPosition(GetX(),GetY()-1);
|
SetPosition(GetX(), GetY()-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Failsafe for stupid grounded clouds
|
// Failsafe for stupid grounded clouds
|
||||||
if (GetMaterial(0,30)!=Material("Sky")) SetPosition(GetX(), GetY()-180);
|
if (GetMaterial(0, 30) != Material("Sky"))
|
||||||
|
SetPosition(GetX(), GetY() - 180);
|
||||||
|
|
||||||
// Add effect to process all cloud features.
|
// Add effect to process all cloud features.
|
||||||
AddEffect("ProcessCloud", this, 100, 5, this);
|
AddEffect("ProcessCloud", this, 100, 5, this);
|
||||||
|
@ -280,29 +281,18 @@ protected func Evaporation()
|
||||||
//Shades the clouds based on iSize: the water density value of the cloud.
|
//Shades the clouds based on iSize: the water density value of the cloud.
|
||||||
private func ShadeCloud()
|
private func ShadeCloud()
|
||||||
{
|
{
|
||||||
var cloudAlpha = Min((rain+50)*425/1000, 255);
|
var cloud_alpha = Min((rain+50)*425/1000, 255);
|
||||||
if(rain > 600) cloudAlpha = 255;
|
var shade2 = BoundBy(Max(0,rain-600) + lighting_shade, 0, 255);
|
||||||
|
|
||||||
//from RequestAlpha function
|
SetClrModulation(RGBa(255-shade2, 255-shade2, 255-shade2, cloud_alpha));
|
||||||
if(requestAlpha != nil){
|
|
||||||
cloudAlpha = cloudAlpha - (255 - requestAlpha);
|
|
||||||
if(cloudAlpha < 0) cloudAlpha = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var shade2 = Min(rain-600, 255);
|
|
||||||
|
|
||||||
if (rain <= 600)
|
|
||||||
SetObjAlpha(cloudAlpha);
|
|
||||||
if (rain > 600)
|
|
||||||
SetClrModulation(RGBa(255-shade2, 255-shade2, 255-shade2, cloudAlpha));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Utilized by time to make clouds invisible at night
|
// Utilized by time to make clouds invisible at night
|
||||||
local requestAlpha;
|
local lighting_shade;
|
||||||
|
|
||||||
public func RequestAlpha(int alpha){
|
public func SetLightingShade(int darkness)
|
||||||
requestAlpha = alpha;
|
{
|
||||||
|
lighting_shade = darkness;
|
||||||
}
|
}
|
||||||
|
|
||||||
local ActMap = {
|
local ActMap = {
|
||||||
|
|
|
@ -9,7 +9,7 @@ protected func Initialize()
|
||||||
SetClrModulation(RGBa(255,255,255,alpha));
|
SetClrModulation(RGBa(255,255,255,alpha));
|
||||||
SetAction("Be");
|
SetAction("Be");
|
||||||
Update();
|
Update();
|
||||||
this["Parallaxity"] = [40,40];
|
this["Parallaxity"] = [30,30];
|
||||||
}
|
}
|
||||||
|
|
||||||
public func NextMoonPhase()
|
public func NextMoonPhase()
|
||||||
|
|
|
@ -11,37 +11,41 @@
|
||||||
|
|
||||||
|
|
||||||
local time;
|
local time;
|
||||||
|
local advance_seconds_per_tick;
|
||||||
|
|
||||||
// Sets the current time using a 24*60 minute clock scheme.
|
/** Sets the current time using a 24*60 minute clock scheme. */
|
||||||
public func SetTime(int to_time)
|
public func SetTime(int to_time)
|
||||||
{
|
{
|
||||||
// Set time.
|
// Set time.
|
||||||
time = to_time % (24 * 60);
|
time = (to_time*60) % (24 * 60 * 60);
|
||||||
|
// hide celestials during day
|
||||||
|
if(Inside(time, time_set["SunriseEnd"], time_set["SunsetStart"]))
|
||||||
|
HideCelestials();
|
||||||
|
else
|
||||||
|
ShowCelestials();
|
||||||
|
|
||||||
// Adjust to time.
|
// Adjust to time.
|
||||||
AdjustToTime();
|
AdjustToTime();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the time in minutes.
|
/** Returns the time in minutes. */
|
||||||
public func GetTime()
|
public func GetTime()
|
||||||
{
|
{
|
||||||
return time;
|
return time / 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the number of frames per clonk-minute.
|
/** Sets the number of seconds the day will advance each tick (10 frames).
|
||||||
// Standard is 18 frames per minute, making a day-night cycle of 12 minutes.
|
Setting to 0 will stop day-night cycle. Default is 30 seconds. */
|
||||||
// Setting minute lenght to 0 will stop day-night cycle.
|
public func SetCycleSpeed(int seconds_per_tick)
|
||||||
public func SetCycleSpeed(int speed)
|
|
||||||
{
|
{
|
||||||
//GetEffect("IntTimeCycle", this).Interval = Max(0, speed);
|
advance_seconds_per_tick = seconds_per_tick;
|
||||||
RemoveEffect("IntTimeCycle", this);
|
|
||||||
AddEffect("IntTimeCycle", this, 100, Max(0, speed), this);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the number of seconds the day advances each tick (10 frames). */
|
||||||
public func GetCycleSpeed()
|
public func GetCycleSpeed()
|
||||||
{
|
{
|
||||||
return GetEffect("IntTimeCycle", this).Interval;
|
return advance_seconds_per_tick;
|
||||||
}
|
}
|
||||||
|
|
||||||
local time_set;
|
local time_set;
|
||||||
|
@ -54,25 +58,25 @@ protected func Initialize()
|
||||||
return RemoveObject();
|
return RemoveObject();
|
||||||
|
|
||||||
time_set = {
|
time_set = {
|
||||||
SunriseStart = 180,
|
SunriseStart = 10800, // 3:00
|
||||||
SunriseEnd = 540,
|
SunriseEnd = 32400, // 9:00
|
||||||
SunsetStart = 900,
|
SunsetStart = 54000, // 15:00
|
||||||
SunsetEnd = 1260,
|
SunsetEnd = 75600, // 21:00
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add effect that controls time cycle.
|
|
||||||
AddEffect("IntTimeCycle", this, 100, 18, this);
|
|
||||||
|
|
||||||
// Set the time to midday (12:00).
|
|
||||||
time = 720;
|
|
||||||
|
|
||||||
// Create moon and stars.
|
// Create moon and stars.
|
||||||
if (FindObject(Find_ID(Environment_Celestial)))
|
if (FindObject(Find_ID(Environment_Celestial)))
|
||||||
{
|
{
|
||||||
CreateObject(Moon, LandscapeWidth() / 2, LandscapeHeight() / 6);
|
|
||||||
PlaceStars();
|
PlaceStars();
|
||||||
|
CreateObject(Moon, LandscapeWidth() / 2, LandscapeHeight() / 6);
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
|
// Set the time to midday (12:00).
|
||||||
|
SetTime(43200);
|
||||||
|
|
||||||
|
// Add effect that controls time cycle.
|
||||||
|
SetCycleSpeed(30);
|
||||||
|
AddEffect("IntTimeCycle", this, 100, 10, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public func IsDay()
|
public func IsDay()
|
||||||
|
@ -95,17 +99,26 @@ public func IsNight()
|
||||||
|
|
||||||
private func PlaceStars()
|
private func PlaceStars()
|
||||||
{
|
{
|
||||||
|
// since stars are almost completely parallax (=in screen coordinates), we only need
|
||||||
|
// to place stars for max. a reasonable maximum resolution. Lets say 1600x1200
|
||||||
|
var lw = Min(LandscapeWidth(), 1600);
|
||||||
|
var lh = Min(LandscapeHeight(),1200);
|
||||||
|
|
||||||
//Star Creation
|
//Star Creation
|
||||||
var maxamount = LandscapeWidth() * LandscapeHeight() / 40000;
|
var maxfailedtries = lw * lh / 40000;
|
||||||
var amount = 0;
|
var failed = 0;
|
||||||
|
|
||||||
while (amount != maxamount)
|
while (failed != maxfailedtries)
|
||||||
{
|
{
|
||||||
var pos;
|
var pos = [Random(lw), Random(lh)];
|
||||||
if (pos = FindPosInMat("Sky", 0, 0, LandscapeWidth(), LandscapeHeight()))
|
if(!FindObject(Find_ID(Stars),Find_AtPoint(pos[0],pos[1])))
|
||||||
CreateObject(Star, pos[0], pos[1]);
|
{
|
||||||
amount++;
|
CreateObject(Stars, pos[0], pos[1]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
failed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,41 +129,98 @@ protected func FxIntTimeCycleTimer(object target)
|
||||||
AdjustToTime();
|
AdjustToTime();
|
||||||
|
|
||||||
// Advance time.
|
// Advance time.
|
||||||
time++;
|
time += advance_seconds_per_tick;
|
||||||
time %= (24 * 60);
|
time %= (24 * 60 * 60);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adjusts the sky, celestial and others to the current time. Use SetTime() at runtime, not this.
|
private func HideCelestials()
|
||||||
private func AdjustToTime()
|
|
||||||
{
|
{
|
||||||
var skyshade = [0,0,0,0]; //R,G,B,A
|
// hide celestial objects, they will not be drawn during the day
|
||||||
var nightcolour = [10,25,40]; //default darkest-night colour
|
for (var celestial in FindObjects(Find_Func("IsCelestial")))
|
||||||
|
{
|
||||||
|
celestial.Visibility = VIS_None;
|
||||||
|
celestial->SetObjAlpha(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func ShowCelestials()
|
||||||
|
{
|
||||||
|
// show celestial objects
|
||||||
|
for (var celestial in FindObjects(Find_Func("IsCelestial")))
|
||||||
|
{
|
||||||
|
celestial.Visibility = VIS_All;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func OnSunriseEnd()
|
||||||
|
{
|
||||||
|
// next moon phase
|
||||||
|
var satellite = FindObject(Find_ID(Moon));
|
||||||
|
if(satellite)
|
||||||
|
satellite->NextMoonPhase();
|
||||||
|
|
||||||
//Darkness of night dependant on moon-phase
|
HideCelestials();
|
||||||
var satellite = FindObject(Find_ID(Moon)); //pointer to the moon
|
}
|
||||||
if(satellite){
|
|
||||||
var lightness = satellite->GetMoonLightness();
|
private func OnSunsetStart()
|
||||||
|
{
|
||||||
nightcolour = [ 6 * lightness / 100, 25 * lightness / 100, 40 * lightness / 100 ];
|
ShowCelestials();
|
||||||
|
}
|
||||||
|
|
||||||
|
private func DoSkyShade()
|
||||||
|
{
|
||||||
|
// first determine the time phase we are in
|
||||||
|
var sunrise, sunset, night, day;
|
||||||
|
sunrise = sunset = night = day = false;
|
||||||
|
|
||||||
|
if (Inside(time, time_set["SunriseStart"], time_set["SunriseEnd"]))
|
||||||
|
sunrise = true;
|
||||||
|
else if(Inside(time, time_set["SunriseEnd"], time_set["SunsetStart"]))
|
||||||
|
day = true;
|
||||||
|
else if(Inside(time, time_set["SunsetStart"], time_set["SunsetEnd"]))
|
||||||
|
sunset = true;
|
||||||
|
else
|
||||||
|
night = true;
|
||||||
|
|
||||||
|
var skyshade = [0,0,0,0]; //R,G,B,A
|
||||||
|
var nightcolour = [10,25,40]; // default darkest-night colour
|
||||||
|
var daycolour = [255,255,255];
|
||||||
|
var sunsetcolour = [140,45,10];
|
||||||
|
var sunrisecolour = [140,100,70];
|
||||||
|
|
||||||
|
if (!day)
|
||||||
|
{
|
||||||
|
// Darkness of night dependent on the moon-phase
|
||||||
|
var satellite = FindObject(Find_ID(Moon));
|
||||||
|
if(satellite)
|
||||||
|
{
|
||||||
|
var lightness = satellite->GetMoonLightness();
|
||||||
|
nightcolour = [ 6 * lightness / 100, 8 + 25 * lightness / 100, 15 + 60 * lightness / 100 ];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Sunrise
|
// Sunrise
|
||||||
if (Inside(time, time_set["SunriseStart"], time_set["SunriseEnd"]))
|
if (sunrise)
|
||||||
{
|
{
|
||||||
skyshade[0] = Sin((GetTime() - time_set["SunriseStart"]) / 4, 255 - nightcolour[0]) + nightcolour[0];
|
var time_since_sunrise = time - time_set["SunriseStart"];
|
||||||
skyshade[1] = Sin((GetTime() - time_set["SunriseStart"]) / 4, 255 - nightcolour[1]) + nightcolour[1];
|
// progress in 0..1800
|
||||||
skyshade[2] = Sin((GetTime() - time_set["SunriseStart"]) / 4, 255 - nightcolour[2]) + nightcolour[2];
|
var progress = time_since_sunrise * 1800 / (time_set["SunriseEnd"] - time_set["SunriseStart"]);
|
||||||
|
|
||||||
|
for(var i=0; i<3; ++i)
|
||||||
|
{
|
||||||
|
var nightfade = Cos(progress/2, nightcolour[i],10);
|
||||||
|
var dayfade = daycolour[i] - Cos(progress/2, daycolour[i],10);
|
||||||
|
var sunrisefade = Sin(progress, sunrisecolour[i],10);
|
||||||
|
|
||||||
|
skyshade[i] = Min(255,dayfade + nightfade + sunrisefade);
|
||||||
|
}
|
||||||
|
|
||||||
skyshade[3] = Sin((GetTime() - time_set["SunriseStart"]) / 4, 255);
|
skyshade[3] = Min(255,progress/2);
|
||||||
if (time == 540)
|
|
||||||
if (satellite)
|
|
||||||
satellite->NextMoonPhase();
|
|
||||||
}
|
}
|
||||||
// Day
|
// Day
|
||||||
else if (Inside(time, time_set["SunriseEnd"], time_set["SunsetStart"]))
|
else if (day)
|
||||||
{
|
{
|
||||||
skyshade[0] = 255;
|
skyshade[0] = 255;
|
||||||
skyshade[1] = 255;
|
skyshade[1] = 255;
|
||||||
|
@ -158,17 +228,26 @@ private func AdjustToTime()
|
||||||
|
|
||||||
skyshade[3] = 255;
|
skyshade[3] = 255;
|
||||||
}
|
}
|
||||||
//Sunset
|
// Sunset
|
||||||
else if (Inside(time, time_set["SunsetStart"], time_set["SunsetEnd"]))
|
else if (sunset)
|
||||||
{
|
{
|
||||||
skyshade[0] = 255 - Sin((GetTime() - time_set["SunsetStart"]) / 4, 255 - nightcolour[0]);
|
var time_since_sunset = time - time_set["SunsetStart"];
|
||||||
skyshade[1] = 255 - Sin((GetTime() - time_set["SunsetStart"]) / 4, 255 - nightcolour[1]);
|
// progress in 0..1800
|
||||||
skyshade[2] = 255 - Sin((GetTime() - time_set["SunsetStart"]) / 4, 255 - nightcolour[2]);
|
var progress = time_since_sunset * 1800 / (time_set["SunsetEnd"] - time_set["SunsetStart"]);
|
||||||
|
|
||||||
skyshade[3] = 255 - Sin((GetTime() - time_set["SunsetStart"]) / 4, 255);
|
for(var i=0; i<3; ++i)
|
||||||
|
{
|
||||||
|
var dayfade = Cos(progress/2, daycolour[i],10);
|
||||||
|
var nightfade = nightcolour[i] - Cos(progress/2, nightcolour[i],10);
|
||||||
|
var sunsetfade = Sin(progress, sunsetcolour[i],10);
|
||||||
|
|
||||||
|
skyshade[i] = Min(255,dayfade + nightfade + sunsetfade);
|
||||||
|
}
|
||||||
|
|
||||||
|
skyshade[3] = Min(255,900-progress/2);
|
||||||
}
|
}
|
||||||
// Night
|
// Night
|
||||||
else if (time > time_set["SunsetEnd"] || time < time_set["SunriseStart"])
|
else if (night)
|
||||||
{
|
{
|
||||||
skyshade[0] = nightcolour[0];
|
skyshade[0] = nightcolour[0];
|
||||||
skyshade[1] = nightcolour[1];
|
skyshade[1] = nightcolour[1];
|
||||||
|
@ -180,16 +259,28 @@ private func AdjustToTime()
|
||||||
// Shade sky.
|
// Shade sky.
|
||||||
SetSkyAdjust(RGB(skyshade[0], skyshade[1], skyshade[2]));
|
SetSkyAdjust(RGB(skyshade[0], skyshade[1], skyshade[2]));
|
||||||
|
|
||||||
// Adjust celestial objects.
|
if(!day && !night)
|
||||||
for (var celestial in FindObjects(Find_Func("IsCelestial")))
|
{
|
||||||
|
// Adjust celestial objects.
|
||||||
|
for (var celestial in FindObjects(Find_Func("IsCelestial")))
|
||||||
celestial->SetObjAlpha(255 - skyshade[3]);
|
celestial->SetObjAlpha(255 - skyshade[3]);
|
||||||
|
|
||||||
// Adjust clouds
|
// Adjust clouds
|
||||||
for(var cloud in FindObjects(Find_ID(Cloud))){
|
for(var cloud in FindObjects(Find_ID(Cloud))){
|
||||||
cloud->RequestAlpha(skyshade[3]);
|
cloud->SetLightingShade(255 - skyshade[2]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return;
|
|
||||||
|
// Adjusts the sky, celestial and others to the current time. Use SetTime() at runtime, not this.
|
||||||
|
private func AdjustToTime()
|
||||||
|
{
|
||||||
|
if (Abs(time - time_set["SunriseEnd"]) <= advance_seconds_per_tick)
|
||||||
|
OnSunriseEnd();
|
||||||
|
else if (Abs(time - time_set["SunsetStart"]) <= advance_seconds_per_tick)
|
||||||
|
OnSunsetStart();
|
||||||
|
|
||||||
|
DoSkyShade();
|
||||||
}
|
}
|
||||||
|
|
||||||
local Name = "Time";
|
local Name = "Time";
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=Star
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_StaticBack|C4D_Background
|
|
||||||
Width=2
|
|
||||||
Height=2
|
|
||||||
Offset=-1,1
|
|
||||||
Vertices=1
|
|
||||||
VertexY=0
|
|
||||||
Mass=1
|
|
||||||
StretchGrowth=1
|
|
Before Width: | Height: | Size: 618 B |
|
@ -1,17 +0,0 @@
|
||||||
/*-- Star --*/
|
|
||||||
|
|
||||||
protected func Initialize()
|
|
||||||
{
|
|
||||||
DoCon(-30+Random(50));
|
|
||||||
SetR(Random(359));
|
|
||||||
var alpha=0;
|
|
||||||
if(GetTime()<300 || GetTime()>1140) alpha=255;
|
|
||||||
SetClrModulation(RGBa(255,255,255,alpha));
|
|
||||||
this["Parallaxity"] = [10,10];
|
|
||||||
|
|
||||||
SetCategory(GetCategory() | C4D_Parallax | C4D_Background);
|
|
||||||
}
|
|
||||||
|
|
||||||
public func IsCelestial() { return true; }
|
|
||||||
|
|
||||||
local Name = "$Name$";
|
|
|
@ -1 +0,0 @@
|
||||||
Name=Sterne
|
|
|
@ -1 +0,0 @@
|
||||||
Name=Stars
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[DefCore]
|
||||||
|
id=Stars
|
||||||
|
Version=5,2,0,1
|
||||||
|
Category=C4D_StaticBack|C4D_Background|C4D_Parallax
|
||||||
|
Width=128
|
||||||
|
Height=128
|
||||||
|
Offset=-64,64
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,17 @@
|
||||||
|
/*-- Stars --*/
|
||||||
|
|
||||||
|
protected func Initialize()
|
||||||
|
{
|
||||||
|
var alpha=0;
|
||||||
|
if(GetTime()<300 || GetTime()>1140) alpha=255;
|
||||||
|
var g = RandomX(1,9);
|
||||||
|
if(g > 1) SetGraphics(Format("%d",g));
|
||||||
|
SetClrModulation(RGBa(255,255,255,alpha));
|
||||||
|
SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var parallax = RandomX(8,12);
|
||||||
|
this["Parallaxity"] = [parallax,parallax];
|
||||||
|
}
|
||||||
|
|
||||||
|
public func IsCelestial() { return true; }
|
||||||
|
|
||||||
|
local Name = "Stars";
|
|
@ -154,7 +154,8 @@ private func Erupt()
|
||||||
|
|
||||||
// Cast other particles (lava chunks, ashes, ashclouds).
|
// Cast other particles (lava chunks, ashes, ashclouds).
|
||||||
if (!Random(6))
|
if (!Random(6))
|
||||||
CastObjects(LavaChunk, 1, 60, 0, 0, 0, 40);
|
if (WildcardMatch(MaterialName(mat), "*Lava*"))
|
||||||
|
CastObjects(LavaChunk, 1, 60, 0, 0, 0, 40);
|
||||||
|
|
||||||
// Reduce strength.
|
// Reduce strength.
|
||||||
if(!Random(3))
|
if(!Random(3))
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[DefCore]
|
||||||
|
id=Waterfall
|
||||||
|
Version=5,2,0,1
|
||||||
|
Category=C4D_StaticBack
|
After Width: | Height: | Size: 142 B |
|
@ -0,0 +1,118 @@
|
||||||
|
/*--
|
||||||
|
Waterfall
|
||||||
|
Author: Maikel
|
||||||
|
|
||||||
|
Waterfall object, use to place waterfalls in the landscape.
|
||||||
|
--*/
|
||||||
|
|
||||||
|
|
||||||
|
protected func Initialize()
|
||||||
|
{
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-- Waterfall --*/
|
||||||
|
|
||||||
|
global func CreateWaterfall(int x, int y, int strength, string mat)
|
||||||
|
{
|
||||||
|
var fall = CreateObject(Waterfall, x, y, NO_OWNER);
|
||||||
|
if(!mat) mat = "Water";
|
||||||
|
AddEffect("IntWaterfall", fall, 100, 1, fall, nil, x, y, strength, mat);
|
||||||
|
return fall;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func FxIntWaterfallStart(object target, proplist effect, int temporary, int x, int y, int strength, string mat)
|
||||||
|
{
|
||||||
|
if (temporary)
|
||||||
|
return 1;
|
||||||
|
effect.X = x;
|
||||||
|
effect.Y = y;
|
||||||
|
effect.Strength = strength;
|
||||||
|
effect.Material = mat;
|
||||||
|
// Start sound.
|
||||||
|
target->Sound("Waterfall", false, 10 * effect.Strength, nil, 1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func FxIntWaterfallTimer(object target, proplist effect)
|
||||||
|
{
|
||||||
|
// Insert liquid at location every frame.
|
||||||
|
for (var i = 0; i < effect.Strength / 2; i++)
|
||||||
|
InsertMaterial(Material(effect.Material), AbsX(effect.X), AbsY(effect.Y), effect.XDir + Random(effect.XVar), effect.YDir + Random(effect.YVar));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func FxIntWaterfallStop(object target, proplist effect, bool temporary)
|
||||||
|
{
|
||||||
|
if (temporary)
|
||||||
|
return 1;
|
||||||
|
// Stop sound.
|
||||||
|
target->Sound("Waterfall", false, 10 * effect.Strength, nil, -1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func SetStrength(int strength)
|
||||||
|
{
|
||||||
|
var effect = GetEffect("IntWaterfall", this);
|
||||||
|
if (effect)
|
||||||
|
effect.Strength = BoundBy(strength, 0, 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func SetMaterial(int material)
|
||||||
|
{
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func SetDirection(int xdir, int ydir, int xvar, int yvar)
|
||||||
|
{
|
||||||
|
var effect = GetEffect("IntWaterfall", this);
|
||||||
|
if (effect)
|
||||||
|
{
|
||||||
|
effect.XDir = xdir;
|
||||||
|
effect.YDir = ydir;
|
||||||
|
effect.XVar = xvar;
|
||||||
|
effect.YVar = yvar;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func SetSoundLocation(int x, int y)
|
||||||
|
{
|
||||||
|
SetPosition(x, y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-- Liquid Drain --*/
|
||||||
|
|
||||||
|
global func CreateLiquidDrain(int x, int y, int strength)
|
||||||
|
{
|
||||||
|
var drain = CreateObject(Waterfall, x, y, NO_OWNER);
|
||||||
|
AddEffect("IntLiquidDrain", drain, 100, 1, drain, nil, x, y, strength);
|
||||||
|
return drain;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func FxIntLiquidDrainStart(object target, proplist effect, int temporary, int x, int y, int strength)
|
||||||
|
{
|
||||||
|
if (temporary)
|
||||||
|
return 1;
|
||||||
|
effect.X = x;
|
||||||
|
effect.Y = y;
|
||||||
|
effect.Strength = strength;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func FxIntLiquidDrainTimer(object target, proplist effect)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < effect.Strength / 2; i++)
|
||||||
|
ExtractLiquid(AbsX(effect.X), AbsY(effect.Y));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local Name = "$Name$";
|
|
@ -0,0 +1 @@
|
||||||
|
Name=Wasserfall
|
|
@ -0,0 +1 @@
|
||||||
|
Name=Waterfall
|
|
@ -0,0 +1 @@
|
||||||
|
Waterfall.wav by volivieri CC-BY-3.0 (http://www.freesound.org/people/volivieri/sounds/38390/)
|
|
@ -5,7 +5,8 @@ Category=C4D_Vehicle
|
||||||
Width=16
|
Width=16
|
||||||
Height=26
|
Height=26
|
||||||
Offset=-5,-13
|
Offset=-5,-13
|
||||||
|
# note: the fifth vertex is used to attach the flag to the Clonk
|
||||||
Vertices=5
|
Vertices=5
|
||||||
VertexX=-5,-6,-7,7
|
VertexX=-5,-6,-7,7, 0
|
||||||
VertexY=13,0,-13,-6
|
VertexY=13,0,-13,-6, 0
|
||||||
VertexFriction=100,100,100,50
|
VertexFriction=100,100,100,50, 0
|
||||||
|
|
|
@ -198,6 +198,19 @@ private func BeamFlag(bool msg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StartAttachCarrier()
|
||||||
|
{
|
||||||
|
// attach fourth vertex of the flag to third vertex of Clonk
|
||||||
|
// this results in the best overlapping of the shapes
|
||||||
|
SetActionData((4 << 8) + 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
func StartAttachBase()
|
||||||
|
{
|
||||||
|
// reset possible action data
|
||||||
|
SetActionData(0);
|
||||||
|
}
|
||||||
|
|
||||||
local Name = "$Name$";
|
local Name = "$Name$";
|
||||||
local ActMap = {
|
local ActMap = {
|
||||||
AttachCarrier = {
|
AttachCarrier = {
|
||||||
|
@ -206,8 +219,9 @@ local ActMap = {
|
||||||
Procedure = DFA_ATTACH,
|
Procedure = DFA_ATTACH,
|
||||||
Length = 1,
|
Length = 1,
|
||||||
Delay = 0,
|
Delay = 0,
|
||||||
NextAction = "Attach",
|
NextAction = "AttachCarrier",
|
||||||
Animation = "Wave",
|
Animation = "Wave",
|
||||||
|
StartCall = "StartAttachCarrier"
|
||||||
},
|
},
|
||||||
AttachBase = {
|
AttachBase = {
|
||||||
Prototype = Action,
|
Prototype = Action,
|
||||||
|
@ -215,8 +229,9 @@ local ActMap = {
|
||||||
Procedure = DFA_ATTACH,
|
Procedure = DFA_ATTACH,
|
||||||
Length = 1,
|
Length = 1,
|
||||||
Delay = 0,
|
Delay = 0,
|
||||||
NextAction = "Attach",
|
NextAction = "AttachBase",
|
||||||
Animation = "Wave",
|
Animation = "Wave",
|
||||||
|
StartCall = "StartAttachBase"
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,3 +3,4 @@ id=RelaunchContainer
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
Category=C4D_StaticBack
|
Category=C4D_StaticBack
|
||||||
ClosedContainer=2
|
ClosedContainer=2
|
||||||
|
Picture=0,0,92,92
|