elite*gold: 0
Join Date: Mar 2009
Posts: 48
Received Thanks: 4
|
Example po sa Slime...
-- AI_Slime.lua
ActionList =
{
-- ´ë±â
{
ID = "WAIT",
Motion = "Slime_Wait.frm",
Func = "Slime_WaitFunc",
Trigger =
{
-- Ÿ°ÔÆÃ
{
AICheckFrame = 55,
AIFunc = "Slime_Check_Targeting",
DelayFrame = 110,
},
-- Ÿ°ÙÁö¿ò
{
AICheckFrame = 440,
AIFunc = "Slime_Check_ReleaseTarget",
DelayFrame = 880,
},
-- Ÿ°ÙÀ» ÇâÇØ ÅÏ
{
AICheckFrame = 75,
AIFunc = "Slime_Check_TurnToTarget",
DelayFrame = 75,
},
-- °È±â
{
AICheckFrame = 55,
AIFunc = "Slime_Check_Walk",
DelayFrame = 110,
},
-- ÇÏÀÌÁ¡ÇÁ
{
AICheckFrame = 75,
AIFunc = "Slime_Check_HighJump",
DelayFrame = 75,
},
-- Á¡ÇÁ´Ù¿î
{
AICheckFrame = 220,
AIFunc = "Slime_Check_JumpDown",
DelayFrame = 220,
},
-- ±ÙÁ¢°ø°Ý
{
AICheckFrame = 55,
AIFunc = "Slime_Check_Attack01",
DelayFrame = 110,
},
-- ¾î½½··´ë±â(À̵¿)
{
AICheckFrame = 55,
AIFunc = "Slime_Check_Idle",
DelayFrame = 110,
},
},
},
-- À̵¿
{
ID = "WALK",
Motion = "Slime_Walk.frm",
Func = "Slime_WalkFunc",
EnableMoveCheck = 1,
MoveFailFunc = "Slime_MoveFail",
Trigger =
{
-- Ÿ°ÔÆÃ
{
AICheckFrame = 25,
AIFunc = "Slime_Check_Targeting",
DelayFrame = 110,
},
-- Ÿ°ÙÁö¿ò
{
AICheckFrame = 440,
AIFunc = "Slime_Check_ReleaseTarget",
DelayFrame = 880,
},
-- Ÿ°ÙÀ» ÇâÇØ ÅÏ
{
AICheckFrame = 55,
AIFunc = "Slime_Check_TurnToTarget",
DelayFrame = 55,
},
-- ÇÏÀÌÁ¡ÇÁ
{
AICheckFrame = 75,
AIFunc = "Slime_Check_HighJump",
DelayFrame = 75,
},
-- Á¡ÇÁ´Ù¿î
{
AICheckFrame = 220,
AIFunc = "Slime_Check_JumpDown",
DelayFrame = 220,
},
-- ¸ØÃß±â
{
AICheckFrame = 110,
AIFunc = "Slime_Check_Stop",
DelayFrame = 220,
},
}
},
-- ¾î½½··´ë±â
{
ID = "IDLE",
Motion = "Slime_Walk.frm",
Func = "Slime_IdleFunc",
EnableMoveCheck = 1,
MoveFailFunc = "Slime_IdleMoveFail",
Trigger =
{
-- Ÿ°ÔÆÃ
{
AICheckFrame = 45,
AIFunc = "Slime_Check_Targeting",
DelayFrame = 110,
},
-- ¾î½½··´ë±â(¸ØÃã)
{
AICheckFrame = 440,
AIFunc = "Slime_Check_Idle_Stop",
DelayFrame = 440,
},
}
},
-- ±ÙÁ¢°ø°Ý01
{
ID = "ATTACK01",
Motion = "Slime_Attack01.frm",
Func = "Slime_Attack01Func",
},
-- Á¡ÇÁ
{
ID = "JUMP",
Motion = "Slime_Jump.frm",
Func = "Slime_JumpFunc",
},
-- µ¥¹ÌÁö
{
ID = "DAMAGE",
Motion = "Slime_Damage.frm",
Func = "Slime_DamageFunc",
},
-- ´Ù¿î »ó
{
ID = "DOWN_UP01",
Motion = "Slime_Downup01.frm",
Func = "Slime_Downup01Func",
},
-- ´Ù¿î »ó ÂøÁö
{
ID = "DOWN_LANDING",
Motion = "Slime_Downlanding.frm",
Func = "Slime_DownupLandingFunc",
IsFallDownMotion = TRUE,
Trigger =
{
{
AICheckFrame = 5,
AIFunc = "Slime_CheckStandup",
DelayFrame = 0,
},
}
},
-- ´Ù¿î
{
ID = "DOWN",
Motion = "Slime_Down.frm",
Func = "Slime_DownFunc",
IsFallDownMotion = TRUE,
Trigger =
{
{
AICheckFrame = 5,
AIFunc = "Slime_CheckStandup",
DelayFrame = 0,
},
}
},
-- ´Ù¿î ÇÏ
{
ID = "DOWN_DOWN",
Motion = "Slime_Downlanding.frm",
Func = "Slime_DownFunc",
IsFallDownMotion = TRUE,
Trigger =
{
{
AICheckFrame = 5,
AIFunc = "Slime_CheckStandup",
DelayFrame = 0,
},
}
},
-- ÀϾî¼*±â
{
ID = "STANDUP",
Motion = "Slime_standup.frm",
Func = "Slime_StandupFunc",
},
-- Á×±â
{
ID = "DIE",
Motion = "Slime_Down.frm",
Func = "Slime_DieFunc",
},
-- Á×±â
{
ID = "DIE02",
Motion = "Slime_Die.frm",
Func = "Slime_Die02Func",
},
-- ½ºÅæÄ¿½º
{
ID = "STONECURSE",
Motion = "Slime_Stone.frm",
Func = "Slime_StoneCurseFunc",
},
-- ºù°á»óÅÂ
{
ID = "ICECURSE",
Motion = "Slime_Stone.frm",
Func = "Slime_IceCurseFunc",
},
-- Ȧµå»óÅÂ
{
ID = "HOLD",
Motion = "Slime_Stone.frm",
Func = "Slime_HoldFunc",
},
}
CallBack =
{
Land = "OnSlime_Land",
Die = "OnSlime_Die",
Damage = "OnSlime_Damage",
}
-----------------------------------------------------------------------
-- ÃʱâÈ* ÇÔ¼ö
-----------------------------------------------------------------------
function InitSlime( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
pMonster:RegistReaction( ATTACKTYPE_HOLD, ATTACKDIR_NORMAL, "HOLD" )
pMonster:RegistReaction( ATTACKTYPE_NORMAL, ATTACKDIR_UP, "DAMAGE" )
pMonster:RegistReaction( ATTACKTYPE_NORMAL, ATTACKDIR_MIDDLE, "DAMAGE" )
pMonster:RegistReaction( ATTACKTYPE_NORMAL, ATTACKDIR_DOWN, "DAMAGE" )
pMonster:RegistReaction( ATTACKTYPE_DOWN, ATTACKDIR_UP, "DOWN_UP01" )
pMonster:RegistReaction( ATTACKTYPE_DOWN, ATTACKDIR_MIDDLE, "DOWN" )
pMonster:RegistReaction( ATTACKTYPE_DOWN, ATTACKDIR_DOWN, "DOWN_DOWN" )
pMonster:RegistReaction( ATTACKTYPE_DOWN, ATTACKDIR_NORMAL, "DOWN" )
pMonster:RegistReaction( ATTACKTYPE_STONECURSE, ATTACKDIR_NORMAL, "STONECURSE" )
pMonster:RegistReaction( ATTACKTYPE_ICECURSE, ATTACKDIR_NORMAL, "ICECURSE" )
end
-----------------------------------------------------------------------
-- °¢ Stateº° ½ÇÇàµÇ´Â ÇÔ¼öµé..
-----------------------------------------------------------------------
-- ´ë±â »óÅÂ
function Slime_WaitFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetHP( 0 )
monster:EndMonster()
end
end
-- °È±â »óÅÂ
function Slime_WalkFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame > 20 and iFrame < 41 ) then
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * 1.2 )
pMonster:PlaySound(208)
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetHP( 0 )
monster:EndMonster()
end
end
-- ¾î½½··´ë±â »óÅÂ
function Slime_IdleFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame > 20 and iFrame < 41 ) then
pMonster:SetSpeedX( pMonster:GetWalkSpeed() )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetHP( 0 )
monster:EndMonster()
end
end
-- Á״»óÅÂ
function Slime_Die02Func( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:AddParticle( "SlimDie", -0.01, 0.07 )
pMonster:ToggleRender( false )
pMonster:SetInvincible( true )
pMonster:PlaySound(217)
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:EndMonster()
pMonster:SetFrameLock( true )
end
end
-- µ¥¹ÌÁö ÀÔÀº°Å
function Slime_DamageFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetHP( 0 )
monster:EndMonster()
pMonster:PlaySound(216)
end
end
-- ´Ù¿î »ó
function Slime_Downup01Func( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1 ) then
pMonster:SetPushCheck( false )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetFrameLock( true )
end
end
-- ´Ù¿î »ó ÂøÁö
function Slime_DownupLandingFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1 ) then
pMonster:SetSuperArmor( true )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetFrameLock( true )
end
end
-- ´Ù¿î
function Slime_DownFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:SetSuperArmor( true )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetFrameLock( true )
if( pMonster:GetHP() <= 0 ) then
pMonster:SetState( "DIE02" )
end
end
end
-- Á×±â
function Slime_DieFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:SetInvincibleFrame( pMonster:GetLastFrame() + 10 )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetState( "DIE02" )
end
end
-- ÀϾ±â
function Slime_StandupFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:SetPushCheck( true )
pMonster:SetInvincibleFrame( pMonster:GetLastFrame() + 20 )
elseif( iFrame == 16 ) then
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * 2.0 )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetState( "WAIT" )
end
end
-- ±ÙÁ¢°ø°Ý »óÅÂ
function Slime_Attack01Func( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame == 11 ) then
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * 4.0 )
pMonster:SetNoCheckContact(5)
pMonster:SetSpeedY( 0.02 )
pMonster:PlaySound(363)
elseif( iFrame == 16 ) then
pMonster:StartAttack( 15, PAR_DOWN, 0.0 )
elseif( iFrame == 36 ) then
pMonster:EndAttack()
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetState( "WAIT" )
end
end
-- Á¡ÇÁ »óÅÂ
function Slime_JumpFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetFrameLock( true )
end
end
-- ½ºÅæÄ¿½º °É·ÈÀ½
function Slime_StoneCurseFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:SetSuperArmor( true )
pMonster:AddTraceParticle( "StoneCurse_small", 3 )
pMonster:AddParticle( "StoneCurse_small_smog01", 0.0, 0.0 )
pMonster:AddParticle( "StoneCurse_small_tick", 0.0, 0.0 )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:AddParticle( "StoneCurse_small_smog01", 0.0, 0.0 )
pMonster:AddParticle( "StoneCurse_small_tick", 0.0, 0.0 )
pMonster:SetSuperArmor( false )
pMonster:SetState( "WAIT" )
if( pMonster:GetHP() <= 0 ) then
pMonster:SetState( "DOWN" )
end
end
end
-- ¾ÆÀ̽ºÄ¿½º °É·ÈÀ½
function Slime_IceCurseFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1) then
pMonster:SetSuperArmor( true )
pMonster:AddTraceParticle( "IceCurse_small", 3 )
pMonster:AddParticle( "IceCurse_small_smog01", 0.0, 0.0 )
pMonster:AddParticle( "IceCurse_small_tick", 0.0, 0.0 )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:AddParticle( "IceCurse_small_smog01", 0.0, 0.0 )
pMonster:AddParticle( "IceCurse_small_tick", 0.0, 0.0 )
pMonster:SetSuperArmor( false )
pMonster:SetState( "WAIT" )
if( pMonster:GetHP() <= 0 ) then
pMonster:SetState( "DOWN" )
end
end
end
-- Ȧµå °É·ÈÀ½(ÀÌÆåÆ®)
function Slime_HoldFunc( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( iFrame <= 1 ) then
pMonster:SetSuperArmor(true)
pMonster:AddParticle( "Arme01_Hold_Beam_effect_01_Small", 0.0, 0.12 )
pMonster:AddParticle( "Arme01_Hold_Beam_effect_02_Small", 0.0, 0.12 )
pMonster:AddParticle( "Arme01_Hold_Beam_effect_03_Small", 0.0, 0.12 )
pMonster:AddParticle( "Arme01_Hold_Beam_effect_04_Small", 0.0, 0.12 )
elseif( iFrame >= pMonster:GetLastFrame() ) then
pMonster:SetSuperArmor( false )
pMonster:SetState( "WAIT" )
if( pMonster:GetHP() <= 0 ) then
pMonster:SetState( "DIE" )
end
end
end
-----------------------------------------------------------------------
-- ÄÁµð¼Çüũ
-----------------------------------------------------------------------
function Slime_Check_Targeting( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:SetTarget( 50, -300, 240, 300, -200 ) == true ) then
pMonster:TurnToTarget()
if( pMonster:CheckState( "IDLE" ) == true ) then
pMonster:SetState( "WAIT" )
end
pMonster:ResetDelay()
end
end
function Slime_Check_ReleaseTarget( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 200, -600, 400, 600, -300 ) == false ) then
pMonster:ReleaseTarget()
pMonster:ResetDelay()
end
end
function Slime_Check_TurnToTarget( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:IsTarget() == true ) then
pMonster:TurnToTarget()
pMonster:ResetDelay()
end
end
function Slime_Check_Walk( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 600, -500, 500, 500, -500 ) == true ) then
pMonster:TurnToTarget()
pMonster:SetState( "WALK" )
pMonster:ResetDelay()
end
end
function Slime_Check_Stop( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 150, -160, 240, 160, -240 ) == true ) then
pMonster:SetSpeedX( 0.0 )
pMonster:SetState( "WAIT" )
pMonster:ResetDelay()
end
end
function Slime_Check_Attack01( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 100, -90, 100, 90, -100 ) == true ) then
pMonster:SetState( "ATTACK01" )
pMonster:ResetDelay()
end
end
function Slime_Check_HighJump( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 100, -100, 300, 100, 100 ) == true and pMonster:GetIsContact() == true and pMonster:GetTargetIsContact() == true ) then
Slime_Jump( iMonsterIndex )
pMonster:SetState( "JUMP" )
pMonster:ResetDelay()
end
end
function Slime_Check_JumpDown( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckTargetInRange( 60, -100, -40, 100, -240 ) == true ) then
pMonster:SetNoCheckContact(15)
pMonster:SetIgnoreFHCheck(true)
pMonster:SetState( "JUMP" )
pMonster:ResetDelay()
end
end
function Slime_CheckStandup( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:GetHP() > 0 and pMonster:GetDownDelay() == 0 ) then
pMonster:SetState( "STANDUP" )
end
end
-- ¾î½½··´ë±â..
function Slime_Check_Idle( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:IsTarget() == false ) then
pMonster:SetState( "IDLE" )
pMonster:ResetDelay()
end
end
-- ¾î½½··´ë´Â Áß.. ¸ØÃß±â
function Slime_Check_Idle_Stop( iMonsterIndex, iFrame )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:IsTarget() == false ) then
pMonster:SetState( "WAIT" )
pMonster:ResetDelay()
end
end
-----------------------------------------------------------------------
-- Äݹé ÇÔ¼ö
-----------------------------------------------------------------------
function OnSlime_Land( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
pMonster:SetSpeedX( pMonster:GetSpeedX() * (2.0 / 3.0) )
if( pMonster:CheckState( "JUMP" ) == true ) then
pMonster:TurnToTarget()
pMonster:SetState( "WAIT" )
elseif( pMonster:CheckState( "DOWN_UP01" ) == true ) then
pMonster:SetDownDelay( 80 + (pMonster:FloatRand() * 50) )
pMonster:SetState( "DOWN_LANDING" )
end
end
function OnSlime_Die( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:CheckState( "STONECURSE" ) == false and pMonster:CheckState( "ICECURSE" ) == false and pMonster:CheckState( "HOLD" ) == false ) then
pMonster:TurnToTarget()
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * -2.0 )
pMonster:SetState( "DOWN" )
end
end
function OnSlime_Damage( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
pMonster:SetPushCheck( true )
pMonster:SetNoCheckContact( 0 )
if( pMonster:CheckState( "DOWN" ) == true ) then
pMonster:SetDownDelay( 40 + (pMonster:FloatRand() * 80) )
end
if( pMonster:CheckPreState( "DOWN_UP01" ) == true or pMonster:CheckPreState( "DOWN_UP02") == true ) then
pMonster:SetNoCheckContact( 25 )
--pMonster:SetSpeedX( pMonster:GetSpeedX() / 2 )
if( pMonster:CheckState( "DAMAGE_UP" ) or pMonster:CheckState( "DOWN_UP01" )) then
pMonster:SetSpeedY( 0.03 )
pMonster:SetState( "DOWN_UP01" )
elseif( pMonster:CheckState( "DAMAGE" ) or pMonster:CheckState( "DOWN" )) then
pMonster:SetSpeedX( pMonster:GetSpeedX() / 2 )
pMonster:SetSpeedY( 0.02 )
pMonster:SetState( "DOWN_UP01" )
elseif( pMonster:CheckState( "DOWN_DOWN" )) then
if( pMonster:GetIsRight() == true) then
pMonster:SetSpeedX( -0.03 )
else
pMonster:SetSpeedX( 0.03 )
end
pMonster:SetSpeedY( -0.04 )
pMonster:SetState( "DOWN_DOWN" )
pMonster:SetDownDelay( 40 + (pMonster:FloatRand() * 80) )
end
end
--pMonster:SetSpeedX( (pMonster:GetSpeedX() * 2.0) / 3.0 )
--pMonster:SetSpeedY( (pMonster:GetSpeedY() * 2.0) / 3.0 )
end
function Slime_Jump( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
local fTargetX = pMonster:GetTargetX()
local fTargetY = pMonster:GetTargetY()
local fMonX = pMonster:GetX()
local fMonY = pMonster:GetY()
fSpeedX = ( fTargetX - fMonX ) * 1.5
fSpeedY = ((fTargetY - fMonY) / ((fTargetY - fMonY) / 4.0)) + (((fTargetY - fMonY) * 1.5) + pMonster:FloatAbs((fSpeedX / 3.1)))
pMonster:SetNoCheckContact(26 + (fSpeedY * 5.0))
pMonster:TurnToTarget()
pMonster:SetSpeedX( fSpeedX * 0.01 )
pMonster:SetSpeedY( fSpeedY * 0.01 )
end
function Slime_MoveFail( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:GetIsContact() == true )then
if( pMonster:GetY() - (0) < pMonster:GetTargetY() )then
pMonster:SetNoCheckContact(27)
pMonster:SetState( "JUMP" )
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * 1.2 )
pMonster:SetSpeedY( 0.038 )
else
pMonster:SetNoCheckContact(15)
pMonster:SetState( "JUMP" )
pMonster:SetSpeedX( pMonster:GetWalkSpeed() * 1.2 )
pMonster:SetSpeedY( 0.019 )
end
end
end
function Slime_IdleMoveFail( iMonsterIndex )
local pMonster = g_MyD3D:GetMonster( iMonsterIndex )
if( pMonster:GetIsContact() == true )then
if( pMonster:GetIsRight() == true ) then
pMonster:SetIsRight( false )
pMonster:SetSpeedX( -0.005 )
else
pMonster:SetIsRight( true )
pMonster:SetSpeedX( 0.005 )
end
pMonster:SetState( "IDLE" )
end
end
Aling part po jan ung papalitan pra ma sudden death ung slime?
Samamat
|