SigFiesta/LuaScript/PetSystem/PetBaseRoutineFunc.lua

594 lines
20 KiB
Lua
Raw Normal View History

2023-06-26 04:40:53 -07:00
function PetBaseRoutine( PetMem )
cExecCheck( "PetBaseRoutine" )
if PetMem == nil
then
DebugLog( "PetBaseRoutine::PetMem is nil" )
return ReturnAI["END"]
end
local nHandle = PetMem["PetInfo"]["nHandle"]
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cIsObjectDead( nHandle ) == 1
then
-- AI <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>
cAIScriptSet( nHandle )
-- <20>޸<EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD>
gPetAIMemory["PetBase"][ nHandle ] = nil
DebugLog( "PetBaseRoutine::Pet Has Died - nHandle( "..nHandle.." )" )
return ReturnAI["END"]
end
-- <09><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-- <09><><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> üũ( <20>ʸ<EFBFBD>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
-- <09><><EFBFBD><EFBFBD> <20>׾<EFBFBD><D7BE><EFBFBD><EFBFBD><EFBFBD> üũ ( <20><><EFBFBD><EFBFBD> üũ )
-- <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ ( <20><><EFBFBD><EFBFBD> <20><><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD> üũ )
-- <09><><EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD> <20>Ÿ<EFBFBD> üũ( <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>󰡶<EFBFBD> )
-- <09><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD> üũ
-- <09><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> üũ
local nMasterHandle = PetMem["MasterInfo"]["nHandle"]
if cIsObjectDead( nMasterHandle ) == 1
then
-- <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD>ų<EFBFBD> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>
end
local sMasterMode = cGetObjectMode( nMasterHandle );
if sMasterMode == nil
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ã<EFBFBD><C3A3> : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػڷ<D8BB> <20><><EFBFBD>ų<EFBFBD> <20><> <20>׷<EFBFBD><D7B7>Ŵϱ<C5B4>
cAIScriptSet( nHandle )
gPetAIMemory["PetBase"][ nHandle ] = nil
DebugLog( "PetBaseRoutine::cGetObjectMode Fail - nHandle( "..nHandle.." )" )
return ReturnAI["END"]
end
DebugLog( "PetBaseRoutine:: Point 1 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.." )
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
------ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ൿ <20><>ȭ <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>, Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>
local tMode = PetMem["PetInfo"]["PetMode"] -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20>׾<EFBFBD><D7BE><EFBFBD> <20><><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD> <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> AI<41><49> <20><><EFBFBD><EFBFBD> AI <20>ʱ<EFBFBD>ȭ
if tMode["nMasterMode"] == PMM_DIE and sMasterMode ~= "corpse"
then
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
tMode["nMasterMode"] = PMM_NONE
tMode["nActionMode"] = PAM_NONE
end
-- <20><><EFBFBD>̵<EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD> <20>ƴҶ<C6B4> <20><> <20><> <20>׻<EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD>ֱ<EFBFBD>
if tMode["nMasterMode"] ~= PMM_IDLE or tMode["nActionMode"] ~= PAM_IDLE_ACT
then
PetMem["PetInfo"]["Time"]["EnterIdleAction"] = PetMem["InitialSec"]
end
if sMasterMode == "linking"
then
tMode["nMasterMode"] = PMM_LINK
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_LINK - nHandle( "..nHandle.." )" )
elseif sMasterMode == "corpse"
then
if tMode["nMasterMode"] < PMM_DIE -- <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD>üũ
then
-- Die <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD> <20>̵<EFBFBD><CCB5>Ѱ<EFBFBD>ó<EFBFBD><C3B3> ǥ<><C7A5>
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
tMode["nActionMode"] = PAM_NONE
-- PupCaseDesc <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> PAI Ÿ<><C5B8><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><> Valid <20><> <20><> <20><>ũ<EFBFBD><C5A9>Ʈ <20>޼<EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD><EFBFBD><20>߻<EFBFBD><DFBB><EFBFBD>Ų<EFBFBD><C5B2>.
local tPetDieActRecord = { cPet_GetActionRecord( nHandle, "die" ) } -- { "PupAITypeString", "SM_Inx", "HairEffect", "SoundFile" }
if tPetDieActRecord ~= nil
then
if tPetDieActRecord[ 1 ] == "script"
then
if tPetDieActRecord[ 2 ] ~= "-"
then
PetBaseScriptMessage( nHandle, tPetDieActRecord[ 2 ] )
end
if tPetDieActRecord[ 3 ] ~= "-"
then
PetBaseObjectEffect( nHandle, tPetDieActRecord[ 3 ] )
end
if tPetDieActRecord[ 4 ] ~= "-"
then
PetBaseObjectSound( nHandle, tPetDieActRecord[ 4 ] )
end
cExecCheck( "PetBaseRoutine" )
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
CheckLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_DIE - nHandle( "..nHandle.." )" )
end
tMode["nMasterMode"] = PMM_DIE
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_DIE - nHandle( "..nHandle.." )" )
elseif sMasterMode == "normal" or sMasterMode == "fight" or sMasterMode == "riding" or sMasterMode == "house" or sMasterMode == "booth"
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> üũ
if cPet_IsMasterCalling( nHandle ) == true
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD>
if tMode["nMasterMode"] <= PMM_CALL -- <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD>üũ
then
-- Call <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- PupCaseDesc <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> PAI Ÿ<><C5B8><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><> Valid <20><> <20><> <20><>ũ<EFBFBD><C5A9>Ʈ <20>޼<EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD><EFBFBD><20>߻<EFBFBD><DFBB><EFBFBD>Ų<EFBFBD><C5B2>.
local tPetCallActRecord = { cPet_GetActionRecord( nHandle, "call" ) } -- { "PupAITypeString", "SM_Inx", "HairEffect", "SoundFile" }
if tPetCallActRecord ~= nil
then
if tPetCallActRecord[ 1 ] == "script"
then
if tPetCallActRecord[ 2 ] ~= "-"
then
PetBaseScriptMessage( nHandle, tPetCallActRecord[ 2 ] )
end
if tPetCallActRecord[ 3 ] ~= "-"
then
PetBaseObjectEffect( nHandle, tPetCallActRecord[ 3 ] )
end
if tPetCallActRecord[ 4 ] ~= "-"
then
PetBaseObjectSound( nHandle, tPetCallActRecord[ 4 ] )
end
cExecCheck( "PetBaseRoutine" )
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
-- <20>ϴ<EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD> <20><><EFBFBD>߱<EFBFBD> : <20><>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- <20><><EFBFBD>ڸ<EFBFBD> <20>̵<EFBFBD> <20><>û<EFBFBD><C3BB>, <20><><EFBFBD><EFBFBD><EFBFBD>ٱ⺸<D9B1><E2BAB8> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>ũ <20><><EFBFBD><20><20><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5>Ѱ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>DZ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׳<EFBFBD> <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD> <20>޸𸮸<DEB8> ǥ<><C7A5>.
-- cRunTo( nHandle, tPetCoord["x"], tPetCoord["y"], 1000 )
-- <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD> <20>̵<EFBFBD><CCB5>Ѱ<EFBFBD>ó<EFBFBD><C3B3> ǥ<><C7A5>
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
tMode["nActionMode"] = PAM_NONE
CheckLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_CALL - nHandle( "..nHandle.." )" )
end
tMode["nMasterMode"] = PMM_CALL
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_CALL - nHandle( "..nHandle.." )" )
else
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD><CEB8><EFBFBD> <20><><EFBFBD><EFBFBD>
if tMode["nActionMode"] <= PAM_FAR_MISSED -- <20><> <20><><EFBFBD><EFBFBD> <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ൿ<EFBFBD>ϴ°<CFB4><C2B0><EFBFBD> <20>ƴҶ<C6B4><D2B6><EFBFBD> ó<><C3B3><EFBFBD>ϱ<EFBFBD>.
then
if tMode["nActionMode"] <= PAM_FAR_MISSED -- <20><> <20><><EFBFBD><EFBFBD> <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ൿ<EFBFBD>ϴ°<CFB4><C2B0><EFBFBD> <20>ƴҶ<C6B4><D2B6><EFBFBD> ó<><C3B3><EFBFBD>ϱ<EFBFBD>.
then
local nDistanceSquare = cDistanceSquar( nHandle, nMasterHandle )
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare < PS_nDS_AwayStart
then
if tMode["nMasterMode"] == PMM_AWAY
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- cRunTo( nHandle, tPetCoord["x"], tPetCoord["y"], 1000 )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
end
if tMode["nMasterMode"] ~= PMM_IDLE
then
local nWaitIdleActSec = cRandomInt( PetSystem_nSecMinWaitActAtIdle, PetSystem_nSecMaxWaitActAtIdle )
-- Idle <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Time"]["ExecSaveTendency"] = PetMem["CurSec"] + PetSystem_nSecWaitSaveTendencyAtIdle
PetMem["PetInfo"]["Time"]["ExecIdleActMode"] = PetMem["CurSec"] + nWaitIdleActSec
CheckLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_IDLE - nHandle( "..nHandle.." )" )
end
tMode["nMasterMode"] = PMM_IDLE
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_IDLE - nHandle( "..nHandle.." )" )
elseif nDistanceSquare < PS_nDS_FarStart
then
if tMode["nMasterMode"] ~= PMM_AWAY
then
-- Away <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- PupCaseDesc <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> PAI Ÿ<><C5B8><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><> Valid <20><> <20><> <20><>ũ<EFBFBD><C5A9>Ʈ <20>޼<EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD><EFBFBD><20>߻<EFBFBD><DFBB><EFBFBD>Ų<EFBFBD><C5B2>.
local tPetFollowActRecord = { cPet_GetActionRecord( nHandle, "follow" ) } -- { "PupAITypeString", "SM_Inx", "HairEffect", "SoundFile" }
if tPetFollowActRecord ~= nil
then
if tPetFollowActRecord[ 1 ] == "script"
then
if tPetFollowActRecord[ 2 ] ~= "-"
then
PetBaseScriptMessage( nHandle, tPetFollowActRecord[ 2 ] )
end
if tPetFollowActRecord[ 3 ] ~= "-"
then
PetBaseObjectEffect( nHandle, tPetFollowActRecord[ 3 ] )
end
if tPetFollowActRecord[ 4 ] ~= "-"
then
PetBaseObjectSound( nHandle, tPetFollowActRecord[ 4 ] )
end
cExecCheck( "PetBaseRoutine" )
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
CheckLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_AWAY - nHandle( "..nHandle.." )" )
end
tMode["nMasterMode"] = PMM_AWAY
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_AWAY - nHandle( "..nHandle.." )" )
else
if tMode["nMasterMode"] == PMM_AWAY or tMode["nMasterMode"] == PMM_IDLE
then
-- <20>ʹ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- cRunTo( nHandle, tPetCoord["x"], tPetCoord["y"], 1000 )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
end
if tMode["nMasterMode"] ~= PMM_FAR
then
-- Far <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Time"]["EnterFarIdle"] = PetMem["CurSec"]
CheckLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_FAR - nHandle( "..nHandle.." )" )
end
tMode["nMasterMode"] = PMM_FAR
DebugLog( "PetBaseRoutine::PET_MASTER_MODE-PMM_FAR - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
end
end
end
elseif sMasterMode == "logoutwait"
then
-- <20>α׾ƿ<D7BE><C6BF><EFBFBD><EFBFBD><EFBFBD> : <20>̰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>˾ƺ<CBBE><C6BA><EFBFBD>
else
-- <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
DebugLog( "PetBaseRoutine:: Point 2 - <20>ൿ<EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20>Ϳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.." )
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
------ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20>ൿ ó<><C3B3>
if tMode["nMasterMode"] == PMM_IDLE -----------------------------------------------------------------------------------------------------------PMM_IDLE
then
-- <20><><EFBFBD>̵<EFBFBD> <20>ð<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD> <20>ϱ<EFBFBD>
-- <20>ൿ Ÿ<>ӿ<EFBFBD> <20>ൿ <20><><EFBFBD><EFBFBD>
if PetMem["PetInfo"]["Time"]["ExecIdleActMode"] < PetMem["CurSec"]
then
-- <20>ൿ<EFBFBD><E0B5BF> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>
--local tPetIdleActRecord = { cPet_GetActionRecord( nHandle, "idle" ) } -- { "PupAITypeString", "SM_Inx", "HairEffect", "SoundFile" }
if PetMem["PetInfo"]["tCurIdleActRecord"] == nil
then
PetMem["PetInfo"]["tCurIdleActRecord"] = { cPet_GetActionRecord( nHandle, "idle" ) }
end
--if tPetIdleActRecord ~= nil
if PetMem["PetInfo"]["tCurIdleActRecord"] ~= nil
then
if PetBaseIdleAction( PetMem, PetMem["PetInfo"]["tCurIdleActRecord"] ) == false
then
ErrorLog( "PetBaseRoutine::PetBaseIdleAction Failed ["..nHandle.."]" );
end
cExecCheck( "PetBaseRoutine" )
else
ErrorLog( "PetBaseRoutine::cPet_GetActionRecord Failed ["..nHandle.."]" );
end
-- <20>ൿ<EFBFBD><E0B5BF><EFBFBD>·<EFBFBD> <20><><EFBFBD><EFBFBD>
tMode["nActionMode"] = PAM_IDLE_ACT
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_IDLE_ACT - nHandle( "..nHandle.." )" )
else
tMode["nActionMode"] = PAM_IDLE_WAIT
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_IDLE_WAIT - nHandle( "..nHandle.." )" )
end
-- <20><><EFBFBD><EFBFBD> Ÿ<>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
if PetMem["PetInfo"]["Time"]["ExecSaveTendency"] < PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>
if cPet_SaveTendency( nHandle ) == nil
then
ErrorLog( "PetBaseRoutine::cPet_SaveTendency Failed ["..nHandle.."]" )
else
CheckLog( "PetBaseRoutine::cPet_SaveTendency Failed ["..nHandle.."]" )
end
PetMem["PetInfo"]["Time"]["ExecSaveTendency"] = PetMem["CurSec"] + PetSystem_nSecWaitSaveTendencyAtIdle
end
elseif tMode["nMasterMode"] == PMM_AWAY -----------------------------------------------------------------------------------------------------------PMM_AWAY
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( tMasterCoord["x"], tMasterCoord["y"], PetSystem_nDistanceFollowingStop )
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"]
else
ErrorLog( "Following Move Target Coord is not Found" )-- <20><><EFBFBD>и޼<D0B8><DEBC><EFBFBD>
end
elseif tMode["nMasterMode"] == PMM_FAR -----------------------------------------------------------------------------------------------------------PMM_FAR
then
-- <20>̵<EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD> <20><><EFBFBD>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>) <20>ð<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD>
-- <20>ʹ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ҿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> üũ <20><> <20><>ȯ <20><><EFBFBD><EFBFBD> ó<><C3B3>
if PetMem["PetInfo"]["Time"]["EnterFarIdle"] + PetSystem_nSecWaitMissingAtFar < PetMem["CurSec"]
then
-- <20><>ȯ <20><><EFBFBD><EFBFBD> <20><>û
if cPet_Unsummon( nMasterHandle ) == nil
then
-- <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ɰ<EFBFBD><C9B0><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
end
-- AI <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>
cAIScriptSet( nHandle )
-- <20>޸<EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD>
gPetAIMemory["PetBase"][ nHandle ] = nil
DebugLog( "PetBaseRoutine::Pet Has Unsummoned - nHandle( "..nHandle.." )" )
return ReturnAI["END"]
end
elseif tMode["nMasterMode"] == PMM_CALL -----------------------------------------------------------------------------------------------------------PMM_CALL
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><>ǥ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><> <20>Ĵٺ<C4B4><D9BA><EFBFBD>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
local tDestCoord = PetMem["PetInfo"]["Coord"]["Next"]
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local nCallingDistanceSquare = cDistanceSquar( tPetCoord["x"], tPetCoord["y"], tDestCoord["x"], tDestCoord["y"] )
local nFollowingDistanceSquare = cDistanceSquar( nHandle, nMasterHandle )
local nDistanceSquare
-- <20>ҷ<EFBFBD><D2B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִٸ<D6B4> <20><> <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20>װ<EFBFBD> <20>ƴ϶<C6B4><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> <20><><EFBFBD><EFBFBD>.
if tMode["nActionMode"] == PAM_CALL_COME
then
nDistanceSquare = nCallingDistanceSquare
else
nDistanceSquare = nFollowingDistanceSquare
end
if tMode["nActionMode"] == PAM_CALL_SEE
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD>ŭ<EFBFBD><C5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ĵٺ<C4B4><D9BA><EFBFBD>.
if PetMem["PetInfo"]["Time"]["LastEnterStayAtCallSee"] + PetSystem_nSecStayAtCallSee < PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
tMode["nMasterMode"] = PMM_NONE
tMode["nActionMode"] = PAM_NONE
end
-- <20>Ĵٺ<C4B4><D9BA><EFBFBD>
cSetObjectDirect( nHandle, tMasterCoord["x"], tMasterCoord["y"] )
-- <20><><EFBFBD><EFBFBD>ǥ<EFBFBD><C7A5>
--?????????????????????????????????????????????????????
else
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare < PS_nDS_CallingStop
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>̴<EFBFBD>.
if tMode["nActionMode"] == PAM_CALL_COME
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- cRunTo( nHandle, tPetCoord["x"], tPetCoord["y"], 1000 )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
end
if tMode["nActionMode"] ~= PAM_CALL_SEE
then
PetMem["PetInfo"]["Time"]["LastEnterStayAtCallSee"] = PetMem["CurSec"]
-- <20><><EFBFBD><EFBFBD> <20>Ĵٺ<C4B4><D9BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD>ʳ<EFBFBD> <20>Ĵٺ<C4B4>??????????????????????????????????
-- <20><> <20><>Ȳ<EFBFBD><C8B2> <20><EFBFBD><EEB6BB> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD>
end
tMode["nActionMode"] = PAM_CALL_SEE
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_CALL_SEE - nHandle( "..nHandle.." )" )
else
if tMode["nActionMode"] ~= PAM_CALL_COME
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD><CEB8><EFBFBD> <20>̵<EFBFBD><CCB5>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20>ѹ<EFBFBD><D1B9><EFBFBD> üũ<C3BC>Ͽ<EFBFBD> <20>̵<EFBFBD><CCB5>Ѵ<EFBFBD>. <20>θ<EFBFBD><CEB8><EFBFBD>ġ<EFBFBD><C4A1> <20>ƴ°<C6B4><C2B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>ƴ°<C6B4> <20>ƴ<EFBFBD>.
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( tMasterCoord["x"], tMasterCoord["y"], PetSystem_nDistanceCallingStop )
if tTargetCoord["x"] ~= nil
then
cRunTo( nHandle, tTargetCoord["x"], tTargetCoord["y"], PetSystem_nSpeedRateCallingMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tTargetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tTargetCoord["y"]
else
ErrorLog( "Calling Move Target Coord is not Found" )-- <20><><EFBFBD>и޼<D0B8><DEBC><EFBFBD>
end
end
tMode["nActionMode"] = PAM_CALL_COME
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_CALL_COME - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
end
elseif tMode["nMasterMode"] == PMM_DIE -----------------------------------------------------------------------------------------------------------PMM_DIE
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><>ǥ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><> <20>Ĵٺ<C4B4><D9BA><EFBFBD>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
local tDestCoord = PetMem["PetInfo"]["Coord"]["Next"]
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local nDiedDistanceSquare = cDistanceSquar( tPetCoord["x"], tPetCoord["y"], tDestCoord["x"], tDestCoord["y"] )
local nFollowingDistanceSquare = cDistanceSquar( nHandle, nMasterHandle )
local nDistanceSquare
-- <20>ҷ<EFBFBD><D2B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִٸ<D6B4> <20><> <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20>װ<EFBFBD> <20>ƴ϶<C6B4><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> <20><><EFBFBD><EFBFBD>.
if tMode["nActionMode"] == PAM_DIE_COME
then
nDistanceSquare = nDiedDistanceSquare
else
nDistanceSquare = nFollowingDistanceSquare
end
if tMode["nActionMode"] == PAM_DIE_SAD
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD>ŭ<EFBFBD><C5AD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ĵٺ<C4B4><D9BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
if PetMem["PetInfo"]["Time"]["LastEnterStayAtDiedSad"] + PetSystem_nSecStayAtDiedSad < PetMem["CurSec"]
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
tMode["nMasterMode"] = PMM_NONE
tMode["nActionMode"] = PAM_NONE
end
-- <20>Ĵٺ<C4B4><D9BA><EFBFBD>
cSetObjectDirect( nHandle, tMasterCoord["x"], tMasterCoord["y"] )
-- <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><><EFBFBD>μ<EFBFBD> ǥ<><C7A5>
else
----------------------------------------------------------------------
---------- //<2F>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision ---------------------------------
if nDistanceSquare < PS_nDS_DiedStop
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>̴<EFBFBD>.
if tMode["nActionMode"] == PAM_DIE_COME
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߱<EFBFBD>
local tPetCoord = PetMem["PetInfo"]["Coord"]["Cur"]
-- cRunTo( nHandle, tPetCoord["x"], tPetCoord["y"], 1000 )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tPetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tPetCoord["y"]
end
if tMode["nActionMode"] ~= PAM_DIE_SAD
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>Ұž<D2B0><C5BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PetMem["PetInfo"]["Time"]["LastEnterStayAtDiedSad"] = PetMem["CurSec"]
CheckLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_DIE_SAD - nHandle( "..nHandle.." )" )
end
tMode["nActionMode"] = PAM_DIE_SAD
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_DIE_SAD - nHandle( "..nHandle.." )" )
else
if tMode["nActionMode"] ~= PAM_DIE_COME
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD><CEB8><EFBFBD> <20>̵<EFBFBD><CCB5>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20>ѹ<EFBFBD><D1B9><EFBFBD> üũ<C3BC>Ͽ<EFBFBD> <20>̵<EFBFBD><CCB5>Ѵ<EFBFBD>. <20>θ<EFBFBD><CEB8><EFBFBD>ġ<EFBFBD><C4A1> <20>ƴ°<C6B4><C2B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>ƴ°<C6B4> <20>ƴ<EFBFBD>.
local tMasterCoord = PetMem["MasterInfo"]["Coord"]["Cur"]
local tTargetCoord = {}
tTargetCoord["x"], tTargetCoord["y"] = cGetCoord_Circle( tMasterCoord["x"], tMasterCoord["y"], PetSystem_nDistanceDiedStop )
if tTargetCoord["x"] ~= nil
then
cRunTo( nHandle, tTargetCoord["x"], tTargetCoord["y"], PetSystem_nSpeedRateMasterDiedMil )
PetMem["PetInfo"]["Coord"]["Next"]["x"] = tTargetCoord["x"]
PetMem["PetInfo"]["Coord"]["Next"]["y"] = tTargetCoord["y"]
else
ErrorLog( "Master Died Move Target Coord is not Found" )-- <20><><EFBFBD>и޼<D0B8><DEBC><EFBFBD>
end
CheckLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_DIE_COME - nHandle( "..nHandle.." )" )
end
tMode["nActionMode"] = PAM_DIE_COME
DebugLog( "PetBaseRoutine::PET_ACTION_MODE-PAM_DIE_COME - nHandle( "..nHandle.." )" )
end
---------- <20>Ÿ<EFBFBD><C5B8><EFBFBD> Pattern Decision// ---------------------------------
----------------------------------------------------------------------
end
elseif tMode["nMasterMode"] == PMM_LINK -----------------------------------------------------------------------------------------------------------PMM_LINK
then
tMode["nActionMode"] = PAM_LINK
else
-- <20><><EFBFBD><EFBFBD> <20>ȵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̰ų<CCB0> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20>ƴϰų<CFB0>..
end
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> AI <20><> <20><><EFBFBD><EFBFBD>
return ReturnAI["CPP"]
end