CMake build system updates, the docker image automatically compiles quests at build

This commit is contained in:
Exynox 2023-12-10 10:00:55 +02:00
parent adabeb39a7
commit fc3f2f232c
44 changed files with 271 additions and 15517 deletions

View File

@ -5,5 +5,14 @@ cmake-build-release/
# Dockerfile (in order to allow changes without rebuilding)
Dockerfile
# Git files
.gitignore
.gitkeep
# Compiled quests
gamefiles/locale/english/quest/object/
gamefiles/locale/english/quest/pre_qc/
gamefiles/locale/english/quest/qc
# Test folder
test/

View File

@ -23,15 +23,14 @@ set(METIN2_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
set(METIN2_CPU_TARGET ${CMAKE_SYSTEM_PROCESSOR})
# Git revision
include(FindGit)
find_package(Git)
find_package(GitInfo)
if(GIT_FOUND)
GIT_WC_INFO(${PROJECT_SOURCE_DIR} Metin2)
set(METIN2_REVISION ${Metin2_WC_REVISION_NAME})
set(METIN2_REVISION ${Metin2_WC_REVISION_HASH})
set(METIN2_LAST_CHANGED_DATE ${Metin2_WC_LAST_CHANGED_DATE})
if (${Metin2_WC_LATEST_TAG} NOT STREQUAL "")
if (Metin2_WC_LATEST_TAG)
set(METIN2_LATEST_TAG ${Metin2_WC_LATEST_TAG})
else()
set(METIN2_LATEST_TAG "unknown")

View File

@ -13,6 +13,7 @@ RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql lib
COPY . .
# Build the binaries
RUN mkdir build/
RUN cd build && cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ..
RUN cd build && make -j $(nproc)
@ -20,16 +21,19 @@ RUN cd build && make -j $(nproc)
FROM ubuntu:latest as app
WORKDIR /app
RUN apt-get update && apt-get install -y libdevil-dev libbsd-dev && apt-get clean
RUN apt-get update && apt-get install -y python2 libdevil-dev libbsd-dev && apt-get clean
# Copy the binaries from the build stage
COPY --from=build /app/build/src/db/db /bin/db
COPY --from=build /app/build/src/game/game /bin/game
COPY --from=build /app/build/src/quest/quest /bin/quest
COPY --from=build /app/build/src/quest/qc /bin/qc
# Copy the game files
COPY ./gamefiles/ .
# Compile the quests
RUN cd /app/locale/english/quest && python2 make.py
# Symlink the configuration files
RUN ln -s "./conf/CMD" "CMD"
RUN ln -s ./conf/item_names_en.txt item_names.txt

View File

@ -1,176 +0,0 @@
################################################################################
#
# Program: 3D Slicer
#
# Copyright (c) Kitware Inc.
#
# See COPYRIGHT.txt
# or http://www.slicer.org/copyright/copyright.txt for details.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
# and was partially funded by NIH grant 3P41RR013218-12S1
#
################################################################################
#
# The module defines the following variables:
# GIT_EXECUTABLE - path to git command line client
# GIT_FOUND - true if the command line client was found
# GIT_VERSION_STRING - the version of git found (since CMake 2.8.8)
#
# If the command line client executable is found the macro
# GIT_WC_INFO(<dir> <var-prefix>)
# is defined to extract information of a git working copy at
# a given location.
#
# The macro defines the following variables:
# <var-prefix>_WC_REVISION_HASH - Current SHA1 hash
# <var-prefix>_WC_REVISION - Current SHA1 hash
# <var-prefix>_WC_REVISION_NAME - Name associated with <var-prefix>_WC_REVISION_HASH
# <var-prefix>_WC_URL - output of command `git config --get remote.origin.url'
# <var-prefix>_WC_ROOT - Same value as working copy URL
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_GITSVN - Set to false
#
# ... and also the following ones if it's a git-svn repository:
# <var-prefix>_WC_GITSVN - Set to True if it is a
# <var-prefix>_WC_INFO - output of command `git svn info'
# <var-prefix>_WC_URL - url of the associated SVN repository
# <var-prefix>_WC_ROOT - root url of the associated SVN repository
# <var-prefix>_WC_REVISION - current SVN revision number
# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
# <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision
#
# Example usage:
# find_package(Git)
# if(GIT_FOUND)
# GIT_WC_INFO(${PROJECT_SOURCE_DIR} Project)
# message("Current revision is ${Project_WC_REVISION_HASH}")
# message("git found: ${GIT_EXECUTABLE}")
# endif()
#
# Look for 'git' or 'eg' (easy git)
#
set(git_names git eg)
# Prefer .cmd variants on Windows unless running in a Makefile
# in the MSYS shell.
#
if(WIN32)
if(NOT CMAKE_GENERATOR MATCHES "MSYS")
# Note: Due to a bug in 'git.cmd' preventing it from returning the exit code of 'git',
# we excluded it from the list of executables to search.
# See http://code.google.com/p/msysgit/issues/detail?id=428
# TODO Check if 'git' exists, get the associated version, if the corresponding version
# is known to have a working version of 'git.cmd', use it.
set(git_names git eg.cmd eg)
endif()
endif()
find_program(GIT_EXECUTABLE ${git_names}
PATHS
"C:/Program Files/Git/bin"
"C:/Program Files (x86)/Git/bin"
DOC "git command line client")
# XXX Comment to workaround https://gitlab.kitware.com/cmake/cmake/issues/15448
# mark_as_advanced(GIT_EXECUTABLE)
if(GIT_EXECUTABLE)
execute_process(COMMAND ${GIT_EXECUTABLE} --version
OUTPUT_VARIABLE git_version
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (git_version MATCHES "^git version [0-9]")
string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
endif()
unset(git_version)
macro(GIT_WC_INFO dir prefix)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
WORKING_DIRECTORY ${dir}
ERROR_VARIABLE GIT_error
OUTPUT_VARIABLE ${prefix}_WC_REVISION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(${prefix}_WC_REVISION ${${prefix}_WC_REVISION_HASH})
if(NOT ${GIT_error} EQUAL 0)
message(SEND_ERROR "Command \"${GIT_EXECUTBALE} rev-parse --verify -q --short=7 HEAD\" in directory ${dir} failed with output:\n${GIT_error}")
else(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} name-rev ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_REVISION_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_URL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format="%ci" ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_show_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE "^([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*"
"\\1" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_show_output}")
set(${prefix}_WC_GITSVN False)
# Check if this git is likely to be a git-svn repository
execute_process(COMMAND ${GIT_EXECUTABLE} config --get-regexp "^svn-remote"
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE git_config_output
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT "${git_config_output}" STREQUAL "")
# In case git-svn is used, attempt to extract svn info
execute_process(COMMAND ${GIT_EXECUTABLE} svn info
WORKING_DIRECTORY ${dir}
TIMEOUT 3
ERROR_VARIABLE git_svn_info_error
OUTPUT_VARIABLE ${prefix}_WC_INFO
RESULT_VARIABLE git_svn_info_result
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${git_svn_info_result} EQUAL 0)
set(${prefix}_WC_GITSVN True)
string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
"\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
"\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
"\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
endif(${git_svn_info_result} EQUAL 0)
endif(NOT "${git_config_output}" STREQUAL "")
# If there is no 'remote.origin', default to "NA" value and print a warning message.
if(NOT ${prefix}_WC_URL)
message(WARNING "No remote origin set for git repository: ${dir}" )
set( ${prefix}_WC_URL "NA" )
else()
set(${prefix}_WC_ROOT ${${prefix}_WC_URL})
endif()
endmacro(GIT_WC_INFO)
endif(GIT_EXECUTABLE)
# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE)

View File

@ -0,0 +1,244 @@
################################################################################
#
# Program: FindGitInfo from Slicer
#
# Copyright (c) Kitware Inc.
#
# See COPYRIGHT.txt
# or http://www.slicer.org/copyright/copyright.txt for details.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file was originally developed by Jean-Christophe Fillion-Robin,
# Kitware Inc. and was partially funded by NIH grant 3P41RR013218-12S1
#
################################################################################
# If the command line client executable is found the macro
# GIT_WC_INFO(<dir> <var-prefix>)
# is defined to extract information of a git working copy at
# a given location.
#
# The macro defines the following variables:
# <var-prefix>_WC_REVISION_HASH - Current SHA1 hash
# <var-prefix>_WC_REVISION - Current SHA1 hash
# <var-prefix>_WC_REVISION_NAME - Name associated with <var-prefix>_WC_REVISION_HASH
# <var-prefix>_WC_URL - output of command `git config --get remote.origin.url'
# <var-prefix>_WC_ROOT - Same value as working copy URL
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_GITSVN - Set to false
# <var-prefix>_WC_LATEST_TAG - Latest tag found in history
# <var-prefix>_WC_LATEST_TAG_LONG - <last tag>-<commits since then>-g<actual commit hash>
#
# ... and also the following ones if it's a git-svn repository:
# <var-prefix>_WC_GITSVN - Set to True if it is a
# <var-prefix>_WC_INFO - output of command `git svn info'
# <var-prefix>_WC_URL - url of the associated SVN repository
# <var-prefix>_WC_ROOT - root url of the associated SVN repository
# <var-prefix>_WC_REVISION - current SVN revision number
# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
# <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision
#
# Example usage:
# find_package(GitInfo)
# if(GIT_FOUND)
# GIT_WC_INFO(${PROJECT_SOURCE_DIR} Project)
# message("Current revision is ${Project_WC_REVISION_HASH}")
# message("git found: ${GIT_EXECUTABLE}")
# endif()
#
# Look for git. Respect the quiet and required flags passed to this module.
set(FIND_QUIETLY_FLAG "")
if (DEFINED GitInfo_FIND_QUIETLY)
set(FIND_QUIETLY_FLAG "QUIET")
endif ()
set(FIND_REQUIRED_FLAG "")
if (DEFINED GitInfo_FIND_REQUIRED)
set(FIND_REQUIRED_FLAG "REQUIRED")
endif ()
find_package(Git ${FIND_QUIETLY_FLAG} ${FIND_REQUIRED_FLAG})
if(GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} --version
OUTPUT_VARIABLE git_version
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (git_version MATCHES "^git version [0-9]")
string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
endif()
unset(git_version)
macro(GIT_WC_INFO dir prefix)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
WORKING_DIRECTORY ${dir}
ERROR_VARIABLE GIT_error
OUTPUT_VARIABLE ${prefix}_WC_REVISION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(${prefix}_WC_REVISION ${${prefix}_WC_REVISION_HASH})
if(NOT ${GIT_error} EQUAL 0)
message(SEND_ERROR "Command \"${GIT_EXECUTBALE} rev-parse --verify -q --short=7 HEAD\" in directory ${dir} failed with output:\n${GIT_error}")
else(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} name-rev ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_REVISION_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(NOT ${GIT_error} EQUAL 0)
execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_URL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format="%ci" ${${prefix}_WC_REVISION_HASH}
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_show_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE "^([0-9][0-9][0-9][0-9]\\-[0-9][0-9]\\-[0-9][0-9]).*"
"\\1" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_show_output}")
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_LATEST_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE ${prefix}_WC_LATEST_TAG_LONG
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
set(${prefix}_WC_GITSVN False)
# Check if this git is likely to be a git-svn repository
execute_process(COMMAND ${GIT_EXECUTABLE} config --get-regexp "^svn-remote"
WORKING_DIRECTORY ${dir}
OUTPUT_VARIABLE git_config_output
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT "${git_config_output}" STREQUAL "")
# In case git-svn is used, attempt to extract svn info
execute_process(COMMAND ${GIT_EXECUTABLE} svn info
WORKING_DIRECTORY ${dir}
TIMEOUT 3
ERROR_VARIABLE git_svn_info_error
OUTPUT_VARIABLE ${prefix}_WC_INFO
RESULT_VARIABLE git_svn_info_result
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${git_svn_info_result} EQUAL 0)
set(${prefix}_WC_GITSVN True)
string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
"\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
"\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
"\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
"\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
endif(${git_svn_info_result} EQUAL 0)
endif(NOT "${git_config_output}" STREQUAL "")
# If there is no 'remote.origin', default to "NA" value and print a warning message.
if(NOT ${prefix}_WC_URL)
message(WARNING "No remote origin set for git repository: ${dir}" )
set( ${prefix}_WC_URL "NA" )
else()
set(${prefix}_WC_ROOT ${${prefix}_WC_URL})
endif()
endmacro(GIT_WC_INFO)
# Get the version info from the latest tag and set it as the projects version.
#
# Parameters:
# prefix The prefix for all version variables.
#
macro(GIT_VERSION_INFO prefix)
# If this project is not deployed via git, the following version file will
# be used as fallback and needs to be deployed along with the sources. These
# will be generated automatically by depending on the global target
# 'project-version-files', if this project has access to the related git
# repositoy.
set(VERSION_FILE "${PROJECT_SOURCE_DIR}/.version")
if (NOT TARGET project-version-files)
add_custom_target(project-version-files)
endif ()
if (EXISTS "${PROJECT_SOURCE_DIR}/.git")
git_wc_info(${PROJECT_SOURCE_DIR} GIT)
# Add commands and targets for generating the required version file for
# source package deploys. The file will also be to a global property, so
# one is able to access a list of all generated version files, e.g. to
# clean up the source directory after the package has been packed.
add_custom_command(
OUTPUT ${VERSION_FILE}
COMMAND ${GIT_EXECUTABLE} describe --tags > ${VERSION_FILE}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
set_property(GLOBAL APPEND
PROPERTY GIT_GENERATED_VERSION_FILES "${VERSION_FILE}")
add_custom_target(project-version-files-${prefix} DEPENDS ${VERSION_FILE})
add_dependencies(project-version-files project-version-files-${prefix})
# If git is not available (e.g. this git was packed as .tar.gz), try to read
# the version-info from a hidden file in the root directory. This file
# should not be versioned, but added at packaging time.
elseif (EXISTS "${VERSION_FILE}")
file(READ "${VERSION_FILE}" GIT_WC_LATEST_TAG_LONG)
string(STRIP "${GIT_WC_LATEST_TAG_LONG}" GIT_WC_LATEST_TAG_LONG)
# If no version could be gathered by git or the version file, print a
# warning, so the user has to define a version in the backup version file.
else ()
if (${ARGN} EQUAL "REQUIRED")
message(FATAL_ERROR "No version provided by git or .version file")
else ()
message(WARNING "No version provided by git or .version file")
endif()
endif ()
if (GIT_WC_LATEST_TAG_LONG MATCHES "^([^0-9]*)([0-9]+)[.]([0-9]+)(.*)")
set(${prefix}_VERSION ${GIT_WC_LATEST_TAG_LONG} CACHE STRING "" FORCE)
set(${prefix}_VERSION_MAJOR ${CMAKE_MATCH_2} CACHE STRING "" FORCE)
set(${prefix}_VERSION_MINOR ${CMAKE_MATCH_3} CACHE STRING "" FORCE)
if (GIT_WC_LATEST_TAG_LONG MATCHES
"^([^0-9]*)([0-9]+)[.]([0-9]+)[.]([0-9]+)")
set(${prefix}_VERSION_PATCH ${CMAKE_MATCH_4} CACHE STRING "" FORCE)
else ()
set(${prefix}_VERSION_PATCH 0 CACHE STRING "" FORCE)
endif()
if (GIT_WC_LATEST_TAG_LONG MATCHES
"^([^0-9]*)([0-9]+)[.]([0-9]+)(.*)-([0-9]+)-")
set(${prefix}_VERSION_TWEAK ${CMAKE_MATCH_5} CACHE STRING "" FORCE)
else ()
set(${prefix}_VERSION_TWEAK 0 CACHE STRING "" FORCE)
endif()
mark_as_advanced(${prefix}_VERSION
${prefix}_VERSION_MAJOR
${prefix}_VERSION_MINOR
${prefix}_VERSION_PATCH
${prefix}_VERSION_TWEAK)
else ()
message(FATAL_ERROR "Invalid version info: '${GIT_WC_LATEST_TAG_LONG}'.")
endif ()
endmacro()
endif(GIT_FOUND)

View File

@ -1,10 +1,12 @@
# Ignore compiled quest folder
# Ignore compiled quest folders
object/
pre_qc/
# Quest compiler binaries
qc
qc.core
qc.exe
# Compilde Python files
# Compiled Python files
__pycache__/
*.pyc

View File

@ -1,4 +1,4 @@
#!/usr/local/bin/python
#!/bin/python2
import pre_qc
import os
os.system('rm -rf object')
@ -13,7 +13,7 @@ for line in file('locale_list'):
else:
filename = line
if os.system('./qc '+filename):
if os.system('qc '+filename):
print 'Error occured on compile ' + line
os.system('chmod -R 770 object')
import sys

View File

@ -1,151 +0,0 @@
quest dragon_soul begin
state start begin
when levelup or letter with pc.level >= 30 begin
send_letter(gameforge.dragon_soul._1010_sendLetter)
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when info or button begin
say(gameforge.dragon_soul._1020_say)
end
when 20001.chat.gameforge.dragon_soul._1030_npcChat with pc.level >= 30 begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.dragon_soul._1040_say)
set_state(state_learning)
end
end
state state_learning begin
when letter begin
send_letter(gameforge.dragon_soul._1050_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1060_say)
end
when kill begin
if npc.is_pc() then
return
end
if pc.count_item(30270) < 10 then
if drop_gamble_with_flag("ds_drop") then
game.drop_item_with_ownership(30270, 1, 300)
end
end
end
when 20001.chat.gameforge.dragon_soul._1050_sendLetter begin
say_title(mob_name(20001))
if pc.count_item(30270) >= 10 then
say(gameforge.dragon_soul._1070_say)
pc.remove_item(30270, 10)
ds.give_qualification()
char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
pc.give_item2(50255)
local today = math.floor(get_global_time() / 86400)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 9)
set_state(state_farming)
else
say(gameforge.dragon_soul._1080_say)
end
end
end
state state_farming begin
when letter begin
send_letter(gameforge.dragon_soul._1090_sendLetter)
end
when info or button begin
say(string.format(gameforge.dragon_soul._1100_say, pc.getf("dragon_soul", "eye_left")))
end
when kill begin
if npc.is_pc() then
return
end
if drop_gamble_with_flag("ds_drop") then
local eye_left = pc.getf("dragon_soul", "eye_left")
local haved_gemstone_number = pc.count_item(30270)
if eye_left > haved_gemstone_number / 10 then
game.drop_item_with_ownership(30270, 1, 300)
end
end
end
when 30270.pick begin
local eye_left = pc.getf("dragon_soul", "eye_left")
if eye_left <= 0 then
return
end
if pc.count_item(30270) >= 10 then
pc.setf("dragon_soul", "eye_left", eye_left - 1)
pc.remove_item(30270, 10)
pc.give_item2(50255)
if 1 == eye_left then
notice_multiline(gameforge.dragon_soul._1110_notice, notice)
set_state(state_closed_season)
end
end
end
when 20001.chat.gameforge.dragon_soul._1120_npcChat begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 10)
end
end
end
state state_closed_season begin
when letter begin
send_letter(gameforge.dragon_soul._1150_sendLetter)
end
when info or button begin
say(gameforge.dragon_soul._1160_say)
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1170_say)
else
say(gameforge.dragon_soul._1180_say)
end
end
when 20001.chat.gameforge.dragon_soul._1090_sendLetter begin
say_title(mob_name(20001))
local today = math.floor(get_global_time() / 86400)
if today == pc.getf("dragon_soul", "eye_timestamp") then
say(gameforge.dragon_soul._1130_say)
else
say(gameforge.dragon_soul._1140_say)
pc.setf("dragon_soul", "eye_timestamp", today)
pc.setf("dragon_soul", "eye_left", 10)
set_state(state_farming)
end
end
end
-- deprecated states. so, jump to new state.
state state_1 begin
when login begin
set_state(state_learning)
end
end
state state_2 begin
when login begin
set_state(state_learning)
end
end
state state_3 begin
when login begin
set_state(state_closed_season)
end
end
end

View File

@ -1,41 +0,0 @@
quest dragon_soul_daily_gift begin
state start begin
function is_event_on()
-- 지금 시각이 dragon_soul_daily_gift_mgr.quest에서 셋팅한 시간 대역인지 확인.
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local now = os.time()
return now > s_time and now < e_time
end
when 20001.chat.gameforge.dragon_soul_daily_gift._010_npcChat with dragon_soul_daily_gift.is_event_on() begin
local event_id = game.get_event_flag("ds_dg_id")
if pc.getqf("event_id") != event_id then
say_title(mob_name(20001))
if pc.level < 50 then
say(gameforge.dragon_soul_daily_gift._020_say)
return
elseif 0 == ds.is_qualified() then
say(gameforge.dragon_soul_daily_gift._030_say)
return
else
say(gameforge.dragon_soul_daily_gift._040_say)
pc.setqf("event_id", event_id)
wait()
end
end
say_title(mob_name(20001))
if 0 == get_today_count("dragon_soul_daily_gift", "gift") then
-- 오늘치 선물 증정.
say(gameforge.dragon_soul_daily_gift._050_say)
local gift_vnum = game.get_event_flag("ds_dg_item")
pc.give_item2(gift_vnum)
inc_today_count("dragon_soul_daily_gift", "gift")
else
-- 선물은 이미 줌.
say(gameforge.dragon_soul_daily_gift._060_say)
end
end
end
end

View File

@ -1,90 +0,0 @@
quest dragon_soul_daily_gift_mgr begin
state start begin
function is_event_on()
-- 지금 시각이 dragon_soul_daily_gift_mgr.quest에서 셋팅한 시간 대역인지 확인.
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local now = os.time()
return now > s_time and now < e_time
end
function date_getter()
say(gameforge.dragon_soul_gift_mgr._040_say)
say("yy-mm-dd hh:mm")
local date = input()
local _, _, y, m, d, hour, min = string.find(date, "(%d+)-(%d+)-(%d+) (%d+):(%d+)")
return y, m, d, hour, min
end
function print_quest_info()
local s_time = game.get_event_flag("ds_dg_st")
local e_time = game.get_event_flag("ds_dg_et")
local gift_vnum = game.get_event_flag("ds_dg_item")
say(os.date("start time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", s_time))
say(os.date(" end time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", e_time))
say(string.format("gift item[ENTER] vnum : %d", gift_vnum))
say_item_vnum(gift_vnum)
end
when 20001.chat.gameforge.dragon_soul_gift_mgr._010_npcChat with pc.is_gm() begin
local sel = 0
if dragon_soul_daily_gift_mgr.is_event_on() then
say(locale.event_on_going)
local sel = select(locale.event_modify, locale.event_info_print, locale.event_cancel, locale.close)
if 2 == sel then
dragon_soul_daily_gift_mgr.print_quest_info()
return
elseif 3 == sel then
game.set_event_flag("ds_dg_et", 0)
return
elseif 4 == sel then
return
end
end
-- Get start time and end time.
local s_y, s_m, s_d, s_hour, s_min
repeat
say(gameforge.dragon_soul_gift_mgr._020_say)
s_y, s_m, s_d, s_hour, s_min = dragon_soul_daily_gift_mgr.date_getter()
s_y = s_y + 2000
say(string.format("year:%d month:%d day:%d hour:%d min:%d", s_y, s_m, s_d, s_hour, s_min))
until 1 == select(gameforge.locale.yes, gameforge.locale.no)
local e_y, e_m, e_d, e_hour, e_min
repeat
say(gameforge.dragon_soul_gift_mgr._030_say)
e_y, e_m, e_d, e_hour, e_min = dragon_soul_daily_gift_mgr.date_getter()
e_y = e_y + 2000
say(string.format("year:%d month:%d day:%d hour:%d min:%d", e_y, e_m, e_d, e_hour, e_min))
until 1 == select(gameforge.locale.yes, gameforge.locale.no)
local s_time = os.time{year=s_y, month=s_m, day=s_d, hour=s_hour, min=s_min}
local e_time = os.time{year=e_y, month=e_m, day=e_d, hour=e_hour, min=e_min}
-- Get gift item vnum
local gift_vnum = input_number("gift vnum")
-- Print settings and confirm.
say(os.date("start time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", s_time))
say(os.date(" end time[ENTER] year:%Y, month:%m, day:%d hour:%H minite:%M", e_time))
say(string.format("gift item[ENTER] vnum : %d", gift_vnum))
say_item_vnum(gift_vnum)
say(gameforge.dragon_soul_gift_mgr._050_say)
if 2 == select(gameforge.locale.yes, gameforge.locale.no) then
return
end
-- 이벤트 수정인 경우는 event_id를 바꾸면 안됨.
if 0 == sel then
local event_id = game.get_event_flag("ds_dg_id")
game.set_event_flag("ds_dg_id", event_id + 1)
end
game.set_event_flag("ds_dg_st", s_time)
game.set_event_flag("ds_dg_et", e_time)
game.set_event_flag("ds_dg_item", gift_vnum)
say (gameforge.dragon_soul_gift_mgr._060_say)
end
end
end

View File

@ -1,9 +0,0 @@
quest dragon_soul_refine begin
state start begin
when 20001.chat.gameforge.dragon_soul_refine._010_npcChat with ds.is_qualified() != 0 begin
say_title(mob_name(20001))
say (gameforge.dragon_soul_refine._020_say)
ds.open_refine_window()
end
end
end

View File

@ -1,8 +0,0 @@
quest dragon_soul_shop begin
state start begin
when 20001.chat.gameforge.dragon_soul._100_npcChat with ds.is_qualified() begin
say (gameforge.dragon_soul._110_say)
npc.open_shop(13)
end
end
end

View File

@ -1,103 +0,0 @@
quest event_flame_dungeon_open begin
state start begin
when 20381.chat.gameforge.event_flame_dungeon_open._010_npcChat with pc.get_level() >= 90 begin
say(gameforge.event_flame_dungeon_open._020_say)
wait()
say(gameforge.event_flame_dungeon_open._030_say)
wait()
say(gameforge.event_flame_dungeon_open._080_say)
pc.setqf("event_FD_time", 0)
set_state(run)
end
end
state run begin
when 20381.chat.gameforge.event_flame_dungeon_open._040_npcChat with game.get_event_flag("w21open_event")>0 begin
say(gameforge.event_flame_dungeon_open._050_say)
wait()
local t = pc.getqf("event_FD_time")
local killcount = pc.getqf("kill_done")
if killcount == 0 then
say(gameforge.event_flame_dungeon_open._080_say)
elseif (t==0) or (t+86400 < get_global_time()) then
say(gameforge.event_flame_dungeon_open._060_say)
pc.give_item2(71173, 1)
pc.give_item2(71174, 3)
pc.setqf("event_FD_time", get_global_time())
pc.setqf("kill_count_1", 0)
else
say(gameforge.event_flame_dungeon_open._070_say)
end
end
when letter with game.get_event_flag("w21open_event")>0 begin
send_letter(gameforge.event_flame_dungeon_open._010_npcChat)
--³²Àº óġ ¼ö ¾È³»¹®
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
event_flame_dungeon_open.kill_count()
end
when button or info with game.get_event_flag("w21open_event")>0 begin
say_title(gameforge.event_flame_dungeon_open._010_npcChat)
say(string.format(gameforge.levelup._26_say, 100 - pc.getqf("kill_count_1")))
end
when 3101.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3102.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3103.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3104.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3105.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3190.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 3191.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
event_flame_dungeon_open.kill_count()
end
when 71173.use begin
pc.warp(614200, 706800, 62)
pc.remove_item(71173, 1)
end
function kill_count()
local total_remain = 100
local remain1 = pc.getqf("kill_count_1")
local remain_count = total_remain - remain1
q.set_counter_value(remain_count)
if total_remain == 0 then
pc.setqf("kill_done", 1)
end
end
end
end

View File

@ -1,717 +0,0 @@
quest flame_dungeon begin
state start begin
--when 20394.click with pc.get_level() >= 90 begin
--pc.give_item2(71175, 1)
--set_state(run)
--end
--end
--state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7762, 6739},-- 던전에 처음 들어오는 곳
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {6142,7068}, --입장시켜주는애 서있는 곳
["YAK_pos"] = {376, 397} -- 약환 부하
}
end
function is_flamed(idx) -- 적룡성에 있는지 확인
return idx >= 351 * 10000 and idx < (351 + 1) *10000
end
function make_dungeon() -- 던전 만들기
local setting = flame_dungeon.setting()
d.new_jump_party(351, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
-- d.spawn_mob_ac_dir(20385, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],0)
-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
d.regen_file("data/dungeon/flame_dungeon/npc.txt")
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(20387, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(20388, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- 정상적으로 입장했는지? // 비정상 : 0 정상 : 1 // 튕기면 입장제한시간을 기록 안함
end
function go_boss() -- 보스룸 가기
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --레벨확인
-- syschat(gameforge.flame_dungeon._580_notice)
say(gameforge.flame_dungeon._580_notice)
return
else
--if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- 선행퀘스트 확인
-- -- say_title(gameforge.flame_dungeon._010_say)
say(gameforge.flame_dungeon._010_say)
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_fild_boss.txt")
-- d.spawn_mob(20385,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
end
-- else
-- -- syschat(gameforge.flame_dungeon._040_notice)
-- say(gameforge.flame_dungeon._040_notice)
-- return
-- end
end
end
function level_clear() -- 레벨 깼을때, 리젠클리어, 지역클리어
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- 맵전체 -- d.purge() 사용고려
end
function clear_timer(inx) -- 타이머 다지우기
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("killed_A_1", inx)
clear_server_timer ("killed_A_2", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == 351 then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
elseif flame_dungeon.is_flamed(idx) then -- 던전 입장, 보스룸 입장 예외
------------------------------------------------------------------------------------------------------------------------------------------------------
--아래의 두줄중 위에줄을 사용하면 던전에서 종료했을경우 다시 원래 위치로 돌아온다. 아래줄을 활성화 하면 던전에서 종료했을 경우 던전 밖으로 나가게 된다.
--던전에서 종료했을 경우 다시 원래 위치로 돌아올 경우, 던전에서 나가는 방법을 만들어줘야 하기 때문에 적룡성비의 나가기란 옵션을 활성화 해줘야 한다.
------------------------------------------------------------------------------------------------------------------------------------------------------
-- pc.set_warp_location(0, 0 , 0) --튕겼을때 다시 돌아오게 만들어 주는 부분
pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- 던전 나갔을 때 밖으로 튕기게함
local ticketGroup = {71095, 1, 71130, 1}
if d.getf("dungeon_enter") == 0 then -- 진행중이 아니면
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 30 * 60 then -- 입장제한시간이 걸렸으면
notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
say(gameforge.flame_dungeon._060_say)
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
say(gameforge.flame_dungeon._080_say)
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
say(gameforge.flame_dungeon._100_say)
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- 진행중인데 티켓이 안지워졌을경우
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- 정상적인 던전 입장 후 로그아웃
pc.setf("flame_dungeon","exit_time",get_global_time()) -- 인스턴스 안에서의 마지막 시간을 기록, 근데 시간제한 때문에 or 그냥 튕긴거면 안기록
end
end
end
when 20394.chat.gameforge.flame_dungeon._110_npcChat begin
local setting = flame_dungeon.setting()
if party.is_party() then
-- 던전 도중 나갈 경우 재입장 가능하도록
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- 접종 이후 5분 내?
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- 보스
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5분 초과하여 재 입장 불가
say_title(mob_name(20394))
say(gameforge.flame_dungeon._590_say)
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {71095, 1, 71130, 1}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < 100 then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(20394))
say(gameforge.flame_dungeon._610_say)
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(20394))
say(gameforge.flame_dungeon._630_say)
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say(gameforge.flame_dungeon._120_say)
local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - 30 * 60 ) then
flame_dungeon.make_dungeon()
else
--say("test : 파티원의 입장 제한시간이 끝나지 않았습니다.")
say(gameforge.flame_dungeon._600_say)
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say(gameforge.flame_dungeon._150_say)
end
end
else
say(gameforge.flame_dungeon._160_say)
end
end
-- when 20394.chat."Test : 리소스확인" with is_test_server() begin -- 테스트용
-- local setting = flame_dungeon.setting()
-- pc.setf("flame_dungeon","fdRtest",1)
-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, 351)
-- end
when 20394.chat."TEST : Init time limit init" with is_test_server() begin -- 테스트용
pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
say("Done")
end
-- when 20385.chat."Test : 현재 상태" with is_test_server() begin -- 테스트용
-- say("남은 몬스터 : "..d.count_monster())
-- say("level : "..d.getf("level"))
-- say("Dmap index : "..d.get_map_index())
-- say("Pmap index : "..pc.get_map_index())
-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
-- say("global time : "..get_global_time())
-- if flame_dungeon.is_flamed(d.get_map_index()) then
-- say("in dungeon") -- is_flamed 함수 체크
-- end
-- if d.is_unique_dead("stone1") then
-- say("stone1 is dead")
-- else
-- say("stone1 is not dead")
-- end
-- end
-- when 20385.chat."처음으로" begin -- 테스트용
-- say("초기화 합니다")
-- flame_dungeon.clear_timer(d.get_map_index())
-- flame_dungeon.make_dungeon()
-- end
when 20385.chat."Test : Boss Room" with is_test_server() begin -- 테스트용
flame_dungeon.go_boss()
end
-- < 시간 경과 타이머>
-- when 20385.chat."나가기" begin -- 던전에서 튕기지 않게 할 경우 활성화
-- local setting = flame_dungeon.setting()
-- say("밖으로 나가시겠습니까?")
-- local warp = select("확인","취소")
-- if warp == 1 then
-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
-- end
-- end
when flame_dungeon_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
end
end
when flame_dungeon_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
end
end
when flame_dungeon_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
end
end
when flame_dungeon_0m_left_timer.server_timer begin
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
server_timer("dungeon_end_timer",10,d.get_map_index())
end
end
-- <<<< 던전 진행>>>> --
when 20385.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'는 x번째 레벨 퀘스트 받을 수 있는 상태 , '1x'는 x번째 레벨 퀘스트 진행중
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say(gameforge.flame_dungeon._230_say)
say(gameforge.flame_dungeon._240_say)
wait()
d.setf("started",1)
-- 파티원이 튕겨버렸는데 자기만 남아서 exit timer가 리셋되면 안되니깐 다음레벨을 눌렀을때를 시작할때로 봄
server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
-- 통행증 관련된 처리
-- 입장 후에 티켓을 없앤 사람을 튕겨내기 위해서 타이머를 이용해 티켓을 제거한다.
local pids = {party.get_member_pids()}
local ticketGroup = {71095, 1, 71130, 1}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
-- 던전과 파티에 서로에 대한 정보를 저장한다.
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --진행중이 아니면
if d.getf("clear_count") == 6 then -- 방 여섯개 했으면 보스방
d.setf("level",7)
else
local rand = number(1,6)--랜덤에서 방문체크는 따로 배열없이 방의 문의 열려있는지로 체크함
local setlev = 0
d.setf("level",7) -- 혹시 모를 문제가 생겨 레벨이 안잡힐경우를 대비해 보스룸으로 셋팅해둠
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 11 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
elseif d.getf("level") == 2 then
say(gameforge.flame_dungeon._290_say)
say(gameforge.flame_dungeon._300_say)
notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
d.spawn_mob(20386, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- 봉인석 소환
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say(gameforge.flame_dungeon._310_say)
elseif d.getf("level") == 3 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 13 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
elseif d.getf("level") == 4 then -- 474 178
say(gameforge.flame_dungeon._320_notice)
notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_d.txt")
d.spawn_mob(6051,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- 타겟몬스터 소한
elseif d.getf("level") == 14 then
say(gameforge.flame_dungeon._330_say)
say(gameforge.flame_dungeon._340_say)
elseif d.getf("level") == 5 then -- 510 355
say(gameforge.flame_dungeon._350_say)
say(gameforge.flame_dungeon._360_say)
notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- 랜덤하게 돌소환
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(20386, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say(gameforge.flame_dungeon._370_say)
elseif d.getf("level") == 6 then -- 507 490
say(gameforge.flame_dungeon._380_say)
notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_f.txt")
d.spawn_mob(8057, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- 타겟오브젝트 소환
elseif d.getf("level") == 16 then
say(gameforge.flame_dungeon._390_say)
say(gameforge.flame_dungeon._400_say)
elseif d.getf("level") == 7 then
-- setskin(NOWINDOW)
flame_dungeon.go_boss()
else
say(gameforge.flame_dungeon._410_say)
end
npc.unlock()
end
when dungeon_end_timer.server_timer begin -- 종료 타이머 (끝나고 나가는거)
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
when killed_A_1.server_timer begin -- 타이머 돌리기1 (level1,level3)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_1", 6, get_server_timer_arg())
end
end
end
when killed_A_2.server_timer begin -- 타이머 돌리기2 (1과 2 번갈아가면서 돌아감)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_2", 6, get_server_timer_arg())
end
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2레벨 봉인석 열쇠 드랍
local i = number(1, 100) -- 100분의 1 확률로 열쇠드랍
if i == 1 then
game.drop_item (30329, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == 30329 and d.getf("level") == 12 begin -- 2레벨 열쇠 먹었을때
local i = number(1, 5) -- 5분의 1 확률로 진짜 열쇠
if i == 1 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._450_say)
end
end
when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5레벨 봉인석 열쇠 드랍
local i = number(1, 30) -- 30분의 1 확률로 열쇠드랍
if i == 1 then
game.drop_item (30330, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == 30330 and d.getf("level") == 15 begin -- 5레벨 진짜열쇠 먹었을때
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- 첫번째 꺼는 선행되어야 할 일이 필요없으니 찾자마자 제거해줌
npc.purge()
item.remove()
say(gameforge.flame_dungeon._470_say)
d.setf("stonekill",2) -- 2번 돌을 죽여라
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2번돌을 죽일 차롄데 2번돌에게 열쇠를 먹였을 때
npc.purge()
item.remove()
say(gameforge.flame_dungeon._480_say)
d.setf("stonekill",3)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("2번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._500_say)
d.setf("stonekill",4)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("3번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._510_say)
d.setf("stonekill",5)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("4번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._520_say)
d.setf("stonekill",6)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("5번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._530_say)
d.setf("stonekill",7)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("6번")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("7번")
end
end
end
when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- 망마석 파괴했을 때
notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when 6091.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- 보스 죽였을때
notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
server_timer("dungeon_end_timer", 60,d.get_map_index())
flame_dungeon.level_clear()
-- 파티원 중, 야마천 잡는 퀘스트(104렙, 105렙 퀘스트) 진행중인 사람이 있으면 퀘스트 클리어 되도록.
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
end
end

View File

@ -1,541 +0,0 @@
quest main_quest_flame_lv100 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 100 begin
set_state (state1_1)
end
end
-- 탁기의 정체
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._040_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._060_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._070_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._080_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._090_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv100.kill_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._100_sayTitle)
say(gameforge.main_quest_flame_lv100._110_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward, 300 - pc.getqf("kill_count_1")))
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._120_say)
end
when 2202.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2203.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2204.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 2205.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
-- 이 아래는 보험용으로 같은 이름의 vnum이 다른 몬스터를 잡았을때도 퀘스트가 클리어 되도록 하였다.
when 7020.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7021.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7022.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
when 7023.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv100.kill_count()
end
function kill_count()
local total_remain = 0
local remain1 = 300 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._010_sendLetter)
say(gameforge.main_quest_flame_lv100._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv100._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv100._150_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 38143000))
pc.give_exp2(38143000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 149000))
pc.change_money(149000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30051),1))
pc.give_item2(30051, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50814),10))
pc.give_item2(50814, 10)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 탁기의 저지1-1
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._180_say)
wait()--추가 대화
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._190_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._200_say)
wait()--추가 대화
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._210_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._220_say)
wait()--추가 대화
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._230_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin -- 재료를 모아오는 부분. 재료를 모두 모은 시점이 파악이 안될 경우 이 state 에서 퀘스트를 완료할 수 있다.
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._260_sayTitle)
say(gameforge.main_quest_flame_lv100._270_say)
say(gameforge.main_quest_flame_lv100._250_say)
local remain1 = 10 - pc.count_item(90010)
local remain2 = 50 - pc.count_item(30010)
local remain3 = 10 - pc.count_item(30025)
local remain4 = 200 - pc.count_item(51001)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
if remain4 < 0 then
remain4 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(90010) ,remain1,item_name(30010) ,remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(30025) , remain3,item_name(51001) , remain4))
say()
q.set_counter_value(remain1 + remain2 + remain3 + remain4)
local check = remain1 + remain2 + remain3 + remain4
if check <= 0 then
set_state (state2_3)
end
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
if pc.count_item(90010) >= 10 and pc.count_item(30010) >= 50
and pc.count_item(30025) >= 10 and pc.count_item(51001) >= 200 then
pc.remove_item ( 90010,10)
pc.remove_item ( 30010,50)
pc.remove_item ( 30025,10)
pc.remove_item ( 51001,200)
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
set_state (state3_1)
else
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._290_say)
end
end
when leave begin
--q.done()
end
end
state state2_3 begin -- 재료를 모두 모았다. 하지만 이 후에 재료를 다시 제거할 경우, 연금술사에게 말을 걸면 state2_2로 다시 넘어가게 된다.
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._300_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._160_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._160_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(90010) >= 10 and pc.count_item(30010) >= 50
and pc.count_item(30025) >= 10 and pc.count_item(51001) >= 200 then
pc.remove_item ( 90010,10)
pc.remove_item ( 30010,50)
pc.remove_item ( 30025,10)
pc.remove_item ( 51001,200)
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._280_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 150000))
pc.change_money(150000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2))
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1))
pc.give_item2_select(70043)
item.set_socket(2, 60)
say()
set_state (state3_1)
else
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._290_say)
set_state (state2_2)
end
end
when leave begin
--q.done()
end
end
-- 탁기의 저지1-2
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._170_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._330_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._340_say)
wait()--추가 대화
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._350_say)
--다음 스테이트로
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._240_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20016)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20016))
end
q.set_counter_name(gameforge.main_quest_flame_lv100._250_say)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._360_sayTitle)
say(gameforge.main_quest_flame_lv100._370_say)
say(gameforge.main_quest_flame_lv100._250_say)
say(gameforge.main_quest_flame_lv100._380_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20016.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20016))
say(gameforge.main_quest_flame_lv100._390_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._400_say)
wait()--추가 대화
say_title(mob_name(20016))
say(gameforge.main_quest_flame_lv100._410_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv100._420_say)
pc.give_item2(31077, 1)
--다음 스테이트로
set_state (state3_3)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._430_say)
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv100._440_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv100._320_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv100._320_sendLetter)
say(gameforge.main_quest_flame_lv100._310_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20001.chat.gameforge.main_quest_flame_lv100._320_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31077, pc.count_item(31077))
say_title(mob_name(20001))
say(gameforge.main_quest_flame_lv100._450_say)
--보상
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 35843000))
pc.give_exp2(35843000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 152000))
pc.change_money(152000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10))
pc.give_item2(50708, 10)
say()
say_reward(string.format(gameforge.main_quest_flame_lv99._430_say, 101))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv101", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,521 +0,0 @@
quest main_quest_flame_lv101 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 101 begin
set_state (state1_1)
end
end
-- 동굴의 정체
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._010_sendLetter)
say(gameforge.main_quest_flame_lv101._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._040_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._050_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._070_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._080_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin -- 단서 X, 부하 X
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._090_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(2)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 1))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 1))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._130_say)
end
when 20393.click begin
say(gameforge.main_quest_flame_lv101._140_say)
set_state (state1_3) -- 단서 X, 부하 O
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,100) == 1 then
pc.give_item2(31074, 1)
set_state (state1_4) -- 단서 O, 부하 X
end
end
when leave begin
--q.done()
end
end
state state1_3 begin -- 단서 X, 부하 O
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._150_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 1))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 0))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._160_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._180_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,100) == 1 then
pc.give_item2(31074, 1)
set_state ("state1_5") -- 단서 O, 부하 O
end
end
when leave begin
--q.done()
end
end
state state1_4 begin -- 단서 O, 부하 X
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._190_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
q.set_counter_value(1)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._110_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31074), 0))
say(string.format(gameforge.main_quest_lv90._1190_say, item_name(31079), 1))
say()
say_reward(gameforge.main_quest_flame_lv101._120_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._200_say)
end
when 20393.click begin
say(gameforge.main_quest_flame_lv101._140_say)
set_state (state1_5)
end
when leave begin
--q.done()
end
end
state state1_5 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._210_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._010_sendLetter)
say(gameforge.main_quest_flame_lv101._220_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._010_sendLetter begin
target.delete("__TARGET__")
--아이템 제거
pc.remove_item(31074, pc.count_item(31074))
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._230_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._250_say)
wait()--추가 대화
say_title(gameforge.main_quest_flame_lv101._260_sayTitle)
say(gameforge.main_quest_flame_lv101._270_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._280_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 37003000))
pc.give_exp2(37003000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 153000))
pc.change_money(153000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30047),2))
pc.give_item2(30047, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(27992),2)) -- 백진주
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 초마단의 명패 해독
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._300_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._310_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._330_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._340_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._350_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._360_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--아이템 지급 설정
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv101.item_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._100_sayTitle)
say(gameforge.main_quest_flame_lv101._520_say)
--남은 아이템 안내문
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31080), 1 - pc.count_item(31080)))
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._370_say)
end
when 2206.kill begin
if number(1,100) == 1 then
pc.give_item2(31080, 1)
main_quest_flame_lv101.item_count()
end
end
function item_count()
if pc.count_item(31080) >= 1 then
set_state ("state2_3")
end
q.set_counter_value(1 - pc.count_item(31080))
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._380_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._390_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
target.delete("__TARGET__")
--아이템 제거
pc.remove_item(31080, pc.count_item(31080))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._400_say)
--다음 스테이트로
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 154000))
pc.change_money(154000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024),1)) -- 행운의 금화
pc.give_item2_select(72024)
item.set_socket(2, 180)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094),1)) -- 선인의 교훈
pc.give_item2(71094, 1)
say()
set_state (state2_4)
end
when leave begin
--q.done()
end
end
state state2_4 begin
when enter begin
--시간제한 설정
pc.setqf("limit_time", get_time() + 60*60*24)
end
when login begin
--시간제한 설정
local remain_time = pc.getqf("limit_time") - get_time()
timer("time_over", remain_time)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._290_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._290_sendLetter)
say(gameforge.main_quest_flame_lv101._390_say)
--npc 타겟 안내문
local remain_time = pc.getqf("limit_time") - get_time()
local left_hour = math.mod(remain_time / (60 * 60), 24);
local left_minute = math.mod(remain_time / 60, 60);
say(string.format(gameforge.main_quest_flame_lv101._410_say, left_hour, left_minute))
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._290_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._420_say)
end
when time_over.timer begin
set_state ("state3_1")
end
when leave begin
pc.setqf("limit_time", 0);
--q.done()
end
end
-- 명패의 진실
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv101._430_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._430_sendLetter)
say(gameforge.main_quest_flame_lv101._300_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv101._430_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._440_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv101._450_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv101._340_say)
wait()--추가 대화
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv101._470_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv101._430_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv101._480_sayTitle)
say(gameforge.main_quest_flame_lv101._490_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv101._430_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._500_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv101._510_say)
wait()--추가 대화
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 156000))
pc.change_money( 156000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1)) -- 통행증명서
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72016),1)) -- 제3의 손
pc.give_item2_select(72016)
item.set_socket(2, 60)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 102))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv102", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,623 +0,0 @@
quest main_quest_flame_lv102 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 102 begin
set_state (state1_1)
end
end
-- 돌입
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._010_sendLetter)
say(gameforge.main_quest_flame_lv102._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._040_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._060_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin --몬스터 잡아오는 부분.
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._070_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv102.kill_count()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._080_sayTitle)
say(gameforge.main_quest_flame_lv102._090_say)
--남은 아이템 안내문
local remain1 = 30 - pc.getqf("mob1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 30 - pc.getqf("mob2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 30 - pc.getqf("mob3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 30 - pc.getqf("mob4")
if remain4 < 0 then
remain4 = 0
end
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_flame_lv102._100_say,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_flame_lv102._110_say,mob_name(6007), remain3,mob_name(6008), remain4))
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._120_say)
end
when 6005.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob1")
pc.setqf("mob1", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6006.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob2")
pc.setqf("mob2", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6007.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob3")
pc.setqf("mob3", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
when 6008.kill begin
if number(1,1) == 1 then
local kill_count = pc.getqf("mob4")
pc.setqf("mob4", kill_count + 1)
main_quest_flame_lv102.kill_count()
end
end
function kill_count()
local total_remain = 0
local remain1 = 30 - pc.getqf("mob1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 30 - pc.getqf("mob2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 30 - pc.getqf("mob3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 30 - pc.getqf("mob4")
if remain4 < 0 then
remain4 = 0
end
total_remain = remain1 + remain2 + remain3 + remain4
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._010_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._150_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._170_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 49584000))
pc.give_exp2( 49584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 157000))
pc.change_money(157000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72723),1)) -- 화룡의 축복(소)
pc.give_item2(72723, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050),1)) -- 선왕의 증표
pc.give_item2(70050, 1)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 염왕 야마천?!
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._180_sendLetter)
say(gameforge.main_quest_flame_lv102._190_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._200_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._220_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._250_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._260_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._270_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--아이템 지급 설정
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._280_sayTitle)
say(gameforge.main_quest_flame_lv102._290_say)
--남은 아이템 안내문
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31081), 10 - pc.count_item(31081)))
say_reward(gameforge.main_quest_flame_lv102._300_sayReward)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._310_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
if number(1,50) == 1 then
pc.give_item2(31081, 1)
main_quest_flame_lv102.item_count()
end
end
function item_count()
if pc.count_item(31081) >= 10 then
set_state ("state2_3")
end
q.set_counter_value(10 - pc.count_item(31081))
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._320_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._180_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin
target.delete("__TARGET__")
--아이템 제거
pc.remove_item(31081, pc.count_item(31081))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._330_say)
wait()--추가 대화
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 52484000))
pc.give_exp2( 52484000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 159000))
pc.change_money( 159000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72301),5)) -- 축복의 서
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
--다음 스테이트로
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- 탁기의 정화
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._350_sendLetter)
say(gameforge.main_quest_flame_lv102._190_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._360_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._380_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv102._390_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._420_sayTitle)
say(gameforge.main_quest_flame_lv102._430_say)
say(gameforge.main_quest_lv97._670_counterName)
local remain1 = 50 - pc.count_item(50819)
local remain2 = 100 - pc.count_item(51001)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(50819) ,remain1,item_name(51001) ,remain2))
q.set_counter_value(remain1 + remain2)
if remain1 + remain2 == 0 then
set_state ("state3_3")
end
end
when 20017.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
if pc.count_item(50819) >= 50 and pc.count_item(51001) >= 100 then
pc.remove_item ( 50819,50)
pc.remove_item ( 51001,100)
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._440_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 160000))
pc.change_money( 160000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- 산뽕나무
pc.give_item2(50708, 10)
say()
set_state (state4_1)
else
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._450_say)
end
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._460_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._350_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20017)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20017))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._350_sendLetter)
say(gameforge.main_quest_flame_lv102._470_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin
if pc.count_item(50819) >= 50 and pc.count_item(51001) >= 100 then
pc.remove_item ( 50819,50)
pc.remove_item ( 51001,100)
target.delete("__TARGET__")
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._440_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2( 48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 160000))
pc.change_money( 160000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- 산뽕나무
pc.give_item2(50708, 10)
say()
set_state (state4_1)
else
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._450_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
-- 정화액 전달
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv102._480_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20017)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20017))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._480_sendLetter)
say(gameforge.main_quest_flame_lv102._490_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._500_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._510_say)
wait()--추가 대화
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._520_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._050_say)
wait()--추가 대화
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._530_say)
--다음 스테이트로
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv102._540_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv102._480_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv102._480_sendLetter)
say(gameforge.main_quest_flame_lv102._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20017.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
say_title(mob_name(20017))
say(gameforge.main_quest_flame_lv102._550_say)
end
when 20377.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._560_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv102._570_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv102._580_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 42584000))
pc.give_exp2(42584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 161000))
pc.change_money( 161000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(76011),1)) -- 육도
pc.give_item2_select(76011)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50707),5)) -- 만병초
pc.give_item2(50707, 5)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 103))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv103", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,694 +0,0 @@
quest main_quest_flame_lv103 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 103 begin
set_state (state1_1)
end
end
-- 적룡성을 향해
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._010_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._040_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._060_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._070_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20393)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20393))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._080_sayTitle)
say(gameforge.main_quest_flame_lv103._090_say)
--npc 타겟 안내문
--say_reward(locale.target_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._100_say)
end
when 20393.click begin
target.delete("__TARGET__")
say_title(mob_name(20393))
say(gameforge.main_quest_flame_lv103._110_say)
--다음 스테이트로
set_state (state1_3)
end
when leave begin
--q.done()
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._010_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._130_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._150_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._170_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 42554000))
pc.give_exp2( 42554000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 163000))
pc.change_money( 163000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 점진적 격파
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._180_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._190_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._200_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._210_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._230_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state2_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._240_sayTitle)
say(gameforge.main_quest_flame_lv103._250_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,"적룡성 마물", 1000 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._270_say)
end
when kill with pc.get_map_index() >= 351 * 10000 and pc.get_map_index() < (351 + 1) *10000 begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state2_2()
end
function kill_count_state2_2()
local total_remain = 0
local remain1 = 1000 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state2_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._180_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._290_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 53784000))
pc.give_exp2(53784000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 164000))
pc.change_money(164000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70024),1)) -- 축복의 구슬
pc.give_item2(70024, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30039),3)) -- 헝겊조각
pc.give_item2(30039, 3)
say()
--다음 스테이트로
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- 적룡성의 골칫거리
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._300_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._310_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--다음 스테이트로
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._330_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state3_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._340_sayTitle)
say(gameforge.main_quest_flame_lv103._350_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
local total_remain = 0
local remain1 = 50 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 50 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 50 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 50 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 50 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6007), remain3,mob_name(6008), remain4))
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6009), remain5))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._360_say)
end
when 6005.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6006.kill begin
local kill_count = pc.getqf("kill_count_2")
pc.setqf("kill_count_2", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6007.kill begin
local kill_count = pc.getqf("kill_count_3")
pc.setqf("kill_count_3", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6008.kill begin
local kill_count = pc.getqf("kill_count_4")
pc.setqf("kill_count_4", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
when 6009.kill begin
local kill_count = pc.getqf("kill_count_5")
pc.setqf("kill_count_5", kill_count+1)
main_quest_flame_lv103.kill_count_state3_2()
end
function kill_count_state3_2()
local total_remain = 0
local remain1 = 50 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 50 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 50 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 50 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 50 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
total_remain = total_remain + remain5
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state3_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._300_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._300_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._380_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 54491000))
pc.give_exp2(54491000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 166000))
pc.change_money(166000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1)) -- 경험의 반지
pc.give_item2_select(72001)
item.set_socket(2, 60)
say()
--다음 스테이트로
set_state (state4_1)
end
when leave begin
--q.done()
end
end
-- 야마천 토벌1-1
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._390_sendLetter)
say(gameforge.main_quest_flame_lv103._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._400_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--다음 스테이트로
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._080_sayTitle)
say(gameforge.main_quest_flame_lv103._420_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._430_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._440_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv103._460_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv103._220_say)
--다음 스테이트로
set_state (state4_3)
end
when leave begin
--q.done()
end
end
state state4_3 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._480_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv103.kill_count_state4_3()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._490_sayTitle)
say(gameforge.main_quest_flame_lv103._500_say)
--남은 처치 수 안내문
say(gameforge.main_quest_flame_lv103._510_say)
say(string.format(gameforge.main_quest_lv90._1190_say,mob_name(8057), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv103._260_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._520_say)
end
when 8057.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv103.kill_count_state4_3()
end
function kill_count_state4_3()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state4_4")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
--q.done()
end
end
state state4_4 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv103._530_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv103._390_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv103._390_sendLetter)
say(gameforge.main_quest_flame_lv103._120_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv103._390_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv103._540_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 49586000))
pc.give_exp2(49586000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 167000))
pc.change_money(167000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31078),1)) -- 정화액 -- 수정
pc.give_item2(31078, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2)) -- 사귀의 유품
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1)) -- 도둑의 장갑
pc.give_item2_select(70043)
item.set_socket(2, 60)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 104))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv104", "state0")
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,738 +0,0 @@
quest main_quest_flame_lv104 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 104 begin
set_state (state1_1)
end
end
-- 야마천 토벌 1-2
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._010_sendLetter)
say(gameforge.main_quest_flame_lv104._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._040_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._060_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
-- 파티원에 의해 야마천을 잡았을 때, 퀘스트가 클리어 되도록 하는 코드.
if party.is_party() then
local map_index = pc.get_map_index()
-- 적룡성에 입장했다는 것을 기록함.
if map_index >= 351 * 10000 and map_index < (351 + 1) *10000 then
pc.setqf("in_dungeon", 1)
else -- 적룡성으로 부터 나왔을때, 보스를 잡고 나왔으면 퀘스트를 클리어 해준다.
if pc.getqf("in_dungeon") == 1 then
if party.getf("flame_dungeon_boss_kill_count") == 1 then
set_state (state1_3)
end
pc.setqf("in_dungeon", 0)
end
end
end
main_quest_flame_lv104.kill_count()
end
when logout begin
if party.is_party() then
if party.getf("flame_dungeon_boss_kill_count") == 0 then
pc.setqf("in_dungeon", 0)
end
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._070_sayTitle)
say(gameforge.main_quest_flame_lv104._080_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6091), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv104._090_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._100_say)
end
when 31078.use begin -- 정화액
affect.add(apply.MAX_HP, 1000, 60 * 60)
affect.add(apply.DEF_GRADE_BONUS, 25, 60 * 60)
affect.add(apply.MELEE_MAGIC_ATTBONUS_PER, 10, 60 * 60)
pc.remove_item(31078,1)
end
when 6091.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv104.kill_count()
end
function kill_count()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("in_dungeon", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._120_notice,notice)
say_title(mob_name(6091))
say(gameforge.main_quest_flame_lv104._110_say)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._010_sendLetter)
say(gameforge.main_quest_flame_lv104._130_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._140_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._150_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._160_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 64491000))
pc.give_exp2(64491000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 168000))
pc.change_money(168000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026),1)) -- 현철
pc.give_item2(71026, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71025),2)) -- 야공석
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70102),5)) -- 선두
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50706),20)) -- 영지버섯
pc.give_item2(50706, 20)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 음모의 저지1-1
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._170_sendLetter)
say(gameforge.main_quest_flame_lv104._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._180_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._190_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._200_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._210_sayTitle)
say(gameforge.main_quest_flame_lv104._220_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv104._230_say)
end
when 20380.chat.gameforge.main_quest_flame_lv104._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._240_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._250_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._260_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._270_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--다음 스테이트로
set_state (state2_3)
end
when leave begin
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._170_sendLetter)
--아이템 지급 설정
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv104.item_count_state2_3()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._290_say)
--남은 아이템 안내문
say(gameforge.main_quest_lv97._670_counterName)
local item_count = pc.getqf("item_count_1")
local remain = 5 - item_count
if remain < 0 then
remain = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31082), remain))
say_reward(gameforge.main_quest_flame_lv104._090_sayReward)
main_quest_flame_lv104.item_count_state2_3()
end
when 20380.chat.gameforge.main_quest_flame_lv104._170_sendLetter with pc.count_item(31082) > 0 begin
pc.remove_item(31082, 1)
-- 납품 성공
if number(1, 100) <= 90 then
local item_count = pc.getqf("item_count_1")
item_count = item_count + 1
pc.setqf("item_count_1", item_count)
if item_count < 5 then -- 아직 부족함.
say_title(mob_name(20380))
say(string.format(gameforge.main_quest_flame_lv104._300_say, 5 - item_count))
else -- 납품 갯수를 모두 채움.
pc.remove_item(31082, pc.count_item(31082))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._310_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 57583000))
pc.give_exp2(57583000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 170000))
pc.change_money( 170000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72723),1)) -- 화룡의 축복(소)
pc.give_item2(72723, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050),1)) -- 선왕의 증표
pc.give_item2(70050, 1)
say()
--다음 스테이트로
set_state (state3_1)
end
else -- 납품 실패
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._320_say)
end
main_quest_flame_lv104.item_count_state2_3()
end
when 6005.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6006.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6007.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6008.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
when 6009.kill begin
if number(1,50) == 1 then
pc.give_item2(31082, 1)
main_quest_flame_lv104.item_count_state2_3()
end
end
function item_count_state2_3()
local item_count = pc.getqf("item_count_1")
local remain = 5 - item_count
if remain <= 0 then
remain = 0
end
q.set_counter_value(remain)
end
when leave begin
pc.setqf("item_count_1", 0)
--q.done()
end
end
-- 음모의 저지1-2
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._330_sendLetter)
say(gameforge.main_quest_flame_lv104._340_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._350_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._360_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--다음 스테이트로
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._380_say)
say(gameforge.main_quest_lv97._670_counterName)
local remain1 = 100 - pc.count_item(50814)
if remain1 < 0 then
remain1 = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(50814) ,remain1))
say()
q.set_counter_value(remain1)
if remain1 == 0 then
set_state (state3_3)
end
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
--아이템 제거
if pc.count_item(50814) >= 100 then
pc.remove_item(50814, 100)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._390_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._400_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._410_say)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 46581000))
pc.give_exp2(46581000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 171000))
pc.change_money( 171000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30045),2)) -- 전갈의 독침
pc.give_item2(30045, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50817),10)) -- 진활심액
pc.give_item2(50817, 10)
say()
--다음 스테이트로
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._420_say)
end
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._430_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._330_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._280_notice)
say(gameforge.main_quest_flame_lv104._440_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._330_sendLetter begin
target.delete("__TARGET__")
--아이템 제거
if pc.count_item(50814) >= 100 then
pc.remove_item(50814, 100)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._390_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._400_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._410_say)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 46581000))
pc.give_exp2(46581000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 171000))
pc.change_money( 171000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30045),2)) -- 전갈의 독침
pc.give_item2(30045, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50817),10)) -- 진활심액
pc.give_item2(50817, 10)
say()
--다음 스테이트로
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._420_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
-- 음모의 저지1-3
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._340_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._460_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._470_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv104._050_say)
--다음 스테이트로
set_state (state4_2)
end
when leave begin
--q.done()
end
end
state state4_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._480_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--아이템 지급 설정
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
main_quest_flame_lv104.item_count_state4_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._490_say)
--남은 아이템 안내문
say(gameforge.main_quest_lv97._670_counterName)
local remain = 5 - pc.count_item(31024)
if remain < 0 then
remain = 0
end
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31024), remain))
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._500_say)
end
when 3291.kill begin
if number(1,1) == 1 then
pc.give_item2(31024, 1)
main_quest_flame_lv104.item_count_state4_2()
end
end
function item_count_state4_2()
if pc.count_item(31024) >= 5 then
set_state ("state4_3")
end
q.set_counter_value(5 - pc.count_item(31024))
end
when leave begin
--q.done()
end
end
state state4_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv104._520_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv104._450_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv104._450_sendLetter)
say(gameforge.main_quest_flame_lv104._440_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv104._450_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31024) < 5 then
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._500_say)
set_state (state4_2)
else
pc.remove_item(31024, 5)
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv104._510_say)
wait()
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 45580000))
pc.give_exp2( 45580000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 173000))
pc.change_money(173000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30015),2)) -- 사귀의 유품
pc.give_item2(30015, 2)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043),1)) -- 도둑의 장갑
pc.give_item2_select(70043)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31083),3)) -- 금제 주머니
pc.give_item2(31083, 3)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 105))
--다음 스테이트로
set_quest_state ("main_quest_flame_lv105", "state0")
set_state (__COMPLETE__)
end
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,541 +0,0 @@
quest main_quest_flame_lv105 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 105 begin
set_state (state1_1)
end
end
-- 격전의 시작
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._010_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31083, 3)
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._030_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._040_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._050_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._060_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._080_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
main_quest_flame_lv105.kill_count_state1_2()
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._090_sayTitle)
say(gameforge.main_quest_flame_lv105._100_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
local remain1 = 10 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 10 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 10 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 10 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
local remain5 = 10 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6005), remain1,mob_name(6006), remain2))
say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6007), remain3,mob_name(6008), remain4))
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6009), remain5))
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._120_say)
end
when 6005.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6006.kill begin
local kill_count = pc.getqf("kill_count_2")
pc.setqf("kill_count_2", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6007.kill begin
local kill_count = pc.getqf("kill_count_3")
pc.setqf("kill_count_3", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6008.kill begin
local kill_count = pc.getqf("kill_count_4")
pc.setqf("kill_count_4", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
when 6009.kill begin
local kill_count = pc.getqf("kill_count_5")
pc.setqf("kill_count_5", kill_count+1)
main_quest_flame_lv105.kill_count_state1_2()
end
function kill_count_state1_2()
local total_remain = 0
local remain1 = 10 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
local remain2 = 10 - pc.getqf("kill_count_2")
if remain2 < 0 then
remain2 = 0
end
total_remain = total_remain + remain2
local remain3 = 10 - pc.getqf("kill_count_3")
if remain3 < 0 then
remain3 = 0
end
total_remain = total_remain + remain3
local remain4 = 10 - pc.getqf("kill_count_4")
if remain4 < 0 then
remain4 = 0
end
total_remain = total_remain + remain4
local remain5 = 10 - pc.getqf("kill_count_5")
if remain5 < 0 then
remain5 = 0
end
total_remain = total_remain + remain5
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state1_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("kill_count_2", 0)
pc.setqf("kill_count_3", 0)
pc.setqf("kill_count_4", 0)
pc.setqf("kill_count_5", 0)
--q.done()
end
end
state state1_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._010_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._150_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(48584000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 174000))
pc.change_money(174000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30033),3)) -- 깨진 사기그릇
pc.give_item2(30033, 3)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 은원
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._160_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._170_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._180_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin
when enter begin
--몬스터 처치 수 설정
pc.setqf("kill_count_1", 0)
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._190_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--남은 처치 수 안내문
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
-- 파티원에 의해 야마천을 잡았을 때, 퀘스트가 클리어 되도록 하는 코드.
if party.is_party() then
local map_index = pc.get_map_index()
-- 적룡성에 입장했다는 것을 기록함.
if map_index >= 351 * 10000 and map_index < (351 + 1) *10000 then
pc.setqf("in_dungeon", 1)
else -- 적룡성으로 부터 나왔을때, 보스를 잡고 나왔으면 퀘스트를 클리어 해준다.
if pc.getqf("in_dungeon") == 1 then
if party.getf("flame_dungeon_boss_kill_count") == 1 then
set_state (state2_3)
end
pc.setqf("in_dungeon", 0)
end
end
end
main_quest_flame_lv105.kill_count_state2_2()
end
when logout begin
if party.is_party() then
if party.getf("flame_dungeon_boss_kill_count") == 0 then
pc.setqf("in_dungeon", 0)
end
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._200_sayTitle)
say(gameforge.main_quest_flame_lv105._210_say)
--남은 처치 수 안내문
say(gameforge.main_quest_lv98._680_counterName)
say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6091), 1 - pc.getqf("kill_count_1")))
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._220_say)
end
when 6091.kill begin
local kill_count = pc.getqf("kill_count_1")
pc.setqf("kill_count_1", kill_count+1)
main_quest_flame_lv105.kill_count_state2_2()
end
function kill_count_state2_2()
local total_remain = 0
local remain1 = 1 - pc.getqf("kill_count_1")
if remain1 < 0 then
remain1 = 0
end
total_remain = total_remain + remain1
q.set_counter_value(total_remain)
if total_remain == 0 then
set_state ("state2_3")
end
end
when leave begin
pc.setqf("kill_count_1", 0)
pc.setqf("in_dungeon", 0)
--q.done()
end
end
state state2_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._230_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._160_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._160_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._240_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 60583000))
pc.give_exp2(60583000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 175000))
pc.change_money(175000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1))
pc.give_item2(71095, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026),1)) -- 현철
pc.give_item2(71026, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71025),2)) -- 야공석
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1)) -- 경험의 반지
pc.give_item2_select(72001)
item.set_socket(2, 60)
say()
--다음 스테이트로
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- 적룡의 금제
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._250_sendLetter)
say(gameforge.main_quest_flame_lv105._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._260_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._270_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._070_say)
--다음 스테이트로
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31083),1))
pc.give_item2(31083, 1)
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._280_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
q.set_counter_name(gameforge.main_quest_flame_lv105._290_say)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._300_sayTitle)
say(gameforge.main_quest_flame_lv105._310_say)
say_title(gameforge.main_quest_flame_lv105._290_say)
say(gameforge.main_quest_flame_lv105._320_say)
say()
say_reward(gameforge.main_quest_flame_lv105._110_sayReward)
end
when 20390.take with item.vnum == 31083 begin
item.remove()
say_title(gameforge.main_quest_flame_lv105._330_sayTitle)
say(gameforge.main_quest_flame_lv105._340_say)
--다음 스테이트로
set_state (state3_3)
end
when leave begin
--q.done()
end
end
state state3_3 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv105._350_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv105._250_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv105._250_sendLetter)
say(gameforge.main_quest_flame_lv105._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._360_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv105._370_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv105._380_say)
--보상
wait()--reward
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000))
pc.give_exp2(177000)
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 177000))
pc.change_money(177000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024),1)) -- 행운의 금화
pc.give_item2_select(72024)
item.set_socket(2, 180)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094),1)) -- 선인의 교훈
pc.give_item2(71094, 1)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71001),5)) -- 주안술서
pc.give_item2(71001, 5)
say()
--다음 스테이트로
set_state (__COMPLETE__)
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,483 +0,0 @@
quest main_quest_flame_lv99 begin
state start begin
when login or levelup or enter with pc.get_level() >= 99 begin
if pc.getf("main_quest_lv98", "__status")==main_quest_lv98.__COMPLETE__ then
set_state ( state0 )
end
end
end
state state0 begin
when login or levelup or enter with pc.level >= 99 begin
set_state (state1_1)
end
end
-- 다시 시작되는 추적 : 임무받기
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._010_sendLetter)
say(gameforge.main_quest_flame_lv99._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._030_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._050_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._060_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._070_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._080_say)
--다음 스테이트로
set_state (state1_2)
end
when leave begin
--q.done()
end
end
state state1_2 begin -- 다시 시작되는 추적 : 정찰하기
when enter begin
-- notice 설정
notice_multiline(string.format(gameforge.main_quest_flame_lv99._090_notice, 127, 928),notice)
end
when letter begin
target.pos ("__TARGET__",127,928,62,"")
send_letter (gameforge.main_quest_flame_lv99._010_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._100_sayTitle)
say(gameforge.main_quest_flame_lv99._110_say)
--npc 타겟 안내문
--say_reward(locale.target_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._120_say)
end
-- 도착 --
when __TARGET__.target.arrive begin
target.delete("__TARGET__")
set_state (state1_3)
end
when leave begin
--q.done()
end
end
state state1_3 begin -- 다시 시작되는 추적 : 완료 & 보상받기
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv99._130_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._010_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._010_sendLetter)
say(gameforge.main_quest_flame_lv99._140_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._150_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._160_say)
wait()--추가 대화
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._170_say)
--보상
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33003000))
pc.give_exp2( 33003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 145000))
pc.change_money( 145000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50705),10))
pc.give_item2(50705, 10)
say()
--다음 스테이트로
set_state (state2_1)
end
when leave begin
--q.done()
end
end
-- 조사1-1 : 임무받기
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._020_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20377.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_flame_lv99._190_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._070_say)
--다음 스테이트로
set_state (state2_2)
end
when leave begin
--q.done()
end
end
state state2_2 begin -- 조사1-1 : 학자에게 찾아가는 내용..
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._210_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._240_say)
--다음 스테이트로
set_state (state2_3)
end
when leave begin
--q.done()
end
end
state state2_3 begin -- 조사1-1 : 몬스터 잡기
when enter begin
notice_multiline(gameforge.main_quest_flame_lv99._250_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._260_sayTitle)
say(gameforge.main_quest_flame_lv99._270_say)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._280_say)
end
when 2202.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2203.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2204.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 2205.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
-- 이 아래는 보험용으로 같은 이름의 vnum이 다른 몬스터를 잡았을때도 퀘스트가 클리어 되도록 하였다.
when 7020.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7021.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7022.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when 7023.kill begin
if number(1,100) == 1 then
set_state (state2_4)
end
end
when leave begin
--q.done()
end
end
-- 조사1-1 : 학자에게 돌아가기.
state state2_4 begin
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv99._290_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._180_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._180_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._300_say)
--보상
wait()--reward
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 37003000))
pc.give_exp2(37003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 146000))
pc.change_money(146000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1))
pc.give_item2_select(72001)
item.set_socket(2, 60)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30046),1))
pc.give_item2(30046, 1)
say()
--다음 스테이트로
set_state (state3_1)
end
when leave begin
--q.done()
end
end
-- 조사1-2 : 임무받기
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._310_sendLetter)
say(gameforge.main_quest_flame_lv99._320_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._330_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._340_say)
wait()--추가 대화
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._350_say)
wait()--추가 대화
say_title(pc.getname())
say(gameforge.main_quest_flame_lv99._360_say)
--다음 스테이트로
set_state (state3_2)
end
when leave begin
--q.done()
end
end
state state3_2 begin -- 조사1-2
when enter begin
notice_multiline(gameforge.main_quest_flame_lv99._370_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
--npc 타겟
local v = find_npc_by_vnum(20391)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20391))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._380_sayTitle)
say(gameforge.main_quest_flame_lv99._390_say)
say(gameforge.main_quest_lv97._670_counterName)
say(string.format(gameforge.main_quest_lv90._1190_say,item_name(31076), 1 - pc.count_item(31076)))
--say_reward(locale.target_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._400_say)
end
-- 태양초 NPC를 클릭하여 태양초 아이템을 얻는 부분.
when 20391.click begin
target.delete("__TARGET__")
pc.give_item2(31076, 1)
set_state (state3_3)
end
when leave begin
--q.done()
end
end
state state3_3 begin -- 조사1-2
when enter begin
-- notice 설정
notice_multiline(gameforge.main_quest_flame_lv99._410_notice,notice)
end
when letter begin
send_letter(gameforge.main_quest_flame_lv99._310_sendLetter)
--npc 타겟
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_flame_lv99._310_sendLetter)
say(gameforge.main_quest_flame_lv99._200_say)
--npc 타겟 안내문
--say_reward(locale.target_npc_info)
end
when 20380.chat.gameforge.main_quest_flame_lv99._310_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31076) >= 1 then
pc.remove_item ( 31076, pc.count_item(31076))
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._420_say)
--보상
wait()--reward
say_title(gameforge.main_quest_lv27._120_sayTitle)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 35003000))
pc.give_exp2(35003000)
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 147000))
pc.change_money(147000)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30021),1))
pc.give_item2(30021, 1)
say()
say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 100))
--다음 스테이트로
set_state (__COMPLETE__)
set_quest_state ("main_quest_flame_lv100", "state0")
else
say_title(mob_name(20380))
say(gameforge.main_quest_flame_lv99._400_say)
set_state (state3_2)
end
end
when leave begin
--q.done()
end
end
state __COMPLETE__ begin
when enter begin
--q.done()
end
end
end

View File

@ -1,484 +0,0 @@
quest main_quest_lv60 begin
state start begin
when login or levelup or enter with pc.get_level() >= 60 begin
if pc.getf("main_quest_lv55", "__status")==main_quest_lv55.__COMPLETE__ then
set_state ( quest1_begin )
end
end
end
state run begin
when login or levelup or enter with pc.get_level() >= 60 begin
set_state ( quest1_begin )
end
end
state quest1_begin begin
when letter begin --퀘스트편지1
send_letter(gameforge.main_quest_lv60._10_sendLetter)
-- 을두지를 가리킨다.
local vid_20011 = find_npc_by_vnum(20011)
if 0 != vid_20011 then
target.vid("__TARGET__", vid_20011, mob_name(20011))
end
end
when button or info begin -- 퀘스트편지1 내용
say_title(gameforge.main_quest_lv60._10_sendLetter)
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._20_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._30_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv60._40_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._50_say)
say("")
set_state ( quest2_begin )
end
end
state quest2_begin begin
-----------퀘스트편지2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._70_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._80_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._90_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv60._100_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._110_say)
set_state (quest2_ongoing)
end
end
state quest2_ongoing begin --을두지와 대화하고 탁본을 받아오라는 미션을 받았다.
-----------퀘스트편지2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- 흑암국의 고대 비석을 가리킨다. (지금은 마을 npc를 가리킨다.)
local v = find_npc_by_vnum(20371)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20371))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._120_say)
say("")
end
--을두지를 선택하면 해당 퀘스트에 관련된 대화를 나눌 수 있다.
when 20011.gameforge.main_quest_lv60._60_sendLetter begin
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._130_say)
say("")
end
--흑암국의 고대 비석을 누르면.
when 20371.click begin
target.delete("__TARGET__")
say_reward(gameforge.main_quest_lv60._140_sayReward)
pc.give_item2 ( 31001 )
say("")
set_state (quest2_end)
end
end
--고대 비석의 탁본을 얻었다.
state quest2_end begin
-----------퀘스트편지2------------
when letter begin
send_letter(gameforge.main_quest_lv60._60_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._60_sendLetter)
say(gameforge.main_quest_lv60._150_say)
say("")
end
when __TARGET__.target.click begin
pc.remove_item ( 31001, 1 )
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._160_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._170_say)
say("")
wait()
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._180_say)
say("")
wait()
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 980000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 175000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71001).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50721).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50725).." ".."10"..locale.count_postfix))
say("")
-- 보상 지급 --
-- 이곳에 보상 지급을 구현한다.
pc.give_exp2(980000)
pc.change_money(175000)
pc.give_item2(71001, 10) -- 주안술서
pc.give_item2(50721, 10) -- 복숭아꽃
pc.give_item2(50725, 10) -- 석창포
set_state (quest3_begin)
end
end
state quest3_begin begin
-------퀘스트편지3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._240_say)
say("")
set_state (quest3_ongoing1)
end
end
state quest3_ongoing1 begin
-------퀘스트편지3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- 흑적귀목의 위치를 표시한다.--
--------------------------------
--------------------------------
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
--을두지를 선택하면 해당 퀘스트에 관련된 대화를 나눌 수 있다.
when 20011.chat.gameforge.main_quest_lv60._220_sendLetter begin
say_title(mob_name(20011))
say(gameforge.main_quest_lv60._260_say)
say("")
end
--흑적귀목을 잡았을때 1000분의 1 확률로 퀘스트 조건을 만족시켜 준다.
when 2305.kill begin
if number (1,100) == 1 then
pc.give_item2 (31002, 1 )
say_reward(gameforge.main_quest_lv60._270_sayReward)
say("")
--3.진행
set_state (quest3_end1)
end
end
end
-- 고대문서를 하나 얻었다. 을두지에게 가져다줘야한다.
state quest3_end1 begin
-------퀘스트편지3---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
end
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._280_say)
say("")
wait()
--@@@@@@@@@버그@@@@@@@@@@--
--1. 다음의 내용이 뜨지 않는다.
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
pc.remove_item (31002, 1 )
say(gameforge.main_quest_lv60._290_say)
say("")
set_state (quest3_ongoing2)
end
end
state quest3_ongoing2 begin
--이 상태에 처음 들어오게 되면 '남은 고대의 문서' 퀘스트 플래그를 생성한다.
-- 초기값은 9로 시작해서 몬스터를 잡을때마다 1씩 줄여 0까지 간다.
-- 0이 되면 퀘스트 스테이트를 변화시킨다.
when enter begin
pc.setqf("remain_item",9)
end
--*************************--
-------퀘스트편지3_1---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- 흑적귀목의 위치를 표시한다.--
--------------------------------
--------------------------------
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
q.set_counter(gameforge.main_quest_lv60._250_counter, pc.getqf("remain_item"))
end
-----------------------------
--*************************--
--흑적귀목을 잡았을때 1000분의 1 확률로 남은 고대 문서 수를 줄여준다.
when 2305.kill begin
if number (1,100) == 1 then
local remain_item_prev = pc.getqf("remain_item")
pc.setqf("remain_item",remain_item_prev-1)
pc.give_item2 (31002, 1 )
notice(string.format(gameforge.main_quest_lv60._300_say,pc.getqf("remain_item")))
-- 모든 문서를 다 얻었으면 다음 퀘스트로 넘어간다.
if pc.getqf("remain_item")==0 then
-- 흑적귀목의 위치 표시를 없애준다 --
-------------------------------------
-------------------------------------
set_state (quest3_end2)
end
end
end
end
state quest3_end2 begin
--*************************--
-------퀘스트편지3_1---------
when letter begin
send_letter(gameforge.main_quest_lv60._220_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._220_sendLetter)
say(gameforge.main_quest_lv60._230_say)
say("")
q.set_counter(gameforge.main_quest_lv60._250_counter, pc.getqf("remain_item"))
end
-----------------------------
--*************************--
when __TARGET__.target.click begin
target.delete("__TARGET__")
pc.remove_item (31002, pc.count_item (31002) )
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._310_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._320_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._330_say)
say("")
wait()
say_title(locale.reward)
----"12345678901234567890123456789012345678901234567890"|
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 3300000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094).." ".."3"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30056)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30025)))
say("")
-- 보상 지급 --
pc.give_exp2(3300000)
pc.give_item2(71094, 3) -- 선인의 교훈 * 3
pc.give_item2(30056) -- 거미줄
pc.give_item2(30025) -- 거미의 독주머니
set_state (quest4_begin)
end
end
state quest4_begin begin
--*************************--
-------퀘스트편지4-----------
when letter begin
send_letter(gameforge.main_quest_lv60._340_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.main_quest_lv60._340_sendLetter)
say(gameforge.main_quest_lv60._350_say)
say("")
end
-----------------------------
--*************************--
when __TARGET__.target.click begin
target.delete("__TARGET__")
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._360_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._370_say)
say("")
wait()
say_title(pc.getname())
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._380_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._390_say)
say("")
wait()
say_title(mob_name(20011))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.main_quest_lv60._400_say)
say("")
wait()
----"12345678901234567890123456789012345678901234567890"|
say_reward(gameforge.main_quest_lv60._410_sayReward)
say("")
--@@@ 버그 @@@--
--1. 퀘스트 편지가 새로 나타난다.
clear_letter()
set_quest_state ("main_quest_lv66", "state_0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,375 +0,0 @@
quest main_quest_lv66 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 66 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
send_letter (gameforge.main_quest_lv66._10_sendLetter)
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
end
when button or info begin
say_title (gameforge.main_quest_lv66._10_sendLetter)
say (gameforge.main_quest_lv66._20_say)
end
when 20011.chat.gameforge.main_quest_lv66._10_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._30_say)
end
when 1091.kill begin
-- target.delete("__TARGET__")
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._10_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._10_sendLetter)
say (gameforge.main_quest_lv66._40_say)
end
when 20011.chat.gameforge.main_quest_lv66._10_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._50_say)
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20011)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv66._60_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._60_sendLetter)
say(gameforge.main_quest_lv66._70_say)
end
when 20011.chat.gameforge.main_quest_lv66._60_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.main_quest_lv66._80_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._90_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._100_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._110_say)
wait()
say_title ( mob_name(20011))
say(gameforge.main_quest_lv66._120_say)
wait()
--say_title ("보상 :")
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 5800000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301).." ".."3"..locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30046)))
pc.give_exp2(5800000)
pc.give_item2(72301) -- 축복의 서 * 3
pc.give_item2(72301)
pc.give_item2(72301)
pc.give_item2(30046) -- 전갈의 꼬리
set_state (state_4)
end
end
state state_4 begin
when letter begin
local v = find_npc_by_vnum (pc_find_square_guard_vid())
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._130_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._130_sendLetter)
say (gameforge.main_quest_lv66._140_say)
end
when 11000.chat.gameforge.main_quest_lv66._130_sendLetter or 11002.chat.gameforge.main_quest_lv66._130_sendLetter or 11004.chat.gameforge.main_quest_lv66._130_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(11000))
say(gameforge.main_quest_lv66._150_say)
wait()
say_title(mob_name(11000))
say(gameforge.main_quest_lv66._160_say)
set_state (state_5)
end
end
state state_5 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv66._170_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv66._170_sendLetter)
say (gameforge.main_quest_lv66._140_say)
end
when 20369.chat.gameforge.main_quest_lv66._170_sendLetter begin
target.delete("__TARGET__")
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._200_say)
set_state (state_6)
end
end
state state_6 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._210_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._210_sendLetter)
say (gameforge.main_quest_lv66._220_say)
end
when 20369.chat.gameforge.main_quest_lv66._210_sendLetter begin
target.delete("__TARGET__")
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._230_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._240_say)
wait()
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._250_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._260_say)
wait()
say_title(gameforge.main_quest_lv66._190_sayTitle)
say(gameforge.main_quest_lv66._270_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._280_say)
wait()
say_title(mob_name(20369))
say(gameforge.main_quest_lv66._290_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._310_say)
set_state (state_7)
end
end
state state_7 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._320_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._320_sendLetter)
say (gameforge.main_quest_lv66._330_say)
end
when 20369.chat.gameforge.main_quest_lv66._320_sendLetter begin
target.delete("__TARGET__")
say_title( gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._340_say)
wait()
say_title( gameforge.main_quest_lv66._300_sayTitle)
say(string.format(gameforge.main_quest_lv66._350_say,item_name(30033)))
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv66._360_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._370_say)
set_state (state_8)
end
end
state state_8 begin
when enter begin
pc.setqf ("rgd_kill", 0)
pc.setqf ("state_8_start", get_global_time())
notice_multiline(string.format(gameforge.main_quest_lv66._380_notice, 30), notice)
timer("rgd_kill_timer", 30 * 60 / 2)
end
when letter begin
send_letter (gameforge.main_quest_lv66._390_sendLetter)
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
q.set_clock(locale.stash.enlarge_1_timer, t)
q.set_counter_name (mob_name (2313))
q.set_counter_value (200)
end
when button or info begin
say_title (gameforge.main_quest_lv66._390_sendLetter)
say (string.format(gameforge.main_quest_lv66._400_say, 200))
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
if t < 0 then
say(gameforge.main_quest_lv66._410_say)
else
say(string.format(gameforge.main_quest_lv66._420_say, t / 60))
end
end
when 2313.kill begin
if pc.getqf("rgd_kill") >= 200 - 1 then
pc.give_item2 (31003, 1)
pc.setqf ("rgd_kill", 0)
q.set_counter_value (0)
set_state (state_9)
else
pc.setqf ("rgd_kill", pc.getqf ("rgd_kill") + 1)
q.set_counter_value (200 - pc.getqf ("rgd_kill"))
end
end
when rgd_kill_timer.timer begin
local t = pc.getqf ("state_8_start") + 30 * 60 - get_global_time()
notice (string.format(gameforge.main_quest_lv66._420_say, t / 60))
end
end
state state_9 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._390_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._390_sendLetter)
say(gameforge.main_quest_lv66._430_say)
end
when 20369.chat.gameforge.main_quest_lv66._390_sendLetter begin
target.delete("__TARGET__")
pc.remove_item (31003, 1)
if (pc.getqf ("state_8_start") + 30 * 60 - get_global_time()) >= 0 then
q.done()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._440_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._450_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 2900000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30033)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50727).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50728).." ".."10"..locale.count_postfix))
pc.give_exp2(2900000)
pc.change_money(200000)
pc.give_item2(30033) -- 깨진 사기그릇
pc.give_item2(50727, 10) -- 만병초 10
pc.give_item2(50728, 10) -- 산뽕나무 10
else
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._460_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._470_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 2000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 100000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50727).." ".."10"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50728).." ".."10"..locale.count_postfix))
pc.give_exp2(2000000)
pc.change_money(100000)
pc.give_item2(50727, 10) -- 만병초 10
pc.give_item2(50728, 10) -- 산뽕나무 10
end
set_state (state_10)
end
end
state state_10 begin
when letter begin
local v = find_npc_by_vnum (20370)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._480_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._480_sendLetter)
say(gameforge.main_quest_lv66._490_say)
end
when 20370.chat.gameforge.main_quest_lv66._480_sendLetter begin
target.delete("__TARGET__")
say_title( mob_name(20370))
say(gameforge.main_quest_lv66._500_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._510_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._520_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._530_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._540_say)
wait()
say_title ( mob_name(20370))
say(gameforge.main_quest_lv66._550_say)
set_state (state_11)
end
end
state state_11 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv66._560_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv66._560_sendLetter)
say (gameforge.main_quest_lv66._570_say)
end
when 20369.chat.gameforge.main_quest_lv66._560_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._580_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv66._590_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._600_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._610_say)
wait()
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv66._620_say)
set_state (__COMPLETE__)
q.done()
set_quest_state ("main_quest_lv72", "state_0")
end
end
state __COMPLETE__ begin
end
end

View File

@ -1,220 +0,0 @@
quest main_quest_lv72 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 72 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._10_sendLetter)
say (gameforge.main_quest_lv72._20_say)
end
when 20369.chat.gameforge.main_quest_lv72._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._40_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._50_say)
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20372)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._60_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._60_sendLetter)
say (gameforge.main_quest_lv72._70_say)
end
when 20372.click begin
target.delete("__TARGET__")
say(gameforge.main_quest_lv72._80_say)
wait()
say_title(mob_name(20372))
say(gameforge.main_quest_lv72._90_say)
wait()
say_title(mob_name(20372))
say(gameforge.main_quest_lv72._100_say)
wait()
say(gameforge.main_quest_lv72._110_say)
pc.give_item2 (30160, 1)
set_state (report_discovery)
end
end
state report_discovery begin
when button or info begin
return
end
when 20369.chat.gameforge.main_quest_lv72._60_sendLetter begin
pc.remove_item (30160)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._120_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv72._130_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._140_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv72._150_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._160_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._170_say)
wait()
if number (1,2) == 1 then
drug = 30009
else
drug = 30083
end
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 3100000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70005)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(drug)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30039)))
pc.give_exp2(3100000)
pc.give_item2(70005) -- 경험의 반지
pc.give_item2(drug) -- 알수 없는 약 (+일 수도)
pc.give_item2(30039) -- 헝겊조각
set_state (state_4)
end
end
state state_4 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv72._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._180_sendLetter)
say(gameforge.main_quest_lv72._190_say)
end
when 20369.chat.gameforge.main_quest_lv72._180_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._200_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._210_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._220_say)
pc.setqf ("collect_beads", 0)
set_state (state_5)
end
end
state state_5 begin
when letter begin
send_letter(gameforge.main_quest_lv72._180_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv72._180_sendLetter)
say(gameforge.main_quest_lv72._190_say)
end
when 1105.kill or 1106.kill or 1107.kill begin
if number(1, 100) > 1 then
return
end
local n = pc.getqf ("pass_beads")
local i = pc.count_item (31005)
if n < 50 and pc.count_item (31005) < 50 - n then
notice_multiline(gameforge.main_quest_lv72._240_notice, notice)
notice_multiline(string.format(gameforge.main_quest_lv72._250_notice, 50 - n - 1), notice)
pc.give_item2 (31005, 1)
end
end
when 20369.chat.gameforge.main_quest_lv72._180_sendLetter with pc.count_item (31005) > 0 begin
local now = get_global_time()
local today = now - math.mod (now, 86400)
local can_report_num
if pc.getqf ("last_access_date") != today then
pc.setqf ("last_access_date", today)
pc.setqf ("blue_bead_todays_report_num", 1)
else
local reported_num = pc.getqf("blue_bead_todays_report_num")
if 10 - reported_num <= 0 then
say(gameforge.main_quest_lv72._260_say)
return
else
if not pc.is_gm() then
pc.setqf ("blue_bead_todays_report_num", reported_num + 1)
end
end
end
pc.remove_item (31005, 1)
local n = pc.getqf("pass_beads")
if number (1,100) > 60 then
say_title (mob_name(20369))
say(gameforge.main_quest_lv72._270_say)
return
elseif n < 50 -1 then
pc.setqf ("pass_beads", n + 1)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say (string.format(gameforge.main_quest_lv72._280_say, 50 - n - 1))
else
pc.setqf("pass_beads", 0)
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv72._290_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 20000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 225000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71035).." ".."3"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70043)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024)))
pc.give_exp2(20000000)
pc.change_money(225000)
pc.give_item2(71035)
pc.give_item2(71035)
pc.give_item2(71035)
pc.give_item2(70043)
pc.give_item2(72024)
wait()
say(gameforge.main_quest_lv72._300_say)
set_state (__COMPLETE__)
q.done()
set_quest_state ("main_quest_lv78", "state_0")
end
end
end
state __COMPLETE__ begin
end
end

View File

@ -1,228 +0,0 @@
quest main_quest_lv78 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 78 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv78._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv78._10_sendLetter)
say (gameforge.main_quest_lv78._20_say)
end
when 20369.chat.gameforge.main_quest_lv78._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._40_say)
set_state (make_red_bead)
end
end
state make_red_bead begin
when enter begin
pc.setqf ("first_make_time", 0)
end
when 2205.kill or 2204.kill or 2203.kill begin
if number(1, 500) == 1 then
pc.give_item2 (31007, 1)
end
end
when 20369.chat.gameforge.main_quest_lv78._10_sendLetter begin
if pc.count_item (31006) >= 20 then
say_title (mob_name(20369))
say(string.format(gameforge.main_quest_lv78._50_say, 20))
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 36000000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72725)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70024)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70004)))
pc.give_exp2(36000000)
pc.give_item2(72725) -- 수룡의 축복(대)
pc.give_item2(70024) -- 축복의 구슬
pc.give_item2(70004) -- 근면함의 훈장
pc.remove_item (31006, pc.count_item (31006))
set_state (state_2)
return
end
local t = get_global_time()
local today = t - math.mod (t, 86400)
if pc.getqf ("first_make_time") != today then
pc.setqf ("first_make_time", today)
pc.setqf ("make_count", 0)
end
if pc.count_item (90010) < 1 or pc.count_item (30019) < 1 or
pc.count_item (31007) < 1 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say (gameforge.main_quest_lv78._60_say)
return
end
local n = pc.getqf ("make_count")
if n >= 7 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._70_say)
return
else
pc.remove_item(90010, 1)
pc.remove_item(30019, 1)
pc.remove_item(31007, 1)
say_title(gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._80_say)
wait()
pc.setqf ("make_count", n + 1)
local n = number (1,100)
if n > 60 then
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._90_say)
wait()
elseif pc.count_item (31006) < 20 then
pc.give_item2 (31006, 1)
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._100_say)
say_item_vnum(31006)
wait ()
else
say_title (mob_name(20369))
say(string.format(gameforge.main_quest_lv78._50_say, 20))
wait()
say_title (locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 36000000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72725)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70024)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70004)))
pc.give_exp2(36000000)
pc.give_item2(72725) -- 수룡의 축복(대)
pc.give_item2(70024) -- 축복의 구슬
pc.give_item2(70004) -- 근면함의 훈장
pc.remove_item (31006, pc.count_item (31006))
set_state (state_2)
end
end
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv78._110_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv78._110_sendLetter)
say(gameforge.main_quest_lv78._120_say)
end
when 20369.chat.gameforge.main_quest_lv78._110_sendLetter with pc.count_item (31004) < 100 begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._130_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._140_say)
end
when 2315.kill or 2314.kill begin
if number (1, 300) == 1 then
pc.give_item2 (31004, 1)
local n = pc.count_item (31004)
if n < 100 then
notice (string.format(gameforge.main_quest_lv78._150_say, 100 - n))
else
notice_multiline(gameforge.main_quest_lv78._160_notice, notice)
end
end
end
when 20369.chat.gameforge.main_quest_lv78._110_sendLetter with pc.count_item (31004) >= 100 begin
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._170_say)
wait()
say_title ( pc.getname())
say(gameforge.main_quest_lv78._180_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._190_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv78._200_say)
wait()
say_title (locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48000000))
say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 230000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72729)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70035)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70003)))
pc.give_exp2(48000000)
pc.change_money(230000)
pc.give_item2(72729) -- 화룡의 축복(대)
pc.give_item2(70035) -- 만년한철
pc.give_item2(70003) -- 육도
pc.remove_item (31004, pc.count_item (31004))
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20018)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv78._210_sendLetter)
end
when button or info begin
say_title (gameforge.main_quest_lv78._210_sendLetter)
say(gameforge.main_quest_lv78._220_say)
end
when 20018.chat.gameforge.main_quest_lv78._210_sendLetter begin
target.delete("__TARGET__")
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._230_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._240_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._250_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._260_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._270_say)
wait()
say_title ( pc.get_name ())
say(gameforge.main_quest_lv78._280_say)
wait()
say_title ( mob_name(20018))
say(gameforge.main_quest_lv78._290_say)
wait()
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30319).." ".."2"..locale.count_postfix))
pc.give_item2(30319,2)
wait()
say(gameforge.main_quest_lv78._300_say)
set_state (__COMPLETE__)
q.done()
set_quest_state("main_quest_lv84", "state_0")
end
end
state __COMPLETE__ begin
end
end

View File

@ -1,151 +0,0 @@
quest main_quest_lv84 begin
state start begin
end
state state_0 begin
when login or levelup or enter with pc.level >= 84 begin
set_state (state_1)
end
end
state state_1 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter (gameforge.main_quest_lv84._10_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._10_sendLetter)
say(gameforge.main_quest_lv84._20_say)
end
when 20369.chat.gameforge.main_quest_lv84._10_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._30_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._40_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._50_say)
pc.give_item2(31008)
set_state (state_4)
end
end
state state_4 begin
when letter begin
send_letter(gameforge.main_quest_lv84._60_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._60_sendLetter)
say(gameforge.main_quest_lv84._70_say)
end
when 31008.use with pc.get_map_index() >= 2160000 and pc.get_map_index() < 2170000 begin --and pc.getf("devilcatacomb_zone", "level") == 5 begin
party.give_buff(303, POINT_ATT_SPEED, 20, 13, 1800, 0, true, true)
party.give_buff(303, POINT_MOV_SPEED, 20, 12, 1800, 0, true, true)
party.give_buff(303, POINT_CASTING_SPEED, 20, 0, 1800, 0, true, true)
party.give_buff(303, POINT_ATTBONUS_MONSTER, 30, 0, 1800, 0, true, true)
party.give_buff(303, POINT_MAX_HP_PCT, 10, 0, 1800, 0, true, true)
party.give_buff(303, POINT_MAX_SP_PCT, 10, 0, 1800, 0, true, true)
say(gameforge.main_quest_lv84._80_say)
end
when 2591.kill begin
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 63000000))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026).." ".."2"..locale.count_postfix))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70051)))
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050)))
pc.give_exp2(63000000)
pc.change_money(250000)
pc.give_item2(71026) -- 현철
pc.give_item2(71026) -- 현철
pc.give_item2(70051) -- 선왕의 장갑
pc.give_item2(70050) -- 선왕의 증표
set_state (state_2)
end
end
state state_2 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv84._90_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._90_sendLetter)
say (gameforge.main_quest_lv84._100_say)
end
when 20369.chat.gameforge.main_quest_lv84._90_sendLetter begin
target.delete("__TARGET__")
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._110_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._120_say)
end
when 2597.kill begin
say_reward(gameforge.main_quest_lv84._130_sayReward)
say(gameforge.main_quest_lv84._140_say)
set_state (state_3)
end
end
state state_3 begin
when letter begin
local v = find_npc_by_vnum (20369)
if v != 0 then
target.vid ("__TARGET__",v,"")
end
send_letter(gameforge.main_quest_lv84._150_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv84._150_sendLetter)
say (gameforge.main_quest_lv84._160_say)
end
when 20369.chat.gameforge.main_quest_lv84._150_sendLetter begin
target.delete("__TARGET__")
say_title (" ")
say(gameforge.main_quest_lv84._170_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._180_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._190_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._200_say)
wait()
say_title (gameforge.main_quest_lv66._300_sayTitle)
say(gameforge.main_quest_lv84._210_say)
wait()
say_title (locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 84000000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 250000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71025).." ".."2"..locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70038)))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71107)))
pc.give_exp2(84000000)
pc.change_money(250000)
pc.give_item2(71025) -- 야공석
pc.give_item2(71025) -- 야공석
pc.give_item2(70038) -- 용기의 망토
pc.give_item2(71107) -- 천도복숭아
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
end
end

File diff suppressed because it is too large Load Diff

View File

@ -1,768 +0,0 @@
quest main_quest_lv91 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 91 begin
set_state (state1_1)
end
end
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
-----------------<1> 초마단의 서신을 찾아라!1-1-----------------
state state1_1 begin
when letter begin
send_letter (gameforge.main_quest_lv91._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._010_sendLetter)
say(gameforge.main_quest_lv91._020_say)
end
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._050_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._060_say)
wait()
set_state (state1_2)
end
end
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._010_sendLetter)
--q.set_counter_name(locale.main_quest_lv91.remain_mob)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._070_sayTitle)
say(gameforge.main_quest_lv91._080_say)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
--say_title(gameforge.main_quest_lv91._760_say)
--local remain = 10 - pc.getqf("mob1_1_killed")
--if remain < 0 then
-- remain = 0
--end
--q.set_counter_value(remain)
--say_title(string.format(gameforge.main_quest_lv91._770_say,mob_name(3205),remain))
end
--[[
--클리어 전--
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._520_say)
end
--]]
when 3205.kill begin
local mob1_1_killed = pc.getqf("mob1_1_killed")
if mob1_1_killed < 10 then
pc.setqf("mob1_1_killed", mob1_1_killed + 1)
local remain = 10 - pc.getqf("mob1_1_killed")
if remain < 0 then
remain = 0
end
--q.set_counter_value(remain)
if remain == 0 then
say_title(mob_name(3205))
say(gameforge.main_quest_lv91._100_say)
notice_multiline(gameforge.main_quest_lv91._090_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._090_2_notice,notice)
set_state (state1_3)
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
--q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv91._010_sendLetter)
say(gameforge.main_quest_lv91._110_say)
end
when 20378.chat.gameforge.main_quest_lv91._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._120_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._130_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._150_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 18803050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30051),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50814),10,locale.count_postfix))
say("")
pc.give_exp2(18803050)
--pc.change_money(0)
pc.give_item2(30051, 1)
pc.give_item2(50814, 10)
set_state (state2_1)
end
end
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
-----------------<2> 초마단의 서신을 탈환하라!-----------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._160_sendLetter)
say(gameforge.main_quest_lv91._170_say)
end
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._180_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._190_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._200_sayTitle)
say(gameforge.main_quest_lv91._210_say)
say_item_vnum(31075)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- say()
-- say()
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._220_say)
end
when 3291.kill begin
if number(1,500) == 1 then
if pc.count_item(31075) < 1 then
notice_multiline(gameforge.main_quest_lv91._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._230_2_notice,notice)
pc.give_item2(31075, 1)
set_state (state2_3)
end
end
end
end
-- 퀘스트 완료
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._160_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._160_sendLetter)
say(gameforge.main_quest_lv91._240_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3291.kill begin
if number(1,500) == 1 then
if pc.count_item(31075) < 1 then
notice_multiline(gameforge.main_quest_lv91._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._230_2_notice,notice)
pc.give_item2(31075, 1)
end
end
end
when 20378.chat.gameforge.main_quest_lv91._160_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31075) >= 1 then
pc.remove_item ( 31075, pc.count_item(31075))
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._250_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._260_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 24873650))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50722),20,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72016),1,locale.count_postfix))
say("")
pc.give_exp2(24873650)
--pc.change_money(0)
pc.give_item2(50722, 20)
pc.give_item2_select(72016)
item.set_socket(2, 120)
set_state (state3_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv91._220_say)
set_state (state2_2)
end
end
end
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
-----------------<3> 두번째 서신 판독1-1-----------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._270_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._270_sendLetter)
say(gameforge.main_quest_lv91._280_say)
end
when 20380.chat.gameforge.main_quest_lv91._270_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._290_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._300_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._310_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._320_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._330_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._340_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._270_sendLetter)
q.set_counter_name(gameforge.main_quest_lv90._1180_say)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._350_sayTitle)
say(gameforge.main_quest_lv91._360_say)
say_item_vnum(31018)
say(gameforge.main_quest_lv90._1180_say)
local remain = 10 - pc.getqf("item3_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv90._1190_say,item_name(31018),remain))
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20380.chat.gameforge.main_quest_lv91._270_sendLetter with pc.count_item(31018) > 0 begin
if pc.count_item(31018) > 0 then
pc.remove_item(31018, 1)
if number(1, 100 ) <= 70 then -- 납품 성공
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._380_say)
pc.setqf("item3_1_checked", pc.getqf("item3_1_checked") + 1)
local remain = 10 - pc.getqf("item3_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("item3_1_checked") >= 10 then -- 납품 갯수 달성
pc.remove_item(31018, pc.count_item(31018))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._390_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 25805450))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 214000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30009),2,locale.count_postfix))
say("")
pc.give_exp2(25805450)
pc.change_money(214000)
pc.give_item2(30009, 2)
set_state (state4_1)
q.set_counter_name("")
else -- 납품 갯수 미달
say(string.format(gameforge.main_quest_lv91._400_say,remain))
end
else -- 납품 실패
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._370_say)
end
end
end
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill begin
if number(1,300) == 1 then
pc.give_item2(31018, 1)
notice_multiline(gameforge.main_quest_lv91._410_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._410_2_notice,notice)
end
end
end
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
-----------------<4> 두번째 서신 판독1-2-----------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._420_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._420_sendLetter)
say(gameforge.main_quest_lv91._430_say)
end
when 20380.chat.gameforge.main_quest_lv91._420_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._450_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._470_say)
set_state (state4_2)
end
end
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._420_sendLetter)
q.set_counter_name(gameforge.main_quest_lv90._1180_say)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._480_sayTitle)
say(gameforge.main_quest_lv91._490_say)
say_item_vnum(31019)
say(gameforge.main_quest_lv90._1180_say)
local remain = 3 - pc.getqf("item4_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv90._1190_say,item_name(31019),remain))
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20380.chat.gameforge.main_quest_lv91._420_sendLetter with pc.count_item(31019) > 0 begin
if pc.count_item(31019) > 0 then
local cur_t = get_global_time() - 60 * 60 * 9
local today_date = cur_t - math.mod(cur_t,86400)
local last_checked_date = pc.getqf("last_checked_date")
if today_date ~= last_checked_date then
pc.setqf("last_checked_date", today_date)
pc.setqf("today_item4_1_checked",0)
end
local today_item4_1_checked = pc.getqf("today_item4_1_checked")
if today_item4_1_checked >= 1 then --1일 납품 갯수 초과
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._500_say)
else -- 납품 시도.
pc.remove_item(31019, 1)
if number(1, 100 ) <= 70 then -- 납품 성공
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._510_say)
pc.setqf("item4_1_checked", pc.getqf("item4_1_checked") + 1)
pc.setqf("today_item4_1_checked", pc.getqf("today_item4_1_checked") + 1)
local remain = 3 - pc.getqf("item4_1_checked")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("item4_1_checked") >= 3 then -- 납품 갯수 달성
pc.remove_item(31019, pc.count_item(31019))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._520_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 225000))
say("")
pc.give_exp2(27874000)
pc.change_money(225000)
set_state (state5_1)
q.set_counter_name("")
else -- 납품 갯수 미달
say(string.format(gameforge.main_quest_lv91._530_say,remain))
end
else -- 납품 실패
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv91._540_say)
end
end
end
end
when 3690.kill or 3691.kill begin
if number(1,300) == 1 then
pc.give_item2(31019, 1)
notice_multiline(gameforge.main_quest_lv91._550_1_notice,notice)
notice_multiline(gameforge.main_quest_lv91._550_2_notice,notice)
end
end
end
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
-----------------<5> 학자의 병환-----------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._560_sendLetter)
say(gameforge.main_quest_lv91._570_say)
end
when 20378.chat.gameforge.main_quest_lv91._560_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._580_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._590_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._600_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv91._610_say)
set_state (state5_2)
end
end
state state5_2 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv91._620_sayTitle)
say(gameforge.main_quest_lv91._630_say)
say_item_vnum(31020)
-- say()
-- say_reward(locale.main_quest_lv91.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20382.click begin
if pc.count_item(31020) < 1 then
pc.give_item2(31020, 1)
notice_multiline(gameforge.main_quest_lv91._640_1_notice,notice)
set_state (state5_3)
end
end
when 20380.chat.gameforge.main_quest_lv91._560_sendLetter with pc.count_item(31020) >= 1 begin
target.delete("__TARGET__")
pc.remove_item(31020, pc.count_item(31020))
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._650_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._660_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._670_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 6766050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv91._780_say)
pc.give_exp2(6766050)
--pc.change_money(0)
pc.give_item2(30045, 2)
clear_letter()
set_quest_state ("main_quest_lv92", "state0")
set_state (__COMPLETE__)
end
end
-- 퀘스트 완료
state state5_3 begin
when letter begin
send_letter(gameforge.main_quest_lv91._560_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv91._560_sendLetter)
say(gameforge.main_quest_lv91._680_say)
end
-- 아이템 분실 대비.
when 20382.click begin
if pc.count_item(31020) < 1 then
pc.give_item2(31020, 1)
notice_multiline(gameforge.main_quest_lv91._640_1_notice,notice)
end
end
when 20380.chat.gameforge.main_quest_lv91._560_sendLetter with pc.count_item(31020) >= 1 begin
target.delete("__TARGET__")
pc.remove_item(31020, pc.count_item(31020))
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._650_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv91._660_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv91._670_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 6766050))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv91._780_say)
pc.give_exp2(6766050)
--pc.change_money(0)
pc.give_item2(30045, 2)
clear_letter()
set_quest_state ("main_quest_lv92", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,699 +0,0 @@
quest main_quest_lv92 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 92 begin
set_state (state1_1)
end
end
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
------------------------------------초마단의 서신을 찾아라!1-2------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._010_sendLetter)
say(gameforge.main_quest_lv92._020_say)
end
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._040_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._050_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._060_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._070_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._080_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._090_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._100_say)
set_state (state1_2)
q.set_counter_value(4)
end
end
--퀘스트 수행--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_name("남은 아이템")
q.set_counter_value(remain_item)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._110_sayTitle)
say(gameforge.main_quest_lv92._120_say)
say_item_vnum(31010)
say(gameforge.main_quest_lv90._1180_say)
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
say_reward(string.format("%s: %d %s",item_name(31010),remain_item,locale.count_postfix))
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
if pc.count_item(31010) >= 4 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._160_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50817),10,locale.count_postfix))
say("")
pc.give_exp2(33874000)
pc.change_money(200000)
pc.give_item2(50817, 10)
set_state (state2_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._130_say)
set_state (state1_2)
end
end
when 3504.kill or 3505.kill begin
if number(1,500) == 1 then
if pc.count_item(31010) < 4 then
pc.give_item2(31010, 1)
--퀘스트 메뉴 창 카운트
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31010) >= 4 then
notice_multiline(gameforge.main_quest_lv92._140_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._140_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._010_sendLetter)
say(gameforge.main_quest_lv92._150_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3504.kill or 3505.kill begin
if number(1,500) == 1 then
if pc.count_item(31010) < 4 then
pc.give_item2(31010, 1)
--퀘스트 메뉴 창 카운트
local remain_item = 4 - pc.count_item(31010)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31010) >= 4 then
notice_multiline(gameforge.main_quest_lv92._140_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._140_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv92._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31010) >= 4 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._160_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33874000))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 200000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50817),10,locale.count_postfix))
say("")
pc.give_exp2(33874000)
pc.change_money(200000)
pc.give_item2(50817, 10)
set_state (state2_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._130_say)
set_state (state1_2)
end
end
end
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
------------------------------------마지막 서신 조각------------------------------------
state state2_1 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._170_sendLetter)
say(gameforge.main_quest_lv92._180_say)
end
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._190_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._200_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._210_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._220_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._230_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._240_say)
set_state (state2_2)
end
end
--퀘스트 수행--
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20379)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20379))
end
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._250_sayTitle)
say(gameforge.main_quest_lv92._260_say)
say_item_vnum(31010)
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._270_say)
end
when 20379.chat.gameforge.main_quest_lv92._170_sendLetter begin
say_title(mob_name(20379))
say(gameforge.main_quest_lv92._280_say)
notice_multiline(gameforge.main_quest_lv92._290_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._290_2_notice,notice)
pc.give_item2(31010, 1)
set_state (state2_3)
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv92._170_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._170_sendLetter)
say(gameforge.main_quest_lv92._360_say)
end
when 20378.chat.gameforge.main_quest_lv92._170_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31010) >= 1 then
pc.remove_item ( 31010, pc.count_item(31010))
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._300_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._310_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._320_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._330_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._340_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._350_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 20874600))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30047),2,locale.count_postfix))
say("")
pc.give_exp2(20874600)
--pc.change_money(0)
pc.give_item2(30047, 2)
set_state (state3_1)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv92._270_say)
set_state (state2_2)
end
end
end
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
------------------------------------세번째 서신 판독1-1------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._380_say)
end
when 20378.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._390_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._400_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._410_say)
end
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._420_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._430_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._450_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._470_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv92._480_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv92._490_say)
set_state (state3_3)
end
end
state state3_3 begin
when letter begin
q.set_counter_name("남은 아이템")
send_letter(gameforge.main_quest_lv92._370_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv92._500_sayTitle)
say(gameforge.main_quest_lv92._510_say)
say_item_vnum(31022)
say(gameforge.main_quest_lv90._1180_say)
local remain_item = 10 - pc.count_item(31022)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
say_reward(string.format("%s: %d %s",item_name(31022),remain_item,locale.count_postfix))
-- say()
-- say_reward(locale.main_quest_lv92.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
if pc.count_item(31022) >= 10 then
pc.remove_item ( 31022, pc.count_item(31022))
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._540_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 34874000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27992),2,locale.count_postfix))
say("")
pc.give_exp2(34874000)
--pc.change_money(0)
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._520_say)
end
end
when 3490.kill or 3491.kill begin
if number(1,500) == 1 then
if pc.count_item(31022) < 10 then
pc.give_item2(31022, 1)
local remain_item = 10 - pc.count_item(31022)
if remain_item <= 0 then
remain_item = 0
end
q.set_counter_value(remain_item)
if pc.count_item(31022) >= 10 then
notice_multiline(gameforge.main_quest_lv92._530_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._530_2_notice,notice)
set_state (state3_4)
end
end
end
end
end
state state3_4 begin
when letter begin
q.set_counter_name("")
send_letter(gameforge.main_quest_lv92._370_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._370_sendLetter)
say(gameforge.main_quest_lv92._550_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3490.kill or 3491.kill begin
if number(1,500) == 1 then
if pc.count_item(31022) < 10 then
pc.give_item2(31022, 1)
if pc.count_item(31022) >= 10 then
notice_multiline(gameforge.main_quest_lv92._530_1_notice,notice)
notice_multiline(gameforge.main_quest_lv92._530_2_notice,notice)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv92._370_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31022) >= 10 then
pc.remove_item ( 31022, pc.count_item(31022))
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._540_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 34874000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27992),2,locale.count_postfix))
say("")
pc.give_exp2(34874000)
--pc.change_money(0)
pc.give_item2(27992, 1)
pc.give_item2(27992, 1)
set_state (state4_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv92._520_say)
set_state (state3_3)
end
end
end
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
------------------------------------초마단의 서신의 진실-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv92._560_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv92._560_sendLetter)
say(gameforge.main_quest_lv92._570_say)
end
when 20378.chat.gameforge.main_quest_lv92._560_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._580_say)
wait()
say(gameforge.main_quest_lv92._590_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv92._600_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 24911280))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27993),2,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv92._610_say)
pc.give_exp2(24911280)
--pc.change_money(0)
pc.give_item2(27993, 1)
pc.give_item2(27993, 1)
clear_letter()
set_quest_state ("main_quest_lv93", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,715 +0,0 @@
quest main_quest_lv93 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 93 begin
set_state (state1_1)
end
end
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
------------------------------------내력강화1-1------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._020_say)
end
when 20378.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv93._030_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv93._040_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._050_say)
set_state (state1_2)
end
end
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._130_say)
end
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._060_say)
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._070_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._080_say)
set_state (state1_3)
end
end
--퀘스트 수행--
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv93._090_sayTitle)
say(gameforge.main_quest_lv93._100_say)
say_item_vnum(31029)
-- say()
-- say_reward(locale.main_quest_lv93.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._110_say)
end
when 3191.kill begin
if number(1,1000) == 1 then
if pc.count_item(31029) < 1 then
pc.give_item2(31029, 1)
if pc.count_item(31029) >= 1 then
notice_multiline(gameforge.main_quest_lv93._120_1_notice,notice)
set_state (state1_4)
end
end
end
end
end
state state1_4 begin
when letter begin
send_letter(gameforge.main_quest_lv93._010_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._010_sendLetter)
say(gameforge.main_quest_lv93._130_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3191.kill begin
if number(1,1000) == 1 then
if pc.count_item(31029) < 1 then
pc.give_item2(31029, 1)
if pc.count_item(31029) >= 1 then
notice_multiline(gameforge.main_quest_lv93._120_1_notice,notice)
set_state (state1_4)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv93._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31029) >= 1 then
pc.remove_item ( 31029, pc.count_item(31029))
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._140_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27874422))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27994),1,locale.count_postfix))
say("")
pc.give_exp2(27874422)
--pc.change_money(0)
pc.give_item2(27994, 1)
set_state (state2_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._110_say)
set_state (state1_3)
end
end
end
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
------------------------------------내력강화1-2------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._150_sendLetter)
say(gameforge.main_quest_lv93._160_say)
end
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._170_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._180_say)
set_state (state2_2)
end
end
--퀘스트 수행--
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv93._190_sayTitle)
say(gameforge.main_quest_lv93._200_say)
say_item_vnum(31030)
-- say()
-- say_reward(locale.main_quest_lv93.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._210_say)
end
when 3791.kill begin
if number(1,1000) == 1 then
if pc.count_item(31030) < 1 then
pc.give_item2(31030, 1)
if pc.count_item(31030) >= 1 then
notice_multiline(gameforge.main_quest_lv93._220_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._220_2_notice,notice)
set_state (state2_3)
end
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv93._150_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._150_sendLetter)
say(gameforge.main_quest_lv93._230_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3791.kill begin
if number(1,1000) == 1 then
if pc.count_item(31030) < 1 then
pc.give_item2(31030, 1)
if pc.count_item(31030) >= 1 then
notice_multiline(gameforge.main_quest_lv93._220_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._220_2_notice,notice)
set_state (state2_3)
end
end
end
end
when 20380.chat.gameforge.main_quest_lv93._150_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31030) >= 1 then
pc.remove_item ( 31030, pc.count_item(31030))
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._240_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 28914020))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 302000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30048),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50819),10,locale.count_postfix))
say("")
pc.give_exp2(28914020)
pc.change_money(302000)
pc.give_item2(30048, 1)
pc.give_item2(50819, 10)
set_state (state3_1)
else
say_title(mob_name(20380))
say(gameforge.main_quest_lv93._210_say)
set_state (state2_2)
end
end
end
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
------------------------------------내력강화1-3------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._250_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._250_sendLetter)
say(gameforge.main_quest_lv93._260_say)
end
when 20380.chat.gameforge.main_quest_lv93._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv93._270_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._280_say)
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv93._290_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._300_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._250_sendLetter)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._310_sayTitle)
say(gameforge.main_quest_lv93._320_say)
end
when 20008.chat.gameforge.main_quest_lv93._250_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._330_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._340_say)
wait()
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._350_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._360_say)
wait()
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._370_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 17904600))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 30000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71094),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72024),1,locale.count_postfix))
say("")
pc.give_exp2(17904600)
pc.change_money(30000)
pc.give_item2(71094, 1)
pc.give_item2_select(72024)
set_state (state3_3)
clear_letter()
local cur_t = get_global_time()
pc.setf("main_quest_lv93","ockgu_access_time",cur_t)
end
end
state state3_3 begin
when login with get_global_time() - pc.getf("main_quest_lv93","ockgu_access_time") >= 24*60*60 begin
set_state (state4_1)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
if get_global_time() - pc.getf("main_quest_lv93","ockgu_access_time") >= 24*60*60 then
set_state (state4_1)
else
say_title(mob_name(20008))
say(gameforge.main_quest_lv93._390_say)
end
end
end
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
------------------------------------내력강화1-4-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._400_npcChat)
say(gameforge.main_quest_lv93._410_say)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._420_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._430_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._450_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._460_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._470_say)
wait()
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._480_say)
set_state (state4_2)
end
end
-- 퀘스트 진행 --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
q.set_counter_name(gameforge.main_quest_lv94._1080_say)
end
when button or info begin
say_title(gameforge.main_quest_lv93._490_sayTitle)
say(gameforge.main_quest_lv93._500_say)
say_item_vnum_inline(50724,0,3)
say_item_vnum_inline(50726,1,3)
say_item_vnum_inline(50707,2,3)
local remain1 = 200 - pc.count_item(50724)
local remain2 = 200 - pc.count_item(50726)
local remain3 = 200 - pc.count_item(50707)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
say(string.format(gameforge.main_quest_lv93._630_say,item_name(50724) ,remain1,item_name(50726) ,remain2,item_name(50707) , remain3))
q.set_counter_value(remain1 + remain2 + remain3)
if remain1 + remain2 + remain3 == 0 then
notice_multiline(gameforge.main_quest_lv93._650_1_notice,notice)
notice_multiline(gameforge.main_quest_lv93._650_2_notice,notice)
end
end
--[[
when 50724.pick or 50724.take or 50726.pick or 50726.take or 50707.pick or 50707.take begin
local remain1 = 200 - pc.count_item(50724)
local remain2 = 200 - pc.count_item(50726)
local remain3 = 200 - pc.count_item(50707)
if remain1 < 0 then
remain1 = 0
end
if remain2 < 0 then
remain2 = 0
end
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
]]--
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
if pc.count_item(50724) >= 200 and pc.count_item(50726) >= 200 and pc.count_item(50707) >= 200 then
pc.remove_item ( 50724,200)
pc.remove_item ( 50726,200)
pc.remove_item ( 50707,200)
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._520_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._530_say)
set_state (state4_3)
clear_letter()
local cur_t = get_global_time()
pc.setf("main_quest_lv93","item4_make_start_time",cur_t)
else
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._640_say)
end
end
end
state state4_3 begin
when login with get_global_time() - pc.getf("main_quest_lv93","item4_make_start_time") >= 24*60*60 begin
set_state (state4_4)
q.set_counter_name("")
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._540_say)
end
end
state state4_4 begin
when letter begin
send_letter(gameforge.main_quest_lv93._400_npcChat)
local v = find_npc_by_vnum(20008)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20008))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._400_npcChat)
say(gameforge.main_quest_lv93._550_say)
end
when 20008.chat.gameforge.main_quest_lv93._400_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20008 ))
say(gameforge.main_quest_lv93._560_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._570_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 31374000))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(31031),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(50706),20,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301),5,locale.count_postfix))
say("")
pc.give_exp2(31374000)
--pc.change_money(0)
pc.give_item2(31031, 1)
pc.give_item2(50706, 20)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
set_state (state5_1)
end
end
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
------------------------------------신약 제조1-1-----------------------------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv93._580_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv93._580_sendLetter)
say(gameforge.main_quest_lv93._590_say)
end
when 20380.chat.gameforge.main_quest_lv93._580_sendLetter begin
target.delete("__TARGET__")
pc.remove_item(31031,pc.count_item(31031))
say_title(mob_name( 20380))
say(gameforge.main_quest_lv93._600_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv93._610_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 19920820))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 335000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72723),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70050),1,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv93._620_say)
pc.give_exp2(19920820)
pc.change_money(335000)
pc.give_item2(72723, 1)
pc.give_item2_select(70050)
item.set_socket(2, 120)
clear_letter()
set_quest_state ("main_quest_lv94", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

File diff suppressed because it is too large Load Diff

View File

@ -1,731 +0,0 @@
quest main_quest_lv95 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 95 begin
set_state (state1_1)
end
end
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
------------------------------------괴력의 지무신왕------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._010_sendLetter)
say(gameforge.main_quest_lv95._020_say)
end
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._030_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._040_say)
wait()
set_state (state1_2)
end
end
--퀘스트 수행--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._070_sayTitle)
say(gameforge.main_quest_lv95._080_say)
--say_item_vnum(31015)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전에 돌아왔다.--
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._090_say)
say("")
end
when 3904.kill begin
if pc.count_item(31015) < 1 then
pc.give_item2 ( 31015, 1 )
notice_multiline(gameforge.main_quest_lv95._100_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._100_2_notice,notice)
notice_multiline(gameforge.main_quest_lv95._750_say,notice)
set_state (state1_3)
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._010_sendLetter)
say(gameforge.main_quest_lv95._110_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3904.kill begin
if pc.count_item(31015) < 1 then
pc.give_item2 ( 31015, 1 )
notice_multiline(gameforge.main_quest_lv95._100_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._100_2_notice,notice)
notice_multiline(gameforge.main_quest_lv95._750_say,notice)
end
end
when 20378.chat.gameforge.main_quest_lv95._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31015) >= 1 then
pc.remove_item ( 31015, pc.count_item(31015))
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._120_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._140_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._150_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._170_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 27532396))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 302000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(27994),1,locale.count_postfix))
say("")
pc.give_exp2(27532396)
pc.change_money(302000)
pc.give_item2(27994, 1)
set_state (state2_1)
else --중간에 아이템을 빼놓고 왔다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._090_say)
say("")
set_state (state1_2)
end
end
end
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
------------------------------------검은황금 전달 저지------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._180_sendLetter)
say(gameforge.main_quest_lv95._190_say)
end
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._200_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._220_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._230_sayTitle)
say(gameforge.main_quest_lv95._240_say)
say_item_vnum(31037)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._250_say)
end
when 3890.kill begin
if pc.count_item(31037) < 1 then
if number (1,5) == 1 then
if pc.count_item(31037) < 1 then
pc.give_item2 ( 31037, 1 )
end
notice_multiline(gameforge.main_quest_lv95._260_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._260_2_notice,notice)
set_state (state2_3)
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._180_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._180_sendLetter)
say(gameforge.main_quest_lv95._270_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3890.kill begin
if pc.count_item(31037) < 1 then
if number (1,5) == 1 then
if pc.count_item(31037) < 1 then
pc.give_item2 ( 31037, 1 )
end
notice_multiline(gameforge.main_quest_lv95._260_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._260_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv95._180_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31037) >= 1 then
pc.remove_item ( 31037, pc.count_item(31037))
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._280_say)
wait()
say(gameforge.main_quest_lv95._290_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._300_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._310_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 29032586))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30048),1,locale.count_postfix))
say("")
pc.give_exp2(29032586)
--pc.change_money(0)
pc.give_item2(30048, 1)
set_state (state3_1)
else -- 아이템이 없다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._250_say)
set_state (state2_2)
end
end
end
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
------------------------------------검은황금 정제 차단------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._320_sendLetter)
say(gameforge.main_quest_lv95._330_say)
end
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._340_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._350_say)
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._370_sayTitle)
say(gameforge.main_quest_lv95._380_say)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._390_say)
end
when 3891.kill begin
notice_multiline(gameforge.main_quest_lv95._400_notice,notice)
say(gameforge.main_quest_lv95._410_say)
wait()
say(gameforge.main_quest_lv95._420_say)
set_state (state3_3)
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._320_sendLetter)
say(gameforge.main_quest_lv95._430_say)
end
when 20378.chat.gameforge.main_quest_lv95._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._440_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._450_say)
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv95._460_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 33003907))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71094),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72024),1,locale.count_postfix))
say("")
pc.give_exp2(33003907)
--pc.change_money(0)
pc.give_item2(71094, 1)
pc.give_item2_select(72024)
item.set_socket(2, 180)
set_state (state4_1)
end
end
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
------------------------------------천기의 조화1-1-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._470_sendLetter)
say(gameforge.main_quest_lv95._480_say)
end
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._490_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._510_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._520_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._530_say)
set_state (state4_2)
end
end
-- 퀘스트 진행 --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv95._540_sayTitle)
say(gameforge.main_quest_lv95._550_say)
say_item_vnum(31043)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- 클리어 전에 클릭 --
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._560_say)
end
when 3303.kill begin
if pc.count_item(31043) < 1 then
if number (1,5) == 1 then
pc.give_item2 ( 31043, 1 )
notice_multiline(gameforge.main_quest_lv95._570_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._570_2_notice,notice)
set_state (state4_3)
end
end
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv95._470_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv95._470_sendLetter)
say(gameforge.main_quest_lv95._580_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3303.kill begin
if pc.count_item(31043) < 1 then
if number (1,5) == 1 then
pc.give_item2 ( 31043, 1 )
notice_multiline(gameforge.main_quest_lv95._570_1_notice,notice)
notice_multiline(gameforge.main_quest_lv95._570_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv95._470_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31043) >= 1 then
pc.remove_item ( 31043, pc.count_item(31043))
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._590_say)
wait()
say_reward(gameforge.main_quest_lv95._600_sayReward)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._610_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._620_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 30943586))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 335000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72301),5,locale.count_postfix))
say("")
pc.give_exp2(30943586)
pc.change_money(335000)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
pc.give_item2(72301, 1)
set_state (state5_1)
else
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._560_say)
set_state (state4_2)
end
end
end
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
------------------------------------천기의 조화1-2-----------------------------------
-- 퀘스트 진행 --
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv95._630_sendLetter)
q.set_counter_name(gameforge.main_quest_lv95._760_say)
end
when button or info begin
if pc.get_map_index() == 1 then
addmapsignal(500 * 100, 500 * 100)
addmapsignal(600 * 100, 500 * 100)
addmapsignal(700 * 100, 300 * 100)
end
say_title(gameforge.main_quest_lv95._640_sayTitle)
say(gameforge.main_quest_lv95._650_say)
say_item_vnum(31043)
say(gameforge.main_quest_lv95._760_say)
local remain = 2 - pc.count_item(31043)
if remain < 0 then
remain = 0
end
say_reward(string.format(gameforge.main_quest_lv95._770_sayReward,item_name(31043),remain))
q.set_counter_value(remain)
-- say()
-- say_reward(locale.main_quest_lv95.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- 클리어 전에 클릭 --
when 20378.chat.gameforge.main_quest_lv95._630_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._660_say)
end
when 3303.kill begin
if pc.count_item(31043) < 2 then
if number (1,4) == 1 then
pc.give_item2 ( 31043, 1 )
local remain = 2 - pc.count_item(31043)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31043) >= 2 then
set_state (state5_2)
end
end
end
end
end
state state5_2 begin
when letter begin
send_letter(gameforge.main_quest_lv95._630_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv95._630_sendLetter)
say(gameforge.main_quest_lv95._670_say)
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3303.kill begin
if pc.count_item(31043) < 2 then
if number (1,4) == 1 then
pc.give_item2 ( 31043, 1 )
end
end
end
when 20378.chat.gameforge.main_quest_lv95._630_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31043) >= 2 then
pc.remove_item ( 31043, pc.count_item(31043))
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._680_say)
wait()
say_reward(gameforge.main_quest_lv95._690_sayReward)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._700_say)
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv95._710_say)
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._720_say)
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 31932545))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 337000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72723),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70050),1,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv95._740_say)
pc.give_exp2(31932545)
pc.change_money(337000)
pc.give_item2(72723, 1)
pc.give_item2(70050, 1)
clear_letter()
set_quest_state ("main_quest_lv96", "state0")
set_state (__COMPLETE__)
else
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv95._660_say)
set_state (state5_1)
end
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,750 +0,0 @@
quest main_quest_lv96 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 96 begin
set_state (state1_1)
end
end
------------------------------------강령술 저지1-1------------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._010_sendLetter)
say(gameforge.main_quest_lv96._020_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._060_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._070_say)
say("")
set_state (state1_2)
end
end
--퀘스트 수행--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._080_sayTitle)
say(gameforge.main_quest_lv96._090_say)
say("")
say_item_vnum(31038)
say(gameforge.main_quest_lv96._570_counterName)
local remain = 100 - pc.count_item(31038)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv60._210_sayReward,item_name(31038),remain))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전에 돌아왔다.--
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._100_say)
say("")
end
when 3701.kill or 3702.kill or 3703.kill or 3704.kill or 3705.kill or 3790.kill or 3791.kill begin
if pc.count_item(31038) < 100 then
if number (1,50) == 1 then
pc.give_item2 ( 31038, 1 )
local remain = 100 - pc.count_item(31038)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31038) >= 100 then
notice_multiline(gameforge.main_quest_lv96._110_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._110_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._010_sendLetter)
say(gameforge.main_quest_lv96._120_say)
say("")
say("")
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3701.kill or 3702.kill or 3703.kill or 3704.kill or 3705.kill or 3790.kill or 3791.kill begin
if pc.count_item(31038) < 100 then
if number (1,50) == 1 then
pc.give_item2 ( 31038, 1 )
if pc.count_item(31038) >= 100 then
notice_multiline(gameforge.main_quest_lv96._110_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._110_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv96._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31038) >= 100 then
pc.remove_item ( 31038, pc.count_item(31038))
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._130_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 39032537))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 346000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30051),1,locale.count_postfix))
say("")
pc.give_exp2(39032537)
pc.change_money(346000)
pc.give_item2(30051, 1)
set_state (state2_1)
else --중간에 아이템을 빼놓고 왔다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._100_say)
say("")
set_state (state1_2)
end
end
end
------------------------------------강령술 저지1-2------------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._150_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._160_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._190_say)
say("")
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._200_sayTitle)
say(gameforge.main_quest_lv96._210_say)
say("")
say_item_vnum_inline(31039,0,2)
say_item_vnum_inline(31040,1,2)
say(gameforge.main_quest_lv96._570_counterName)
local remain1 = 1 - pc.count_item(31039)
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.count_item(31040)
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31039),remain1))
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31040),remain2))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._220_say)
say("")
end
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if pc.count_item(31039) < 1 or pc.count_item(31040) < 1 then
if number (1,100) == 1 then
if pc.count_item(31039) < 1 then
pc.give_item2 ( 31039, 1 )
end
if pc.count_item(31040) < 1 then
pc.give_item2 ( 31040, 1 )
end
local remain1 = 1 - pc.count_item(31039)
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.count_item(31040)
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
notice_multiline(gameforge.main_quest_lv96._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._230_2_notice,notice)
set_state (state2_3)
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._240_say)
say("")
say("")
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if pc.count_item(31039) < 1 or pc.count_item(31040) < 1 then
if number (1,100) == 1 then
if pc.count_item(31039) < 1 then
pc.give_item2 ( 31039, 1 )
end
if pc.count_item(31040) < 1 then
pc.give_item2 ( 31040, 1 )
end
notice_multiline(gameforge.main_quest_lv96._230_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._230_2_notice,notice)
end
end
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31039) >= 1 and pc.count_item(31040) >= 1 then
pc.remove_item ( 31039, pc.count_item(31039))
pc.remove_item ( 31040, pc.count_item(31040))
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._250_say)
say("")
set_state (state2_4)
else
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._220_say)
say("")
set_state (state2_2)
end
end
end
--학자에게로
state state2_4 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20380)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20380))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._260_say)
say("")
say("")
end
when 20380.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20380))
say(gameforge.main_quest_lv96._270_say)
say("")
wait()
say_title(mob_name(20380))
say(gameforge.main_quest_lv96._290_say)
say("")
set_state (state2_5)
end
end
--다시 경비대장에게
state state2_5 begin
when letter begin
send_letter(gameforge.main_quest_lv96._140_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._140_sendLetter)
say(gameforge.main_quest_lv96._240_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._140_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv96._590_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 40732586))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 357000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72016),1,locale.count_postfix))
say("")
pc.give_exp2(40732586)
pc.change_money(357000)
pc.give_item2_select(72016)
item.set_socket(2, 120)
set_state (state3_1)
end
end
------------------------------------강령술 저지1-3------------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._300_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._300_sendLetter)
say(gameforge.main_quest_lv96._310_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._300_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._320_say)
say("")
wait()
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(31073),1,locale.count_postfix))
say("")
wait()
if pc.count_item(31073) < 1 then
pc.give_item2(31073,1)
end
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._330_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._340_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._300_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._570_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._350_sayTitle)
say(gameforge.main_quest_lv96._360_say)
say("")
say_item_vnum(31039)
say(gameforge.main_quest_lv96._570_counterName)
local remain = 100 - pc.getqf("checked_pocket")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv96._580_sayReward,item_name(31039),remain))
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 31073.use begin
affect.add(apply.CON, 10, 60 * 60)
affect.add(apply.INT, 10, 60 * 60)
affect.add(apply.STR, 10, 60 * 60)
affect.add(apply.DEX, 10, 60 * 60)
pc.remove_item(31073,1)
end
when 3801.kill or 3802.kill or 3803.kill or 3804.kill or 3805.kill or 3890.kill or 3891.kill begin
if number (1,100) == 1 then
pc.give_item2 ( 31039, 1 )
notice_multiline(gameforge.main_quest_lv96._620_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._620_2_notice,notice)
end
end
when 20380.chat.gameforge.main_quest_lv96._300_sendLetter with pc.count_item(31039) > 0 begin
pc.remove_item (31039, 1)
if number(1,100) <= 70 then -- 감정 성공
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._370_say)
say("")
local checked = pc.getqf("checked_pocket")
pc.setqf("checked_pocket", checked + 1)
local remain = 100 - pc.getqf("checked_pocket")
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.getqf("checked_pocket") >= 100 then
pc.remove_item ( 31039, pc.count_item(31039))
wait()
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._380_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 42983593))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30009),2,locale.count_postfix))
say("")
pc.give_exp2(42983593)
--pc.change_money(0)
pc.give_item2(30009, 2)
set_state (state4_1)
else
say(string.format(gameforge.main_quest_lv96._390_say,remain))
say("")
end
else -- 감정 실패
say_title(mob_name(20380 ))
say(gameforge.main_quest_lv96._630_say)
say("")
end
end
end
------------------------------------강령술 저지1-4-----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv96._400_sendLetter)
say(gameforge.main_quest_lv96._410_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._420_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._430_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv96._450_say)
say("")
set_state (state4_2)
end
end
-- 퀘스트 진행 --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
q.set_counter_name(gameforge.main_quest_lv96._480_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv96._460_sayTitle)
say(gameforge.main_quest_lv96._470_say)
say("")
say_title(gameforge.main_quest_lv96._480_counterName)
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
say_reward(string.format(gameforge.main_quest_lv96._490_say,mob_name(3911) ,remain1, mob_name(3912),remain2 , mob_name(3913),remain3))
say("")
-- say()
-- say_reward(locale.main_quest_lv96.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
-- 클리어 전에 클릭 --
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._500_say)
say("")
end
when 3911.kill begin
pc.setqf("kill_tree1",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
when 3912.kill begin
pc.setqf("kill_tree2",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
when 3913.kill begin
pc.setqf("kill_tree3",1)
if pc.getqf("kill_tree1") == 1 and pc.getqf("kill_tree2") == 1 and pc.getqf("kill_tree3") == 1 then
notice_multiline(gameforge.main_quest_lv96._510_1_notice,notice)
notice_multiline(gameforge.main_quest_lv96._510_2_notice,notice)
set_state (state4_3)
end
local remain1 = 1 - pc.getqf("kill_tree1")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("kill_tree2")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("kill_tree3")
if remain3 < 0 then
remain3 = 0
end
q.set_counter_value(remain1 + remain2 + remain3)
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv96._400_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv96._400_sendLetter)
say(gameforge.main_quest_lv96._520_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv96._400_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._530_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv96._550_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 44941086))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 379000))
say("")
say_title(gameforge.main_quest_lv96._560_sayTitle)
pc.give_exp2(44941086)
pc.change_money(379000)
clear_letter()
if pc.count_item(31073) > 1 then
pc.remove_item(31073,pc.count_item(31073))
end
set_quest_state ("main_quest_lv97", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,657 +0,0 @@
quest main_quest_lv97 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 97 begin
set_state (state1_1)
end
end
----------------------------------천무신녀 처치----------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._010_sendLetter)
say(gameforge.main_quest_lv97._020_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._040_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._050_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._060_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._070_say)
say("")
set_state (state1_2)
end
end
--퀘스트 수행--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv97._080_sayTitle)
say(gameforge.main_quest_lv97._090_say)
-- say("")
-- say_reward(locale.main_quest_lv97.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전에 돌아왔다.--
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._650_say)
end
when 3905.kill begin
if pc.count_item(31074) < 1 then
pc.give_item2 ( 31074, 1 )
end
notice_multiline(gameforge.main_quest_lv97._100_notice,notice)
say(gameforge.main_quest_lv97._110_say)
say("")
wait()
say(gameforge.main_quest_lv97._120_say)
say("")
set_state (state1_3)
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._010_sendLetter)
say(gameforge.main_quest_lv97._130_say)
say("")
say("")
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3905.kill begin
if pc.count_item(31074) < 1 then
pc.give_item2 ( 31074, 1 )
end
notice_multiline(gameforge.main_quest_lv97._100_notice,notice)
say(gameforge.main_quest_lv97._110_say)
say("")
wait()
say(gameforge.main_quest_lv97._120_say)
say("")
end
when 20378.chat.gameforge.main_quest_lv97._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31074) >= 1 then
pc.remove_item ( 31074, pc.count_item(31074))
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._140_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._150_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._160_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._190_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 45941088))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30045),2,locale.count_postfix))
say("")
pc.give_exp2(45941088)
--pc.change_money(0)
pc.give_item2(30045, 2)
set_state (state2_1)
else --중간에 아이템을 빼놓고 왔다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._650_say)
set_state (state1_2)
end
end
end
---------------------------------- 초마단의 명패 ----------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._200_sendLetter)
say(gameforge.main_quest_lv97._210_say)
say("")
say("")
end
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._220_say)
say("")
wait()
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._230_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._260_say)
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20001)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20001))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._270_sayTitle)
say(gameforge.main_quest_lv97._280_say)
say("")
say_item_vnum(31041)
say("")
end
--클리어 전--
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._290_say)
say("")
end
when 20001.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20001))
say(gameforge.main_quest_lv97._660_say)
if pc.count_item(31041) < 1 then
pc.give_item2(31041, 1)
notice_multiline(gameforge.main_quest_lv97._300_notice,notice)
end
set_state (state2_3)
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._200_sendLetter)
say(gameforge.main_quest_lv97._300_notice)
say("")
say("")
end
when 20377.chat.gameforge.main_quest_lv97._200_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31041) >= 1 then
pc.remove_item ( 31041, pc.count_item(31041))
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._310_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 41032531))
--say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format ("%s: %d %s", item_name(71001),3,locale.count_postfix))
say("")
pc.give_exp2(41032531)
--pc.change_money(0)
pc.give_item2(71001, 3)
set_state (state3_1)
else -- 중간에 아이템을 빠뜨렸다.
say_title(mob_name(20377))
say(gameforge.main_quest_lv97._170_say)
say("")
set_state (state2_2)
end
end
end
---------------------------------- 후방 활로 확보----------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._320_sendLetter)
say(gameforge.main_quest_lv97._330_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._340_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._350_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv97._370_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._380_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv97._390_sayTitle)
say(gameforge.main_quest_lv97._400_say)
say("")
say_title(gameforge.main_quest_lv97._670_counterName)
local remain1 = 2 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("mob3_3_kill")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 1 - pc.getqf("mob3_4_kill")
if remain4 < 0 then
remain4 = 0
end
q.set_counter_value(remain1 + remain2 + remain3 + remain4)
say_reward(string.format(gameforge.main_quest_lv97._680_sayReward,mob_name(3907),remain1,mob_name(3908),remain2))
say_reward(string.format(gameforge.main_quest_lv97._680_sayReward,mob_name(3909),remain3,mob_name(3910),remain4))
-- say("")
-- say_reward(locale.main_quest_lv97.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._410_say)
say("")
end
function kill_count()
local remain1 = 2 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
local remain3 = 1 - pc.getqf("mob3_3_kill")
if remain3 < 0 then
remain3 = 0
end
local remain4 = 1 - pc.getqf("mob3_4_kill")
if remain4 < 0 then
remain4 = 0
end
local total_remain = remain1 + remain2 + remain3 + remain4
q.set_counter_value(total_remain)
return total_remain
end
when 3907.kill begin
pc.setqf("mob3_1_kill",pc.getqf("mob3_1_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3908.kill begin
pc.setqf("mob3_2_kill",pc.getqf("mob3_2_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3909.kill begin
pc.setqf("mob3_3_kill",pc.getqf("mob3_3_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
when 3910.kill begin
pc.setqf("mob3_4_kill",pc.getqf("mob3_4_kill") + 1)
if main_quest_lv97.kill_count() == 0 then
notice_multiline(gameforge.main_quest_lv97._690_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._690_2_notice,notice)
set_state (state3_3)
end
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._320_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv97._320_sendLetter)
say(gameforge.main_quest_lv97._420_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._320_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._430_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 47898648))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 214000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30033),3,locale.count_postfix))
say("")
pc.give_exp2(47898648)
pc.change_money(214000)
pc.give_item2(30033, 3)
set_state (state4_1)
end
end
---------------------------------- 초호신녀의 직계, 천무신녀----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._440_sendLetter)
say(gameforge.main_quest_lv97._450_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._460_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._480_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._490_say)
say("")
set_state (state4_2)
end
end
-- 퀘스트 진행 --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv97._700_sayTitle)
say(gameforge.main_quest_lv97._710_say)
end
-- 클리어 전에 클릭 --
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._530_say)
say("")
end
when 3910.kill begin
notice_multiline(gameforge.main_quest_lv97._550_1_notice,notice)
notice_multiline(gameforge.main_quest_lv97._550_2_notice,notice)
set_state (state4_3)
end
end
-- 퀘스트 진행 --
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
end
when button or info begin
say_title(gameforge.main_quest_lv97._510_sayTitle)
say(gameforge.main_quest_lv97._520_say)
say("")
end
-- 클리어 전에 클릭 --
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._540_say)
say("")
end
when 3906.kill begin -- 천무신녀 처치
notice_multiline(gameforge.main_quest_lv97._560_notice,notice)
say(gameforge.main_quest_lv97._570_say)
say("")
wait()
say(gameforge.main_quest_lv97._580_say)
say("")
if pc.count_item(31017) < 1 then
pc.give_item2(31017, 1)
end
set_state (state4_4)
end
end
state state4_4 begin
when letter begin
send_letter(gameforge.main_quest_lv97._440_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv97._440_sendLetter)
say(gameforge.main_quest_lv97._420_say)
say("")
say("")
end
when 20378.chat.gameforge.main_quest_lv97._440_sendLetter begin
pc.remove_item(31017,pc.count_item(31017))
target.delete("__TARGET__")
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._590_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv97._600_say)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._610_say)
say("")
wait()
say_reward(gameforge.main_quest_lv97._620_sayReward)
say("")
wait()
say_title(mob_name(20378 ))
say(gameforge.main_quest_lv97._630_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 49586571))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 225000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70024),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30039),3,locale.count_postfix))
say("")
say_title(gameforge.main_quest_lv97._640_sayTitle)
pc.give_exp2(49586571)
pc.change_money(225000)
pc.give_item2(70024, 1)
pc.give_item2(30039, 3)
clear_letter()
set_quest_state ("main_quest_lv98", "state0")
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,774 +0,0 @@
quest main_quest_lv98 begin
state start begin
end
state state0 begin
when login or levelup or enter with pc.level >= 98 begin
set_state (state1_1)
end
end
----------------------------------명시진 재건 1-1----------------------------------
state state1_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._010_sendLetter)
say(gameforge.main_quest_lv98._020_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._030_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._040_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._050_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._060_say)
say("")
set_state (state1_2)
end
end
--껍질 모으기 퀘스트 수행--
state state1_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._660_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._540_sayTitle)
say(gameforge.main_quest_lv98._550_say)
say("")
say_item_vnum(31026)
say_title(gameforge.main_quest_lv98._660_counterName)
local remain = 100 - pc.count_item(31026)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv98._670_sayReward,item_name(31026),remain))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전에 돌아왔다.--
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._070_say)
say("")
end
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill or 3690.kill or 3691.kill begin
if number (1,50) == 1 then
if pc.count_item(31026) < 100 then
pc.give_item2 ( 31026, 1 )
local remain = 100 - pc.count_item(31026)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31026) >= 100 then
notice_multiline(gameforge.main_quest_lv98._080_1_notice, notice)
notice_multiline(gameforge.main_quest_lv98._080_2_notice,notice)
set_state (state1_3)
end
end
end
end
end
state state1_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._010_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._010_sendLetter)
say(gameforge.main_quest_lv98._560_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3601.kill or 3602.kill or 3603.kill or 3604.kill or 3605.kill or 3690.kill or 3691.kill begin
if number (1,50) == 1 then
if pc.count_item(31026) < 100 then
pc.give_item2 ( 31026, 1 )
if pc.count_item(31026) >= 100 then
notice_multiline(gameforge.main_quest_lv98._080_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._080_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv98._010_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31026) >= 100 then
pc.remove_item ( 31026, pc.count_item(31026))
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._090_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 40898550))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 346000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(72308),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(76011),1,locale.count_postfix))
say("")
pc.give_exp2(40898550)
pc.change_money(346000)
pc.give_item2(72308, 1)
pc.give_item2_select(76011)
item.set_socket(2, 120)
set_state (state2_1)
else --중간에 아이템을 빼놓고 왔다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._070_say)
say("")
set_state (state1_2)
end
end
end
---------------------------------- 명시진 재건 1-2 ----------------------------------
state state2_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._140_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._150_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._160_say)
say("")
set_state (state2_2)
end
end
state state2_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._660_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._590_say)
say("")
say_item_vnum(31042)
say_title(gameforge.main_quest_lv98._660_counterName)
local remain = 100 - pc.count_item(31042)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
say_reward(string.format(gameforge.main_quest_lv98._670_sayReward,item_name(31042),remain))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
--클리어 전--
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._170_say)
say("")
end
when 3401.kill or 3402.kill or 3403.kill or 3404.kill or 3405.kill or 3490.kill or 3491.kill begin
if number (1,50) == 1 then
if pc.count_item(31042) < 100 then
pc.give_item2 ( 31042, 1 )
local remain = 100 - pc.count_item(31042)
if remain < 0 then
remain = 0
end
q.set_counter_value(remain)
if pc.count_item(31042) >= 100 then
notice_multiline(gameforge.main_quest_lv98._180_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._180_2_notice,notice)
set_state (state2_3)
end
end
end
end
end
state state2_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._130_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._130_sendLetter)
say(gameforge.main_quest_lv98._600_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- 중간에 퀘스트 아이템을 버릴 경우를 대비한 부분.
when 3401.kill or 3402.kill or 3403.kill or 3404.kill or 3405.kill or 3490.kill or 3491.kill begin
if number (1,50) == 1 then
if pc.count_item(31042) < 100 then
pc.give_item2 ( 31042, 1 )
if pc.count_item(31042) >= 100 then
notice_multiline(gameforge.main_quest_lv98._180_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._180_2_notice,notice)
end
end
end
end
when 20378.chat.gameforge.main_quest_lv98._130_sendLetter begin
target.delete("__TARGET__")
if pc.count_item(31042) >= 100 then
pc.remove_item ( 31042, pc.count_item(31042))
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._190_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 42646751))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 357000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71026),1,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(71025),2,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70102),5,locale.count_postfix))
say("")
pc.give_exp2(42646751)
pc.change_money(357000)
pc.give_item2(71026, 1)
pc.give_item2(71025, 1)
pc.give_item2(71025, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
pc.give_item2(70102, 1)
set_state (state3_1)
else -- 중간에 아이템을 빠뜨렸다.
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._170_say)
say("")
set_state (state2_2)
end
end
end
---------------------------------- 생활 안정----------------------------------
state state3_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._200_sendLetter)
say(gameforge.main_quest_lv98._210_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._220_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._260_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._280_say)
say("")
set_state (state3_2)
end
end
state state3_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
end
when button or info begin
-- if pc.get_map_index() == 1 then
-- addmapsignal(500 * 100, 500 * 100)
-- addmapsignal(600 * 100, 500 * 100)
-- addmapsignal(700 * 100, 300 * 100)
-- end
say_title(gameforge.main_quest_lv98._610_sayTitle)
say(gameforge.main_quest_lv98._620_say)
say("")
say(gameforge.main_quest_lv98._680_counterName)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
say_reward(string.format(gameforge.main_quest_lv98._690_sayReward,mob_name(3805),remain1,mob_name(3890),remain2))
-- say()
-- say_reward(locale.main_quest_lv98.pos_info)
-- select(gameforge.main_quest_lv90._950_say)
-- setskin(NOWINDOW)
-- clearmapsignal()
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._300_say)
say("")
end
when 3805.kill begin
local mob3_1_kill = pc.getqf("mob3_1_kill")
if mob3_1_kill < 50 then
pc.setqf("mob3_1_kill",mob3_1_kill +1)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
end
if pc.getqf("mob3_1_kill") >= 50 and pc.getqf("mob3_2_kill") >= 1 then
notice_multiline(gameforge.main_quest_lv98._310_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._310_2_notice,notice)
set_state (state3_3)
end
end
when 3890.kill begin
local mob3_2_kill = pc.getqf("mob3_2_kill")
if mob3_2_kill < 1 then
pc.setqf("mob3_2_kill",1)
local remain1 = 50 - pc.getqf("mob3_1_kill")
if remain1 < 0 then
remain1 = 0
end
local remain2 = 1 - pc.getqf("mob3_2_kill")
if remain2 < 0 then
remain2 = 0
end
q.set_counter_value(remain1 + remain2)
end
if pc.getqf("mob3_1_kill") >= 50 and pc.getqf("mob3_2_kill") >= 1 then
notice_multiline(gameforge.main_quest_lv98._310_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._310_2_notice,notice)
set_state (state3_3)
end
end
end
state state3_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._200_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
q.set_counter_name("")
end
when button or info begin
say_title(gameforge.main_quest_lv98._200_sendLetter)
say(gameforge.main_quest_lv98._630_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._200_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._320_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584941))
--say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 0))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30021),1,locale.count_postfix))
say("")
pc.give_exp2(48584941)
--pc.change_money(0)
pc.give_item2(30021, 1)
set_state (state4_1)
end
end
---------------------------------- 마지막 인사----------------------------------
state state4_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._330_sendLetter)
say(gameforge.main_quest_lv98._340_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._350_say)
say("")
wait()
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._360_say)
say("")
wait()
say_title(pc.getname())
say(gameforge.main_quest_lv98._380_say)
say("")
set_state (state4_2)
end
end
-- 인사 퀘스트 진행 --
state state4_2 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
q.set_counter_name(gameforge.main_quest_lv98._700_counterName)
local v_npc1 = find_npc_by_vnum(20381)
local v_npc2 = find_npc_by_vnum(9002)
local v_npc3 = find_npc_by_vnum(9003)
local v_npc4 = find_npc_by_vnum(9001)
if 0 != v_npc1 and pc.getqf("click_npc1") ~= 1 then
target.vid("__target_npc1__", v_npc1, mob_name(20381))
end
if 0 != v_npc2 and pc.getqf("click_npc2") ~= 1 then
target.vid("__target_npc2__", v_npc2, mob_name(9002))
end
if 0 != v_npc3 and pc.getqf("click_npc3") ~= 1 then
target.vid("__target_npc3__", v_npc3, mob_name(9003))
end
if 0 != v_npc4 and pc.getqf("click_npc4") ~= 1 then
target.vid("__target_npc4__", v_npc4, mob_name(9001))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._640_sayTitle)
say(gameforge.main_quest_lv98._650_say)
say("")
say_title(gameforge.main_quest_lv98._700_counterName)
local npc1 = " "
if pc.getqf("click_npc1") == 1 then
npc1 = "O"
end
local npc2 = " "
if pc.getqf("click_npc2") == 1 then
npc2 = "O"
end
local npc3 = " "
if pc.getqf("click_npc3") == 1 then
npc3 = "O"
end
local npc4 = " "
if pc.getqf("click_npc4") == 1 then
npc4 = "O"
end
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
say(string.format(gameforge.main_quest_lv98._710_say,npc1,npc2))
say(string.format(gameforge.main_quest_lv98._720_say,npc3,npc4))
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
-- 클리어 전에 클릭 --
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._390_say)
say("")
wait()
end
when __target_npc1__.target.click or 20381.click with pc.getqf("click_npc1") ~= 1 begin -- 촌장
target.delete("__target_npc1__")
pc.setqf("click_npc1",1)
say_title(mob_name(20381))
say(gameforge.main_quest_lv98._400_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc2__.target.click or 9002.click with pc.getqf("click_npc2") ~= 1 begin -- 방어구
target.delete("__target_npc2__")
pc.setqf("click_npc2",1)
say_title(mob_name(9002))
say(gameforge.main_quest_lv98._410_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc3__.target.click or 9003.click with pc.getqf("click_npc3") ~= 1 begin -- 잡화상점
target.delete("__target_npc3__")
pc.setqf("click_npc3",1)
say_title(mob_name(9003))
say(gameforge.main_quest_lv98._430_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
when __target_npc4__.target.click or 9001.click with pc.getqf("click_npc4") ~= 1 begin -- 무기상점
target.delete("__target_npc4__")
pc.setqf("click_npc4",1)
say_title(mob_name(9001))
say(gameforge.main_quest_lv98._420_say)
say("")
local remain = 4 - pc.getqf("click_npc1") - pc.getqf("click_npc2") - pc.getqf("click_npc3") - pc.getqf("click_npc4")
q.set_counter_value(remain)
if pc.getqf("click_npc1") == 1 and pc.getqf("click_npc2") == 1 and pc.getqf("click_npc3") == 1 and pc.getqf("click_npc4") == 1 then
notice_multiline(gameforge.main_quest_lv98._440_1_notice,notice)
notice_multiline(gameforge.main_quest_lv98._440_2_notice,notice)
set_state (state4_3)
end
end
end
state state4_3 begin
when letter begin
send_letter(gameforge.main_quest_lv98._330_sendLetter)
local v = find_npc_by_vnum(20377)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20377))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._330_sendLetter)
say(gameforge.main_quest_lv98._630_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20377.chat.gameforge.main_quest_lv98._330_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20377 ))
say(gameforge.main_quest_lv98._450_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 32033398))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 379000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30015),2,locale.count_postfix))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(70043),1,locale.count_postfix))
say("")
pc.give_exp2(32033398)
pc.change_money(379000)
pc.give_item2(30015, 2)
pc.give_item2_select(70043)
item.set_socket(2, 60)
set_state (state5_1)
end
end
----------------------------------다시 대륙으로----------------------------------
state state5_1 begin
when letter begin
send_letter(gameforge.main_quest_lv98._480_sendLetter)
local v = find_npc_by_vnum(20378)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20378))
end
end
when button or info begin
say_title(gameforge.main_quest_lv98._480_sendLetter)
say(gameforge.main_quest_lv98._490_say)
say("")
say_reward(gameforge.main_quest_lv98._570_sayReward)
say("")
end
when 20378.chat.gameforge.main_quest_lv98._480_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._500_say)
say("")
wait()
say_title(mob_name(20378))
say(gameforge.main_quest_lv98._520_say)
say("")
wait()
--보상
say_title(locale.reward)
say_reward(string.format (gameforge.main_quest_lv60._190_sayReward, 38739560))
say_reward(string.format (gameforge.main_quest_lv60._200_sayReward, 390000))
say_reward(string.format (gameforge.main_quest_lv60._210_sayReward, item_name(30006),1,locale.count_postfix))
say("")
pc.give_exp2(38739560)
pc.change_money(390000)
pc.give_item2(30006, 1)
clear_letter()
set_state (__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end

View File

@ -1,44 +0,0 @@
quest new_christmas_2012 begin
state start begin
function has_santa()
return (game.get_event_flag("new_xmas_event") > 0)
end
when 20126.chat.gameforge.new_christmas._010_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._020_say )
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._030_say )
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._040_say )
wait()
set_quest_state("new_christmas_2012_nog", "nog_first_give")
set_quest_state("new_christmas_2012_sock", "baby_dear_give")
set_state ("__COMPLETE__")
end
when login or enter with new_christmas_2012.has_santa() begin
if pc.get_map_index() == 1 or pc.get_map_index() == 21 or pc.get_map_index() == 41 then
if find_npc_by_vnum(20384) == 0 then
if pc.get_map_index() == 1 then
mob.spawn(20384, 625, 676, 0, 0 )
elseif pc.get_map_index() == 21 then
mob.spawn(20384, 542, 551, 0, 0)
elseif pc.get_map_index() == 41 then
mob.spawn(20384, 442, 717, 0, 0)
end
end
end
end
end
state __COMPLETE__ begin
when 20126.chat."init christmas quest" with is_test_server() or pc.is_gm() begin
set_state ("start")
set_quest_state("new_christmas_2012_nog", "start")
set_quest_state("new_christmas_2012_sock", "start")
say ("init complete")
end
end
end

View File

@ -1,36 +0,0 @@
quest new_christmas_2012_nog begin
state start begin
end
state nog_first_give begin
when 20126.chat.gameforge.new_christmas._050_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._060_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas._070_say)
wait()
pc.give_item2 (50216, 6)
pc.setqf ("last_nog_give_time", get_global_time())
say_title(mob_name(20126))
say (gameforge.new_christmas._080_say)
set_state(nog_give)
end
end
state nog_give begin
when 20126.chat.gameforge.new_christmas._090_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas._100_say)
wait()
if get_global_time() - pc.getqf ("last_nog_give_time") >= 86400 then
say_title(mob_name(20126))
say (gameforge.new_christmas._110_say)
pc.setqf ("last_nog_give_time", get_global_time())
pc.give_item2 (50216, 6)
else
say_title(mob_name(20126))
say (gameforge.new_christmas._120_say)
end
end
end
end

View File

@ -1,70 +0,0 @@
quest new_christmas_2012_sock begin
state start begin
end
state baby_dear_give begin
when 20126.chat.gameforge.new_christmas_sock._010_npcChat begin
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._020_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._030_say)
wait()
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._040_say)
wait()
say_title(mob_name(20126))
pc.give_item2_select (53007, 1)
item.set_socket (0, get_global_time() + 7200)
pc.setqf ("last_reindeer_give_time", get_global_time())
set_state(sock_take)
end
end
state sock_take begin
when 20126.chat.gameforge.new_christmas_sock._080_npcChat begin
if get_global_time() - pc.getqf ("last_reindeer_give_time") < 86400 then
say_title (mob_name (20126))
say (gameforge.new_christmas_sock._090_say)
else
say_title (mob_name (20126))
say (gameforge.new_christmas_sock._040_say)
pc.give_item2_select (53007, 1)
item.set_socket (0, get_global_time() + 7200)
pc.setqf ("last_reindeer_give_time", get_global_time())
end
end
when 20126.chat."reset flags / reindeer, socks" with is_test_server() begin
pc.setqf ("last_reindeer_give_time", 0)
pc.setqf("last_sock_cooldown_time", 0)
end
when 20126.chat.gameforge.new_christmas_sock._050_npcChat begin
if get_time() < pc.getqf("last_sock_cooldown_time") then
say_title (mob_name(20126))
say (gameforge.new_christmas_sock._100_say)
else
local n = pc.count_item(50010)
if n < 5 then
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._060_say)
wait()
else
say_title(mob_name(20126))
say (gameforge.new_christmas_sock._070_say)
wait()
pc.remove_item (50010, 5)
say_title(locale.reward)
pc.give_item2(71144)
say_reward (string.format("%s : 1%s",item_name(71144), locale.count_postfix))
if is_test_server() then
pc.setqf("last_sock_cooldown_time", get_time() + 20)
else
pc.setqf("last_sock_cooldown_time", get_time()+60*60*24) -----------------------------------24 stunden nun
end
end
end
end
end
end

View File

@ -1,470 +0,0 @@
quest spider_dungeon_3floor_boss begin
state start begin
--2, 던전 끝 시간.
when spider_end_timer.server_timer with game.get_event_flag("spider_dead"..get_channel_id()) == 0 begin --
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when spider_dead_timer.server_timer begin
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(), 0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when login or levelup or enter with pc.get_level() >= 50 begin
set_state( step1 )
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
end
state step1 begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin --경비대장에게 말을 걸어 퀘스트를 시작한다.
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._60_say)
set_state( step2 )
pc.give_item2(76019)
end
end
state step2 begin --비석에 탁본을 뜨러 가야한다.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
-----------퀘스트편지2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
local v = find_npc_by_vnum(30130)
if 0 != v then
target.vid("__TARGET__", v, mob_name(30130))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._80_say)
say("")
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._70_sendLetter begin
target.delete("__TARGET__")
say_title(pc.getname())
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._90_say)
set_state(step3)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._100_say)
end
end
state step3 begin --탁본을 떴으니 경비에게 돌아간다.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
--경비대장을 가리킨다.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._120_say)
say("")
end
--을두지를 선택하면 해당 퀘스트에 관련된 대화를 나눌 수 있다.
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
set_state(step4)
end
end
state step4 begin --을두지에게 탁본을 맡기자.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
-----------퀘스트편지2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._140_say)
say("")
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._150_say)
say("")
set_state(step5)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
end
end
state step5 begin --경비한테 편지 배달
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._170_sayTitle)
say(gameforge.spider_dungeon_3floor_boss._180_say)
say("")
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
set_state(step6) pc.give_item2(76019)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._160_say)
say("")
end
end
state step6 begin --경비는 나만 일시킨다. 을두지와 상의하자.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._190_npcChat)
-- 을두지를 가리킨다.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._190_npcChat)
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
end
--을두지를 선택하면 해당 퀘스트에 관련된 대화를 나눌 수 있다.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._230_say)
set_state(boss_ok)
end
end
state boss_ok begin -- 열쇠를 만들수 있게 된 최종상태. 이제부터 거미굴 보스룸에 입장할 수 있다.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._210_npcChat begin
if pc.count_item(30025) > 0 and pc.count_item(30056) > 0 and pc.count_item(30057) > 0 and pc.count_item(30058) > 0 and pc.count_item(30059) > 0 and pc.count_item(30326) > 0 then
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._250_say)
pc.remove_item(30025, 1)
pc.remove_item(30056, 1)
pc.remove_item(30057, 1)
pc.remove_item(30058, 1)
pc.remove_item(30059, 1)
pc.remove_item(30326, 1)
if math.random(1,2000) <= 1000 then
say(gameforge.spider_dungeon_3floor_boss._260_say)
pc.give_item2(30324, 1)
else
say(gameforge.spider_dungeon_3floor_boss._270_say)
end
else
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._280_say)
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + 300 >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- 테스트용
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.setqf("firstIn",1)
pc.setqf("retry_limit_time", starttime + 1200 + 3600 )
set_state(inLair)
pc.warp(88100,614800)
return
end
else
say(gameforge.spider_dungeon_3floor_boss._310_say) -- 테스트용
return
end
else
local remain_time = (game.get_event_flag("spider_lair_end_time_"..get_channel_id() ) - get_global_time()) / 60
if remain_time < 0 then
say(gameforge.spider_dungeon_3floor_boss._410_say)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
return
end
say(gameforge.spider_dungeon_3floor_boss._320_say)
--- here we should change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._330_say, math.ceil(remain_time)))
return
end
elseif pc.getqf("retry_limit_time") > get_global_time() then
local access_limit = (pc.getqf("retry_limit_time") - get_global_time()) / 60
say(gameforge.spider_dungeon_3floor_boss._340_say)
-- here we should also change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._350_say, math.ceil(access_limit)))
return
elseif party.is_leader() then
if false == pc.can_warp() then
say(gameforge.spider_dungeon_3floor_boss._360_say)
return
end
if pc.count_item(30324) > 0 then
say(gameforge.spider_dungeon_3floor_boss._370_say)
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
set_state(inLair)
pc.remove_item(30324, 1)
mob.spawn(2094,369,551,0,0)
--값 설정.
game.set_event_flag("spider_lair_ongoing_"..get_channel_id() , 1)
game.set_event_flag("spider_lair_start_time_"..get_channel_id() , get_global_time())
game.set_event_flag("spider_lair_end_time_"..get_channel_id() , get_global_time() + 1200)
game.set_event_flag("spider_lair_leader_"..get_channel_id() , party.get_leader_pid())
pc.setqf("retry_limit_time", get_global_time() + 1200 + 3600 )
pc.setqf("firstIn",1)
server_timer("spider_end_timer", 1200 )
pc.warp(88100,614800)
end
return
else
say(gameforge.spider_dungeon_3floor_boss._380_say)
return
end
else --리더 아니다.
say(gameforge.spider_dungeon_3floor_boss._390_say)
return
end
end
end
state inLair begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --테스트용
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when login begin
-- 정상적으로 보스룸에 입장.
--if pc.getqf("firstIn") == 1 and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if get_global_time() < pc.getqf("retry_limit_time") - 3600 and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
pc.setqf("firstIn",0)
elseif pc.getx() >= 827 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 then
pc.warp(95900,571000)
pc.remove_item(30327, 1)
else -- 위에서 팅겨낸 유저가 밖에서 로그인 하게 되면, 접근 제한 시간을 셋팅해줌.
pc.remove_item(30327, 1)
set_state( boss_ok )
local limit = pc.getqf("retry_limit_time")
if limit > ( get_global_time() + 3600 ) then
limit = ( get_global_time() + 3600 )
end
pc.setqf("retry_limit_time", limit )
local duration = limit - get_global_time()
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + 300 >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- 테스트용
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.warp(88100,614800)
return
end
end
end
end
end
when 2092.kill begin --대왕거미 죽임
server_timer("spider_dead_timer", 180)
game.set_event_flag("spider_dead"..get_channel_id(), 1)
notice_multiline(gameforge.spider_dungeon_3floor_boss._400_say,notice_in_map)
end
when 2095.kill begin --거미알 죽임
local kingVid = game.get_event_flag("king_vid")
local remain_egg = game.get_event_flag("remain_egg"..get_channel_id())
notice_multiline(gameforge.spider_dungeon_3floor_boss._420_notice,notice_in_map)
if remain_egg > 0 then
remain_egg = remain_egg - 1
game.set_event_flag("remain_egg"..get_channel_id(), remain_egg)
end
--거미의 공격력 보정
npc.set_vid_attack_mul(kingVid, 10/(remain_egg + 1))
--거미가 받는 피해량 보정
npc.set_vid_damage_mul(kingVid, 10/(remain_egg + 1))
end
-- 2012.4.5 이상현 리젠위치 수정
when 30327.use with pc.getx() >= 827 and pc.get_map_index() == 217 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 begin
--say("맵번호 : "..pc.get_map_index())
pc.remove_item(30327, 1)
i = mob.spawn(2095,400,566,0,0)
mob.spawn(2095,400,594,0,0)
mob.spawn(2095,362,600,0,0)
mob.spawn(2095,337,599,0,0)
mob.spawn(2095,335,581,0,0)
mob.spawn(2095,344,562,0,0)
mob.spawn(2095,364,588,0,0)
mob.spawn(2095,379,562,0,0)
mob.spawn(2095,368,525,0,0)
local kingVid = mob.spawn(2092,367,588,0,0)
game.set_event_flag("king_vid",kingVid)
--game.set_event_flag("remain_egg",9)
game.set_event_flag("remain_egg"..get_channel_id(), 9)
end
end
end

View File

@ -1,158 +0,0 @@
quest test_att_resist begin
state start begin
when 20001.chat."ATT_TEST : ITEM - BASIC" with is_test_server() begin
say("Test items for basic")
say("Check damage with these")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
pc.give_item2_select(item_helmet)
pc.give_item2_select(item_bracelet)
end
when 20001.chat."ATT_TEST : ITEM - FIRE" with is_test_server() begin
say("Test items for Fire resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 35, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 35, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 35, 15)
end
when 20001.chat."ATT_TEST : ITEM - ELEC" with is_test_server() begin
say("Test items for ELEC resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 36, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 36, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 36, 15)
end
when 20001.chat."ATT_TEST : ITEM - WIND" with is_test_server() begin
say("Test items for WIND resist")
say("Use items and Type /state to check resist stat")
local item_armor
local item_helmet
local item_bracelet
local job = pc.get_job()
if job == 0 then -- WARRIOR
item_armor = 11299
item_helmet = 12249
item_bracelet = 14109
elseif job==1 then -- ASSASSIN
item_armor = 11499
item_helmet = 12389
item_bracelet = 14109
elseif job==2 then -- SURA
item_armor = 11699
item_helmet = 12529
item_bracelet = 14109
elseif job==3 then -- SHAMAN
item_armor = 11899
item_helmet = 12669
item_bracelet = 14109
end
pc.give_item2_select(item_armor)
item.set_value(0, 38, 15)
pc.give_item2_select(item_helmet)
item.set_value(0, 38, 15)
pc.give_item2_select(item_bracelet)
item.set_value(0, 38, 15)
end
when 20001.chat."ATT_TEST : MOB - FIRE" with is_test_server() begin
say("spawn FIRE monster")
say("check damage with basic and resist armors")
mob.spawn(2201, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
when 20001.chat."ATT_TEST : MOB - ELEC" with is_test_server() begin
say("spawn ELEC monster")
say("check damage with basic and resist armors")
mob.spawn(2401, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
when 20001.chat."ATT_TEST : MOB - WIND" with is_test_server() begin
say("spawn WIND monster")
say("check damage with basic and resist armors")
mob.spawn(777, pc.get_local_x(), pc.get_local_y(),0,1,1)
end
end
end

View File

@ -1,23 +0,0 @@
#!/usr/local/bin/python
import pre_qc
import os
import sys
os.system('rm -rf object')
os.system('mkdir object')
#os.system('rm -rf pre_qc')
os.system('mkdir pre_qc')
os.system('chgrp quest object')
for line in file('locale_list'):
r = pre_qc.run (line)
if r == True:
filename = 'pre_qc/'+line
else:
filename = line
if os.system('./qc '+filename):
print 'Error occured on compile ' + line
os.system('chmod -R 770 object')
import sys
sys.exit(-1)
os.system('chmod -R 770 object')

View File

@ -1,8 +0,0 @@
quest test begin
state start begin
when 20355.chat."bbbb" begin
setskin(NOWINDOW)
say_show_item(90013)
end
end
end

View File

@ -15,8 +15,8 @@ include_directories("include")
add_library(${PROJECT_NAME} STATIC ${SOURCES})
# Find dependencies
find_package(libmysql REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE ${MYSQL_LIBRARIES})
find_package(unofficial-libmysql REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::libmysql::libmysql)
find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

View File

@ -13,6 +13,7 @@ include_directories(src)
find_package(Boost REQUIRED)
add_executable(${PROJECT_NAME} ${sources})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qc")
# Link dependencies if found
if (Boost_FOUND)