Merge branch 'master' into heavy-resources
243
CMakeLists.txt
|
@ -1,6 +1,6 @@
|
||||||
# OpenClonk, http://www.openclonk.org
|
# OpenClonk, http://www.openclonk.org
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009-2013, The OpenClonk Team and contributors
|
# Copyright (c) 2009-2014, The OpenClonk Team and contributors
|
||||||
#
|
#
|
||||||
# Distributed under the terms of the ISC license; see accompanying file
|
# Distributed under the terms of the ISC license; see accompanying file
|
||||||
# "COPYING" for details.
|
# "COPYING" for details.
|
||||||
|
@ -99,6 +99,12 @@ set(CMAKE_REQUIRED_FLAGS "${SAFE_CMAKE_REQUIRED_FLAGS}")
|
||||||
CHECK_CXX_SOURCE_COMPILES("#include <regex>\nint main() { std::cregex_iterator ri; }" HAVE_WORKING_REGEX)
|
CHECK_CXX_SOURCE_COMPILES("#include <regex>\nint main() { std::cregex_iterator ri; }" HAVE_WORKING_REGEX)
|
||||||
CMAKE_DEPENDENT_OPTION(USE_BOOST_REGEX "Use Boost.Regex even if the C++ runtime has a working implementation of <regex>" OFF "HAVE_WORKING_REGEX" ON)
|
CMAKE_DEPENDENT_OPTION(USE_BOOST_REGEX "Use Boost.Regex even if the C++ runtime has a working implementation of <regex>" OFF "HAVE_WORKING_REGEX" ON)
|
||||||
|
|
||||||
|
# We link Boost statically because that makes it easier for us to distribute
|
||||||
|
# the resulting binary. Distributions have the ability to guarantee a certain
|
||||||
|
# version of the library exists on the system though, so they may prefer
|
||||||
|
# dynamic linking.
|
||||||
|
option(USE_STATIC_BOOST "Link Boost libraries statically" ON)
|
||||||
|
|
||||||
if(MSVC_VERSION GREATER 1499)
|
if(MSVC_VERSION GREATER 1499)
|
||||||
list(APPEND OC_CXX_FLAGS /MP)
|
list(APPEND OC_CXX_FLAGS /MP)
|
||||||
list(REMOVE_ITEM OC_CXX_FLAGS_DEBUG /Gm)
|
list(REMOVE_ITEM OC_CXX_FLAGS_DEBUG /Gm)
|
||||||
|
@ -780,11 +786,12 @@ if(HAVE_ICONV)
|
||||||
SET(ICONV_CONST ON)
|
SET(ICONV_CONST ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CheckFunctionExists)
|
include(CheckSymbolExists)
|
||||||
CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF)
|
CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF)
|
||||||
|
CHECK_SYMBOL_EXISTS(__mingw_vasprintf stdio.h HAVE___MINGW_VASPRINTF)
|
||||||
|
|
||||||
if(HAVE_ICONV)
|
if(HAVE_ICONV)
|
||||||
CHECK_FUNCTION_EXISTS(iconv HAVE_ICONV_WO_LINK)
|
CHECK_SYMBOL_EXISTS(iconv iconv.h HAVE_ICONV_WO_LINK)
|
||||||
mark_as_advanced(HAVE_ICONV_WO_LINK)
|
mark_as_advanced(HAVE_ICONV_WO_LINK)
|
||||||
|
|
||||||
if(NOT HAVE_ICONV_WO_LINK)
|
if(NOT HAVE_ICONV_WO_LINK)
|
||||||
|
@ -843,8 +850,13 @@ if(NOT WIN32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT USE_CONSOLE)
|
if(NOT USE_CONSOLE)
|
||||||
find_package(Freetype REQUIRED)
|
if(APPLE)
|
||||||
include_directories(${FREETYPE_INCLUDE_DIRS})
|
include(LegacyFindFreetype)
|
||||||
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
||||||
|
else()
|
||||||
|
find_package(Freetype REQUIRED)
|
||||||
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# FINDLIB works the same as find_library, but also marks the resulting var as
|
# FINDLIB works the same as find_library, but also marks the resulting var as
|
||||||
|
@ -922,14 +934,9 @@ endif()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
|
||||||
list(APPEND OC_BUNDLE_RESOURCES
|
list(APPEND OC_BUNDLE_RESOURCES
|
||||||
src/res/Clonk.icns
|
src/res/oc.icns
|
||||||
src/res/ocd.icns src/res/ocf.icns src/res/ocg.icns
|
src/res/ocd.icns src/res/ocf.icns src/res/ocg.icns
|
||||||
src/res/C4P.icns src/res/ocs.icns src/res/ocu.icns
|
src/res/C4P.icns src/res/ocs.icns src/res/ocu.icns
|
||||||
src/res/MainMenu.xib
|
|
||||||
src/res/FullScreen.xib
|
|
||||||
src/res/EditorGUIWindow.xib
|
|
||||||
src/res/EditorViewport.xib
|
|
||||||
src/res/Editor.xib
|
|
||||||
src/res/Mouse_Trans.png
|
src/res/Mouse_Trans.png
|
||||||
src/res/Cursor_Trans.png
|
src/res/Cursor_Trans.png
|
||||||
src/res/Brush_Trans.png
|
src/res/Brush_Trans.png
|
||||||
|
@ -945,6 +952,24 @@ if(APPLE)
|
||||||
src/res/Ift_Trans.png
|
src/res/Ift_Trans.png
|
||||||
src/res/NoIft_Trans.png
|
src/res/NoIft_Trans.png
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
|
list(APPEND OC_BUNDLE_RESOURCES
|
||||||
|
src/res/MainMenu.xib
|
||||||
|
src/res/FullScreen.xib
|
||||||
|
src/res/EditorGUIWindow.xib
|
||||||
|
src/res/EditorViewport.xib
|
||||||
|
src/res/Editor.xib
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
list(APPEND OC_BUNDLE_RESOURCES
|
||||||
|
src/res/nib/MainMenu.nib
|
||||||
|
src/res/nib/FullScreen.nib
|
||||||
|
src/res/nib/EditorGUIWindow.nib
|
||||||
|
src/res/nib/EditorViewport.nib
|
||||||
|
src/res/nib/Editor.nib
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add icon resources
|
# Add icon resources
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
|
@ -1222,54 +1247,41 @@ foreach(FLAG ${OC_EXE_LINKER_FLAGS_DEBUG})
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FLAG}" CACHE STRING "Flags used by the linker during debug builds." FORCE)
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FLAG}" CACHE STRING "Flags used by the linker during debug builds." FORCE)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# Precompiled header support, gcc part (it needs the cxx flags)
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
||||||
include(GccPchSupport)
|
|
||||||
option(USE_GCC_PCH "Use GCC precompiled headers" ON)
|
|
||||||
endif()
|
|
||||||
if(USE_GCC_PCH)
|
|
||||||
add_precompiled_header(libmisc src/C4Include.h)
|
|
||||||
add_precompiled_header(libc4script src/C4Include.h)
|
|
||||||
add_precompiled_header(openclonk src/C4Include.h)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# Some Xcode/OSX specific settings involving building with clang, precompiled headers...
|
# Some Xcode/OSX specific settings involving building with clang, precompiled headers...
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
add_custom_command(TARGET openclonk
|
|
||||||
POST_BUILD COMMAND "/usr/bin/ruby" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_bundle_libs"
|
|
||||||
)
|
|
||||||
|
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
# for good measure - seems to be part of default OSX installation
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
# linking with static freetype library requires it
|
||||||
|
target_link_libraries(openclonk "/usr/lib/libbz2.dylib")
|
||||||
SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
|
||||||
SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
set(HAVE_RVALUE_REF ON)
|
||||||
SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -std=c++0x -g -Wall -fobjc-arc")
|
||||||
SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
|
||||||
SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
if(CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
add_custom_command(TARGET openclonk
|
||||||
SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
POST_BUILD COMMAND "/usr/bin/ruby" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_bundle_libs"
|
||||||
SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
)
|
||||||
SET_TARGET_PROPERTIES(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
set(CMAKE_XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
||||||
SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
|
set(CMAKE_XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
||||||
|
set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
||||||
if (USE_APPLE_CLANG)
|
set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
||||||
|
set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
||||||
|
set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
||||||
|
set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
||||||
|
set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
||||||
|
set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES)
|
||||||
|
set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++ objective-c++")
|
||||||
|
set_target_properties(libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h")
|
||||||
|
set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
|
||||||
|
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++0x -stdlib=libc++ -g -Wall")
|
set_target_properties(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x")
|
||||||
SET_TARGET_PROPERTIES(c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x")
|
set_target_properties(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x")
|
||||||
SET_TARGET_PROPERTIES(openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++0x objective-c++0x")
|
|
||||||
|
|
||||||
set(HAVE_RVALUE_REF ON)
|
|
||||||
else()
|
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -1400,7 +1412,7 @@ if(HAVE_UPNP)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(USE_BOOST_REGEX)
|
if(USE_BOOST_REGEX)
|
||||||
SET(Boost_USE_STATIC_LIBS ON)
|
SET(Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST})
|
||||||
find_package(Boost 1.40.0 REQUIRED COMPONENTS regex)
|
find_package(Boost 1.40.0 REQUIRED COMPONENTS regex)
|
||||||
# Disable automatic linking, we'll do it ourselves
|
# Disable automatic linking, we'll do it ourselves
|
||||||
add_definitions(-DBOOST_REGEX_NO_LIB)
|
add_definitions(-DBOOST_REGEX_NO_LIB)
|
||||||
|
@ -1420,6 +1432,20 @@ if(MSVC_VERSION EQUAL 1600)
|
||||||
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln" "\n# reload me\n")
|
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln" "\n# reload me\n")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
# Precompiled header support, gcc part (it needs the cxx flags)
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
include(GccPchSupport)
|
||||||
|
option(USE_GCC_PCH "Use GCC precompiled headers" ON)
|
||||||
|
endif()
|
||||||
|
if(USE_GCC_PCH)
|
||||||
|
add_precompiled_header(libmisc src/C4Include.h)
|
||||||
|
add_precompiled_header(libc4script src/C4Include.h)
|
||||||
|
add_precompiled_header(openclonk src/C4Include.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# installation
|
# installation
|
||||||
############################################################################
|
############################################################################
|
||||||
|
@ -1439,38 +1465,44 @@ install(
|
||||||
)"
|
)"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(icon32 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png)
|
if (NOT APPLE)
|
||||||
add_custom_target(icon64 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png)
|
add_custom_target(icon32 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png)
|
||||||
add_custom_target(icon128 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png)
|
add_custom_target(icon64 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png)
|
||||||
add_custom_target(icon256 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png)
|
add_custom_target(icon128 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png)
|
||||||
add_custom_target(icon512 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png)
|
add_custom_target(icon256 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png)
|
||||||
add_dependencies(data icon32 icon64 icon128 icon256 icon512)
|
add_custom_target(icon512 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png)
|
||||||
install(
|
add_dependencies(data icon32 icon64 icon128 icon256 icon512)
|
||||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/32x32/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png
|
||||||
RENAME openclonk.png
|
DESTINATION share/icons/hicolor/32x32/apps
|
||||||
)
|
RENAME openclonk.png
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/64x64/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png
|
||||||
RENAME openclonk.png
|
DESTINATION share/icons/hicolor/64x64/apps
|
||||||
)
|
RENAME openclonk.png
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/128x128/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png
|
||||||
RENAME openclonk.png
|
DESTINATION share/icons/hicolor/128x128/apps
|
||||||
)
|
RENAME openclonk.png
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/256x256/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png
|
||||||
RENAME openclonk.png
|
DESTINATION share/icons/hicolor/256x256/apps
|
||||||
)
|
RENAME openclonk.png
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/512x512/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png
|
||||||
RENAME openclonk.png
|
DESTINATION share/icons/hicolor/512x512/apps
|
||||||
)
|
RENAME openclonk.png
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# NOTE: The scripts that does the autobuilds and ultimately the automated
|
||||||
|
# releases as well do keep their own list of group files around currently.
|
||||||
|
# So if you change anything here, change it in the release scripts as well.
|
||||||
|
# See openclonk-release-scripts.git/groupcontent.py
|
||||||
set(OC_C4GROUPS
|
set(OC_C4GROUPS
|
||||||
Graphics.ocg
|
Graphics.ocg
|
||||||
Material.ocg
|
Material.ocg
|
||||||
|
@ -1489,12 +1521,23 @@ get_target_property(C4GROUP_LOCATION c4group LOCATION)
|
||||||
get_target_property(CLONK_LOCATION openclonk LOCATION)
|
get_target_property(CLONK_LOCATION openclonk LOCATION)
|
||||||
foreach(group ${OC_C4GROUPS})
|
foreach(group ${OC_C4GROUPS})
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
add_custom_command(TARGET openclonk
|
if (CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
|
add_custom_command(TARGET openclonk
|
||||||
"${C4GROUP_LOCATION}"
|
POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
|
"${C4GROUP_LOCATION}"
|
||||||
DEPENDS c4group
|
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
|
||||||
|
# leave out third parameter here so the script can figure out Xcode-ish paths as usual
|
||||||
|
DEPENDS c4group
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
add_custom_command(TARGET openclonk
|
||||||
|
POST_BUILD COMMAND "/bin/sh" "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
|
||||||
|
"${C4GROUP_LOCATION}"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources"
|
||||||
|
DEPENDS c4group
|
||||||
|
)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group}
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group}
|
||||||
|
@ -1502,22 +1545,30 @@ foreach(group ${OC_C4GROUPS})
|
||||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}
|
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}
|
||||||
DEPENDS c4group
|
DEPENDS c4group
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk)
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if (NOT APPLE)
|
if (NOT APPLE)
|
||||||
add_custom_target(groups DEPENDS ${OC_C4GROUPS})
|
add_custom_target(groups DEPENDS ${OC_C4GROUPS})
|
||||||
add_dependencies(data groups)
|
add_dependencies(data groups)
|
||||||
|
|
||||||
|
# Install new files
|
||||||
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/openclonk.desktop DESTINATION share/applications)
|
||||||
|
|
||||||
|
# Install binaries
|
||||||
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/openclonk DESTINATION games/)
|
||||||
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/c4group DESTINATION bin/)
|
||||||
|
else()
|
||||||
|
install(TARGETS openclonk
|
||||||
|
BUNDLE DESTINATION .
|
||||||
|
)
|
||||||
|
install(TARGETS c4group c4script
|
||||||
|
RUNTIME DESTINATION .
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Install new files
|
|
||||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/openclonk.desktop DESTINATION share/applications)
|
|
||||||
|
|
||||||
# Install binaries
|
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/openclonk DESTINATION games/)
|
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/c4group DESTINATION bin/)
|
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# setup_openclonk.exe
|
# setup_openclonk.exe
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
|
@ -11,8 +11,8 @@ SET(C4ENGINENAME "OpenClonk")
|
||||||
SET(C4ENGINENICK "openclonk")
|
SET(C4ENGINENICK "openclonk")
|
||||||
SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}")
|
SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}")
|
||||||
|
|
||||||
SET(C4XVER1 4)
|
SET(C4XVER1 5)
|
||||||
SET(C4XVER2 0)
|
SET(C4XVER2 4)
|
||||||
SET(C4XVER3 0)
|
SET(C4XVER3 0)
|
||||||
|
|
||||||
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
||||||
|
|
|
@ -1,143 +1,42 @@
|
||||||
# - Locate FreeType library
|
# OpenClonk, http://www.openclonk.org
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014, The OpenClonk Team and contributors
|
||||||
|
#
|
||||||
|
# Distributed under the terms of the ISC license; see accompanying file
|
||||||
|
# "COPYING" for details.
|
||||||
|
#
|
||||||
|
# "Clonk" is a registered trademark of Matthes Bender, used with permission.
|
||||||
|
# See accompanying file "TRADEMARK" for details.
|
||||||
|
#
|
||||||
|
# To redistribute this file separately, substitute the full license texts
|
||||||
|
# for the above references.
|
||||||
|
|
||||||
# This module defines
|
# This module defines
|
||||||
# FREETYPE_LIBRARIES, the library to link against
|
# FREETYPE_LIBRARIES, the library to link against
|
||||||
# FREETYPE_FOUND, if false, do not try to link to FREETYPE
|
# FREETYPE_FOUND, if false, do not try to link to FREETYPE
|
||||||
# FREETYPE_INCLUDE_DIRS, where to find headers.
|
# FREETYPE_INCLUDE_DIRS, where to find headers.
|
||||||
# FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8)
|
# FREETYPE_VERSION_STRING, the version of freetype found
|
||||||
# This is the concatenation of the paths:
|
|
||||||
# FREETYPE_INCLUDE_DIR_ft2build
|
|
||||||
# FREETYPE_INCLUDE_DIR_freetype2
|
|
||||||
#
|
|
||||||
# $FREETYPE_DIR is an environment variable that would
|
|
||||||
# correspond to the ./configure --prefix=$FREETYPE_DIR
|
|
||||||
# used in building FREETYPE.
|
|
||||||
|
|
||||||
#=============================================================================
|
# Use pkg-config if possible instead of doing guesswork like the default CMake module does
|
||||||
# CMake - Cross Platform Makefile Generator
|
find_package(PkgConfig QUIET)
|
||||||
# Copyright 2000-2011 Kitware, Inc., Insight Software Consortium
|
if(PKG_CONFIG_FOUND)
|
||||||
# All rights reserved.
|
set(_ft_pkgconfig_args "")
|
||||||
#
|
if(FREETYPE_FIND_REQUIRED)
|
||||||
# Redistribution and use in source and binary forms, with or without
|
set(_ft_pkgconfig_args "${_ft_pkgconfig_args}REQUIRED ")
|
||||||
# modification, are permitted provided that the following conditions
|
endif()
|
||||||
# are met:
|
if(FREETYPE_FIND_QUIET)
|
||||||
#
|
set(_ft_pkgconfig_args "${_ft_pkgconfig_args}QUIET ")
|
||||||
# * Redistributions of source code must retain the above copyright
|
endif()
|
||||||
# notice, this list of conditions and the following disclaimer.
|
set(_ft_pkgconfig_args "${_ft_pkgconfig_args}freetype2")
|
||||||
#
|
if(FREETYPE_FIND_VERSION)
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
if(NOT FREETYPE_FIND_VERSION_EXACT)
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
set(_ft_pkgconfig_args "${_ft_pkgconfig_args}>")
|
||||||
# documentation and/or other materials provided with the distribution.
|
endif()
|
||||||
#
|
set(_ft_pkgconfig_args "${_ft_pkgconfig_args}=${FREETYPE_FIND_VERSION} ")
|
||||||
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
|
endif()
|
||||||
# nor the names of their contributors may be used to endorse or promote
|
pkg_check_modules(FREETYPE ${_ft_pkgconfig_args})
|
||||||
# products derived from this software without specific prior written
|
|
||||||
# permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# Created by Eric Wing.
|
|
||||||
# Modifications by Alexander Neundorf.
|
|
||||||
# This file has been renamed to "FindFreetype.cmake" instead of the correct
|
|
||||||
# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
|
|
||||||
|
|
||||||
# Modified by Nicolas Hake for the OpenClonk Project to make FindFreetype also
|
|
||||||
# look for the versioned libraries the freetype MSVC project generates.
|
|
||||||
|
|
||||||
# Ugh, FreeType seems to use some #include trickery which
|
|
||||||
# makes this harder than it should be. It looks like they
|
|
||||||
# put ft2build.h in a common/easier-to-find location which
|
|
||||||
# then contains a #include to a more specific header in a
|
|
||||||
# more specific location (#include <freetype/config/ftheader.h>).
|
|
||||||
# Then from there, they need to set a bunch of #define's
|
|
||||||
# so you can do something like:
|
|
||||||
# #include FT_FREETYPE_H
|
|
||||||
# Unfortunately, using CMake's mechanisms like include_directories()
|
|
||||||
# wants explicit full paths and this trickery doesn't work too well.
|
|
||||||
# I'm going to attempt to cut out the middleman and hope
|
|
||||||
# everything still works.
|
|
||||||
find_path(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
|
|
||||||
HINTS
|
|
||||||
ENV FREETYPE_DIR
|
|
||||||
PATHS
|
|
||||||
/usr/X11R6
|
|
||||||
/usr/local/X11R6
|
|
||||||
/usr/local/X11
|
|
||||||
/usr/freeware
|
|
||||||
PATH_SUFFIXES include/freetype2 include
|
|
||||||
)
|
|
||||||
|
|
||||||
find_path(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
|
|
||||||
HINTS
|
|
||||||
ENV FREETYPE_DIR
|
|
||||||
PATHS
|
|
||||||
/usr/X11R6
|
|
||||||
/usr/local/X11R6
|
|
||||||
/usr/local/X11
|
|
||||||
/usr/freeware
|
|
||||||
PATH_SUFFIXES include/freetype2 include
|
|
||||||
)
|
|
||||||
|
|
||||||
if(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
|
|
||||||
file(STRINGS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h" freetype_version_str
|
|
||||||
REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
|
|
||||||
|
|
||||||
unset(FREETYPE_VERSION_STRING)
|
|
||||||
foreach(VPART MAJOR MINOR PATCH)
|
|
||||||
foreach(VLINE ${freetype_version_str})
|
|
||||||
if(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}")
|
|
||||||
string(REGEX REPLACE "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$" "\\1"
|
|
||||||
FREETYPE_VERSION_PART "${VLINE}")
|
|
||||||
if(FREETYPE_VERSION_STRING)
|
|
||||||
set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_STRING}.${FREETYPE_VERSION_PART}")
|
|
||||||
else()
|
|
||||||
set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}")
|
|
||||||
endif()
|
|
||||||
unset(FREETYPE_VERSION_PART)
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
if(FREETYPE_VERSION_STRING)
|
|
||||||
string(REPLACE "." "" FREETYPE_VERSIONED_LIBRARY "${FREETYPE_VERSION_STRING}")
|
|
||||||
set(FREETYPE_VERSIONED_LIBRARY "freetype${FREETYPE_VERSIONED_LIBRARY}")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_library(FREETYPE_LIBRARY
|
if(NOT FREETYPE_FOUND)
|
||||||
NAMES freetype libfreetype freetype219 ${FREETYPE_VERSIONED_LIBRARY}
|
include(LegacyFindFreetype)
|
||||||
HINTS
|
|
||||||
ENV FREETYPE_DIR
|
|
||||||
PATH_SUFFIXES lib
|
|
||||||
PATHS
|
|
||||||
/usr/X11R6
|
|
||||||
/usr/local/X11R6
|
|
||||||
/usr/local/X11
|
|
||||||
/usr/freeware
|
|
||||||
)
|
|
||||||
|
|
||||||
unset(FREETYPE_VERSIONED_LIBRARY)
|
|
||||||
|
|
||||||
# set the user variables
|
|
||||||
if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
|
|
||||||
set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
|
|
||||||
endif()
|
endif()
|
||||||
set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype
|
|
||||||
REQUIRED_VARS FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS
|
|
||||||
VERSION_VAR FREETYPE_VERSION_STRING)
|
|
||||||
|
|
||||||
mark_as_advanced(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build)
|
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
# - Locate FreeType library
|
||||||
|
# This module defines
|
||||||
|
# FREETYPE_LIBRARIES, the library to link against
|
||||||
|
# FREETYPE_FOUND, if false, do not try to link to FREETYPE
|
||||||
|
# FREETYPE_INCLUDE_DIRS, where to find headers.
|
||||||
|
# FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8)
|
||||||
|
# This is the concatenation of the paths:
|
||||||
|
# FREETYPE_INCLUDE_DIR_ft2build
|
||||||
|
# FREETYPE_INCLUDE_DIR_freetype2
|
||||||
|
#
|
||||||
|
# $FREETYPE_DIR is an environment variable that would
|
||||||
|
# correspond to the ./configure --prefix=$FREETYPE_DIR
|
||||||
|
# used in building FREETYPE.
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# CMake - Cross Platform Makefile Generator
|
||||||
|
# Copyright 2000-2011 Kitware, Inc., Insight Software Consortium
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
|
||||||
|
# nor the names of their contributors may be used to endorse or promote
|
||||||
|
# products derived from this software without specific prior written
|
||||||
|
# permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#=============================================================================
|
||||||
|
|
||||||
|
# Created by Eric Wing.
|
||||||
|
# Modifications by Alexander Neundorf.
|
||||||
|
# This file has been renamed to "FindFreetype.cmake" instead of the correct
|
||||||
|
# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
|
||||||
|
|
||||||
|
# Modified by Nicolas Hake for the OpenClonk Project to make FindFreetype also
|
||||||
|
# look for the versioned libraries the freetype MSVC project generates.
|
||||||
|
|
||||||
|
# Ugh, FreeType seems to use some #include trickery which
|
||||||
|
# makes this harder than it should be. It looks like they
|
||||||
|
# put ft2build.h in a common/easier-to-find location which
|
||||||
|
# then contains a #include to a more specific header in a
|
||||||
|
# more specific location (#include <freetype/config/ftheader.h>).
|
||||||
|
# Then from there, they need to set a bunch of #define's
|
||||||
|
# so you can do something like:
|
||||||
|
# #include FT_FREETYPE_H
|
||||||
|
# Unfortunately, using CMake's mechanisms like include_directories()
|
||||||
|
# wants explicit full paths and this trickery doesn't work too well.
|
||||||
|
# I'm going to attempt to cut out the middleman and hope
|
||||||
|
# everything still works.
|
||||||
|
find_path(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
|
||||||
|
HINTS
|
||||||
|
ENV FREETYPE_DIR
|
||||||
|
PATHS
|
||||||
|
/usr/X11R6
|
||||||
|
/usr/local/X11R6
|
||||||
|
/usr/local/X11
|
||||||
|
/usr/freeware
|
||||||
|
PATH_SUFFIXES include/freetype2 include
|
||||||
|
)
|
||||||
|
|
||||||
|
find_path(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
|
||||||
|
HINTS
|
||||||
|
ENV FREETYPE_DIR
|
||||||
|
PATHS
|
||||||
|
/usr/X11R6
|
||||||
|
/usr/local/X11R6
|
||||||
|
/usr/local/X11
|
||||||
|
/usr/freeware
|
||||||
|
PATH_SUFFIXES include/freetype2 include
|
||||||
|
)
|
||||||
|
|
||||||
|
if(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
|
||||||
|
file(STRINGS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h" freetype_version_str
|
||||||
|
REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
|
||||||
|
|
||||||
|
unset(FREETYPE_VERSION_STRING)
|
||||||
|
foreach(VPART MAJOR MINOR PATCH)
|
||||||
|
foreach(VLINE ${freetype_version_str})
|
||||||
|
if(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}")
|
||||||
|
string(REGEX REPLACE "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$" "\\1"
|
||||||
|
FREETYPE_VERSION_PART "${VLINE}")
|
||||||
|
if(FREETYPE_VERSION_STRING)
|
||||||
|
set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_STRING}.${FREETYPE_VERSION_PART}")
|
||||||
|
else()
|
||||||
|
set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}")
|
||||||
|
endif()
|
||||||
|
unset(FREETYPE_VERSION_PART)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endforeach()
|
||||||
|
if(FREETYPE_VERSION_STRING)
|
||||||
|
string(REPLACE "." "" FREETYPE_VERSIONED_LIBRARY "${FREETYPE_VERSION_STRING}")
|
||||||
|
set(FREETYPE_VERSIONED_LIBRARY "freetype${FREETYPE_VERSIONED_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_library(FREETYPE_LIBRARY
|
||||||
|
NAMES freetype libfreetype freetype219 ${FREETYPE_VERSIONED_LIBRARY}
|
||||||
|
HINTS
|
||||||
|
ENV FREETYPE_DIR
|
||||||
|
PATH_SUFFIXES lib
|
||||||
|
PATHS
|
||||||
|
/usr/X11R6
|
||||||
|
/usr/local/X11R6
|
||||||
|
/usr/local/X11
|
||||||
|
/usr/freeware
|
||||||
|
)
|
||||||
|
|
||||||
|
unset(FREETYPE_VERSIONED_LIBRARY)
|
||||||
|
|
||||||
|
# set the user variables
|
||||||
|
if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
|
||||||
|
set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
|
||||||
|
endif()
|
||||||
|
set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
|
||||||
|
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if
|
||||||
|
# all listed variables are TRUE
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype
|
||||||
|
REQUIRED_VARS FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS
|
||||||
|
VERSION_VAR FREETYPE_VERSION_STRING)
|
||||||
|
|
||||||
|
mark_as_advanced(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build)
|
|
@ -115,6 +115,9 @@
|
||||||
/* Define to 1 if you have the `vasprintf' function. */
|
/* Define to 1 if you have the `vasprintf' function. */
|
||||||
#cmakedefine HAVE_VASPRINTF 1
|
#cmakedefine HAVE_VASPRINTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `__mingw_vasprintf' function. */
|
||||||
|
#cmakedefine HAVE___MINGW_VASPRINTF 1
|
||||||
|
|
||||||
#cmakedefine HAVE_VFW32
|
#cmakedefine HAVE_VFW32
|
||||||
|
|
||||||
/* 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. */
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
</dd>
|
</dd>
|
||||||
<dt id="fullscreen">--fullscreen</dt>
|
<dt id="fullscreen">--fullscreen</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<text>Starts in fullscreen mode (also called player mode). If no scenario and no direct join adress is given, the startup menu is shown.</text>
|
<text>Starts in fullscreen mode (also called player mode). If no scenario and no direct join address is given, the startup menu is shown.</text>
|
||||||
</dd>
|
</dd>
|
||||||
<dt id="config">--config=Filename</dt>
|
<dt id="config">--config=Filename</dt>
|
||||||
<dd>
|
<dd>
|
||||||
|
|
|
@ -18,12 +18,12 @@
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>x</name>
|
<name>x</name>
|
||||||
<desc>X-coordinate of the new particle (relative to object for local calls)</desc>
|
<desc>X-coordinate of the new particle (relative to object for local calls).</desc>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>y</name>
|
<name>y</name>
|
||||||
<desc>Y-coordinate of the new particle (relative to object for local calls)</desc>
|
<desc>Y-coordinate of the new particle (relative to object for local calls).</desc>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>lifetime</name>
|
<name>lifetime</name>
|
||||||
<desc>Time in frames that the particle will be alive before it is removed. Can also be a value provider function.</desc>
|
<desc>Time in frames that the particle will be alive before it is removed. Can also be a value provider function. If set to 0, the particle will not be removed automatically.</desc>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<type>proplist</type>
|
<type>proplist</type>
|
||||||
|
@ -72,7 +72,7 @@ var particles =
|
||||||
ForceX = <funclink>PV_Random</funclink>(-5, 5, 15),
|
ForceX = <funclink>PV_Random</funclink>(-5, 5, 15),
|
||||||
Phase = <funclink>PV_Step</funclink>(1, 0, 10)
|
Phase = <funclink>PV_Step</funclink>(1, 0, 10)
|
||||||
};
|
};
|
||||||
<funclink>CreateParticle</funclink>("Fire", 0, 0, <funclink>PV_Random(-200, 200)</funclink>, <funclink>PV_Random</funclink>(-200, 200), <funclink>PV_Random</funclink>(18, 38 * 5), particles, 100);
|
<funclink>CreateParticle</funclink>("Fire", 0, 0, <funclink>PV_Random</funclink>(-200, 200), <funclink>PV_Random</funclink>(-200, 200), <funclink>PV_Random</funclink>(18, 38 * 5), particles, 100);
|
||||||
</code>
|
</code>
|
||||||
<text>Casts 100 particles with a previously defined behavior.</text>
|
<text>Casts 100 particles with a previously defined behavior.</text>
|
||||||
</example>
|
</example>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
</params>
|
</params>
|
||||||
</syntax>
|
</syntax>
|
||||||
<desc>Returns the object which is followed by a player's view. If the player view does not currently follow an object, the function returns <code>nil</code> (also see <funclink>GetPlrViewMode</funclink>).</desc>
|
<desc>Returns the object which is followed by a player's view. If the player view does not currently follow an object, the function returns <code>nil</code> (also see <funclink>GetPlrViewMode</funclink>).</desc>
|
||||||
<remark>If player view has been set using (<funclink>SetPlrView</funclink>), the view will follow the selected clonk (unless in view mode "Scroll", see <funclink>GetViewMode</funclink>). This can be determined using <funclink>GetCursor</funclink>.</remark>
|
<remark>If player view has been set using (<funclink>SetPlrView</funclink>), the view will follow the selected clonk (unless in view mode "Scroll", see <funclink>GetPlrViewMode</funclink>). This can be determined using <funclink>GetCursor</funclink>.</remark>
|
||||||
<related><funclink>SetPlrView</funclink></related>
|
<related><funclink>SetPlrView</funclink></related>
|
||||||
</func>
|
</func>
|
||||||
<author>PeterW</author><date>2003-06</date>
|
<author>PeterW</author><date>2003-06</date>
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<!DOCTYPE funcs
|
||||||
|
SYSTEM '../../../clonk.dtd'>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
|
||||||
|
<funcs>
|
||||||
|
<func>
|
||||||
|
<title>PV_Gravity</title>
|
||||||
|
<category>Particles</category>
|
||||||
|
<version>5.3.3 OC</version>
|
||||||
|
<syntax>
|
||||||
|
<rtype>array</rtype>
|
||||||
|
<params>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>factor</name>
|
||||||
|
<desc>Factor for the speed. 1000 is a factor of 1.0.</desc>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>constant_value</name>
|
||||||
|
<desc>Value that is added to the result.</desc>
|
||||||
|
</param>
|
||||||
|
</params>
|
||||||
|
</syntax>
|
||||||
|
<desc>The value will depend on the gravity.</desc>
|
||||||
|
<remark>See the <emlink href="particle/index.html">particle documentation</emlink> for further explanations of the particle system.</remark>
|
||||||
|
<related>
|
||||||
|
<funclink>CreateParticle</funclink>
|
||||||
|
<funclink>PV_Direction</funclink>
|
||||||
|
<funclink>PV_Random</funclink>
|
||||||
|
<funclink>PV_Step</funclink>
|
||||||
|
<funclink>PV_Speed</funclink>
|
||||||
|
<funclink>PV_KeyFrames</funclink>
|
||||||
|
<funclink>PV_Wind</funclink>
|
||||||
|
<funclink>PC_Die</funclink>
|
||||||
|
<funclink>PC_Bounce</funclink>
|
||||||
|
<funclink>PC_Stop</funclink>
|
||||||
|
</related>
|
||||||
|
</func>
|
||||||
|
<author>Zapper</author><date>2013-10</date>
|
||||||
|
</funcs>
|
|
@ -18,7 +18,7 @@
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>position1</name>
|
<name>position1</name>
|
||||||
<desc>Position relative to the particle age of value1 (0 to 1000).</desc>
|
<desc>Age of the particle in per-mille (0 to 1000) where value1 will be returned.</desc>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
@ -28,12 +28,32 @@
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>position2</name>
|
<name>position2</name>
|
||||||
<desc>Position relative to the particle age of value2 (0 to 1000).</desc>
|
<desc>Age of the particle in per-mille (0 to 1000) where value2 will be returned.</desc>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<name>value2</name>
|
<name>value2</name>
|
||||||
<desc>Value at position2.</desc>
|
<desc>Value at position2.</desc>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>position3</name>
|
||||||
|
<desc>Age of the particle in per-mille (0 to 1000) where value3 will be returned.</desc>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>value3</name>
|
||||||
|
<desc>Value at position3.</desc>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>position4</name>
|
||||||
|
<desc>Age of the particle in per-mille (0 to 1000) where value4 will be returned.</desc>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>value4</name>
|
||||||
|
<desc>Value at position4.</desc>
|
||||||
</param>
|
</param>
|
||||||
</params>
|
</params>
|
||||||
</syntax>
|
</syntax>
|
||||||
|
|
|
@ -26,6 +26,12 @@
|
||||||
<name>delay</name>
|
<name>delay</name>
|
||||||
<desc>Delay in frames for every step (defaults to 1).</desc>
|
<desc>Delay in frames for every step (defaults to 1).</desc>
|
||||||
<optional />
|
<optional />
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<type>int</type>
|
||||||
|
<name>maximumValue</name>
|
||||||
|
<desc>If not 0, the returned value will be capped at this value and not increase further.</desc>
|
||||||
|
<optional />
|
||||||
</param>
|
</param>
|
||||||
</params>
|
</params>
|
||||||
</syntax>
|
</syntax>
|
||||||
|
|
|
@ -41,38 +41,11 @@ if ($link && $db) {
|
||||||
$server->cleanUp(true); //Cleanup old stuff
|
$server->cleanUp(true); //Cleanup old stuff
|
||||||
|
|
||||||
// register new release
|
// register new release
|
||||||
if (ParseINI::parseValue('oc_enable_update', $config) == 1 && isset($_REQUEST['action']) && $_REQUEST['action'] == 'release-file' && isset($_REQUEST['file']) && isset($_REQUEST['hash']) && isset($_REQUEST['new_version']) && isset($_REQUEST['platform'])) {
|
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'release-file') {
|
||||||
$absolutefile = ParseINI::parseValue('oc_update_path', $config) . $_REQUEST['file'];
|
try {
|
||||||
if (file_exists($absolutefile)) {
|
registerRelease();
|
||||||
if(hash_hmac_file('sha256', $absolutefile, ParseINI::parseValue('oc_update_secret', $config)) == $_REQUEST['hash']) {
|
} catch(Exception $e) {
|
||||||
$old_version = isset($_REQUEST['old_version']) && !empty($_REQUEST['old_version']) ? explode(',', mysql_real_escape_string($_REQUEST['old_version'], $link)) : array();
|
C4Network::sendAnswer(C4Network::createError($e->getMessage()));
|
||||||
$new_version = mysql_real_escape_string($_REQUEST['new_version'], $link);
|
|
||||||
$platform = mysql_real_escape_string($_REQUEST['platform'], $link);
|
|
||||||
$file = mysql_real_escape_string($_REQUEST['file'], $link);
|
|
||||||
if (!empty($old_version)) {
|
|
||||||
if (isset($_REQUEST['delete_old_files']) && $_REQUEST['delete_old_files'] == 'yes') {
|
|
||||||
$result = mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `new_version` != \'' . $new_version . '\' AND `old_version` != \'\' AND `platform` = \'' . $platform . '\'');
|
|
||||||
while (($row = mysql_fetch_assoc($result)) != false) {
|
|
||||||
unlink(ParseINI::parseValue('oc_update_path', $config) . $row['file']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mysql_query('DELETE FROM `' . $prefix . 'update` WHERE `new_version` != \'' . $new_version . '\' AND `old_version` != \'\' AND `platform` = \'' . $platform . '\'');
|
|
||||||
foreach ($old_version as $version) {
|
|
||||||
mysql_query('INSERT INTO `' . $prefix . 'update` (`old_version`, `new_version`, `platform`, `file`) VALUES (\'' . $version . '\', \'' . $new_version . '\', \'' . $platform . '\', \'' . $file . '\')');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (isset($_REQUEST['delete_old_files']) && $_REQUEST['delete_old_files'] == 'yes') {
|
|
||||||
$row = mysql_fetch_assoc(mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `old_version` = \'\' AND `platform` = \'' . $platform . '\''));
|
|
||||||
unlink(ParseINI::parseValue('oc_update_path', $config) . $row['file']);
|
|
||||||
}
|
|
||||||
mysql_query('DELETE FROM `' . $prefix . 'update` WHERE `old_version` = \'\' AND `platform` = \'' . $platform . '\'');
|
|
||||||
mysql_query('INSERT INTO `' . $prefix . 'update` (`old_version`, `new_version`, `platform`, `file`) VALUES (\'\', \'' . $new_version . '\', \'' . $platform . '\', \'' . $file . '\')');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
C4Network::sendAnswer(C4Network::createError('Hash incorrect.'));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
C4Network::sendAnswer(C4Network::createError('Specified file not found.'));
|
|
||||||
}
|
}
|
||||||
// prepare data for the engine
|
// prepare data for the engine
|
||||||
} else if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
|
} else if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
|
||||||
|
@ -181,4 +154,76 @@ if ($link && $db) {
|
||||||
else {
|
else {
|
||||||
C4Network::sendAnswer(C4Network::createError('Database error.'));
|
C4Network::sendAnswer(C4Network::createError('Database error.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function registerRelease()
|
||||||
|
{
|
||||||
|
global $config, $link, $prefix;
|
||||||
|
|
||||||
|
// check request validity
|
||||||
|
|
||||||
|
if (ParseINI::parseValue('oc_enable_update', $config) != 1)
|
||||||
|
throw new Exception('Update disabled on this server.');
|
||||||
|
|
||||||
|
// mandatory parameters
|
||||||
|
if (!isset($_REQUEST['file']))
|
||||||
|
throw new Exception('Missing mandatory parameter "file"');
|
||||||
|
|
||||||
|
if (!isset($_REQUEST['hash']))
|
||||||
|
throw new Exception('Missing mandatory parameter "hash"');
|
||||||
|
|
||||||
|
if (!isset($_REQUEST['new_version']))
|
||||||
|
throw new Exception('Missing mandatory parameter "new_version"');
|
||||||
|
|
||||||
|
if (!isset($_REQUEST['platform']))
|
||||||
|
throw new Exception('Missing mandatory parameter "platform"');
|
||||||
|
|
||||||
|
if (!isset($_REQUEST['hash']))
|
||||||
|
throw new Exception('Missing mandatory parameter "hash"');
|
||||||
|
|
||||||
|
// authorization
|
||||||
|
$absolutefile = ParseINI::parseValue('oc_update_path', $config) . $_REQUEST['file'];
|
||||||
|
|
||||||
|
if (!file_exists($absolutefile))
|
||||||
|
throw new Exception('Specified file "'.$absolutefile.'" not found.');
|
||||||
|
|
||||||
|
$filehash = hash_hmac_file('sha256', $absolutefile, ParseINI::parseValue('oc_update_secret', $config));
|
||||||
|
|
||||||
|
if ($filehash != $_REQUEST['hash'])
|
||||||
|
throw new Exception('Authorization failure: Hash incorrect.');
|
||||||
|
|
||||||
|
// checks done, now update DB
|
||||||
|
$old_version = array();
|
||||||
|
if (isset($_REQUEST['old_version']) && !empty($_REQUEST['old_version']))
|
||||||
|
$old_version = explode(',', mysql_real_escape_string($_REQUEST['old_version'], $link));
|
||||||
|
|
||||||
|
$delete_old_files = false;
|
||||||
|
if (isset($_REQUEST['delete_old_files']) && $_REQUEST['delete_old_files'] == 'yes')
|
||||||
|
$delete_old_files = true;
|
||||||
|
|
||||||
|
$new_version = mysql_real_escape_string($_REQUEST['new_version'], $link);
|
||||||
|
$platform = mysql_real_escape_string($_REQUEST['platform'], $link);
|
||||||
|
$file = mysql_real_escape_string($_REQUEST['file'], $link);
|
||||||
|
|
||||||
|
if (!empty($old_version)) {
|
||||||
|
if ($delete_old_files) {
|
||||||
|
$result = mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `new_version` != \'' . $new_version . '\' AND `old_version` != \'\' AND `platform` = \'' . $platform . '\'');
|
||||||
|
while (($row = mysql_fetch_assoc($result)) != false) {
|
||||||
|
unlink(ParseINI::parseValue('oc_update_path', $config) . $row['file']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mysql_query('DELETE FROM `' . $prefix . 'update` WHERE `new_version` != \'' . $new_version . '\' AND `old_version` != \'\' AND `platform` = \'' . $platform . '\'');
|
||||||
|
foreach ($old_version as $version) {
|
||||||
|
mysql_query('INSERT INTO `' . $prefix . 'update` (`old_version`, `new_version`, `platform`, `file`) VALUES (\'' . $version . '\', \'' . $new_version . '\', \'' . $platform . '\', \'' . $file . '\')');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($delete_old_files) {
|
||||||
|
$row = mysql_fetch_assoc(mysql_query('SELECT `file` FROM `' . $prefix . 'update` WHERE `old_version` = \'\' AND `platform` = \'' . $platform . '\''));
|
||||||
|
unlink(ParseINI::parseValue('oc_update_path', $config) . $row['file']);
|
||||||
|
}
|
||||||
|
mysql_query('DELETE FROM `' . $prefix . 'update` WHERE `old_version` = \'\' AND `platform` = \'' . $platform . '\'');
|
||||||
|
mysql_query('INSERT INTO `' . $prefix . 'update` (`old_version`, `new_version`, `platform`, `file`) VALUES (\'\', \'' . $new_version . '\', \'' . $platform . '\', \'' . $file . '\')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -5,7 +5,7 @@ Category=C4D_StaticBack
|
||||||
Width=8
|
Width=8
|
||||||
Height=7
|
Height=7
|
||||||
Offset=-4,-4
|
Offset=-4,-4
|
||||||
SolidMask=0,9,8,3,0,1
|
SolidMask=0,0,8,7
|
||||||
Value=10
|
Value=10
|
||||||
Mass=10
|
Mass=10
|
||||||
Rotate=1
|
Rotate=1
|
||||||
|
|
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 153 B |
|
@ -27,7 +27,6 @@ Sky=Clouds1
|
||||||
MapWidth=100
|
MapWidth=100
|
||||||
MapHeight=75
|
MapHeight=75
|
||||||
BottomOpen=1
|
BottomOpen=1
|
||||||
SkyScrollMode=1
|
|
||||||
|
|
||||||
[Animals]
|
[Animals]
|
||||||
Nest=Firestone=30;Loam=20;Rock=15;
|
Nest=Firestone=30;Loam=20;Rock=15;
|
||||||
|
|
|
@ -24,7 +24,6 @@ Crew=Clonk=1
|
||||||
|
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
SkyScrollMode=1
|
|
||||||
|
|
||||||
[Weather]
|
[Weather]
|
||||||
Climate=00,0,0,00
|
Climate=00,0,0,00
|
||||||
|
|
|
@ -18,7 +18,8 @@ protected func Initialize()
|
||||||
|
|
||||||
//Enviroment.
|
//Enviroment.
|
||||||
CreateObject(Rule_ObjectFade)->DoFadeTime(10 * 36);
|
CreateObject(Rule_ObjectFade)->DoFadeTime(10 * 36);
|
||||||
SetSkyAdjust(RGB(255,128,0));
|
SetSkyAdjust(RGB(255,128,0));
|
||||||
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
CreateObject(Column,160,304)->SetClrModulation(RGB(255,100,80));
|
CreateObject(Column,160,304)->SetClrModulation(RGB(255,100,80));
|
||||||
CreateObject(Column,448,272)->SetClrModulation(RGB(255,100,80));
|
CreateObject(Column,448,272)->SetClrModulation(RGB(255,100,80));
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ Crew=Clonk=1
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
BottomOpen=1
|
BottomOpen=1
|
||||||
SkyScrollMode=1
|
|
||||||
|
|
||||||
[Weather]
|
[Weather]
|
||||||
Climate=00,0,0,00
|
Climate=00,0,0,00
|
||||||
|
|
|
@ -21,6 +21,7 @@ protected func Initialize()
|
||||||
|
|
||||||
//Enviroment.
|
//Enviroment.
|
||||||
//SetSkyAdjust(RGBa(250,250,255,128),RGB(200,200,220));
|
//SetSkyAdjust(RGBa(250,250,255,128),RGB(200,200,220));
|
||||||
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
Sound("BirdsLoop",true,100,nil,+1);
|
Sound("BirdsLoop",true,100,nil,+1);
|
||||||
|
|
||||||
CreateObject(Column,650,379);
|
CreateObject(Column,650,379);
|
||||||
|
|
Before Width: | Height: | Size: 22 KiB |
|
@ -38,6 +38,11 @@ public func IsFulfilled()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
return this.Description;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
MessageWindow(this.Description, byplr);
|
MessageWindow(this.Description, byplr);
|
||||||
|
|
|
@ -6,4 +6,7 @@ func Damage()
|
||||||
}
|
}
|
||||||
|
|
||||||
// No lightbulbs
|
// No lightbulbs
|
||||||
func MakePowerProducer(power) { return false; }
|
func MakePowerProducer(power) { return false; }
|
||||||
|
|
||||||
|
//No triangles
|
||||||
|
func RedrawFlagRadius() { return; }
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Material]
|
||||||
|
Name=Material
|
|
@ -0,0 +1 @@
|
||||||
|
1=Material
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Head]
|
||||||
|
Title=Test case for #1060
|
||||||
|
|
||||||
|
[Definitions]
|
||||||
|
LocalOnly=1
|
|
@ -0,0 +1 @@
|
||||||
|
US:#1060: Incorrectly formatted TexMap causes nullpointer deref
|
|
@ -11,6 +11,7 @@ Dig2ObjectRatio=170
|
||||||
Blast2ObjectRatio=210
|
Blast2ObjectRatio=210
|
||||||
MaxAirSpeed=100
|
MaxAirSpeed=100
|
||||||
MaxSlide=1
|
MaxSlide=1
|
||||||
|
Corrode=50
|
||||||
Placement=40
|
Placement=40
|
||||||
TextureOverlay=coal
|
TextureOverlay=coal
|
||||||
OverlayType=8
|
OverlayType=8
|
||||||
|
|
|
@ -11,6 +11,7 @@ Blast2Object=Firestone
|
||||||
Blast2ObjectRatio=115
|
Blast2ObjectRatio=115
|
||||||
MaxAirSpeed=100
|
MaxAirSpeed=100
|
||||||
MaxSlide=1
|
MaxSlide=1
|
||||||
|
Corrode=50
|
||||||
Placement=40
|
Placement=40
|
||||||
TextureOverlay=firestone
|
TextureOverlay=firestone
|
||||||
Inflammable=1
|
Inflammable=1
|
|
@ -17,6 +17,14 @@ public func SetBasinPosition(int x, int y)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Scenario saving
|
||||||
|
public func SaveScenarioObject(props)
|
||||||
|
{
|
||||||
|
if (!inherited(props, ...)) return false;
|
||||||
|
if (basin_x || basin_y) props->AddCall("Goal", this, "SetBasinPosition", basin_x, basin_y);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-- Goal interface --*/
|
/*-- Goal interface --*/
|
||||||
|
|
||||||
|
@ -26,6 +34,16 @@ public func IsFulfilled()
|
||||||
return GetMaterial(basin_x, basin_y) == Material("Acid");
|
return GetMaterial(basin_x, basin_y) == Material("Acid");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnfulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,15 +19,8 @@ func InitializeObjects()
|
||||||
|
|
||||||
CreateObject(Rule_BuyAtFlagpole, 50, 40);
|
CreateObject(Rule_BuyAtFlagpole, 50, 40);
|
||||||
|
|
||||||
CreateObject(Goal_AcidDrilling, 0, -10);
|
var Goal_AcidDrilling0036 = CreateObject(Goal_AcidDrilling, 0, -10);
|
||||||
|
Goal_AcidDrilling0036->SetBasinPosition(2338, 250);
|
||||||
CreateObject(Rule_BuyAtFlagpole, 50, 40);
|
|
||||||
|
|
||||||
CreateObject(Goal_AcidDrilling, 0, -10);
|
|
||||||
|
|
||||||
CreateObject(Rule_BuyAtFlagpole, 50, 40);
|
|
||||||
|
|
||||||
CreateObject(Goal_AcidDrilling, 0, -10);
|
|
||||||
|
|
||||||
var Chest0040 = CreateObject(Chest, 71, 222);
|
var Chest0040 = CreateObject(Chest, 71, 222);
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Title=AcidDrilling
|
||||||
Icon=30
|
Icon=30
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
Difficulty=100
|
Difficulty=100
|
||||||
|
NoInitialize=true
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
Definition1=Objects.ocd
|
Definition1=Objects.ocd
|
||||||
|
@ -37,7 +38,6 @@ HomeBaseProduction=Clonk=50;Bread=50;Wood=50;Metal=50
|
||||||
|
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
SkyScrollMode=1
|
|
||||||
TopOpen=0
|
TopOpen=0
|
||||||
BottomOpen=0
|
BottomOpen=0
|
||||||
MapWidth=300
|
MapWidth=300
|
||||||
|
|
|
@ -5,13 +5,8 @@ static g_was_player_init, g_crystal_player;
|
||||||
func Initialize()
|
func Initialize()
|
||||||
{
|
{
|
||||||
g_crystal_player = NO_OWNER;
|
g_crystal_player = NO_OWNER;
|
||||||
// Goal
|
// Environment
|
||||||
var goal = FindObject(Find_ID(Goal_AcidDrilling));
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
if (!goal) goal = CreateObject(Goal_AcidDrilling);
|
|
||||||
goal->SetBasinPosition(2338, 250);
|
|
||||||
// Rules
|
|
||||||
if (!ObjectCount(Find_ID(Rule_TeamAccount))) CreateObject(Rule_TeamAccount);
|
|
||||||
if (!ObjectCount(Find_ID(Rule_BuyAtFlagpole))) CreateObject(Rule_BuyAtFlagpole);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,16 @@ public func IsFulfilled()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnFulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
|
|
|
@ -47,6 +47,7 @@ global func FxIntIntroStart(object target, proplist effect)
|
||||||
effect.Pilot->SetDir(DIR_Left);
|
effect.Pilot->SetDir(DIR_Left);
|
||||||
effect.Pilot->SetObjectLayer(effect.Pilot);
|
effect.Pilot->SetObjectLayer(effect.Pilot);
|
||||||
effect.Dialog = effect.Pilot->SetDialogue("Pilot");
|
effect.Dialog = effect.Pilot->SetDialogue("Pilot");
|
||||||
|
effect.Dialog->SetInteraction(false);
|
||||||
|
|
||||||
effect.Plane->FaceRight();
|
effect.Plane->FaceRight();
|
||||||
effect.Plane->StartInstantFlight(90, 15);
|
effect.Plane->StartInstantFlight(90, 15);
|
||||||
|
@ -106,10 +107,11 @@ global func FxIntIntroTimer(object target, proplist effect, int time)
|
||||||
if(effect.Time == 500)
|
if(effect.Time == 500)
|
||||||
for(var i = 0; i < GetPlayerCount(); ++i)
|
for(var i = 0; i < GetPlayerCount(); ++i)
|
||||||
GetCursor(GetPlayerByIndex(i))->CloseMenu();
|
GetCursor(GetPlayerByIndex(i))->CloseMenu();
|
||||||
|
|
||||||
if(effect.Time >= 830)
|
if(effect.Time >= 830)
|
||||||
{
|
{
|
||||||
effect.Pilot->SetCommand("MoveTo", effect.Pilot, 120 - effect.Pilot->GetX(), 860 - effect.Pilot->GetY());
|
effect.Pilot->SetCommand("MoveTo", effect.Pilot, 120 - effect.Pilot->GetX(), 860 - effect.Pilot->GetY());
|
||||||
|
effect.Dialog->SetInteraction(true);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ MsgIntro1=Wow, it's very turbulent here...
|
||||||
MsgIntro2=Have a look at that lava lake!
|
MsgIntro2=Have a look at that lava lake!
|
||||||
MsgIntro3=Come on old girl, hang in there...
|
MsgIntro3=Come on old girl, hang in there...
|
||||||
MsgIntro4=Uh oh...
|
MsgIntro4=Uh oh...
|
||||||
MsgIntro5=Quick! The ejecter seats!
|
MsgIntro5=Quick! The ejection seats!
|
||||||
|
|
||||||
# NPC Pilot
|
# NPC Pilot
|
||||||
NamePilot=Pilot
|
NamePilot=Pilot
|
||||||
|
|
|
@ -29,6 +29,16 @@ public func IsFulfilled()
|
||||||
return !victim->GetAlive();
|
return !victim->GetAlive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnFulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
[DefCore]
|
[DefCore]
|
||||||
id=Dialogue
|
id=DialogueCastle
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
Category=C4D_StaticBack
|
Category=C4D_StaticBack
|
||||||
Picture=0,0,64,64
|
Picture=0,0,64,64
|
||||||
Width=1
|
Width=1
|
||||||
Height=1
|
Height=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,12 @@ func GetPortraitDef(object talker)
|
||||||
var portrait = talker.portrait;
|
var portrait = talker.portrait;
|
||||||
// Default definition has Clonk portrait
|
// Default definition has Clonk portrait
|
||||||
// (Can't get default from skin, because there's no function GetSkin D:)
|
// (Can't get default from skin, because there's no function GetSkin D:)
|
||||||
if (!portrait || portrait == "" || portrait == "Clonk") return Dialogue;
|
if (!portrait || portrait == "" || portrait == "Clonk") return DialogueCastle;
|
||||||
// Otherwise, bind portrait to an invisible object
|
// Otherwise, bind portrait to an invisible object
|
||||||
// (note: invisible object is leaked. can't really know when the message will be gone.)
|
// (note: invisible object is leaked. can't really know when the message will be gone.)
|
||||||
if (!talker.portrait_obj)
|
if (!talker.portrait_obj)
|
||||||
{
|
{
|
||||||
talker.portrait_obj = CreateObject(Dialogue);
|
talker.portrait_obj = CreateObject(DialogueCastle);
|
||||||
talker.portrait_obj->SetAction("Attach", talker);
|
talker.portrait_obj->SetAction("Attach", talker);
|
||||||
talker.portrait_obj->SetGraphics(portrait);
|
talker.portrait_obj->SetGraphics(portrait);
|
||||||
talker.portrait_obj.Visibility = VIS_None;
|
talker.portrait_obj.Visibility = VIS_None;
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
/* Automatically created objects file */
|
/* Automatically created objects file */
|
||||||
|
|
||||||
|
static g_shroom1, g_shroom2, g_shroom3, g_shroom4, g_ruin1, g_ruin2, g_ruin3, g_elev1, g_elev2, g_farmer, g_king;
|
||||||
|
|
||||||
func InitializeObjects()
|
func InitializeObjects()
|
||||||
{
|
{
|
||||||
var Grass0001 = CreateObject(Grass, 396, 1149);
|
var Grass0001 = CreateObject(Grass, 396, 1149);
|
||||||
|
@ -30,18 +32,22 @@ func InitializeObjects()
|
||||||
var Fern0011 = CreateObject(Fern, 312, 1432);
|
var Fern0011 = CreateObject(Fern, 312, 1432);
|
||||||
Fern0011->SetClrModulation(0xffa08060);
|
Fern0011->SetClrModulation(0xffa08060);
|
||||||
|
|
||||||
var LargeCaveMushroom0015 = CreateObject(LargeCaveMushroom, 1355, 1451);
|
g_shroom1 = CreateObject(LargeCaveMushroom, 1355, 1451);
|
||||||
LargeCaveMushroom0015->SetClrModulation(0xffcddfdf);
|
g_shroom1->SetClrModulation(0xffcddfdf);
|
||||||
var LargeCaveMushroom0019 = CreateObject(LargeCaveMushroom, 1308, 1409);
|
g_shroom1.StaticSaveVar = "g_shroom1";
|
||||||
LargeCaveMushroom0019->SetR(180);
|
g_shroom2 = CreateObject(LargeCaveMushroom, 1308, 1409);
|
||||||
LargeCaveMushroom0019->SetClrModulation(0xffdae7dc);
|
g_shroom2->SetR(180);
|
||||||
LargeCaveMushroom0019->SetPosition(1308, 1384);
|
g_shroom2->SetClrModulation(0xffdae7dc);
|
||||||
var LargeCaveMushroom0023 = CreateObject(LargeCaveMushroom, 1411, 1447);
|
g_shroom2.StaticSaveVar = "g_shroom2";
|
||||||
LargeCaveMushroom0023->SetClrModulation(0xffe9d5dd);
|
g_shroom2->SetPosition(1308, 1384);
|
||||||
var LargeCaveMushroom0027 = CreateObject(LargeCaveMushroom, 1420, 1397);
|
g_shroom3 = CreateObject(LargeCaveMushroom, 1411, 1447);
|
||||||
LargeCaveMushroom0027->SetR(160);
|
g_shroom3->SetClrModulation(0xffe9d5dd);
|
||||||
LargeCaveMushroom0027->SetClrModulation(0xffeaedfb);
|
g_shroom3.StaticSaveVar = "g_shroom3";
|
||||||
LargeCaveMushroom0027->SetPosition(1420, 1374);
|
g_shroom4 = CreateObject(LargeCaveMushroom, 1420, 1397);
|
||||||
|
g_shroom4->SetR(160);
|
||||||
|
g_shroom4->SetClrModulation(0xffeaedfb);
|
||||||
|
g_shroom4.StaticSaveVar = "g_shroom4";
|
||||||
|
g_shroom4->SetPosition(1420, 1374);
|
||||||
|
|
||||||
var Rank0031 = CreateObject(Rank, 1430, 1423);
|
var Rank0031 = CreateObject(Rank, 1430, 1423);
|
||||||
Rank0031->SetR(-25);
|
Rank0031->SetR(-25);
|
||||||
|
@ -68,77 +74,96 @@ func InitializeObjects()
|
||||||
CreateObject(EnvPack_Candle, 1054, 672);
|
CreateObject(EnvPack_Candle, 1054, 672);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0049 = CreateObject(EnvPack_Candle_Shine, 1054, 672);
|
var EnvPack_Candle_Shine0049 = CreateObject(EnvPack_Candle_Shine, 1054, 672);
|
||||||
EnvPack_Candle_Shine0049->SetClrModulation(0xbfffffff);
|
EnvPack_Candle_Shine0049->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0049->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0049->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0050 = CreateObject(EnvPack_Candle_Shine, 1054, 672);
|
var EnvPack_Candle_Shine0050 = CreateObject(EnvPack_Candle_Shine, 1054, 672);
|
||||||
EnvPack_Candle_Shine0050->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0050->SetClrModulation(0xbfffffff);
|
||||||
EnvPack_Candle_Shine0050->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0050->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0051 = CreateObject(EnvPack_Candle_Shine, 1054, 671);
|
var EnvPack_Candle_Shine0051 = CreateObject(EnvPack_Candle_Shine, 1054, 672);
|
||||||
EnvPack_Candle_Shine0051->SetClrModulation(0xc9ffffff);
|
EnvPack_Candle_Shine0051->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0051->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0051->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0052 = CreateObject(EnvPack_Candle_Shine, 1054, 671);
|
||||||
|
EnvPack_Candle_Shine0052->SetClrModulation(0xc9ffffff);
|
||||||
|
EnvPack_Candle_Shine0052->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Candle, 1054, 575);
|
CreateObject(EnvPack_Candle, 1054, 575);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0053 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
|
||||||
EnvPack_Candle_Shine0053->SetClrModulation(0xd9ffffff);
|
|
||||||
EnvPack_Candle_Shine0053->SetObjectBlitMode(GFX_BLIT_Additive);
|
|
||||||
var EnvPack_Candle_Shine0054 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
var EnvPack_Candle_Shine0054 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
||||||
EnvPack_Candle_Shine0054->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0054->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0054->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0054->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0055 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
var EnvPack_Candle_Shine0055 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
||||||
EnvPack_Candle_Shine0055->SetClrModulation(0xd8ffffff);
|
EnvPack_Candle_Shine0055->SetClrModulation(0xd9ffffff);
|
||||||
EnvPack_Candle_Shine0055->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0055->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0056 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
||||||
|
EnvPack_Candle_Shine0056->SetClrModulation(0xe4ffffff);
|
||||||
|
EnvPack_Candle_Shine0056->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0057 = CreateObject(EnvPack_Candle_Shine, 1054, 575);
|
||||||
|
EnvPack_Candle_Shine0057->SetClrModulation(0xd8ffffff);
|
||||||
|
EnvPack_Candle_Shine0057->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Candle, 1185, 616);
|
CreateObject(EnvPack_Candle, 1185, 616);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0057 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
|
||||||
EnvPack_Candle_Shine0057->SetClrModulation(0xc6ffffff);
|
|
||||||
EnvPack_Candle_Shine0057->SetObjectBlitMode(GFX_BLIT_Additive);
|
|
||||||
var EnvPack_Candle_Shine0058 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
|
||||||
EnvPack_Candle_Shine0058->SetClrModulation(0xe4ffffff);
|
|
||||||
EnvPack_Candle_Shine0058->SetObjectBlitMode(GFX_BLIT_Additive);
|
|
||||||
var EnvPack_Candle_Shine0059 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
var EnvPack_Candle_Shine0059 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
||||||
EnvPack_Candle_Shine0059->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0059->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0059->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0059->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0060 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
||||||
|
EnvPack_Candle_Shine0060->SetClrModulation(0xc6ffffff);
|
||||||
|
EnvPack_Candle_Shine0060->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0061 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
||||||
|
EnvPack_Candle_Shine0061->SetClrModulation(0xe4ffffff);
|
||||||
|
EnvPack_Candle_Shine0061->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0062 = CreateObject(EnvPack_Candle_Shine, 1185, 616);
|
||||||
|
EnvPack_Candle_Shine0062->SetClrModulation(0xe4ffffff);
|
||||||
|
EnvPack_Candle_Shine0062->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Candle, 1531, 448);
|
CreateObject(EnvPack_Candle, 1531, 448);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0061 = CreateObject(EnvPack_Candle_Shine, 1531, 448);
|
var EnvPack_Candle_Shine0064 = CreateObject(EnvPack_Candle_Shine, 1531, 448);
|
||||||
EnvPack_Candle_Shine0061->SetClrModulation(0xd4ffffff);
|
EnvPack_Candle_Shine0064->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0061->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0064->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0062 = CreateObject(EnvPack_Candle_Shine, 1531, 448);
|
var EnvPack_Candle_Shine0065 = CreateObject(EnvPack_Candle_Shine, 1531, 448);
|
||||||
EnvPack_Candle_Shine0062->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0065->SetClrModulation(0xd4ffffff);
|
||||||
EnvPack_Candle_Shine0062->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0065->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0063 = CreateObject(EnvPack_Candle_Shine, 1531, 447);
|
var EnvPack_Candle_Shine0066 = CreateObject(EnvPack_Candle_Shine, 1531, 448);
|
||||||
EnvPack_Candle_Shine0063->SetClrModulation(0xddffffff);
|
EnvPack_Candle_Shine0066->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0063->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0066->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0067 = CreateObject(EnvPack_Candle_Shine, 1531, 447);
|
||||||
|
EnvPack_Candle_Shine0067->SetClrModulation(0xddffffff);
|
||||||
|
EnvPack_Candle_Shine0067->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Candle, 1362, 432);
|
CreateObject(EnvPack_Candle, 1362, 432);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0065 = CreateObject(EnvPack_Candle_Shine, 1362, 432);
|
var EnvPack_Candle_Shine0069 = CreateObject(EnvPack_Candle_Shine, 1362, 432);
|
||||||
EnvPack_Candle_Shine0065->SetClrModulation(0xc7ffffff);
|
EnvPack_Candle_Shine0069->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0065->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0069->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0066 = CreateObject(EnvPack_Candle_Shine, 1362, 432);
|
var EnvPack_Candle_Shine0070 = CreateObject(EnvPack_Candle_Shine, 1362, 432);
|
||||||
EnvPack_Candle_Shine0066->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0070->SetClrModulation(0xc7ffffff);
|
||||||
EnvPack_Candle_Shine0066->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0070->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0067 = CreateObject(EnvPack_Candle_Shine, 1361, 430);
|
var EnvPack_Candle_Shine0071 = CreateObject(EnvPack_Candle_Shine, 1362, 432);
|
||||||
EnvPack_Candle_Shine0067->SetClrModulation(0xcbffffff);
|
EnvPack_Candle_Shine0071->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0067->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0071->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0072 = CreateObject(EnvPack_Candle_Shine, 1361, 430);
|
||||||
|
EnvPack_Candle_Shine0072->SetClrModulation(0xcbffffff);
|
||||||
|
EnvPack_Candle_Shine0072->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_CandleSmall, 1556, 432);
|
CreateObject(EnvPack_CandleSmall, 1556, 432);
|
||||||
|
|
||||||
var EnvPack_CandleSmall_Shine0069 = CreateObject(EnvPack_CandleSmall_Shine, 1556, 423);
|
var EnvPack_CandleSmall_Shine0074 = CreateObject(EnvPack_CandleSmall_Shine, 1556, 435);
|
||||||
EnvPack_CandleSmall_Shine0069->SetCon(40);
|
EnvPack_CandleSmall_Shine0074->SetCon(40);
|
||||||
EnvPack_CandleSmall_Shine0069->SetClrModulation(0x43ffffff);
|
EnvPack_CandleSmall_Shine0074->SetClrModulation(0x46ffffff);
|
||||||
EnvPack_CandleSmall_Shine0069->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_CandleSmall_Shine0074->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_CandleSmall_Shine0070 = CreateObject(EnvPack_CandleSmall_Shine, 1556, 429);
|
var EnvPack_CandleSmall_Shine0075 = CreateObject(EnvPack_CandleSmall_Shine, 1556, 423);
|
||||||
EnvPack_CandleSmall_Shine0070->SetCon(40);
|
EnvPack_CandleSmall_Shine0075->SetCon(40);
|
||||||
EnvPack_CandleSmall_Shine0070->SetClrModulation(0x46ffffff);
|
EnvPack_CandleSmall_Shine0075->SetClrModulation(0x43ffffff);
|
||||||
EnvPack_CandleSmall_Shine0070->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_CandleSmall_Shine0075->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_CandleSmall_Shine0071 = CreateObject(EnvPack_CandleSmall_Shine, 1555, 432);
|
var EnvPack_CandleSmall_Shine0076 = CreateObject(EnvPack_CandleSmall_Shine, 1556, 429);
|
||||||
EnvPack_CandleSmall_Shine0071->SetCon(40);
|
EnvPack_CandleSmall_Shine0076->SetCon(40);
|
||||||
EnvPack_CandleSmall_Shine0071->SetClrModulation(0x41ffffff);
|
EnvPack_CandleSmall_Shine0076->SetClrModulation(0x46ffffff);
|
||||||
EnvPack_CandleSmall_Shine0071->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_CandleSmall_Shine0076->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_CandleSmall_Shine0077 = CreateObject(EnvPack_CandleSmall_Shine, 1555, 432);
|
||||||
|
EnvPack_CandleSmall_Shine0077->SetCon(40);
|
||||||
|
EnvPack_CandleSmall_Shine0077->SetClrModulation(0x41ffffff);
|
||||||
|
EnvPack_CandleSmall_Shine0077->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Crate, 1017, 576);
|
CreateObject(EnvPack_Crate, 1017, 576);
|
||||||
|
|
||||||
|
@ -149,27 +174,33 @@ func InitializeObjects()
|
||||||
|
|
||||||
CreateObject(EnvPack_Lantern, 894, 488);
|
CreateObject(EnvPack_Lantern, 894, 488);
|
||||||
|
|
||||||
var EnvPack_Lantern_Shine0077 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
var EnvPack_Lantern_Shine0083 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
||||||
EnvPack_Lantern_Shine0077->SetClrModulation(0xd3ffffff);
|
EnvPack_Lantern_Shine0083->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Lantern_Shine0077->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0083->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Lantern_Shine0078 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
var EnvPack_Lantern_Shine0084 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
||||||
EnvPack_Lantern_Shine0078->SetClrModulation(0xe4ffffff);
|
EnvPack_Lantern_Shine0084->SetClrModulation(0xd3ffffff);
|
||||||
EnvPack_Lantern_Shine0078->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0084->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Lantern_Shine0079 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
var EnvPack_Lantern_Shine0085 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
||||||
EnvPack_Lantern_Shine0079->SetClrModulation(0xc6ffffff);
|
EnvPack_Lantern_Shine0085->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Lantern_Shine0079->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0085->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Lantern_Shine0086 = CreateObject(EnvPack_Lantern_Shine, 894, 477);
|
||||||
|
EnvPack_Lantern_Shine0086->SetClrModulation(0xc6ffffff);
|
||||||
|
EnvPack_Lantern_Shine0086->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Lantern, 1291, 472);
|
CreateObject(EnvPack_Lantern, 1291, 472);
|
||||||
|
|
||||||
var EnvPack_Lantern_Shine0081 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
var EnvPack_Lantern_Shine0088 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
||||||
EnvPack_Lantern_Shine0081->SetClrModulation(0xd5ffffff);
|
EnvPack_Lantern_Shine0088->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Lantern_Shine0081->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0088->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Lantern_Shine0082 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
var EnvPack_Lantern_Shine0089 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
||||||
EnvPack_Lantern_Shine0082->SetClrModulation(0xe4ffffff);
|
EnvPack_Lantern_Shine0089->SetClrModulation(0xd5ffffff);
|
||||||
EnvPack_Lantern_Shine0082->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0089->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Lantern_Shine0083 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
var EnvPack_Lantern_Shine0090 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
||||||
EnvPack_Lantern_Shine0083->SetClrModulation(0xccffffff);
|
EnvPack_Lantern_Shine0090->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Lantern_Shine0083->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Lantern_Shine0090->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Lantern_Shine0091 = CreateObject(EnvPack_Lantern_Shine, 1291, 461);
|
||||||
|
EnvPack_Lantern_Shine0091->SetClrModulation(0xccffffff);
|
||||||
|
EnvPack_Lantern_Shine0091->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
CreateObject(EnvPack_Painting, 1235, 537);
|
CreateObject(EnvPack_Painting, 1235, 537);
|
||||||
|
|
||||||
|
@ -184,191 +215,213 @@ func InitializeObjects()
|
||||||
|
|
||||||
CreateObject(EnvPack_Candle, 1471, 552);
|
CreateObject(EnvPack_Candle, 1471, 552);
|
||||||
|
|
||||||
var EnvPack_Candle_Shine0091 = CreateObject(EnvPack_Candle_Shine, 1471, 552);
|
var EnvPack_Candle_Shine0099 = CreateObject(EnvPack_Candle_Shine, 1471, 552);
|
||||||
EnvPack_Candle_Shine0091->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0099->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0091->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0099->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0092 = CreateObject(EnvPack_Candle_Shine, 1471, 552);
|
var EnvPack_Candle_Shine0100 = CreateObject(EnvPack_Candle_Shine, 1471, 552);
|
||||||
EnvPack_Candle_Shine0092->SetClrModulation(0xe4ffffff);
|
EnvPack_Candle_Shine0100->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0092->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0100->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
var EnvPack_Candle_Shine0093 = CreateObject(EnvPack_Candle_Shine, 1472, 552);
|
var EnvPack_Candle_Shine0101 = CreateObject(EnvPack_Candle_Shine, 1471, 552);
|
||||||
EnvPack_Candle_Shine0093->SetClrModulation(0xddffffff);
|
EnvPack_Candle_Shine0101->SetClrModulation(0xe4ffffff);
|
||||||
EnvPack_Candle_Shine0093->SetObjectBlitMode(GFX_BLIT_Additive);
|
EnvPack_Candle_Shine0101->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
var EnvPack_Candle_Shine0102 = CreateObject(EnvPack_Candle_Shine, 1472, 552);
|
||||||
|
EnvPack_Candle_Shine0102->SetClrModulation(0xddffffff);
|
||||||
|
EnvPack_Candle_Shine0102->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
|
|
||||||
var Ruin10094 = CreateObject(Ruin1, 97, 1179);
|
g_ruin1 = CreateObject(Ruin1, 97, 1179);
|
||||||
Ruin10094->SetR(16);
|
g_ruin1->SetR(16);
|
||||||
Ruin10094->SetPosition(97, 1150);
|
g_ruin1.StaticSaveVar = "g_ruin1";
|
||||||
|
g_ruin1->SetPosition(97, 1150);
|
||||||
|
|
||||||
CreateObject(Ruin2, 353, 1145);
|
g_ruin2 = CreateObject(Ruin2, 353, 1145);
|
||||||
|
g_ruin2.StaticSaveVar = "g_ruin2";
|
||||||
|
|
||||||
CreateObject(Ruin3, 267, 1180);
|
g_ruin3 = CreateObject(Ruin3, 267, 1180);
|
||||||
|
g_ruin3.StaticSaveVar = "g_ruin3";
|
||||||
|
|
||||||
CreateObject(Foundry, 238, 1287);
|
CreateObject(Foundry, 238, 1287);
|
||||||
|
|
||||||
var Chest0100 = CreateObject(Chest, 1473, 1414);
|
var Chest0109 = CreateObject(Chest, 1473, 1414);
|
||||||
var Chest0101 = CreateObject(Chest, 1574, 583);
|
var Chest0110 = CreateObject(Chest, 1574, 583);
|
||||||
var Chest0102 = CreateObject(Chest, 823, 887);
|
var Chest0111 = CreateObject(Chest, 823, 887);
|
||||||
var Chest0103 = CreateObject(Chest, 856, 887);
|
var Chest0112 = CreateObject(Chest, 856, 887);
|
||||||
var Chest0104 = CreateObject(Chest, 1032, 575);
|
var Chest0113 = CreateObject(Chest, 1032, 575);
|
||||||
var Chest0105 = CreateObject(Chest, 136, 103);
|
var Chest0114 = CreateObject(Chest, 136, 103);
|
||||||
|
|
||||||
var StoneDoor0106 = CreateObject(StoneDoor, 940, 671);
|
var StoneDoor0115 = CreateObject(StoneDoor, 940, 671);
|
||||||
StoneDoor0106->SetComDir(COMD_Down);
|
StoneDoor0115->SetComDir(COMD_Down);
|
||||||
var StoneDoor0107 = CreateObject(StoneDoor, 1348, 527);
|
var StoneDoor0116 = CreateObject(StoneDoor, 1348, 527);
|
||||||
StoneDoor0107->SetComDir(COMD_Down);
|
StoneDoor0116->SetComDir(COMD_Down);
|
||||||
var StoneDoor0108 = CreateObject(StoneDoor, 1347, 431);
|
var StoneDoor0117 = CreateObject(StoneDoor, 1347, 431);
|
||||||
StoneDoor0108->SetComDir(COMD_Down);
|
StoneDoor0117->SetComDir(COMD_Down);
|
||||||
|
|
||||||
var SpinWheel0109 = CreateObject(SpinWheel, 961, 672);
|
var SpinWheel0118 = CreateObject(SpinWheel, 961, 672);
|
||||||
SpinWheel0109->SetStoneDoor(StoneDoor0106);
|
SpinWheel0118->SetStoneDoor(StoneDoor0115);
|
||||||
var SpinWheel0110 = CreateObject(SpinWheel, 1367, 527);
|
var SpinWheel0119 = CreateObject(SpinWheel, 1367, 527);
|
||||||
SpinWheel0110->SetStoneDoor(StoneDoor0107);
|
SpinWheel0119->SetStoneDoor(StoneDoor0116);
|
||||||
var SpinWheel0111 = CreateObject(SpinWheel, 1384, 471);
|
var SpinWheel0120 = CreateObject(SpinWheel, 1384, 471);
|
||||||
SpinWheel0111->SetStoneDoor(StoneDoor0108);
|
SpinWheel0120->SetStoneDoor(StoneDoor0117);
|
||||||
|
|
||||||
CreateObject(Column, 1197, 551);
|
CreateObject(Column, 1197, 551);
|
||||||
CreateObject(Column, 1218, 463);
|
CreateObject(Column, 1218, 463);
|
||||||
|
|
||||||
CreateObject(Idol, 1080, 575);
|
CreateObject(Idol, 1080, 575);
|
||||||
|
|
||||||
var SteamEngine0115 = CreateObject(SteamEngine, 1529, 585);
|
var SteamEngine0124 = CreateObject(SteamEngine, 1529, 585);
|
||||||
SteamEngine0115->SetCategory(C4D_StaticBack);
|
SteamEngine0124->SetCategory(C4D_StaticBack);
|
||||||
|
|
||||||
CreateObject(Elevator, 1366, 615);
|
g_elev1 = CreateObject(Elevator, 167, 1184);
|
||||||
var Elevator0180 = CreateObject(Elevator, 167, 1184);
|
g_elev1.StaticSaveVar = "g_elev1";
|
||||||
Elevator0180->SetClrModulation(0xffa08060);
|
g_elev1->SetClrModulation(0xffa08060);
|
||||||
|
g_elev1->CreateShaft(4);
|
||||||
|
g_elev1->SetCasePosition(1176);
|
||||||
|
g_elev2 = CreateObject(Elevator, 1366, 615);
|
||||||
|
g_elev2.StaticSaveVar = "g_elev2";
|
||||||
|
g_elev2->CreateShaft(4);
|
||||||
|
g_elev2->SetCasePosition(607);
|
||||||
|
|
||||||
CreateObject(Airship, 931, 495);
|
CreateObject(Airship, 931, 495);
|
||||||
|
|
||||||
var Catapult0202 = CreateObject(Catapult, 697, 887);
|
var Catapult0211 = CreateObject(Catapult, 697, 887);
|
||||||
Catapult0202->SetRDir(2);
|
Catapult0211->SetRDir(2);
|
||||||
|
|
||||||
var Lorry0203 = CreateObject(Lorry, 149, 1324);
|
var Lorry0212 = CreateObject(Lorry, 149, 1324);
|
||||||
Lorry0203->SetR(24);
|
Lorry0212->SetR(24);
|
||||||
Lorry0203->SetPosition(149, 1315);
|
Lorry0212->SetPosition(149, 1315);
|
||||||
var Lorry0205 = CreateObject(Lorry, 1428, 1253);
|
var Lorry0214 = CreateObject(Lorry, 1428, 1253);
|
||||||
Lorry0205->SetR(-30);
|
Lorry0214->SetR(-30);
|
||||||
Lorry0205->SetPosition(1428, 1243);
|
Lorry0214->SetPosition(1428, 1243);
|
||||||
|
|
||||||
CreateObject(Airship_Burnt, 38, 1152);
|
CreateObject(Airship_Burnt, 38, 1152);
|
||||||
|
|
||||||
var Cannon0208 = CreateObject(Cannon, 788, 679);
|
var Cannon0217 = CreateObject(Cannon, 788, 679);
|
||||||
Cannon0208->SetR(30);
|
Cannon0217->SetR(30);
|
||||||
Cannon0208->SetPosition(788, 669);
|
Cannon0217->SetPosition(788, 669);
|
||||||
CreateObject(Cannon, 1004, 471);
|
CreateObject(Cannon, 1004, 471);
|
||||||
CreateObject(Cannon, 1336, 336);
|
CreateObject(Cannon, 1336, 336);
|
||||||
|
|
||||||
var Clonk0211 = CreateObject(Clonk, 673, 886);
|
var Clonk0220 = CreateObject(Clonk, 673, 886);
|
||||||
Clonk0211->SetColor(0xff);
|
Clonk0220->SetColor(0xff);
|
||||||
Clonk0211->SetName("Horst");
|
Clonk0220->SetName("Horst");
|
||||||
S2AI->AddAI(Clonk0211);
|
S2AI->AddAI(Clonk0220);
|
||||||
S2AI->SetHome(Clonk0211, 670, 878, DIR_Left);
|
S2AI->SetHome(Clonk0220, 670, 878, DIR_Left);
|
||||||
S2AI->SetGuardRange(Clonk0211, 400, 800, 500, 150);
|
S2AI->SetGuardRange(Clonk0220, 400, 800, 500, 150);
|
||||||
S2AI->SetAllyAlertRange(Clonk0211, 60);
|
S2AI->SetAllyAlertRange(Clonk0220, 60);
|
||||||
S2AI->SetEncounterCB(Clonk0211, "EncounterOutpost");
|
S2AI->SetEncounterCB(Clonk0220, "EncounterOutpost");
|
||||||
var Clonk0219 = CreateObject(Clonk, 710, 887);
|
Clonk0220->SetDir(DIR_Left);
|
||||||
Clonk0219->SetColor(0xff);
|
var Clonk0227 = CreateObject(Clonk, 710, 887);
|
||||||
Clonk0219->SetName("Hanniball");
|
Clonk0227->SetColor(0xff);
|
||||||
S2AI->AddAI(Clonk0219);
|
Clonk0227->SetName("Hanniball");
|
||||||
S2AI->SetHome(Clonk0219, 709, 877, DIR_Left);
|
S2AI->AddAI(Clonk0227);
|
||||||
S2AI->SetGuardRange(Clonk0219, 300, 700, 500, 250);
|
S2AI->SetHome(Clonk0227, 709, 877, DIR_Left);
|
||||||
S2AI->SetAllyAlertRange(Clonk0219, 60);
|
S2AI->SetGuardRange(Clonk0227, 300, 700, 500, 250);
|
||||||
var Clonk0226 = CreateObject(Clonk, 781, 671);
|
S2AI->SetAllyAlertRange(Clonk0227, 60);
|
||||||
Clonk0226->SetDir(DIR_Right);
|
Clonk0227->SetDir(DIR_Left);
|
||||||
Clonk0226->SetColor(0xff);
|
var Clonk0234 = CreateObject(Clonk, 781, 671);
|
||||||
Clonk0226->SetName("Twonky");
|
|
||||||
S2AI->AddAI(Clonk0226);
|
|
||||||
S2AI->SetHome(Clonk0226, 781, 663, DIR_Right);
|
|
||||||
S2AI->SetGuardRange(Clonk0226, 481, 511, 600, 300);
|
|
||||||
var Clonk0234 = CreateObject(Clonk, 1010, 671);
|
|
||||||
Clonk0234->SetDir(DIR_Right);
|
Clonk0234->SetDir(DIR_Right);
|
||||||
Clonk0234->SetColor(0xff);
|
Clonk0234->SetColor(0xff);
|
||||||
Clonk0234->SetName("Sven");
|
Clonk0234->SetName("Twonky");
|
||||||
S2AI->AddAI(Clonk0234);
|
S2AI->AddAI(Clonk0234);
|
||||||
S2AI->SetHome(Clonk0234, 1010, 663, DIR_Right);
|
S2AI->SetHome(Clonk0234, 781, 663, DIR_Right);
|
||||||
S2AI->SetGuardRange(Clonk0234, 710, 511, 600, 300);
|
S2AI->SetGuardRange(Clonk0234, 481, 511, 600, 300);
|
||||||
var Clonk0242 = CreateObject(Clonk, 985, 671);
|
var Clonk0241 = CreateObject(Clonk, 1010, 671);
|
||||||
Clonk0242->SetDir(DIR_Right);
|
Clonk0241->SetDir(DIR_Right);
|
||||||
Clonk0242->SetColor(0xff);
|
Clonk0241->SetColor(0xff);
|
||||||
Clonk0242->SetName("Luki");
|
Clonk0241->SetName("Sven");
|
||||||
S2AI->AddAI(Clonk0242);
|
S2AI->AddAI(Clonk0241);
|
||||||
S2AI->SetHome(Clonk0242, 985, 663, DIR_Right);
|
S2AI->SetHome(Clonk0241, 1010, 663, DIR_Right);
|
||||||
S2AI->SetGuardRange(Clonk0242, 685, 511, 600, 300);
|
S2AI->SetGuardRange(Clonk0241, 710, 511, 600, 300);
|
||||||
var Clonk0250 = CreateObject(Clonk, 1373, 1246);
|
var Clonk0248 = CreateObject(Clonk, 985, 671);
|
||||||
Clonk0250->SetColor(0xffff0000);
|
Clonk0248->SetDir(DIR_Right);
|
||||||
Clonk0250->SetName("Anna");
|
Clonk0248->SetColor(0xff);
|
||||||
S2AI->AddAI(Clonk0250);
|
Clonk0248->SetName("Luki");
|
||||||
S2AI->SetHome(Clonk0250, 1370, 1237, DIR_Left);
|
S2AI->AddAI(Clonk0248);
|
||||||
S2AI->SetGuardRange(Clonk0250, 1150, 1140, 320, 150);
|
S2AI->SetHome(Clonk0248, 985, 663, DIR_Right);
|
||||||
S2AI->SetAllyAlertRange(Clonk0250, 170);
|
S2AI->SetGuardRange(Clonk0248, 685, 511, 600, 300);
|
||||||
var Clonk0258 = CreateObject(Clonk, 1449, 1246);
|
var Clonk0255 = CreateObject(Clonk, 1373, 1246);
|
||||||
Clonk0258->SetColor(0xffff0000);
|
Clonk0255->SetColor(0xffff0000);
|
||||||
Clonk0258->SetName("Cindy");
|
Clonk0255->SetName("Anna");
|
||||||
S2AI->AddAI(Clonk0258);
|
S2AI->AddAI(Clonk0255);
|
||||||
S2AI->SetHome(Clonk0258, 1448, 1237, DIR_Left);
|
S2AI->SetHome(Clonk0255, 1370, 1237, DIR_Left);
|
||||||
S2AI->SetGuardRange(Clonk0258, 1150, 1140, 320, 150);
|
S2AI->SetGuardRange(Clonk0255, 1150, 1140, 320, 150);
|
||||||
S2AI->SetAllyAlertRange(Clonk0258, 170);
|
S2AI->SetAllyAlertRange(Clonk0255, 170);
|
||||||
S2AI->SetEncounterCB(Clonk0258, "EncounterCave");
|
Clonk0255->SetDir(DIR_Left);
|
||||||
var Clonk0266 = CreateObject(Clonk, 307, 1166);
|
var Clonk0262 = CreateObject(Clonk, 1449, 1246);
|
||||||
Clonk0266->SetDir(DIR_Right);
|
Clonk0262->SetColor(0xffff0000);
|
||||||
Clonk0266->SetColor(0xff);
|
Clonk0262->SetName("Cindy");
|
||||||
Clonk0266->SetClrModulation(0xffffa020);
|
S2AI->AddAI(Clonk0262);
|
||||||
Clonk0266->SetName("Farmer");
|
S2AI->SetHome(Clonk0262, 1448, 1237, DIR_Left);
|
||||||
var Clonk0273 = CreateObject(Clonk, 1197, 551);
|
S2AI->SetGuardRange(Clonk0262, 1150, 1140, 320, 150);
|
||||||
Clonk0273->SetDir(DIR_Right);
|
S2AI->SetAllyAlertRange(Clonk0262, 170);
|
||||||
Clonk0273->SetColor(0xff);
|
S2AI->SetEncounterCB(Clonk0262, "EncounterCave");
|
||||||
Clonk0273->SetName("Sabrina");
|
Clonk0262->SetDir(DIR_Left);
|
||||||
S2AI->AddAI(Clonk0273);
|
g_farmer = CreateObject(Clonk, 307, 1166);
|
||||||
S2AI->SetHome(Clonk0273, 1196, 542, DIR_Right);
|
g_farmer->SetDir(DIR_Left);
|
||||||
S2AI->SetGuardRange(Clonk0273, 896, 392, 600, 300);
|
g_farmer->SetColor(0xff0000);
|
||||||
var Clonk0281 = CreateObject(Clonk, 1266, 550);
|
g_farmer->SetClrModulation(0xffffa020);
|
||||||
Clonk0281->SetColor(0xff);
|
g_farmer->SetName("Farmer");
|
||||||
Clonk0281->SetName("Laura");
|
g_farmer.StaticSaveVar = "g_farmer";
|
||||||
S2AI->AddAI(Clonk0281);
|
var Clonk0275 = CreateObject(Clonk, 1197, 551);
|
||||||
S2AI->SetGuardRange(Clonk0281, 966, 391, 600, 300);
|
Clonk0275->SetDir(DIR_Right);
|
||||||
|
Clonk0275->SetColor(0xff);
|
||||||
|
Clonk0275->SetName("Sabrina");
|
||||||
|
S2AI->AddAI(Clonk0275);
|
||||||
|
S2AI->SetHome(Clonk0275, 1196, 542, DIR_Right);
|
||||||
|
S2AI->SetGuardRange(Clonk0275, 896, 392, 600, 300);
|
||||||
|
var Clonk0282 = CreateObject(Clonk, 1266, 550);
|
||||||
|
Clonk0282->SetColor(0xff);
|
||||||
|
Clonk0282->SetName("Laura");
|
||||||
|
S2AI->AddAI(Clonk0282);
|
||||||
|
S2AI->SetGuardRange(Clonk0282, 966, 391, 600, 300);
|
||||||
|
Clonk0282->SetDir(DIR_Left);
|
||||||
var Clonk0289 = CreateObject(Clonk, 1287, 471);
|
var Clonk0289 = CreateObject(Clonk, 1287, 471);
|
||||||
Clonk0289->SetDir(DIR_Right);
|
Clonk0289->SetDir(DIR_Right);
|
||||||
Clonk0289->SetColor(0xff);
|
Clonk0289->SetColor(0xff);
|
||||||
S2AI->AddAI(Clonk0289);
|
S2AI->AddAI(Clonk0289);
|
||||||
S2AI->SetHome(Clonk0289, 1287, 464, DIR_Right);
|
S2AI->SetHome(Clonk0289, 1287, 464, DIR_Right);
|
||||||
S2AI->SetGuardRange(Clonk0289, 987, 312, 600, 300);
|
S2AI->SetGuardRange(Clonk0289, 987, 312, 600, 300);
|
||||||
var Clonk0297 = CreateObject(Clonk, 1092, 575);
|
var Clonk0296 = CreateObject(Clonk, 1092, 575);
|
||||||
Clonk0297->SetDir(DIR_Right);
|
Clonk0296->SetDir(DIR_Right);
|
||||||
Clonk0297->SetColor(0xff);
|
Clonk0296->SetColor(0xff);
|
||||||
Clonk0297->SetName("Wolfgang");
|
Clonk0296->SetName("Wolfgang");
|
||||||
S2AI->AddAI(Clonk0297);
|
S2AI->AddAI(Clonk0296);
|
||||||
S2AI->SetHome(Clonk0297, 1092, 567, DIR_Right);
|
S2AI->SetHome(Clonk0296, 1092, 567, DIR_Right);
|
||||||
S2AI->SetGuardRange(Clonk0297, 792, 416, 600, 300);
|
S2AI->SetGuardRange(Clonk0296, 792, 416, 600, 300);
|
||||||
var Clonk0305 = CreateObject(Clonk, 1569, 431);
|
g_king = CreateObject(Clonk, 1569, 431);
|
||||||
Clonk0305->Kill(Clonk0305, true);
|
g_king->SetDir(DIR_Left);
|
||||||
Clonk0305->SetCon(200);
|
g_king->SetCon(200);
|
||||||
Clonk0305->SetColor(0xff);
|
g_king->SetColor(0xff);
|
||||||
Clonk0305->SetClrModulation(0xffff8000);
|
g_king->SetClrModulation(0xffff8000);
|
||||||
Clonk0305->SetObjectBlitMode(GFX_BLIT_Additive);
|
g_king->SetObjectBlitMode(GFX_BLIT_Additive);
|
||||||
Clonk0305->SetName("Horax");
|
g_king->SetName("Horax");
|
||||||
Clonk0305.MaxEnergy = 200000;
|
g_king.MaxEnergy = 200000;
|
||||||
Clonk0305->DoEnergy(150);
|
g_king->DoEnergy(150);
|
||||||
S2AI->AddAI(Clonk0305);
|
g_king.StaticSaveVar = "g_king";
|
||||||
S2AI->SetHome(Clonk0305, 1568, 413, DIR_Left);
|
S2AI->AddAI(g_king);
|
||||||
S2AI->SetGuardRange(Clonk0305, 1268, 263, 600, 300);
|
S2AI->SetHome(g_king, 1568, 413, DIR_Left);
|
||||||
S2AI->SetEncounterCB(Clonk0305, "EncounterKing");
|
S2AI->SetGuardRange(g_king, 1268, 263, 600, 300);
|
||||||
var Clonk0312 = CreateObject(Clonk, 1070, 575);
|
S2AI->SetEncounterCB(g_king, "EncounterKing");
|
||||||
Clonk0312->SetColor(0xff);
|
var Clonk0310 = CreateObject(Clonk, 1070, 575);
|
||||||
Clonk0312->SetName("Hans");
|
Clonk0310->SetDir(DIR_Right);
|
||||||
S2AI->AddAI(Clonk0312);
|
Clonk0310->SetColor(0xff);
|
||||||
S2AI->SetHome(Clonk0312, 1069, 566, DIR_Left);
|
Clonk0310->SetName("Hans");
|
||||||
S2AI->SetGuardRange(Clonk0312, 769, 416, 600, 300);
|
S2AI->AddAI(Clonk0310);
|
||||||
var Clonk0320 = CreateObject(Clonk, 1019, 471);
|
S2AI->SetHome(Clonk0310, 1069, 566, DIR_Left);
|
||||||
Clonk0320->SetColor(0xff);
|
S2AI->SetGuardRange(Clonk0310, 769, 416, 600, 300);
|
||||||
Clonk0320->SetName("Joki");
|
var Clonk0317 = CreateObject(Clonk, 1019, 471);
|
||||||
S2AI->AddAI(Clonk0320);
|
Clonk0317->SetColor(0xff);
|
||||||
S2AI->SetGuardRange(Clonk0320, 719, 312, 600, 300);
|
Clonk0317->SetName("Joki");
|
||||||
var Clonk0328 = CreateObject(Clonk, 285, 1182);
|
S2AI->AddAI(Clonk0317);
|
||||||
Clonk0328->Kill(Clonk0328, true);
|
S2AI->SetGuardRange(Clonk0317, 719, 312, 600, 300);
|
||||||
Clonk0328->SetColor(0xffff0000);
|
Clonk0317->SetDir(DIR_Left);
|
||||||
var Clonk0334 = CreateObject(Clonk, 208, 1183);
|
var Clonk0324 = CreateObject(Clonk, 285, 1182);
|
||||||
Clonk0334->Kill(Clonk0334, true);
|
Clonk0324->Kill(Clonk0324, true);
|
||||||
Clonk0334->SetDir(DIR_Right);
|
Clonk0324->SetDir(DIR_Right);
|
||||||
Clonk0334->SetColor(0xffff0000);
|
Clonk0324->SetColor(0xffff0000);
|
||||||
|
var Clonk0330 = CreateObject(Clonk, 208, 1183);
|
||||||
|
Clonk0330->Kill(Clonk0330, true);
|
||||||
|
Clonk0330->SetDir(DIR_Right);
|
||||||
|
Clonk0330->SetColor(0xffff0000);
|
||||||
|
|
||||||
CreateObject(Rock, 879, 1003);
|
CreateObject(Rock, 879, 1003);
|
||||||
CreateObject(Rock, 262, 1182);
|
CreateObject(Rock, 262, 1182);
|
||||||
|
@ -395,18 +448,18 @@ func InitializeObjects()
|
||||||
CreateObject(Rock, 742, 1522);
|
CreateObject(Rock, 742, 1522);
|
||||||
CreateObject(Rock, 712, 1351);
|
CreateObject(Rock, 712, 1351);
|
||||||
CreateObject(Rock, 1047, 1207);
|
CreateObject(Rock, 1047, 1207);
|
||||||
Clonk0250->CreateContents(Rock);
|
Clonk0255->CreateContents(Rock);
|
||||||
Clonk0250->CreateContents(Rock);
|
Clonk0255->CreateContents(Rock);
|
||||||
Clonk0250->CreateContents(Rock);
|
Clonk0255->CreateContents(Rock);
|
||||||
|
|
||||||
CreateObject(Coal, 59, 1346);
|
CreateObject(Coal, 59, 1346);
|
||||||
CreateObject(Coal, 156, 1370);
|
CreateObject(Coal, 156, 1370);
|
||||||
CreateObject(Coal, 243, 1555);
|
CreateObject(Coal, 243, 1555);
|
||||||
CreateObject(Coal, 61, 1495);
|
CreateObject(Coal, 61, 1495);
|
||||||
CreateObject(Coal, 140, 1380);
|
CreateObject(Coal, 140, 1380);
|
||||||
SteamEngine0115->CreateContents(Coal);
|
SteamEngine0124->CreateContents(Coal);
|
||||||
SteamEngine0115->CreateContents(Coal);
|
SteamEngine0124->CreateContents(Coal);
|
||||||
SteamEngine0115->CreateContents(Coal);
|
SteamEngine0124->CreateContents(Coal);
|
||||||
|
|
||||||
CreateObject(Ore, 227, 1366);
|
CreateObject(Ore, 227, 1366);
|
||||||
CreateObject(Ore, 64, 1421);
|
CreateObject(Ore, 64, 1421);
|
||||||
|
@ -425,65 +478,65 @@ func InitializeObjects()
|
||||||
CreateObject(Wood, 19, 1135);
|
CreateObject(Wood, 19, 1135);
|
||||||
CreateObject(Wood, 749, 1056);
|
CreateObject(Wood, 749, 1056);
|
||||||
CreateObject(Wood, 168, 1512);
|
CreateObject(Wood, 168, 1512);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Lorry0203->CreateContents(Wood);
|
Lorry0212->CreateContents(Wood);
|
||||||
Chest0103->CreateContents(Wood);
|
Chest0112->CreateContents(Wood);
|
||||||
Chest0103->CreateContents(Wood);
|
Chest0112->CreateContents(Wood);
|
||||||
Chest0103->CreateContents(Wood);
|
Chest0112->CreateContents(Wood);
|
||||||
Chest0103->CreateContents(Wood);
|
Chest0112->CreateContents(Wood);
|
||||||
Chest0103->CreateContents(Wood);
|
Chest0112->CreateContents(Wood);
|
||||||
CreateObject(Wood, 346, 1456);
|
CreateObject(Wood, 346, 1456);
|
||||||
CreateObject(Wood, 336, 1456);
|
CreateObject(Wood, 336, 1456);
|
||||||
Lorry0205->CreateContents(Wood);
|
Lorry0214->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Chest0100->CreateContents(Wood);
|
Chest0109->CreateContents(Wood);
|
||||||
Lorry0205->CreateContents(Wood);
|
Lorry0214->CreateContents(Wood);
|
||||||
Lorry0205->CreateContents(Wood);
|
Lorry0214->CreateContents(Wood);
|
||||||
Lorry0205->CreateContents(Wood);
|
Lorry0214->CreateContents(Wood);
|
||||||
Lorry0205->CreateContents(Wood);
|
Lorry0214->CreateContents(Wood);
|
||||||
Chest0104->CreateContents(Wood);
|
Chest0113->CreateContents(Wood);
|
||||||
Chest0104->CreateContents(Wood);
|
Chest0113->CreateContents(Wood);
|
||||||
Chest0104->CreateContents(Wood);
|
Chest0113->CreateContents(Wood);
|
||||||
Chest0104->CreateContents(Wood);
|
Chest0113->CreateContents(Wood);
|
||||||
Chest0104->CreateContents(Wood);
|
Chest0113->CreateContents(Wood);
|
||||||
CreateObject(Wood, 167, 1512);
|
CreateObject(Wood, 167, 1512);
|
||||||
CreateObject(Wood, 177, 1512);
|
CreateObject(Wood, 177, 1512);
|
||||||
CreateObject(Wood, 511, 1497);
|
CreateObject(Wood, 511, 1497);
|
||||||
|
|
||||||
Lorry0203->CreateContents(Loam);
|
Lorry0212->CreateContents(Loam);
|
||||||
CreateObject(Loam, 199, 1287);
|
CreateObject(Loam, 199, 1287);
|
||||||
CreateObject(Loam, 283, 1431);
|
CreateObject(Loam, 283, 1431);
|
||||||
CreateObject(Loam, 372, 1391);
|
CreateObject(Loam, 372, 1391);
|
||||||
|
@ -505,125 +558,125 @@ func InitializeObjects()
|
||||||
CreateObject(Loam, 1393, 644);
|
CreateObject(Loam, 1393, 644);
|
||||||
CreateObject(Loam, 1462, 1079);
|
CreateObject(Loam, 1462, 1079);
|
||||||
CreateObject(Loam, 1501, 1415);
|
CreateObject(Loam, 1501, 1415);
|
||||||
Chest0103->CreateContents(Loam);
|
Chest0112->CreateContents(Loam);
|
||||||
Chest0103->CreateContents(Loam);
|
Chest0112->CreateContents(Loam);
|
||||||
Chest0103->CreateContents(Loam);
|
Chest0112->CreateContents(Loam);
|
||||||
Chest0105->CreateContents(Loam);
|
Chest0114->CreateContents(Loam);
|
||||||
Chest0105->CreateContents(Loam);
|
Chest0114->CreateContents(Loam);
|
||||||
Chest0105->CreateContents(Loam);
|
Chest0114->CreateContents(Loam);
|
||||||
Chest0105->CreateContents(Loam);
|
Chest0114->CreateContents(Loam);
|
||||||
Chest0105->CreateContents(Loam);
|
Chest0114->CreateContents(Loam);
|
||||||
|
|
||||||
var GoldBar0478 = CreateObject(GoldBar, 1293, 1236);
|
var GoldBar0474 = CreateObject(GoldBar, 1293, 1236);
|
||||||
GoldBar0478->SetR(22);
|
GoldBar0474->SetR(22);
|
||||||
GoldBar0478->SetPosition(1293, 1235);
|
GoldBar0474->SetPosition(1293, 1235);
|
||||||
Lorry0205->CreateContents(GoldBar);
|
Lorry0214->CreateContents(GoldBar);
|
||||||
Lorry0205->CreateContents(GoldBar);
|
Lorry0214->CreateContents(GoldBar);
|
||||||
|
|
||||||
Clonk0211->CreateContents(Sword);
|
Clonk0220->CreateContents(Sword);
|
||||||
Clonk0258->CreateContents(Sword);
|
Clonk0262->CreateContents(Sword);
|
||||||
Clonk0234->CreateContents(Sword);
|
Clonk0241->CreateContents(Sword);
|
||||||
Clonk0242->CreateContents(Sword);
|
Clonk0248->CreateContents(Sword);
|
||||||
Clonk0312->CreateContents(Sword);
|
Clonk0310->CreateContents(Sword);
|
||||||
Clonk0289->CreateContents(Sword);
|
Clonk0289->CreateContents(Sword);
|
||||||
Clonk0305->CreateContents(Sword);
|
g_king->CreateContents(Sword);
|
||||||
Clonk0219->CreateContents(Sword);
|
Clonk0227->CreateContents(Sword);
|
||||||
|
|
||||||
var Arrow0489 = Clonk0211->CreateContents(Arrow);
|
var Arrow0485 = Clonk0220->CreateContents(Arrow);
|
||||||
|
Arrow0485->SetR(90);
|
||||||
|
var Arrow0486 = Clonk0220->CreateContents(Arrow);
|
||||||
|
Arrow0486->SetR(90);
|
||||||
|
var Arrow0487 = Chest0111->CreateContents(Arrow);
|
||||||
|
Arrow0487->SetR(90);
|
||||||
|
var Arrow0488 = Clonk0234->CreateContents(Arrow);
|
||||||
|
Arrow0488->SetR(90);
|
||||||
|
var Arrow0489 = Clonk0234->CreateContents(Arrow);
|
||||||
Arrow0489->SetR(90);
|
Arrow0489->SetR(90);
|
||||||
var Arrow0490 = Clonk0211->CreateContents(Arrow);
|
var Arrow0490 = Clonk0317->CreateContents(Arrow);
|
||||||
Arrow0490->SetR(90);
|
Arrow0490->SetR(90);
|
||||||
var Arrow0491 = Chest0102->CreateContents(Arrow);
|
var Arrow0491 = Clonk0317->CreateContents(Arrow);
|
||||||
Arrow0491->SetR(90);
|
Arrow0491->SetR(90);
|
||||||
var Arrow0492 = Clonk0226->CreateContents(Arrow);
|
var Arrow0492 = g_king->CreateContents(Arrow);
|
||||||
Arrow0492->SetR(90);
|
Arrow0492->SetR(90);
|
||||||
var Arrow0493 = Clonk0226->CreateContents(Arrow);
|
var Arrow0493 = g_king->CreateContents(Arrow);
|
||||||
Arrow0493->SetR(90);
|
Arrow0493->SetR(90);
|
||||||
var Arrow0494 = Clonk0320->CreateContents(Arrow);
|
|
||||||
Arrow0494->SetR(90);
|
|
||||||
var Arrow0495 = Clonk0320->CreateContents(Arrow);
|
|
||||||
Arrow0495->SetR(90);
|
|
||||||
var Arrow0496 = Clonk0305->CreateContents(Arrow);
|
|
||||||
Arrow0496->SetR(90);
|
|
||||||
var Arrow0497 = Clonk0305->CreateContents(Arrow);
|
|
||||||
Arrow0497->SetR(90);
|
|
||||||
|
|
||||||
Clonk0211->CreateContents(Bow);
|
Clonk0220->CreateContents(Bow);
|
||||||
Chest0102->CreateContents(Bow);
|
Chest0111->CreateContents(Bow);
|
||||||
Clonk0226->CreateContents(Bow);
|
Clonk0234->CreateContents(Bow);
|
||||||
Clonk0320->CreateContents(Bow);
|
Clonk0317->CreateContents(Bow);
|
||||||
Clonk0305->CreateContents(Bow);
|
g_king->CreateContents(Bow);
|
||||||
|
|
||||||
var Boompack0503 = CreateObject(Boompack, 135, 1324);
|
var Boompack0499 = CreateObject(Boompack, 135, 1324);
|
||||||
Boompack0503->SetColor(0xff);
|
Boompack0499->SetColor(0xff);
|
||||||
|
|
||||||
Lorry0203->CreateContents(DynamiteBox);
|
Lorry0212->CreateContents(DynamiteBox);
|
||||||
Lorry0205->CreateContents(DynamiteBox);
|
Lorry0214->CreateContents(DynamiteBox);
|
||||||
Chest0100->CreateContents(DynamiteBox);
|
Chest0109->CreateContents(DynamiteBox);
|
||||||
Chest0100->CreateContents(DynamiteBox);
|
Chest0109->CreateContents(DynamiteBox);
|
||||||
Chest0105->CreateContents(DynamiteBox);
|
Chest0114->CreateContents(DynamiteBox);
|
||||||
|
|
||||||
CreateObject(Dynamite, 1334, 1224);
|
CreateObject(Dynamite, 1334, 1224);
|
||||||
|
|
||||||
Lorry0205->CreateContents(Pickaxe);
|
Lorry0214->CreateContents(Pickaxe);
|
||||||
Clonk0250->CreateContents(Pickaxe);
|
Clonk0255->CreateContents(Pickaxe);
|
||||||
Clonk0258->CreateContents(Pickaxe);
|
Clonk0262->CreateContents(Pickaxe);
|
||||||
|
|
||||||
Lorry0203->CreateContents(Shovel);
|
Lorry0212->CreateContents(Shovel);
|
||||||
|
|
||||||
var Barrel0514 = CreateObject(Barrel, 167, 1333);
|
var Barrel0510 = CreateObject(Barrel, 167, 1333);
|
||||||
Barrel0514->SetR(-13);
|
Barrel0510->SetR(-13);
|
||||||
Barrel0514->SetPosition(167, 1327);
|
Barrel0510->SetPosition(167, 1327);
|
||||||
|
|
||||||
var Seaweed0516 = CreateObject(Seaweed, 169, 1543);
|
var Seaweed0512 = CreateObject(Seaweed, 169, 1543);
|
||||||
Seaweed0516->SetPhase(49);
|
Seaweed0512->SetPhase(49);
|
||||||
var Seaweed0519 = CreateObject(Seaweed, 815, 1342);
|
var Seaweed0515 = CreateObject(Seaweed, 815, 1342);
|
||||||
Seaweed0519->SetPhase(49);
|
Seaweed0515->SetPhase(49);
|
||||||
var Seaweed0522 = CreateObject(Seaweed, 719, 1078);
|
var Seaweed0518 = CreateObject(Seaweed, 719, 1078);
|
||||||
Seaweed0522->SetPhase(68);
|
Seaweed0518->SetPhase(68);
|
||||||
var Seaweed0525 = CreateObject(Seaweed, 772, 1087);
|
var Seaweed0521 = CreateObject(Seaweed, 772, 1087);
|
||||||
Seaweed0525->SetPhase(8);
|
Seaweed0521->SetPhase(8);
|
||||||
var Seaweed0528 = CreateObject(Seaweed, 1258, 1279);
|
var Seaweed0524 = CreateObject(Seaweed, 1258, 1279);
|
||||||
Seaweed0528->SetPhase(75);
|
Seaweed0524->SetPhase(75);
|
||||||
var Seaweed0628 = CreateObject(Seaweed, 847, 1366);
|
var Seaweed0527 = CreateObject(Seaweed, 847, 1366);
|
||||||
Seaweed0628->SetCon(1);
|
Seaweed0527->SetCon(1);
|
||||||
|
|
||||||
CreateObject(Mushroom, 126, 1320);
|
CreateObject(Mushroom, 126, 1320);
|
||||||
CreateObject(Mushroom, 212, 1287);
|
CreateObject(Mushroom, 212, 1287);
|
||||||
CreateObject(Mushroom, 367, 1392);
|
CreateObject(Mushroom, 367, 1392);
|
||||||
CreateObject(Mushroom, 268, 1431);
|
CreateObject(Mushroom, 268, 1431);
|
||||||
|
|
||||||
Chest0101->CreateContents(Musket);
|
Chest0110->CreateContents(Musket);
|
||||||
|
|
||||||
Chest0101->CreateContents(LeadShot);
|
Chest0110->CreateContents(LeadShot);
|
||||||
Chest0101->CreateContents(LeadShot);
|
Chest0110->CreateContents(LeadShot);
|
||||||
Chest0101->CreateContents(LeadShot);
|
Chest0110->CreateContents(LeadShot);
|
||||||
|
|
||||||
Clonk0281->CreateContents(Javelin);
|
Clonk0282->CreateContents(Javelin);
|
||||||
Clonk0273->CreateContents(Javelin);
|
Clonk0275->CreateContents(Javelin);
|
||||||
Clonk0281->CreateContents(Javelin);
|
Clonk0282->CreateContents(Javelin);
|
||||||
Clonk0273->CreateContents(Javelin);
|
Clonk0275->CreateContents(Javelin);
|
||||||
Clonk0281->CreateContents(Javelin);
|
Clonk0282->CreateContents(Javelin);
|
||||||
Clonk0273->CreateContents(Javelin);
|
Clonk0275->CreateContents(Javelin);
|
||||||
|
|
||||||
Clonk0312->CreateContents(Shield);
|
Clonk0310->CreateContents(Shield);
|
||||||
Clonk0289->CreateContents(Shield);
|
Clonk0289->CreateContents(Shield);
|
||||||
Clonk0305->CreateContents(Shield);
|
g_king->CreateContents(Shield);
|
||||||
|
|
||||||
Chest0104->CreateContents(Bread);
|
Chest0113->CreateContents(Bread);
|
||||||
Chest0104->CreateContents(Bread);
|
Chest0113->CreateContents(Bread);
|
||||||
Chest0104->CreateContents(Bread);
|
Chest0113->CreateContents(Bread);
|
||||||
Chest0105->CreateContents(Bread);
|
Chest0114->CreateContents(Bread);
|
||||||
Chest0105->CreateContents(Bread);
|
Chest0114->CreateContents(Bread);
|
||||||
Chest0105->CreateContents(Bread);
|
Chest0114->CreateContents(Bread);
|
||||||
|
|
||||||
CreateObject(EnvPack_ManaAltar, 1052, 471);
|
CreateObject(EnvPack_ManaAltar, 1052, 471);
|
||||||
|
|
||||||
Catapult0202->CreateContents(Firestone);
|
Catapult0211->CreateContents(Firestone);
|
||||||
Catapult0202->CreateContents(Firestone);
|
Catapult0211->CreateContents(Firestone);
|
||||||
Catapult0202->CreateContents(Firestone);
|
Catapult0211->CreateContents(Firestone);
|
||||||
Catapult0202->CreateContents(Firestone);
|
Catapult0211->CreateContents(Firestone);
|
||||||
Catapult0202->CreateContents(Firestone);
|
Catapult0211->CreateContents(Firestone);
|
||||||
CreateObject(Firestone, 38, 1190);
|
CreateObject(Firestone, 38, 1190);
|
||||||
CreateObject(Firestone, 101, 1215);
|
CreateObject(Firestone, 101, 1215);
|
||||||
CreateObject(Firestone, 369, 1282);
|
CreateObject(Firestone, 369, 1282);
|
||||||
|
@ -647,22 +700,22 @@ func InitializeObjects()
|
||||||
CreateObject(Firestone, 781, 911);
|
CreateObject(Firestone, 781, 911);
|
||||||
CreateObject(Firestone, 1356, 806);
|
CreateObject(Firestone, 1356, 806);
|
||||||
CreateObject(Firestone, 1287, 852);
|
CreateObject(Firestone, 1287, 852);
|
||||||
Clonk0250->CreateContents(Firestone);
|
Clonk0255->CreateContents(Firestone);
|
||||||
Clonk0250->CreateContents(Firestone);
|
Clonk0255->CreateContents(Firestone);
|
||||||
Clonk0258->CreateContents(Firestone);
|
Clonk0262->CreateContents(Firestone);
|
||||||
Chest0103->CreateContents(Firestone);
|
Chest0112->CreateContents(Firestone);
|
||||||
Chest0103->CreateContents(Firestone);
|
Chest0112->CreateContents(Firestone);
|
||||||
Chest0103->CreateContents(Firestone);
|
Chest0112->CreateContents(Firestone);
|
||||||
Clonk0297->CreateContents(Firestone);
|
Clonk0296->CreateContents(Firestone);
|
||||||
Clonk0297->CreateContents(Firestone);
|
Clonk0296->CreateContents(Firestone);
|
||||||
Clonk0297->CreateContents(Firestone);
|
Clonk0296->CreateContents(Firestone);
|
||||||
Clonk0297->CreateContents(Firestone);
|
Clonk0296->CreateContents(Firestone);
|
||||||
Chest0104->CreateContents(Firestone);
|
Chest0113->CreateContents(Firestone);
|
||||||
Chest0104->CreateContents(Firestone);
|
Chest0113->CreateContents(Firestone);
|
||||||
Chest0104->CreateContents(Firestone);
|
Chest0113->CreateContents(Firestone);
|
||||||
Clonk0305->CreateContents(Firestone);
|
g_king->CreateContents(Firestone);
|
||||||
Clonk0305->CreateContents(Firestone);
|
g_king->CreateContents(Firestone);
|
||||||
Clonk0305->CreateContents(Firestone);
|
g_king->CreateContents(Firestone);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,29 +13,30 @@ func DoInit(int first_player)
|
||||||
{
|
{
|
||||||
// Goal
|
// Goal
|
||||||
var goal = CreateObject(Goal_Assassination);
|
var goal = CreateObject(Goal_Assassination);
|
||||||
if (goal) goal->SetVictim(Object(3816));
|
if (goal) goal->SetVictim(g_king);
|
||||||
// Elevators
|
// Elevators
|
||||||
// Top
|
// Top
|
||||||
Object(332)->SetNoPowerNeed(true);
|
g_elev2->SetNoPowerNeed(true);
|
||||||
Object(331)->CreateShaft(470);
|
g_elev2->CreateShaft(470);
|
||||||
// Left
|
// Left
|
||||||
Object(420)->CreateShaft(100);
|
g_elev1->SetNoPowerNeed(true);
|
||||||
|
g_elev1->CreateShaft(100);
|
||||||
// Shrooms
|
// Shrooms
|
||||||
Object(2318)->AddPoisonEffect(0,0); // floor left
|
g_shroom1->AddPoisonEffect(0,0); // floor left
|
||||||
Object(2369)->AddPoisonEffect(0,0); // ceiling left
|
g_shroom2->AddPoisonEffect(0,0); // ceiling left
|
||||||
Object(2375)->AddPoisonEffect(-20,0); // floor right
|
g_shroom3->AddPoisonEffect(-20,0); // floor right
|
||||||
Object(2398)->AddPoisonEffect(10,-10); // ceiling right
|
g_shroom4->AddPoisonEffect(10,-10); // ceiling right
|
||||||
// Message when first player enters shroom area
|
// Message when first player enters shroom area
|
||||||
ScheduleCall(nil, Scenario.ShroomCaveCheck, 21, 0xffffff);
|
ScheduleCall(nil, Scenario.ShroomCaveCheck, 21, 0xffffff);
|
||||||
// Scorching village
|
// Scorching village
|
||||||
Object(343)->AddScorch(-20,-10, -45, 50, 1500);
|
g_ruin1->AddScorch(-20,-10, -45, 50, 1500);
|
||||||
Object(344)->AddScorch(-15,42, 90, 50, 1200);
|
g_ruin2->AddScorch(-15,42, 90, 50, 1200);
|
||||||
Object(346)->AddScorch(-12,18, 130, 80, 1300);
|
g_ruin3->AddScorch(-12,18, 130, 80, 1300);
|
||||||
// Rules
|
// Rules
|
||||||
CreateObject(Rule_TeamAccount);
|
CreateObject(Rule_TeamAccount);
|
||||||
CreateObject(Rule_NoPowerNeed);
|
CreateObject(Rule_NoPowerNeed);
|
||||||
// Horax
|
// Horax
|
||||||
Object(3816).JumpSpeed = 200;
|
g_king.JumpSpeed = 200;
|
||||||
// Update AI stuff
|
// Update AI stuff
|
||||||
var fx;
|
var fx;
|
||||||
for (var enemy in FindObjects(Find_ID(Clonk), Find_Owner(NO_OWNER)))
|
for (var enemy in FindObjects(Find_ID(Clonk), Find_Owner(NO_OWNER)))
|
||||||
|
@ -47,8 +48,9 @@ func DoInit(int first_player)
|
||||||
enemy->AddEnergyBar();
|
enemy->AddEnergyBar();
|
||||||
}
|
}
|
||||||
// Intro. Message 250 frames + regular message time
|
// Intro. Message 250 frames + regular message time
|
||||||
Dialogue->MessageBoxAll("$MsgIntro1$", Object(2648), true);
|
g_farmer.portrait = "Farmer2";
|
||||||
Schedule(nil, "Dialogue->MessageBoxAll(\"$MsgIntro1$\", Object(2648))", 250, 1);
|
DialogueCastle->MessageBoxAll("$MsgIntro1$", g_farmer, true);
|
||||||
|
Schedule(nil, "DialogueCastle->MessageBoxAll(\"$MsgIntro1$\", g_farmer)", 250, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,20 +108,20 @@ func JoinPlayer(int plr)
|
||||||
|
|
||||||
func EncounterCave(object enemy, object player)
|
func EncounterCave(object enemy, object player)
|
||||||
{
|
{
|
||||||
Dialogue->MessageBoxAll("$MsgEncounterCave$", enemy);
|
DialogueCastle->MessageBoxAll("$MsgEncounterCave$", enemy);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
func EncounterOutpost(object enemy, object player)
|
func EncounterOutpost(object enemy, object player)
|
||||||
{
|
{
|
||||||
Dialogue->MessageBoxAll("$MsgEncounterOutpost$", enemy);
|
DialogueCastle->MessageBoxAll("$MsgEncounterOutpost$", enemy);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
func EncounterKing(object enemy, object player)
|
func EncounterKing(object enemy, object player)
|
||||||
{
|
{
|
||||||
if (!player) player = enemy; // Leads to a funny message, but better than a null pointer.
|
if (!player) player = enemy; // Leads to a funny message, but better than a null pointer.
|
||||||
Dialogue->MessageBoxAll(Format("$MsgEncounterKing$", player->GetName()), enemy);
|
DialogueCastle->MessageBoxAll(Format("$MsgEncounterKing$", player->GetName()), enemy);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +132,7 @@ func ShroomCaveCheck()
|
||||||
{
|
{
|
||||||
var intruder = FindObject(Find_InRect(1252,1342,320,138), Find_OCF(OCF_CrewMember));
|
var intruder = FindObject(Find_InRect(1252,1342,320,138), Find_OCF(OCF_CrewMember));
|
||||||
if (!intruder) return true;
|
if (!intruder) return true;
|
||||||
Dialogue->MessageBoxAll("$MsgEncounterShrooms$", intruder);
|
DialogueCastle->MessageBoxAll("$MsgEncounterShrooms$", intruder);
|
||||||
ClearScheduleCall(nil, Scenario.ShroomCaveCheck);
|
ClearScheduleCall(nil, Scenario.ShroomCaveCheck);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
|
@ -25,6 +25,16 @@ public func IsFulfilled()
|
||||||
return statue && !statue->IsBroken();
|
return statue && !statue->IsBroken();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnfulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,7 +37,6 @@ HomeBaseProduction=Clonk=5;Bread=5;
|
||||||
|
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
SkyScrollMode=1
|
|
||||||
TopOpen=0
|
TopOpen=0
|
||||||
BottomOpen=0
|
BottomOpen=0
|
||||||
MapWidth=300
|
MapWidth=300
|
||||||
|
|
|
@ -21,6 +21,8 @@ func Initialize()
|
||||||
// Misc vegetation
|
// Misc vegetation
|
||||||
SproutBerryBush->Place(5, Rectangle(100,0,600,300));
|
SproutBerryBush->Place(5, Rectangle(100,0,600,300));
|
||||||
Mushroom->Place(5, Rectangle(100,0,600,300));
|
Mushroom->Place(5, Rectangle(100,0,600,300));
|
||||||
|
// Sky
|
||||||
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ Crew=Clonk=1
|
||||||
|
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
SkyScrollMode=1
|
|
||||||
TopOpen=1
|
TopOpen=1
|
||||||
BottomOpen=1
|
BottomOpen=1
|
||||||
MapWidth=250
|
MapWidth=250
|
||||||
|
|
|
@ -13,6 +13,7 @@ func Initialize()
|
||||||
for (var i=0; i<5; ++i)
|
for (var i=0; i<5; ++i)
|
||||||
if (loc = FindLocation(Loc_InRect(0,80*8,40*8,20*8), Loc_Material("Earth")))
|
if (loc = FindLocation(Loc_InRect(0,80*8,40*8,20*8), Loc_Material("Earth")))
|
||||||
CreateObject(Rock, loc.x, loc.y+3);
|
CreateObject(Rock, loc.x, loc.y+3);
|
||||||
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
static g_was_player_init;
|
static g_was_player_init;
|
||||||
|
|
|
@ -25,18 +25,6 @@ func InitializeObjects()
|
||||||
|
|
||||||
CreateObject(SproutBerryBush, 350, 206);
|
CreateObject(SproutBerryBush, 350, 206);
|
||||||
|
|
||||||
CreateObject(Rule_TeamAccount, 50, 50);
|
|
||||||
|
|
||||||
CreateObject(Rule_BuyAtFlagpole, 50, 50);
|
|
||||||
|
|
||||||
var Goal_SellGems0037 = CreateObject(Goal_SellGems, 50, 50);
|
|
||||||
Goal_SellGems0037->SetTargetAmount(30);
|
|
||||||
|
|
||||||
CreateObject(Rule_BuyAtFlagpole, 50, 50);
|
|
||||||
|
|
||||||
var Goal_SellGems0136 = CreateObject(Goal_SellGems, 50, 50);
|
|
||||||
Goal_SellGems0136->SetTargetAmount(30);
|
|
||||||
|
|
||||||
var Chest0039 = CreateObject(Chest, 200, 469);
|
var Chest0039 = CreateObject(Chest, 200, 469);
|
||||||
var Chest0040 = CreateObject(Chest, 1192, 701);
|
var Chest0040 = CreateObject(Chest, 1192, 701);
|
||||||
var Chest0041 = CreateObject(Chest, 1807, 515);
|
var Chest0041 = CreateObject(Chest, 1807, 515);
|
||||||
|
|
|
@ -38,7 +38,6 @@ HomeBaseProduction=Clonk=50;Bread=50;Wood=50;Metal=50;DynamiteBox=50;Dynamite=50
|
||||||
|
|
||||||
[Landscape]
|
[Landscape]
|
||||||
Sky=Clouds1
|
Sky=Clouds1
|
||||||
SkyScrollMode=1
|
|
||||||
TopOpen=0
|
TopOpen=0
|
||||||
BottomOpen=0
|
BottomOpen=0
|
||||||
MapWidth=300
|
MapWidth=300
|
||||||
|
|
|
@ -9,6 +9,8 @@ func Initialize()
|
||||||
// Rules
|
// Rules
|
||||||
if (!ObjectCount(Find_ID(Rule_TeamAccount))) CreateObject(Rule_TeamAccount);
|
if (!ObjectCount(Find_ID(Rule_TeamAccount))) CreateObject(Rule_TeamAccount);
|
||||||
if (!ObjectCount(Find_ID(Rule_BuyAtFlagpole))) CreateObject(Rule_BuyAtFlagpole);
|
if (!ObjectCount(Find_ID(Rule_BuyAtFlagpole))) CreateObject(Rule_BuyAtFlagpole);
|
||||||
|
// Environment
|
||||||
|
SetSkyParallax(1, 20,20, 0,0, nil, nil);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,16 @@ public func IsFulfilled()
|
||||||
return target->IsPowerAvailable(target->GetNeededPower());
|
return target->IsPowerAvailable(target->GetNeededPower());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnFulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=Dialogue
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_StaticBack
|
|
||||||
Width=8
|
|
||||||
Height=20
|
|
||||||
Offset=-4,-10
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 8.4 KiB |
|
@ -1,215 +0,0 @@
|
||||||
/**
|
|
||||||
Dialogue
|
|
||||||
|
|
||||||
Attach to a non player charachter to provide a message interface.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
local dlg_target;
|
|
||||||
local dlg_name;
|
|
||||||
local dlg_info;
|
|
||||||
local dlg_progress;
|
|
||||||
local dlg_status;
|
|
||||||
|
|
||||||
static const DLG_Status_Active = 0;
|
|
||||||
static const DLG_Status_Stop = 1;
|
|
||||||
static const DLG_Status_Remove = 2;
|
|
||||||
|
|
||||||
|
|
||||||
/*-- Dialogue creation --*/
|
|
||||||
|
|
||||||
// Sets a new dialogue for a npc.
|
|
||||||
global func SetDialogue(string name)
|
|
||||||
{
|
|
||||||
if (!this)
|
|
||||||
return;
|
|
||||||
var dialogue = CreateObject(Dialogue);
|
|
||||||
dialogue->InitDialogue(name, this);
|
|
||||||
|
|
||||||
dialogue->SetObjectLayer(nil);
|
|
||||||
|
|
||||||
return dialogue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Removes the existing dialogue of an object.
|
|
||||||
global func RemoveDialogue()
|
|
||||||
{
|
|
||||||
if (!this)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var dialogue = FindObject(Find_ID(Dialogue), Find_ActionTarget(this));
|
|
||||||
if (dialogue)
|
|
||||||
dialogue->RemoveObject();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*-- Dialogue properties --*/
|
|
||||||
|
|
||||||
protected func Initialize()
|
|
||||||
{
|
|
||||||
// Dialogue progress to one.
|
|
||||||
dlg_progress = 1;
|
|
||||||
|
|
||||||
dlg_status = DLG_Status_Active;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func InitDialogue(string name, object target)
|
|
||||||
{
|
|
||||||
dlg_target = target;
|
|
||||||
dlg_name = name;
|
|
||||||
|
|
||||||
// Attach dialogue object to target.
|
|
||||||
SetAction("Dialogue", target);
|
|
||||||
|
|
||||||
// Update dialogue to target.
|
|
||||||
UpdateDialogue();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
private func UpdateDialogue()
|
|
||||||
{
|
|
||||||
// Adapt size to target and its direction.
|
|
||||||
var wdt = dlg_target->GetID()->GetDefWidth();
|
|
||||||
var hgt = dlg_target->GetID()->GetDefHeight();
|
|
||||||
var dir = dlg_target->GetDir();
|
|
||||||
SetShape(-wdt/2 + 2*(dir-1)*wdt, -hgt/2, 3*wdt, hgt);
|
|
||||||
// Transfer target name.
|
|
||||||
//SetName(Format("$MsgSpeak$", dlg_target->GetName()));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func SetDialogueInfo()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func SetDialogueProgress(int progress)
|
|
||||||
{
|
|
||||||
dlg_progress = Max(1, progress);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func SetDialogueStatus(int status)
|
|
||||||
{
|
|
||||||
dlg_status = status;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*-- Interaction --*/
|
|
||||||
|
|
||||||
// Players can talk to NPC via the interaction bar.
|
|
||||||
public func IsInteractable() { return true; }
|
|
||||||
|
|
||||||
// Adapt appearance in the interaction bar.
|
|
||||||
public func GetInteractionMetaInfo(object clonk)
|
|
||||||
{
|
|
||||||
if (InDialogue(clonk))
|
|
||||||
return { Description = Format("$MsgSpeak$", dlg_target->GetName()) , IconName = nil, IconID = Clonk, Selected = true };
|
|
||||||
|
|
||||||
return { Description = Format("$MsgSpeak$", dlg_target->GetName()) , IconName = nil, IconID = Clonk, Selected = false };
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called on player interaction.
|
|
||||||
public func Interact(object clonk)
|
|
||||||
{
|
|
||||||
// Currently in a dialogue: abort that dialogue.
|
|
||||||
if (InDialogue(clonk))
|
|
||||||
clonk->CloseMenu();
|
|
||||||
|
|
||||||
// No conversation context: abort.
|
|
||||||
if (!dlg_name)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// Stop dialogue?
|
|
||||||
if (dlg_status == DLG_Status_Stop)
|
|
||||||
{
|
|
||||||
clonk->CloseMenu();
|
|
||||||
dlg_status = DLG_Status_Active;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// Remove dialogue?
|
|
||||||
if (dlg_status == DLG_Status_Remove)
|
|
||||||
{
|
|
||||||
clonk->CloseMenu();
|
|
||||||
RemoveObject();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start conversation context.
|
|
||||||
// Update dialogue progress first.
|
|
||||||
var progress = dlg_progress;
|
|
||||||
dlg_progress++;
|
|
||||||
// Then call relevant functions.
|
|
||||||
Call(Format("Dlg_%s_%d", dlg_name, progress), clonk);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private func InDialogue(object clonk)
|
|
||||||
{
|
|
||||||
return clonk->GetMenu() == Dialogue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func MessageBoxAll(string message, object talker)
|
|
||||||
{
|
|
||||||
for(var i = 0; i < GetPlayerCount(); ++i)
|
|
||||||
MessageBox(message, GetCursor(GetPlayerByIndex(i)), talker);
|
|
||||||
}
|
|
||||||
|
|
||||||
private func MessageBox(string message, object clonk, object talker)
|
|
||||||
{
|
|
||||||
// Use current NPC as talker if unspecified.
|
|
||||||
if (!talker)
|
|
||||||
talker = dlg_target;
|
|
||||||
|
|
||||||
// Use a menu for this dialogue.
|
|
||||||
clonk->CreateMenu(Dialogue, this, C4MN_Extra_None, nil, nil, C4MN_Style_Dialog, false, Dialogue);
|
|
||||||
|
|
||||||
// Add NPC portrait.
|
|
||||||
//var portrait = Format("%i", talker->GetID()); //, Dialogue, talker->GetColor(), "1");
|
|
||||||
clonk->AddMenuItem("", "", Dialogue, nil, nil, nil, C4MN_Add_ImgObject, talker); //TextSpec);
|
|
||||||
|
|
||||||
// Add NPC message.
|
|
||||||
var msg = Format("<c %x>%s:</c> %s", talker->GetColor(), talker->GetName(), message);
|
|
||||||
clonk->AddMenuItem(msg, "", nil, nil, nil, nil, C4MN_Add_ForceNoDesc);
|
|
||||||
|
|
||||||
// Add answers.
|
|
||||||
//for (var i = 0; i < GetLength(message.Answers); i++)
|
|
||||||
//{
|
|
||||||
// var ans = message.Answers[i][0];
|
|
||||||
// var call_back = message.Answers[i][1];
|
|
||||||
// target->AddMenuItem(ans, call_back, nil, nil, target, nil, C4MN_Add_ForceNoDesc);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// Set menu decoration.
|
|
||||||
clonk->SetMenuDecoration(GUI_MenuDeco);
|
|
||||||
|
|
||||||
// Set text progress to NPC name.
|
|
||||||
var name = dlg_target->GetName();
|
|
||||||
var n_length;
|
|
||||||
while (GetChar(name, n_length))
|
|
||||||
n_length++;
|
|
||||||
clonk->SetMenuTextProgress(n_length + 1);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
local ActMap = {
|
|
||||||
Dialogue = {
|
|
||||||
Prototype = Action,
|
|
||||||
Name = "Dialogue",
|
|
||||||
Procedure = DFA_ATTACH,
|
|
||||||
Delay = 0,
|
|
||||||
NextAction = "Dialogue",
|
|
||||||
}
|
|
||||||
};
|
|
||||||
local Name = "$Name$";
|
|
|
@ -1,2 +0,0 @@
|
||||||
Name=Dialogue
|
|
||||||
MsgSpeak=%s ansprechen
|
|
|
@ -1,2 +0,0 @@
|
||||||
Name=Dialogue
|
|
||||||
MsgSpeak=Speak to %s
|
|
|
@ -32,6 +32,16 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnFulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
|
|
|
@ -18,6 +18,16 @@ public func IsFulfilled()
|
||||||
return ObjectCount(Find_ID(Plane));
|
return ObjectCount(Find_ID(Plane));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnFulfilled$";
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
|
|
|
@ -146,6 +146,21 @@ public func IsFulfilled()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var flags = GetScoreGoal() - score_list[GetPlayerTeam(plr)];
|
||||||
|
if (IsFulfilled())
|
||||||
|
return "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var msg = "$MsgGoalCaptureTheFlag$";
|
||||||
|
if (flags == 1)
|
||||||
|
return Format("%s %s", msg, "$MsgGoalUnfulfilled1$");
|
||||||
|
else
|
||||||
|
return Format("%s %s", msg, Format("$MsgGoalUnfulfilledX$", flags));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
var flags = GetScoreGoal() - score_list[GetPlayerTeam(byplr)];
|
var flags = GetScoreGoal() - score_list[GetPlayerTeam(byplr)];
|
||||||
|
|
|
@ -105,6 +105,27 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
if(IsFulfilled())
|
||||||
|
{
|
||||||
|
if (GetKillCount(plr) >= maxkills)
|
||||||
|
return "$MsgVictory$";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var score = GetRelativeScore(plr);
|
||||||
|
if (score.kills > 0)
|
||||||
|
return Format("$MsgAhead$", score.kills, GetPlayerName(score.best));
|
||||||
|
else if (score.kills < 0)
|
||||||
|
return Format("$MsgBehind$", -score.kills, GetPlayerName(score.best));
|
||||||
|
else if (score.best == plr)
|
||||||
|
return Format("$MsgYouAreBest$", score.kills);
|
||||||
|
else
|
||||||
|
return Format("$MsgEqual$", GetPlayerName(score.best));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
if(IsFulfilled())
|
if(IsFulfilled())
|
||||||
|
|
|
@ -109,6 +109,17 @@ private func CoveredByFlag(int x, int y)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the description of this goal.
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (GetExpansionArea() >= GetExpansionGoal() || GetExpansionGoal() == 0)
|
||||||
|
message = Format("$MsgGoalFulfilled$");
|
||||||
|
else
|
||||||
|
message = Format("$MsgGoalUnFulfilled$", 100 * GetExpansionArea() / GetExpansionGoal());
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +133,7 @@ public func Activate(int plr)
|
||||||
// Otherwise open a new message.
|
// Otherwise open a new message.
|
||||||
AddEffect("GoalMessage", this, 100, 0, this);
|
AddEffect("GoalMessage", this, 100, 0, this);
|
||||||
var message;
|
var message;
|
||||||
if (GetExpansionArea() >= GetExpansionGoal())
|
if (GetExpansionArea() >= GetExpansionGoal() || GetExpansionGoal() == 0)
|
||||||
message = Format("@$MsgGoalFulfilled$");
|
message = Format("@$MsgGoalFulfilled$");
|
||||||
else
|
else
|
||||||
message = Format("@$MsgGoalUnFulfilled$", 100 * GetExpansionArea() / GetExpansionGoal());
|
message = Format("@$MsgGoalUnFulfilled$", 100 * GetExpansionArea() / GetExpansionGoal());
|
||||||
|
@ -136,7 +147,9 @@ protected func FxGoalMessageStart() {}
|
||||||
public func GetShortDescription(int plr)
|
public func GetShortDescription(int plr)
|
||||||
{
|
{
|
||||||
// Show expansion percentage.
|
// Show expansion percentage.
|
||||||
var perc = Min(100, 100 * GetExpansionArea() / GetExpansionGoal());
|
var perc = 0;
|
||||||
|
if (GetExpansionGoal())
|
||||||
|
perc = Min(100, 100 * GetExpansionArea() / GetExpansionGoal());
|
||||||
var clr = RGB(255, 0, 0);
|
var clr = RGB(255, 0, 0);
|
||||||
if (perc >= 100)
|
if (perc >= 100)
|
||||||
clr = RGB(0, 255, 0);
|
clr = RGB(0, 255, 0);
|
||||||
|
|
|
@ -211,6 +211,21 @@ private func CheckForWinner()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var teams=GetTeamPoints();
|
||||||
|
var lines=[];
|
||||||
|
|
||||||
|
for(var i=0;i<GetLength(teams);++i)
|
||||||
|
{
|
||||||
|
lines[GetLength(lines)]=Format("%s: %d", teams[i]["player_names"], teams[i]["points"] );
|
||||||
|
}
|
||||||
|
|
||||||
|
var msg=Format("$MsgGoalDesc$", GetPointLimit());
|
||||||
|
for(var i=0;i<GetLength(lines);++i)
|
||||||
|
msg=Format("%s|%s", msg, lines[i]);
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,29 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
// Count enemy players.
|
||||||
|
var hostile_count;
|
||||||
|
for (var i = 0; i < GetPlayerCount(); i++)
|
||||||
|
{
|
||||||
|
var byplr = GetPlayerByIndex(i);
|
||||||
|
if (byplr == plr)
|
||||||
|
continue;
|
||||||
|
if (Hostile(byplr, plr) )
|
||||||
|
hostile_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
var message;
|
||||||
|
|
||||||
|
// Output
|
||||||
|
if (!hostile_count)
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = Format("$MsgGoalUnfulfilled$", hostile_count);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int byplr)
|
public func Activate(int byplr)
|
||||||
{
|
{
|
||||||
// Count enemy players.
|
// Count enemy players.
|
||||||
|
|
|
@ -210,6 +210,33 @@ public func IsFulfilled()
|
||||||
return finished;
|
return finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var team = GetPlayerTeam(plr);
|
||||||
|
var msg;
|
||||||
|
if (finished)
|
||||||
|
{
|
||||||
|
if (team)
|
||||||
|
{
|
||||||
|
if (IsWinner(plr))
|
||||||
|
msg = "$MsgParkourWonTeam$";
|
||||||
|
else
|
||||||
|
msg = "$MsgParkourLostTeam$";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (IsWinner(plr))
|
||||||
|
msg = "$MsgParkourWon$";
|
||||||
|
else
|
||||||
|
msg = "$MsgParkourLost$";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
msg = Format("$MsgParkour$", cp_count);
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
var team = GetPlayerTeam(plr);
|
var team = GetPlayerTeam(plr);
|
||||||
|
|
|
@ -67,6 +67,32 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shows or hides a message window with information.
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
{
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
message = "$MsgGoalExtraction$";
|
||||||
|
for (var i = 0; i < GetLength(resource_list); i++)
|
||||||
|
{
|
||||||
|
var mat = resource_list[i];
|
||||||
|
var tol = tolerance_list[i];
|
||||||
|
var mat_cnt = GetMaterialCount(Material(mat));
|
||||||
|
var res_id = GetMaterialVal("Blast2Object", "Material", Material(mat));
|
||||||
|
var res_cnt = ObjectCount(Find_ID(res_id));
|
||||||
|
var blast_ratio = GetMaterialVal("Blast2ObjectRatio", "Material", Material(mat));
|
||||||
|
var add_msg = Format("$MsgGoalResource$", res_id, Max(0, (mat_cnt - (2*tol+1) * blast_ratio / 2) / blast_ratio), res_cnt);
|
||||||
|
message = Format("%s%s", message, add_msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,19 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shows or hides a message window with information.
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
message = "$MsgGoalUnfulfilled$";
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,11 @@ public func Fulfill()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
return this.Description;
|
||||||
|
}
|
||||||
|
|
||||||
/*-- Proplist --*/
|
/*-- Proplist --*/
|
||||||
local Name = "$Name$";
|
local Name = "$Name$";
|
||||||
|
local Description = "$Description$";
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Name=Scriptziel
|
Name=Scriptziel
|
||||||
|
Description=Script goal description: please change me
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
Name=Script goal
|
Name=Script goal
|
||||||
|
Description=Script goal description: please change me
|
|
@ -22,14 +22,18 @@ func SetTargetAmount(int new_amount)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetTargetAmount()
|
||||||
|
{
|
||||||
|
return gems_to_sell;
|
||||||
|
}
|
||||||
|
|
||||||
func OnGemSold()
|
func OnGemSold()
|
||||||
{
|
{
|
||||||
// A gem was sold. Subtract.
|
// A gem was sold. Subtract.
|
||||||
gems_to_sell = Max(gems_to_sell-1);
|
gems_to_sell = Max(gems_to_sell - 1, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Scenario saving */
|
/* Scenario saving */
|
||||||
|
|
||||||
func SaveScenarioObject(props)
|
func SaveScenarioObject(props)
|
||||||
|
@ -45,7 +49,23 @@ func SaveScenarioObject(props)
|
||||||
// The goal is fulfilled if no more gems need to be sold
|
// The goal is fulfilled if no more gems need to be sold
|
||||||
public func IsFulfilled()
|
public func IsFulfilled()
|
||||||
{
|
{
|
||||||
return (gems_to_sell<=0);
|
return gems_to_sell <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = "$MsgGoalFulfilled$";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var gems_solid = GetMaterialCount(Material("Ruby")) / GetMaterialVal("Blast2ObjectRatio", "Material", Material("Ruby"));
|
||||||
|
gems_solid += GetMaterialCount(Material("Amethyst")) / GetMaterialVal("Blast2ObjectRatio", "Material", Material("Amethyst"));
|
||||||
|
var gems_pieces = ObjectCount(Find_Or(Find_ID(Ruby), Find_ID(Amethyst)));
|
||||||
|
message = Format("$MsgGoalUnfulfilled$", gems_to_sell, gems_solid, gems_pieces);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
|
@ -64,7 +84,12 @@ public func Activate(int plr)
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
message = "@$MsgGoalFulfilled$";
|
message = "@$MsgGoalFulfilled$";
|
||||||
else
|
else
|
||||||
message = Format("@$MsgGoalUnfulfilled$", gems_to_sell);
|
{
|
||||||
|
var gems_solid = GetMaterialCount(Material("Ruby")) / GetMaterialVal("Blast2ObjectRatio", "Material", Material("Ruby"));
|
||||||
|
gems_solid += GetMaterialCount(Material("Amethyst")) / GetMaterialVal("Blast2ObjectRatio", "Material", Material("Amethyst"));
|
||||||
|
var gems_pieces = ObjectCount(Find_Or(Find_ID(Ruby), Find_ID(Amethyst)));
|
||||||
|
message = Format("@$MsgGoalUnfulfilled$", gems_to_sell, gems_solid, gems_pieces);
|
||||||
|
}
|
||||||
|
|
||||||
CustomMessage(message, nil, plr, 0, 16 + 64, 0xffffff, GUI_MenuDeco, this, MSG_HCenter);
|
CustomMessage(message, nil, plr, 0, 16 + 64, 0xffffff, GUI_MenuDeco, this, MSG_HCenter);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Name=Edelsteine verkaufen
|
Name=Edelsteine verkaufen
|
||||||
#Goal window
|
#Goal window
|
||||||
MsgGoalFulfilled=Ihr habt genug Edelsteine verkauft!
|
MsgGoalFulfilled=Ihr habt genug Edelsteine verkauft!
|
||||||
MsgGoalUnfulfilled=Ihr müsst noch %d Edelsteine verkaufen.
|
MsgGoalUnfulfilled=Ihr müsst noch %d Edelsteine verkaufen. Im Moment sind noch %d Edelsteine abzubauen und %d Edelsteine einzusammeln.
|
|
@ -2,4 +2,4 @@ Name=Sell gems
|
||||||
|
|
||||||
#Goal window
|
#Goal window
|
||||||
MsgGoalFulfilled=You've sold enough gems!
|
MsgGoalFulfilled=You've sold enough gems!
|
||||||
MsgGoalUnfulfilled=You need to sell %d more gems.
|
MsgGoalUnfulfilled=You need to sell %d more gems. Currently there are available %d gems to mine and %d gems to collect.
|
|
@ -57,6 +57,17 @@ public func IsFulfilled()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
var message;
|
||||||
|
if (IsFulfilled())
|
||||||
|
message = Format("$MsgGoalFulfilled$", GetWealthGoal());
|
||||||
|
else
|
||||||
|
message = Format("$MsgGoalUnfulfilled$", GetWealth(plr), GetWealthGoal());
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
// Shows or hides a message window with information.
|
// Shows or hides a message window with information.
|
||||||
public func Activate(int plr)
|
public func Activate(int plr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,4 @@ Version=5,2,0,1
|
||||||
Category=C4D_StaticBack
|
Category=C4D_StaticBack
|
||||||
Width=8
|
Width=8
|
||||||
Height=20
|
Height=20
|
||||||
Offset=-4,-10
|
Offset=-4,-10
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
@ -10,6 +10,7 @@ local dlg_name;
|
||||||
local dlg_info;
|
local dlg_info;
|
||||||
local dlg_progress;
|
local dlg_progress;
|
||||||
local dlg_status;
|
local dlg_status;
|
||||||
|
local dlg_interact;
|
||||||
|
|
||||||
static const DLG_Status_Active = 0;
|
static const DLG_Status_Active = 0;
|
||||||
static const DLG_Status_Stop = 1;
|
static const DLG_Status_Stop = 1;
|
||||||
|
@ -50,9 +51,10 @@ protected func Initialize()
|
||||||
{
|
{
|
||||||
// Dialogue progress to one.
|
// Dialogue progress to one.
|
||||||
dlg_progress = 1;
|
dlg_progress = 1;
|
||||||
|
// Dialogue allows interaction by default.
|
||||||
|
dlg_interact = true;
|
||||||
|
// Dialogue is active by default.
|
||||||
dlg_status = DLG_Status_Active;
|
dlg_status = DLG_Status_Active;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,8 +87,12 @@ private func UpdateDialogue()
|
||||||
public func SetDialogueInfo()
|
public func SetDialogueInfo()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func SetInteraction(bool allow)
|
||||||
|
{
|
||||||
|
dlg_interact = allow;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +111,7 @@ public func SetDialogueStatus(int status)
|
||||||
/*-- Interaction --*/
|
/*-- Interaction --*/
|
||||||
|
|
||||||
// Players can talk to NPC via the interaction bar.
|
// Players can talk to NPC via the interaction bar.
|
||||||
public func IsInteractable() { return true; }
|
public func IsInteractable() { return dlg_interact; }
|
||||||
|
|
||||||
// Adapt appearance in the interaction bar.
|
// Adapt appearance in the interaction bar.
|
||||||
public func GetInteractionMetaInfo(object clonk)
|
public func GetInteractionMetaInfo(object clonk)
|
||||||
|
@ -119,6 +125,10 @@ public func GetInteractionMetaInfo(object clonk)
|
||||||
// Called on player interaction.
|
// Called on player interaction.
|
||||||
public func Interact(object clonk)
|
public func Interact(object clonk)
|
||||||
{
|
{
|
||||||
|
// Should not happen: not active -> stop interaction
|
||||||
|
if (!dlg_interact)
|
||||||
|
return true;
|
||||||
|
|
||||||
// Currently in a dialogue: abort that dialogue.
|
// Currently in a dialogue: abort that dialogue.
|
||||||
if (InDialogue(clonk))
|
if (InDialogue(clonk))
|
||||||
clonk->CloseMenu();
|
clonk->CloseMenu();
|
||||||
|
@ -147,9 +157,8 @@ public func Interact(object clonk)
|
||||||
var progress = dlg_progress;
|
var progress = dlg_progress;
|
||||||
dlg_progress++;
|
dlg_progress++;
|
||||||
// Then call relevant functions.
|
// Then call relevant functions.
|
||||||
Call(Format("Dlg_%s_%d", dlg_name, progress), clonk);
|
if (!Call(Format("Dlg_%s_%d", dlg_name, progress), clonk))
|
||||||
|
GameCall(Format("Dlg_%s_%d", dlg_name, progress), this, clonk, dlg_target);
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -176,11 +185,11 @@ private func MessageBox(string message, object clonk, object talker)
|
||||||
|
|
||||||
// Add NPC portrait.
|
// Add NPC portrait.
|
||||||
//var portrait = Format("%i", talker->GetID()); //, Dialogue, talker->GetColor(), "1");
|
//var portrait = Format("%i", talker->GetID()); //, Dialogue, talker->GetColor(), "1");
|
||||||
clonk->AddMenuItem("", "MenuOk", Dialogue, nil, clonk, nil, C4MN_Add_ImgObject, talker); //TextSpec);
|
clonk->AddMenuItem("", "MenuOK", Dialogue, nil, clonk, nil, C4MN_Add_ImgObject, talker); //TextSpec);
|
||||||
|
|
||||||
// Add NPC message.
|
// Add NPC message.
|
||||||
var msg = Format("<c %x>%s:</c> %s", talker->GetColor(), talker->GetName(), message);
|
var msg = Format("<c %x>%s:</c> %s", talker->GetColor(), talker->GetName(), message);
|
||||||
clonk->AddMenuItem(msg, "", nil, nil, nil, nil, C4MN_Add_ForceNoDesc);
|
clonk->AddMenuItem(msg, "MenuOK", nil, nil, clonk, nil, C4MN_Add_ForceNoDesc);
|
||||||
|
|
||||||
// Add answers.
|
// Add answers.
|
||||||
//for (var i = 0; i < GetLength(message.Answers); i++)
|
//for (var i = 0; i < GetLength(message.Answers); i++)
|
||||||
|
@ -203,11 +212,29 @@ private func MessageBox(string message, object clonk, object talker)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public func MenuOk(unused, object clonk)
|
public func MenuOK(proplist menu_id, object clonk)
|
||||||
{
|
{
|
||||||
Interact(clonk);
|
// prevent the menu from closing when pressing MenuOK
|
||||||
|
if (dlg_interact)
|
||||||
|
Interact(clonk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Scenario saving */
|
||||||
|
|
||||||
|
// Scenario saving
|
||||||
|
func SaveScenarioObject(props)
|
||||||
|
{
|
||||||
|
if (!inherited(props, ...)) return false;
|
||||||
|
if (!dlg_target) return false; // don't save dead dialogue object
|
||||||
|
// Dialog has its own creation procedure
|
||||||
|
props->RemoveCreation();
|
||||||
|
props->Add(SAVEOBJ_Creation, "%s->SetDialogue(%v)", dlg_target->MakeScenarioSaveName(), dlg_name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Properties */
|
||||||
|
|
||||||
local ActMap = {
|
local ActMap = {
|
||||||
Dialogue = {
|
Dialogue = {
|
||||||
Prototype = Action,
|
Prototype = Action,
|
|
@ -1,3 +1,3 @@
|
||||||
Name=Loam
|
Name=Loam
|
||||||
Description=With loam one can build small loam bridges.|Needs a barrel of water and a bucket of water to produce.
|
Description=With loam one can build small loam bridges.|Needs a barrel of water and a bucket of earth to produce.
|
||||||
UsageHelp=Hold down the [Use] key to build a bridge, move the mouse to control where it is created.
|
UsageHelp=Hold down the [Use] key to build a bridge, move the mouse to control where it is created.
|
|
@ -203,7 +203,7 @@ public func FxIntGrappleControlControl(object target, fxnum, ctrl, x,y,strength,
|
||||||
if(ctrl == CON_Up)
|
if(ctrl == CON_Up)
|
||||||
{
|
{
|
||||||
fxnum.mv_up = !release;
|
fxnum.mv_up = !release;
|
||||||
if(target->GetAction() == "Jump" && !release && pull)
|
if ((target->GetAction() == "Jump" || target->GetAction() == "WallJump") && !release && pull)
|
||||||
rope->ConnectPull();
|
rope->ConnectPull();
|
||||||
}
|
}
|
||||||
if(ctrl == CON_Down)
|
if(ctrl == CON_Down)
|
||||||
|
@ -259,16 +259,16 @@ public func FxIntGrappleControlTimer(object target, fxnum, int time)
|
||||||
rope->DoSpeed(+10);
|
rope->DoSpeed(+10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(target->GetAction() == "Tumble" && target->GetActTime() > 10)
|
if (target->GetAction() == "Tumble" && target->GetActTime() > 10)
|
||||||
target->SetAction("Jump");
|
target->SetAction("Jump");
|
||||||
|
|
||||||
if(target->GetAction() != "Jump")
|
if (target->GetAction() != "Jump" && target->GetAction() != "WallJump")
|
||||||
{
|
{
|
||||||
if(rope->GetConnectStatus())
|
if (rope->GetConnectStatus())
|
||||||
rope->ConnectLoose();
|
rope->ConnectLoose();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(target->GetAction() == "Jump" && rope->PullObjects() && !fxnum.var6)
|
if ((target->GetAction() == "Jump" || target->GetAction() == "WallJump") && rope->PullObjects() && !fxnum.var6)
|
||||||
{
|
{
|
||||||
if(!fxnum.ani_mode)
|
if(!fxnum.ani_mode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -130,13 +130,21 @@ protected func DoSwing(object clonk, int ix, int iy)
|
||||||
Sound("Clang?");
|
Sound("Clang?");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Do blastfree after landscape checks are made. Otherwise, mat always returns as "tunnel"
|
// Do blastfree after landscape checks are made. Otherwise, mat always returns as "tunnel"
|
||||||
// Call in clonk context to ensure DigOutObject callback is done in Clonk
|
BlastFree(GetX()+x2,GetY()+y2,5,GetController(),MaxPickDensity);
|
||||||
clonk->BlastFree(GetX()+x2,GetY()+y2,5,GetController(),MaxPickDensity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reroute callback to clonk context to ensure DigOutObject callback is done in Clonk
|
||||||
|
public func DigOutObject(object obj)
|
||||||
|
{
|
||||||
|
// TODO: it would be nice if the method of finding the clonk does not rely on it to be the container of the pickaxe
|
||||||
|
var clonk = Contained();
|
||||||
|
if (clonk)
|
||||||
|
clonk->~DigOutObject(obj);
|
||||||
|
}
|
||||||
|
|
||||||
func FxIntPickaxeTimer(clonk, effect, time)
|
func FxIntPickaxeTimer(clonk, effect, time)
|
||||||
{
|
{
|
||||||
++swingtime;
|
++swingtime;
|
||||||
|
|
|
@ -122,8 +122,15 @@ public func SetMissionAccess(string str_password)
|
||||||
|
|
||||||
// Base implementations to be overloaded by goal objects
|
// Base implementations to be overloaded by goal objects
|
||||||
|
|
||||||
|
// Overload: return whether the goal has been fulfilled.
|
||||||
public func IsFulfilled() { return true; }
|
public func IsFulfilled() { return true; }
|
||||||
|
|
||||||
|
// Overload: return the current description for this goal.
|
||||||
|
public func GetDescription(int plr)
|
||||||
|
{
|
||||||
|
return "WARNING: GetDescription(int plr) not overloaded by goal";
|
||||||
|
}
|
||||||
|
|
||||||
protected func Activate(plr)
|
protected func Activate(plr)
|
||||||
{
|
{
|
||||||
if (IsFulfilled())
|
if (IsFulfilled())
|
||||||
|
|
|
@ -4,7 +4,7 @@ Version=4,10,0,0
|
||||||
Category=C4D_StaticBack
|
Category=C4D_StaticBack
|
||||||
Width=11
|
Width=11
|
||||||
Height=19
|
Height=19
|
||||||
Offset=-5,-10
|
Offset=-5,-20
|
||||||
BlitMode=1
|
BlitMode=1
|
||||||
Vertices=1
|
Vertices=1
|
||||||
VertexX=0
|
VertexX=0
|
||||||
|
|
|
@ -51,7 +51,7 @@ func FxAdjustTimer()
|
||||||
|
|
||||||
func Set(int i)
|
func Set(int i)
|
||||||
{
|
{
|
||||||
SetObjDrawTransform((800 * i)/100, 0, 0, 0, 900, -150);
|
SetObjDrawTransform((800 * i)/100, 0, -500, 0, 900, -150);
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init(to)
|
func Init(to)
|
||||||
|
@ -61,7 +61,7 @@ func Init(to)
|
||||||
SetVertexXY(0, -x, -y);
|
SetVertexXY(0, -x, -y);
|
||||||
SetAction("Turn", to);
|
SetAction("Turn", to);
|
||||||
SetPhase(Random(5));
|
SetPhase(Random(5));
|
||||||
this.Layer = to.Layer - 1;
|
this.Plane = to.Plane + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public func Initialize()
|
public func Initialize()
|
||||||
|
|
|
@ -179,6 +179,13 @@ func CheckSlavery()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Forward config to case
|
||||||
|
func SetNoPowerNeed(bool to_val)
|
||||||
|
{
|
||||||
|
if (case) return case->SetNoPowerNeed(to_val);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
local ActMap = {
|
local ActMap = {
|
||||||
Default = {
|
Default = {
|
||||||
Prototype = Action,
|
Prototype = Action,
|
||||||
|
|
|
@ -135,10 +135,39 @@ func Damage()
|
||||||
{
|
{
|
||||||
SetClrModulation(RGB(100, 100, 100));
|
SetClrModulation(RGB(100, 100, 100));
|
||||||
RemoveTimer("Growing");
|
RemoveTimer("Growing");
|
||||||
|
if (GetDamage() > 3 * MaxDamage())
|
||||||
|
BurstIntoAshes();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BurstIntoAshes()
|
||||||
|
{
|
||||||
|
var particles =
|
||||||
|
{
|
||||||
|
Prototype = Particles_Dust(),
|
||||||
|
R = 50, G = 50, B = 50,
|
||||||
|
Size = PV_KeyFrames(0, 0, 0, 200, PV_Random(2, 10), 1000, 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
var r = GetR();
|
||||||
|
var size = GetCon() * 110 / 100;
|
||||||
|
|
||||||
|
for(var cnt = 0; cnt < 10; ++cnt)
|
||||||
|
{
|
||||||
|
var distance = Random(size/2);
|
||||||
|
var x = Sin(r, distance);
|
||||||
|
var y = -Cos(r, distance);
|
||||||
|
|
||||||
|
for(var mirror = -1; mirror <= 1; mirror += 2)
|
||||||
|
{
|
||||||
|
CreateParticle("Dust", x * mirror, y * mirror, PV_Random(-3, 3), PV_Random(-3, -3), PV_Random(18, 1 * 36), particles, 2);
|
||||||
|
CastPXS("Ashes", 5, 30, x * mirror, y * mirror);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RemoveObject();
|
||||||
|
}
|
||||||
|
|
||||||
// called from the plant library
|
// called from the plant library
|
||||||
func Seed()
|
func Seed()
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,7 @@ func Construction()
|
||||||
|
|
||||||
public func Seed()
|
public func Seed()
|
||||||
{
|
{
|
||||||
// if(!IsStanding()) return false;
|
if(!IsStanding()) return false;
|
||||||
|
|
||||||
// Find number of plants in seed area.
|
// Find number of plants in seed area.
|
||||||
var size = SeedArea();
|
var size = SeedArea();
|
||||||
|
|
|
@ -195,13 +195,13 @@ protected func Doors()
|
||||||
gate->CloseDoor();
|
gate->CloseDoor();
|
||||||
AddEffect("SparklingAttention",wheel,100,100);
|
AddEffect("SparklingAttention",wheel,100,100);
|
||||||
|
|
||||||
var gate = CreateObject(StoneDoor, 1935, 550, NO_OWNER);
|
var gate = CreateObject(StoneDoor, 1935, 558, NO_OWNER);
|
||||||
var wheel = CreateObject(SpinWheel, 1900, 565, NO_OWNER);
|
var wheel = CreateObject(SpinWheel, 1900, 565, NO_OWNER);
|
||||||
wheel->SetStoneDoor(gate);
|
wheel->SetStoneDoor(gate);
|
||||||
gate->CloseDoor();
|
gate->CloseDoor();
|
||||||
AddEffect("SparklingAttention",wheel,100,100);
|
AddEffect("SparklingAttention",wheel,100,100);
|
||||||
|
|
||||||
var gate = CreateObject(StoneDoor, 2965, 310, NO_OWNER);
|
var gate = CreateObject(StoneDoor, 2965, 316, NO_OWNER);
|
||||||
var wheel = CreateObject(SpinWheel, 3260, 328, NO_OWNER);
|
var wheel = CreateObject(SpinWheel, 3260, 328, NO_OWNER);
|
||||||
wheel->SetStoneDoor(gate);
|
wheel->SetStoneDoor(gate);
|
||||||
gate->CloseDoor();
|
gate->CloseDoor();
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
GateHit.ogg by Sergenious (http://www.freesound.org/people/Sergenious/sounds/55820/), License: CC Attribution 3.0
|
|
||||||
Chain.ogg by daveincamas (http://www.freesound.org/people/daveincamas/sounds/44076/), License: CC Attribution 3.0
|
|
|
@ -1,11 +0,0 @@
|
||||||
[DefCore]
|
|
||||||
id=StoneDoor
|
|
||||||
Version=5,2,0,1
|
|
||||||
Category=C4D_Structure
|
|
||||||
Width=10
|
|
||||||
Height=40
|
|
||||||
Offset=-5,-20
|
|
||||||
SolidMask=10,0,10,40,0,0
|
|
||||||
Value=10
|
|
||||||
Mass=1000
|
|
||||||
Components=Rock=10;
|
|
Before Width: | Height: | Size: 15 KiB |
|
@ -1,67 +0,0 @@
|
||||||
/*-- Stone Door --*/
|
|
||||||
|
|
||||||
protected func Initialize()
|
|
||||||
{
|
|
||||||
SetAction("Door");
|
|
||||||
SetComDir(COMD_None);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func OpenDoor()
|
|
||||||
{
|
|
||||||
AddEffect("IntMoveGateUp", this, 100, 1, this);
|
|
||||||
Sound("GateMove");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public func CloseDoor()
|
|
||||||
{
|
|
||||||
AddEffect("IntMoveGateDown", this, 100, 1, this);
|
|
||||||
Sound("GateMove");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected func FxIntMoveGateUpTimer(object target)
|
|
||||||
{
|
|
||||||
if (GBackSolid(0, -20))
|
|
||||||
{
|
|
||||||
Sound("GateHit");
|
|
||||||
SetYDir(0);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetYDir(-5);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected func FxIntMoveGateDownTimer(object target)
|
|
||||||
{
|
|
||||||
if (GBackSolid(0, 19))
|
|
||||||
{
|
|
||||||
Sound("GateHit");
|
|
||||||
SetYDir(0);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetYDir(5);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Definition(def)
|
|
||||||
{
|
|
||||||
SetProperty("ActMap", {
|
|
||||||
Door = {
|
|
||||||
Prototype = Action,
|
|
||||||
Name = "Door",
|
|
||||||
Procedure = DFA_FLOAT,
|
|
||||||
Length = 1,
|
|
||||||
Delay = 1,
|
|
||||||
X = 0,
|
|
||||||
Y = 0,
|
|
||||||
Wdt = 10,
|
|
||||||
Hgt = 40,
|
|
||||||
NextAction = "Door",
|
|
||||||
},
|
|
||||||
}, def);
|
|
||||||
SetProperty("Name", "$Name$", def);
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
Name=Steintür
|
|
|
@ -1 +0,0 @@
|
||||||
Name=Stone Door
|
|