SigFiesta/LuaScript/PetSystem/PetBaseIdleActionFunc.lua

1296 lines
49 KiB
Lua
Raw Permalink Normal View History

2023-06-26 04:40:53 -07:00
function PetBaseExecIdleAction( PetMem, nStepOffset, tStepInfo, nRunSpeedRate )
cExecCheck( "PetBaseExecIdleAction" )
if PetMem == nil
then
ErrorLog( "PetBaseExecIdleAction::PetMem is nil" )
return false
end
if type( nStepOffset ) ~= "number"
then
ErrorLog( "PetBaseExecIdleAction::nStepOffset is not number" )
return false
end
if type( tStepInfo ) ~= "table"
then
ErrorLog( "PetBaseExecIdleAction::tStepInfo is not table" )
return false
end
if type( nRunSpeedRate ) ~= "number"
then
ErrorLog( "PetBaseExecIdleAction::nRunSpeedRate is not number" )
return false
end
local nHandle = PetMem["nHandle"]
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
local tCenterCoord = PetMem["PetInfo"]["Coord"]["Center"]
local tStepHeader = PetSystem_tIdleActionData["tHeader"]
-- <20>ش<EFBFBD> <20>ܰ谡 <20><>ȿ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] - nStepOffset <= #tStepInfo
then
local tCurStep = tStepInfo[ PetMem["PetInfo"]["nIdleStep"] - nStepOffset ]
local nStepType = tCurStep[ tStepHeader["nStepType"] ]
local nNextStepCondType = tCurStep[ tStepHeader["nNextStepCondType"] ]
-- <20><> <20><><EFBFBD><EFBFBD> Ÿ<>Ժ<EFBFBD> <20>ൿ ( <20><> <20>ܰ<EFBFBD><DCB0><EFBFBD><31><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> )
if PetMem["PetInfo"]["bCurIdleStepActionDone"] ~= true
then
if nStepType == PISAT_MOVE -----------------------------------------------------------------------------------------------------------PISAT_MOVE
then
local nTargetX = tCurStep[ tStepHeader["nX"] ] + tCenterCoord["x"]
local nTargetY = tCurStep[ tStepHeader["nY"] ] + tCenterCoord["y"]
cRunTo( nHandle, nTargetX, nTargetY, nRunSpeedRate )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = nTargetX
PetMem["PetInfo"]["Coord"]["Next"]["y"] = nTargetY
PetMem["PetInfo"]["bCurIdleStepActionDone"] = true
CheckLog( "PetBaseExecIdleAction::nStepType == PISAT_MOVE" )
DebugLog( "PetBaseExecIdleAction::nStepType == PISAT_MOVE" )
elseif nStepType == PISAT_ROTATION -----------------------------------------------------------------------------------------------------------PISAT_ROTATION
then
local nCurDirect = cGetDirect( nHandle );
if nCurDirect ~= nil
then
local nDirect360 = tCurStep[ tStepHeader["nDir"] ] + nCurDirect
-- 0~359 <20><><EFBFBD>߱<EFBFBD>
if nDirect360 >= 360
then
nDirect360 = nDirect360 - 360
end
if nDirect360 < 0
then
nDirect360 = nDirect360 + 360
end
-- 0~179 <20><><EFBFBD>߱<EFBFBD>
local nDirect180 = nDirect360 / 2
cSetObjectDirect( nHandle, nDirect180 )
end
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
PetMem["PetInfo"]["bCurIdleStepActionDone"] = true
CheckLog( "PetBaseExecIdleAction::nStepType == PISAT_ROTATION" )
DebugLog( "PetBaseExecIdleAction::nStepType == PISAT_ROTATION" )
elseif nStepType == PISAT_ATTACK -----------------------------------------------------------------------------------------------------------PISAT_ATTACK
then
-- <20>ִϸ<D6B4><CFB8>̼<EFBFBD><CCBC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־ <20>̺<EFBFBD>Ʈ <20>ڵ带 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><>
if cActByEventCode( nHandle, PetSystem_ActionEventCode["Attack"] ) == nil
then
ErrorLog( "cActByEventCode failed ["..nHandle.."]'s Attack" )
end
PetMem["PetInfo"]["bCurIdleStepActionDone"] = true
CheckLog( "PetBaseExecIdleAction::nStepType == PISAT_ATTACK" )
DebugLog( "PetBaseExecIdleAction::nStepType == PISAT_ATTACK" )
elseif nStepType == PISAT_DANCE
then
if cActByEventCode( nHandle, PetSystem_ActionEventCode["Dance"] ) == nil
then
ErrorLog( "cActByEventCode failed ["..nHandle.."]'s Dance" )
end
PetMem["PetInfo"]["bCurIdleStepActionDone"] = true
else
-- <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
ErrorLog( "PetBaseExecIdleAction::Please Check PetBaseActionData : nStepType Column" )
end
end
-- <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǻ<EFBFBD> <20>ൿ
if nNextStepCondType == PNIST_DISTANCE -----------------------------------------------------------------------------------------------------------PNIST_DISTANCE
then
local nDistanceSquare = cDistanceSquar( tPetCoord["x"], tPetCoord["y"], PetMem["PetInfo"]["Coord"]["Next"]["x"], PetMem["PetInfo"]["Coord"]["Next"]["y"] )
local nDistanceCond = tCurStep[ tStepHeader["nNextStepDistance"] ]
local nDistanceSquareCond = GetSquare( nDistanceCond )
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ( nDistanceSquare <= nDistanceSquareCond )
then
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleStep"] + 1
if PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"]
then
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleStep"] - #tStepInfo
end
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
PetMem["PetInfo"]["bCurIdleStepActionDone"] = false
end
DebugLog( "PetBaseExecIdleAction::nNextStepCondType == PNIST_DISTANCE" )
elseif nNextStepCondType == PNIST_TIME -----------------------------------------------------------------------------------------------------------PNIST_TIME
then
local nTimeCond = tCurStep[ tStepHeader["dNextStepTime"] ]
-- <20><> <20><><EFBFBD><EFBFBD> ù <20><><EFBFBD>Խ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["dNextIdleStepTime"] == PetMem["InitialSec"]
then
PetMem["PetInfo"]["dNextIdleStepTime"] = PetMem["CurSec"] + nTimeCond
end
-- <20>ð<EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["dNextIdleStepTime"] < PetMem["CurSec"]
then
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleStep"] + 1
if PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"]
then
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleStep"] - #tStepInfo
end
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
PetMem["PetInfo"]["bCurIdleStepActionDone"] = false
-- üũ <20>ð<EFBFBD> <20>ʱ<EFBFBD>ȭ
PetMem["PetInfo"]["dNextIdleStepTime"] = PetMem["InitialSec"]
end
DebugLog( "PetBaseExecIdleAction::nNextStepCondType == PNIST_TIME" )
elseif nNextStepCondType == PNIST_END -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-----------------------------------------------------------------------------------------------------------PNIST_END
then
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
DebugLog( "PetBaseExecIdleAction::nNextStepCondType == PNIST_END" )
else
-- <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
ErrorLog( "PetBaseExecIdleAction::Please Check PetBaseActionData : nNextStepCondType Column" )
end
return true
else
ErrorLog( "PetBaseExecIdleAction::PetMem[\"PetInfo\"][\"nIdleStep\"] is too big" )
return false
end
end
function PetBaseIdleAction( PetMem, tPetIdleActRecord )
cExecCheck( "PetBaseIdleAction" )
if PetMem == nil
then
DebugLog( "PetBaseIdleAction::PetMem is nil" )
return false
end
local nHandle = PetMem["PetInfo"]["nHandle"]
local nMasterHandle = PetMem["MasterInfo"]["nHandle"]
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local tMasterLastCoord = PetMem["MasterInfo"]["Coord"]["Last"]
if tPetIdleActRecord == nil
then
ErrorLog( "PetBaseIdleAction::tPetIdleActRecord == nil" )
return false
end
-- <20>׼<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local sAIType = tPetIdleActRecord[ 1 ]
if sAIType == "none"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_NONE
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_NONE:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "follow"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_FOLLOW
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "revolution"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_REVOLUTION
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "dance"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_DANCE
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DANCE:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "attack"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_ATTACK
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "roaming"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_ROAMING
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROAMING:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "rotation"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_ROTATION
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROTATION:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "talk"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_TALK
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:Selected - nHandle( "..nHandle.." )" )
elseif sAIType == "die"
then
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_DIE
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DIE:Selected - nHandle( "..nHandle.." )" )
else
PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_INVALID
ErrorLog( "PetBaseIdleAction::sAIType is invalid" )
return false
end
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- PetMem["PetInfo"]["PetMode"]["nIdleActionMode"] = PIAM_ROAMING
-- DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROAMING:Forced - nHandle( "..nHandle.." )" )
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
local nIdleActionMode = PetMem["PetInfo"]["PetMode"]["nIdleActionMode"]
local sScriptMessageIndex = tPetIdleActRecord[ 2 ]
local sHairEffect = tPetIdleActRecord[ 3 ]
local sSoundFile = tPetIdleActRecord[ 4 ]
if sScriptMessageIndex == nil
then
ErrorLog( "PetBaseIdleAction::sScriptMessageIndex is invalid" )
return false
end
if sHairEffect == nil
then
ErrorLog( "PetBaseIdleAction::sHairEffect is invalid" )
return false
end
if sSoundFile == nil
then
ErrorLog( "PetBaseIdleAction::sSoundFile is invalid" )
return false
end
-- <20><><EFBFBD>Ϻ<EFBFBD> <20>ൿ
if nIdleActionMode == PIAM_NONE -----------------------------------------------------------------------------------------------------------PIAM_NONE
then
-- <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 1
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
elseif nIdleActionMode == PIAM_FOLLOW -----------------------------------------------------------------------------------------------------------PIAM_FOLLOW
then
-- 5<>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD> <20>Ÿ<EFBFBD> 500<30><30><EFBFBD><EFBFBD>
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 200<30>̳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, 30<33>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 80 <20>̻<EFBFBD> <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>)
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 3
-- <20>ֺ<EFBFBD> <20><> Ž<><C5BD>
local nTargetPetHandle = -1
local tHandleList = { cNearObjectList( nHandle, PetSystem_nDistanceIdleFollowingPetSelectMax, ObjectType["Pet"] ) }
if #tHandleList > 0
then
nTargetPetHandle = tHandleList[ cRandomInt( 1, #tHandleList ) ]
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ٴϱ<D9B4> <20>׼<EFBFBD><D7BC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EABFA1> <20><><EFBFBD><EFBFBD> <20><>
for i, nCurPetHandle in pairs( tHandleList )
do
-- <20><> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if nCurPetHandle ~= nHandle
then
cPet_ChangeMind( nCurPetHandle, "follow" );
end
end
end
-- <20><><EFBFBD>õ<EFBFBD> <20><> <20><>ġ Ž<><C5BD>
local tTargetPetCoord = {}
tTargetPetCoord["x"], tTargetPetCoord["y"] = cObjectLocate( nTargetPetHandle )
if tTargetPetCoord["x"] == nil
then
nTargetPetHandle = -1
end
PetMem["TargetInfo"]["nHandle"] = nTargetPetHandle
PetMem["TargetInfo"]["Coord"]["Cur"]["x"] = tTargetPetCoord["x"]
PetMem["TargetInfo"]["Coord"]["Cur"]["y"] = tTargetPetCoord["y"]
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["TargetInfo"]["nHandle"] >= 0
then
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_FOLLOW::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
local nDistanceSquarePet = cDistanceSquar( nHandle, PetMem["TargetInfo"]["nHandle"] )
local nDistanceSquareMaster = cDistanceSquar( nHandle, nMasterHandle )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquarePet < PS_nDS_IdleFollowingPetStop
then
-- <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:STOP - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 2
elseif nDistanceSquareMaster < PS_nDS_IdleFollowingPetStayMax
then
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--cRunTo( nHandle, PetMem["TargetInfo"]["Coord"]["Cur"]["x"], PetMem["TargetInfo"]["Coord"]["Cur"]["y"], PetSystem_nSpeedRateFollowingMil )
cFollow( nHandle, PetMem["TargetInfo"]["nHandle"], PetFollowGap, PetFollowStop )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = PetMem["TargetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = PetMem["TargetInfo"]["Coord"]["Cur"]["y"]
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:START - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 2
else
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>Ÿ<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:CANCEL by Distance - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleFollow <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
else
-- <20><><EFBFBD><EFBFBD> <20><>ȿ - <20>ൿ <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_FOLLOW:CANCEL by No Target Pet - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
elseif nIdleActionMode == PIAM_REVOLUTION -----------------------------------------------------------------------------------------------------------PIAM_REVOLUTION
then
-- 10<31>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- 200<30>̳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, 30<33>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 30 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 3 + #PetSystem_tIdleActionData["tData"]["tRevolution"]
-- <20>ֺ<EFBFBD> <20><> Ž<><C5BD>
local nTargetPetHandle = -1
local tHandleList = { cNearObjectList( nHandle, PetSystem_nDistanceIdleRevolutionPetSelectMax, ObjectType["Pet"] ) }
if #tHandleList > 0
then
nTargetPetHandle = tHandleList[ cRandomInt( 1, #tHandleList ) ]
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EABFA1> <20><><EFBFBD><EFBFBD> <20><>
for i, nCurPetHandle in pairs( tHandleList )
do
-- <20><> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if nCurPetHandle ~= nHandle
then
cPet_ChangeMind( nCurPetHandle, "revolution" );
end
end
end
-- <20><><EFBFBD>õ<EFBFBD> <20><> <20><>ġ Ž<><C5BD>
local tTargetPetCoord = {}
tTargetPetCoord["x"], tTargetPetCoord["y"] = cObjectLocate( nTargetPetHandle )
if tTargetPetCoord["x"] == nil
then
nTargetPetHandle = -1
end
PetMem["TargetInfo"]["nHandle"] = nTargetPetHandle
PetMem["TargetInfo"]["Coord"]["Cur"]["x"] = tTargetPetCoord["x"]
PetMem["TargetInfo"]["Coord"]["Cur"]["y"] = tTargetPetCoord["y"]
-- <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD> <20><>ǥ <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Coord"]["Center"]["x"] = PetMem["TargetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Center"]["y"] = PetMem["TargetInfo"]["Coord"]["Cur"]["y"]
local nTargetPetMasterHandle = cGetMaster( PetMem["TargetInfo"]["nHandle"] )
if nTargetPetMasterHandle == nil
then
nTargetPetMasterHandle = -1
end
PetMem["TargetMasterInfo"]["nHandle"] = nTargetPetMasterHandle
local nTargetMasterX, nTargetMasterY = cObjectLocate( PetMem["TargetMasterInfo"]["nHandle"] )
if nTargetMasterX == nil
then
nTargetPetMasterHandle = -1
end
PetMem["TargetMasterInfo"]["Coord"]["Cur"]["x"] = nTargetMasterX
PetMem["TargetMasterInfo"]["Coord"]["Cur"]["y"] = nTargetMasterY
PetMem["TargetMasterInfo"]["Coord"]["Last"]["x"] = nTargetMasterX
PetMem["TargetMasterInfo"]["Coord"]["Last"]["y"] = nTargetMasterY
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><>ȿ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["TargetInfo"]["nHandle"] >= 0 and PetMem["TargetMasterInfo"]["nHandle"] >= 0
then
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_REVOLUTION::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
-- ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local nDistanceSquare = cDistanceSquar( nHandle, PetMem["TargetInfo"]["nHandle"] )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare > PS_nDS_IdleRevolutionPetStart
then
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( PetMem["TargetInfo"]["Coord"]["Cur"]["x"], PetMem["TargetInfo"]["Coord"]["Cur"]["y"], PetSystem_nDistanceIdleRevolutionPetStop )
cRunTo( nHandle, tTargetCoord["x"], tTargetCoord["y"], PetSystem_nSpeedRateFollowingMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tTargetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tTargetCoord["y"]
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:START Follow - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
PetMem["PetInfo"]["nIdleStep"] = 2
elseif PetMem["PetInfo"]["nIdleStep"] == 2
then
-- <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD>
local nDistanceSquare = cDistanceSquar( PetMem["PetInfo"]["Coord"]["Cur"]["x"], PetMem["PetInfo"]["Coord"]["Cur"]["y"], PetMem["PetInfo"]["Coord"]["Next"]["x"], PetMem["PetInfo"]["Coord"]["Next"]["y"] )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare <= PS_nDS_IdleRevolutionPetStop
then
PetMem["PetInfo"]["nIdleStep"] = 3
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:STOP Follow - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
elseif PetMem["PetInfo"]["nIdleStep"] > 2 and PetMem["PetInfo"]["nIdleStep"] < PetMem["PetInfo"]["nIdleEndStep"]
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 ~ 10
local nStepOffset = 2
local tStepInfo = PetSystem_tIdleActionData["tData"]["tRevolution"]
if PetBaseExecIdleAction( PetMem, nStepOffset, tStepInfo, PetSystem_nSpeedRateFollowingMil ) ~= true
then
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:PetBaseExecIdleAction Failed - nHandle( "..nHandle.." )" )
end
cExecCheck( "PetBaseIdleAction" )
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleRevolution <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
if IsPetMasterMoved( PetMem ) == true
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:CANCEL by Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
cExecCheck( "PetBaseIdleAction" )
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
local tTargetPetMasterLastCoord = PetMem["TargetMasterInfo"]["Coord"]["Last"]
local tTargetPetMasterCurCoord = PetMem["TargetMasterInfo"]["Coord"]["Cur"]
tTargetPetMasterLastCoord["x"] = tTargetPetMasterCurCoord["x"]
tTargetPetMasterLastCoord["y"] = tTargetPetMasterCurCoord["y"]
tTargetPetMasterCurCoord["x"], tTargetPetMasterCurCoord["y"] = cObjectLocate( PetMem["TargetMasterInfo"]["nHandle"] )
if tTargetPetMasterCurCoord["x"] == nil
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:CANCEL by Cannot Find Target Pet Master - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
if tTargetPetMasterLastCoord["x"] ~= tTargetPetMasterCurCoord["x"] or tTargetPetMasterLastCoord["y"] ~= tTargetPetMasterCurCoord["y"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:CANCEL by Target Pet Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
else
-- <20><><EFBFBD><EFBFBD> <20><>ȿ - <20>ൿ <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_REVOLUTION:CANCEL by No Target Pet - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
elseif nIdleActionMode == PIAM_DANCE -----------------------------------------------------------------------------------------------------------PIAM_DANCE
then
-- 10<31>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>ڸ<EFBFBD> <20>µ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>ڸ<EFBFBD> 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD> 1<>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD>.. 0<><30> 15<31><35> 30<33><30> 45<34><35> 60<36><30> 75<37><35> 90<39><30> 105<30><35> 120<32><30> 135<33><35> 150<35><30> 165<36><35> 0<><30>... <20>ݺ<EFBFBD>
-- <20><>ǥ<EFBFBD>׸<EFBFBD><D7B8><EFBFBD> : <20>Ÿ<EFBFBD> 100 <20>̳<EFBFBD> <20><>???????? <20><>ǥ 5<><35> <20><><EFBFBD><EFBFBD> <20><>ó 30 <20>̳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><>ġ <20><>ȯ
-- <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>׸<EFBFBD><D7B8><EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><><EFBFBD>ۺ<EFBFBD><DBBA><EFBFBD> : <20>ݰ<EFBFBD> 50 <20>̳<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1<>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD> 1<>ʿ<EFBFBD> 20% <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>׸<EFBFBD><D7B8><EFBFBD> <20>׳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> : <20><><EFBFBD><EFBFBD> 1<>ʿ<EFBFBD> 33.3% <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["nCurDanceNo"] = cRandomInt( 1, #PetSystem_tIdleActionData["tData"]["ttDance"] )
DebugLog( "PetBaseIdleAction::PIAM_DANCE::nCurDanceNo = "..PetMem["PetInfo"]["nCurDanceNo"].." has been selected" )
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 2 + #PetSystem_tIdleActionData["tData"]["ttDance"][ PetMem["PetInfo"]["nCurDanceNo"] ]
PetMem["PetInfo"]["Time"]["DanceStartTime"] = PetMem["CurSec"]
-- <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD> <20><>ǥ <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Coord"]["Center"]["x"] = PetMem["PetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Center"]["y"] = PetMem["PetInfo"]["Coord"]["Cur"]["y"]
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_DANCE::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["nIdleStep"] = 2
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DANCE:START Dance - nHandle( "..nHandle.." )" )
elseif PetMem["PetInfo"]["nIdleStep"] > 1 and PetMem["PetInfo"]["nIdleStep"] < PetMem["PetInfo"]["nIdleEndStep"]
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 2 ~
local nStepOffset = 1
local tStepInfo = PetSystem_tIdleActionData["tData"]["ttDance"][ PetMem["PetInfo"]["nCurDanceNo"] ]
if PetBaseExecIdleAction( PetMem, nStepOffset, tStepInfo, PetSystem_nSpeedRateFollowingMil ) ~= true
then
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DANCE:PetBaseExecIdleAction Failed - nHandle( "..nHandle.." )" )
end
cExecCheck( "PetBaseIdleAction" )
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleDance <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DANCE:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
-- <20><><EFBFBD>ѽð<D1BD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EABFA1> <20><><EFBFBD><EFBFBD> <20><>
local tHandleList = { cNearObjectList( nHandle, PetSystem_nDistanceIdleMindChangePetSelectMax, ObjectType["Pet"] ) }
if #tHandleList > 0
then
for i, nCurPetHandle in pairs( tHandleList )
do
-- <20><> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if nCurPetHandle ~= nHandle
then
cPet_ChangeMind( nCurPetHandle, "dance" );
end
end
end
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
if IsPetMasterMoved( PetMem ) == true
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DANCE:CANCEL by Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
cExecCheck( "PetBaseIdleAction" )
elseif nIdleActionMode == PIAM_ATTACK -----------------------------------------------------------------------------------------------------------PIAM_ATTACK
then
-- 1<><31>ƾ<EFBFBD><C6BE> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> : 200<30>Ÿ<EFBFBD> <20>̳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȯ, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 3 + #PetSystem_tIdleActionData["tData"]["tAttack"]
-- <20>ֺ<EFBFBD> <20><> Ž<><C5BD>
local nTargetPetHandle = -1
local tHandleList = { cNearObjectList( nHandle, PetSystem_nDistanceIdleAttackPetSelectMax, ObjectType["Pet"] ) }
if #tHandleList > 0
then
nTargetPetHandle = tHandleList[ cRandomInt( 1, #tHandleList ) ]
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EABFA1> <20><><EFBFBD><EFBFBD> <20><>
for i, nCurPetHandle in pairs( tHandleList )
do
-- <20><> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if nCurPetHandle ~= nHandle
then
cPet_ChangeMind( nCurPetHandle, "attack" );
end
end
end
-- <20><><EFBFBD>õ<EFBFBD> <20><> <20><>ġ Ž<><C5BD>
local tTargetPetCoord = {}
tTargetPetCoord["x"], tTargetPetCoord["y"] = cObjectLocate( nTargetPetHandle )
if tTargetPetCoord["x"] == nil
then
nTargetPetHandle = -1
end
PetMem["TargetInfo"]["nHandle"] = nTargetPetHandle
PetMem["TargetInfo"]["Coord"]["Cur"]["x"] = tTargetPetCoord["x"]
PetMem["TargetInfo"]["Coord"]["Cur"]["y"] = tTargetPetCoord["y"]
-- <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD> <20><>ǥ <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Coord"]["Center"]["x"] = tTargetPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Center"]["y"] = tTargetPetCoord["y"]
local nTargetPetMasterHandle = cGetMaster( PetMem["TargetInfo"]["nHandle"] )
if nTargetPetMasterHandle == nil
then
nTargetPetMasterHandle = -1
end
PetMem["TargetMasterInfo"]["nHandle"] = nTargetPetMasterHandle
local nTargetMasterX, nTargetMasterY = cObjectLocate( PetMem["TargetMasterInfo"]["nHandle"] )
if nTargetMasterX == nil
then
nTargetPetMasterHandle = -1
end
PetMem["TargetMasterInfo"]["Coord"]["Cur"]["x"] = nTargetMasterX
PetMem["TargetMasterInfo"]["Coord"]["Cur"]["y"] = nTargetMasterY
PetMem["TargetMasterInfo"]["Coord"]["Last"]["x"] = nTargetMasterX
PetMem["TargetMasterInfo"]["Coord"]["Last"]["y"] = nTargetMasterY
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><>ȿ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["TargetInfo"]["nHandle"] >= 0 and PetMem["TargetMasterInfo"]["nHandle"] >= 0
then
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_ATTACK::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
local nDir4 = cRandomInt( 1, 90 )
local nGoalX, nGoalY = cGetAroundCoord( PetMem["TargetInfo"]["nHandle"], nDir4*4, PetFollowGap )
cRunTo( nHandle, nGoalX, nGoalY, PetSystem_nSpeedRateFollowingMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = PetMem["TargetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = PetMem["TargetInfo"]["Coord"]["Cur"]["y"]
PetMem["PetInfo"]["nIdleStep"] = 2
elseif PetMem["PetInfo"]["nIdleStep"] == 2
then
local nDistanceSquarePet = cDistanceSquar( nHandle, PetMem["TargetInfo"]["nHandle"] )
local nDistanceSquareMaster = cDistanceSquar( nHandle, nMasterHandle )
if nDistanceSquarePet < PS_nDS_IdleFollowingPetStop
then
-- <20>ٸ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȯ
local tTargetCoord = PetMem["TargetInfo"]["Coord"]["Cur"]
cSetObjectDirect( nHandle, tTargetCoord["x"], tTargetCoord["y"] )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
PetMem["PetInfo"]["nIdleStep"] = 3
elseif nDistanceSquareMaster < PS_nDS_IdleFollowingPetStayMax
then
PetMem["PetInfo"]["Coord"]["Next"]["x"] = PetMem["TargetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = PetMem["TargetInfo"]["Coord"]["Cur"]["y"]
else
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
elseif PetMem["PetInfo"]["nIdleStep"] > 2 and PetMem["PetInfo"]["nIdleStep"] < PetMem["PetInfo"]["nIdleEndStep"]
then
-- <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD> 3 ~ 5
local nStepOffset = 2
local tStepInfo = PetSystem_tIdleActionData["tData"]["tAttack"]
if PetBaseExecIdleAction( PetMem, nStepOffset, tStepInfo, 0 ) ~= true
then
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:PetBaseExecIdleAction Failed - nHandle( "..nHandle.." )" )
end
cExecCheck( "PetBaseIdleAction" )
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
----------------------------------------------------------------------
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
if IsPetMasterMoved( PetMem ) == true
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:CANCEL by Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
cExecCheck( "PetBaseIdleAction" )
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
local tTargetPetMasterLastCoord = PetMem["TargetMasterInfo"]["Coord"]["Last"]
local tTargetPetMasterCurCoord = PetMem["TargetMasterInfo"]["Coord"]["Cur"]
tTargetPetMasterLastCoord["x"] = tTargetPetMasterCurCoord["x"]
tTargetPetMasterLastCoord["y"] = tTargetPetMasterCurCoord["y"]
tTargetPetMasterCurCoord["x"], tTargetPetMasterCurCoord["y"] = cObjectLocate( PetMem["TargetMasterInfo"]["nHandle"] )
if tTargetPetMasterCurCoord["x"] == nil
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>?
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:CANCEL by Cannot Find Target Pet Master - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
if tTargetPetMasterLastCoord["x"] ~= tTargetPetMasterCurCoord["x"] or tTargetPetMasterLastCoord["y"] ~= tTargetPetMasterCurCoord["y"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:CANCEL by Target Pet Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
else
-- <20><><EFBFBD><EFBFBD> <20><>ȿ - <20>ൿ <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ATTACK:CANCEL by No Target Pet - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
elseif nIdleActionMode == PIAM_ROAMING -----------------------------------------------------------------------------------------------------------PIAM_ROAMING
then
-- <20>׳<EFBFBD> ó<><C3B3>
-- 20<32>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20>׳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 2
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_ROAMING::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
-- <20>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD>
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( tPetCoord["x"], tPetCoord["y"], PetSystem_nDistanceIdleRoamingMax )
if tTargetCoord["x"] ~= nil
then
cRunTo( nHandle, tTargetCoord["x"], tTargetCoord["y"], PetSystem_nSpeedRateFollowingMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tTargetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tTargetCoord["y"]
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROAMING:START Roaming - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 1
end
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleRoaming <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROAMING:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
if IsPetMasterMoved( PetMem ) == true
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROAMING:CANCEL by Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
cExecCheck( "PetBaseIdleAction" )
elseif nIdleActionMode == PIAM_ROTATION -----------------------------------------------------------------------------------------------------------PIAM_ROTATION
then
-- 10<31>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD><EFBFBD> : 20%<25><> 1<>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD>.. 0<><30>, 10<31><30>, 20<32><30>, 30<33><30>, 40<34><30>, ... , 350<35><30>, 0<><30>... <20>ݺ<EFBFBD>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 2 + #PetSystem_tIdleActionData["tData"]["tRotation"]
-- ȸ<><C8B8> <20>߽<EFBFBD> <20><>ǥ <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Coord"]["Center"]["x"] = PetMem["PetInfo"]["Coord"]["Cur"]["x"]
PetMem["PetInfo"]["Coord"]["Center"]["y"] = PetMem["PetInfo"]["Coord"]["Cur"]["y"]
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_ROTATION::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROTATION:START Pattern- nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 2
elseif PetMem["PetInfo"]["nIdleStep"] > 1 and PetMem["PetInfo"]["nIdleStep"] < PetMem["PetInfo"]["nIdleEndStep"]
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 ~ 41
local nStepOffset = 1
local tStepInfo = PetSystem_tIdleActionData["tData"]["tRotation"]
if PetBaseExecIdleAction( PetMem, nStepOffset, tStepInfo, PetSystem_nSpeedRateFollowingMil ) ~= true
then
ErrorLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROTATION:PetBaseExecIdleAction Failed - nHandle( "..nHandle.." )" )
end
cExecCheck( "PetBaseIdleAction" )
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleRotation <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROTATION:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
if IsPetMasterMoved( PetMem ) == true
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_ROTATION:CANCEL by Master Move - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
cExecCheck( "PetBaseIdleAction" )
elseif nIdleActionMode == PIAM_TALK -----------------------------------------------------------------------------------------------------------PIAM_TALK
then
-- <20>׳<EFBFBD> ó<><C3B3>
-- 1ȸ : <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ٰ<EFBFBD><D9B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϱ<EFBFBD> : 200<30>Ÿ<EFBFBD> <20>̳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><EFBFBD><EABFA1> 30<33>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȯ <20><> <20><>, <20><><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> 300<30>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 5
-- <20>ֺ<EFBFBD> <20><> Ž<><C5BD>
local nTargetPetHandle = -1
local tHandleList = { cNearObjectList( nHandle, PetSystem_nDistanceIdleTalkPetSelectMax, ObjectType["Pet"] ) }
if #tHandleList > 0
then
nTargetPetHandle = tHandleList[ cRandomInt( 1, #tHandleList ) ]
-- <20>ֺ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EABFA1> <20><><EFBFBD><EFBFBD> <20><>
for i, nCurPetHandle in pairs( tHandleList )
do
-- <20><> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if nCurPetHandle ~= nHandle
then
cPet_ChangeMind( nCurPetHandle, "talk" );
end
end
end
-- <20><><EFBFBD>õ<EFBFBD> <20><> <20><>ġ Ž<><C5BD>
local tTargetPetCoord = {}
tTargetPetCoord["x"], tTargetPetCoord["y"] = cObjectLocate( nTargetPetHandle )
if tTargetPetCoord["x"] == nil
then
nTargetPetHandle = -1
end
PetMem["TargetInfo"]["nHandle"] = nTargetPetHandle
PetMem["TargetInfo"]["Coord"]["Cur"]["x"] = tTargetPetCoord["x"]
PetMem["TargetInfo"]["Coord"]["Cur"]["y"] = tTargetPetCoord["y"]
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
if PetMem["TargetInfo"]["nHandle"] >= 0
then
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_TALK::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
-- ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local nDistanceSquare = cDistanceSquar( nHandle, PetMem["TargetInfo"]["nHandle"] )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare > PS_nDS_IdleTalkPetStart
then
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( PetMem["TargetInfo"]["Coord"]["Cur"]["x"], PetMem["TargetInfo"]["Coord"]["Cur"]["y"], PetSystem_nDistanceIdleRevolutionPetStop )
cRunTo( nHandle, tTargetCoord["x"], tTargetCoord["y"], PetSystem_nSpeedRateFollowingMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tTargetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tTargetCoord["y"]
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:START Follow - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
PetMem["PetInfo"]["nIdleStep"] = 2
elseif PetMem["PetInfo"]["nIdleStep"] == 2
then
-- <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> üũ<C3BC>ϸ<EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD><EABFA1> <20>ٰ<EFBFBD><D9B0><EFBFBD>
local nDistanceSquare = cDistanceSquar( PetMem["PetInfo"]["Coord"]["Cur"]["x"], PetMem["PetInfo"]["Coord"]["Cur"]["y"], PetMem["PetInfo"]["Coord"]["Next"]["x"], PetMem["PetInfo"]["Coord"]["Next"]["y"] )
local nDistanceSquareMaster = cDistanceSquar( nHandle, nMasterHandle )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare <= PS_nDS_IdleTalkPetStop
then
PetMem["PetInfo"]["nIdleStep"] = 3
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:STOP Follow - nHandle( "..nHandle.." )" )
elseif nDistanceSquareMaster > PS_nDS_IdleTalkPetStayMax
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20>Ÿ<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:CANCEL by Distance from Master - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
elseif PetMem["PetInfo"]["nIdleStep"] == 3
then
-- <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȯ
local tTargetCoord = PetMem["TargetInfo"]["Coord"]["Cur"]
cSetObjectDirect( nHandle, tTargetCoord["x"], tTargetCoord["y"] )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:START See - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 4
elseif PetMem["PetInfo"]["nIdleStep"] == 4
then
-- <20><><EFBFBD>ϱ<EFBFBD>
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
cExecCheck( "PetBaseIdleAction" )
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:START Talk - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
else
-- <20><><EFBFBD><EFBFBD> <20><>ȿ - <20>ൿ <20><><EFBFBD><EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_TALK:CANCEL by No Target Pet - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
end
elseif nIdleActionMode == PIAM_DIE -----------------------------------------------------------------------------------------------------------PIAM_DIE
then
-- <20>׳<EFBFBD> ó<><C3B3>
-- 10<31>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD>ô
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] == PetMem["InitialSec"]
then
-- <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["CurSec"]
PetMem["PetInfo"]["nIdleStep"] = 1
PetMem["PetInfo"]["nIdleEndStep"] = 3
PetBaseScriptMessage( nHandle, sScriptMessageIndex )
PetBaseObjectEffect( nHandle, sHairEffect )
PetBaseObjectSound( nHandle, sSoundFile )
cExecCheck( "PetBaseIdleAction" )
end
-- RubyFruit 2013.11.23 <20>ӽ<EFBFBD> <20>α<EFBFBD>
DebugLog( "PetBaseIdleAction::PIAM_DIE::nIdleStep = "..PetMem["PetInfo"]["nIdleStep"] )
----------------------------------------------------------------------
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["nIdleStep"] == 1
then
-- ù <20><><EFBFBD><EFBFBD>
-- <20>ִϸ<D6B4><CFB8>̼<EFBFBD><CCBC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־ <20>̺<EFBFBD>Ʈ <20>ڵ带 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><>
if cActByEventCode( nHandle, PetSystem_ActionEventCode["Die"] ) == nil
then
ErrorLog( "cActByEventCode failed ["..nHandle.."]'s Die" )
end
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DIE:START Die animation - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = 2
elseif PetMem["PetInfo"]["nIdleStep"] == 2
then
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DIE:Not Do Anithing - nHandle( "..nHandle.." )" )
else -- PetMem["PetInfo"]["nIdleStep"] == PetMem["PetInfo"]["nIdleEndStep"] <20><> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD>̹Ƿ<CCB9> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ڷ<EFBFBD> <20>ѱ<EFBFBD>
end
-- <20>ܰ躰 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
----------------------------------------------------------------------
-- <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> üũ
if PetMem["PetInfo"]["Time"]["EnterIdleAction"] + PetSystem_nSecStayAtIdleDie <= PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ð<EFBFBD>
DebugLog( "PetBaseIdleAction::PET_IDLE_ACTION_MODE-PIAM_DIE:CANCEL by Time - nHandle( "..nHandle.." )" )
PetMem["PetInfo"]["nIdleStep"] = PetMem["PetInfo"]["nIdleEndStep"]
-- <20>׾<EFBFBD><D7BE>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Idle<6C><65> <20><><EFBFBD><EFBFBD>
cActByEventCode( nHandle, PetSystem_ActionEventCode["Idle"] )
end
else
-- logic error
ErrorLog( "PetBaseIdleAction::nIdleActionMode is invalid - logic error" )
return false
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Idle <20>ൿ<EFBFBD><E0B5BF> <20>ߴٰ<DFB4> <20>ϴ<EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̶<EFBFBD> <20>ѹ<EFBFBD> <20><> <20>Ѵ<EFBFBD>.(<28>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20>Ͱ<EFBFBD><CDB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><> <20><><EFBFBD>ִ<EFBFBD> <20><>)
if PetMem["PetInfo"]["nIdleStep"] >= PetMem["PetInfo"]["nIdleEndStep"]
then
if PetBaseInitIdleAction( PetMem ) ~= true
then
return false
end
cExecCheck( "PetBaseIdleAction" )
if PetBaseInitTarget( PetMem ) ~= true
then
return false
end
cExecCheck( "PetBaseIdleAction" )
if PetBaseInitTargetMaster( PetMem ) ~= true
then
return false
end
cExecCheck( "PetBaseIdleAction" )
-- PetMem["PetInfo"]["PetMode"]["nMasterMode"] = PMM_NONE
PetMem["PetInfo"]["PetMode"]["nActionMode"] = PAM_NONE
PetMem["PetInfo"]["Time"]["LastActIdleMode"] = PetMem["CurSec"]
local nWaitIdleActSec = cRandomInt( PetSystem_nSecMinWaitActAtIdle, PetSystem_nSecMaxWaitActAtIdle )
PetMem["PetInfo"]["Time"]["ExecIdleActMode"] = PetMem["CurSec"] + nWaitIdleActSec
return true
end
--PetMem["PetInfo"]["PetMode"]["nIdleActionMode"]
end