// Do Normal Attack To Player(monster)
bool CMonster::DoPlayerDamage( CWorldClient* otherclient )
{
if( owner!=0 && !GServer->pvpzone[this->MonsterPosition->Map] ) return true;
float attackdistance = this->thisnpc->atkdistance;
float distance = GServer->distance( this->MonsterPosition->Cpos, otherclient->PlayerPosition->Cpos );
clock_t etime = clock() - this->MonsterTime->lastAttackTime;
if( etime >= CLOCKS_PER_SEC * 100 / (this->MonsterStats->Attack_Speed/1.95) && distance <= attackdistance )
{
//TODO: Add Critical Damage
this->MonsterPosition->Dpos = this->MonsterPosition->Cpos;
long int hitpower = this->MonsterStats->Attack_Power;
if( otherclient->PlayerInfo->Level<=10)
{
[COLOR="Plum"]hitpower -= otherclient->PlayerStats->Defense*2;
hitpower /= 2;[/COLOR]
}
else
{
[COLOR="Plum"]hitpower -= otherclient->PlayerStats->Defense*2;
hitpower /= 2; [/COLOR]
}
if( hitpower>0 )
{
otherclient->PlayerStats->HP -= hitpower;
BEGINPACKET( pak, 0x799 );
ADDWORD( pak, this->clientid );
ADDWORD( pak, this->MonsterAttack->targetid );
ADDDWORD( pak, hitpower );
ADDDWORD( pak, (otherclient->PlayerStats->HP<=0)?16:0 );
GServer->SendToVisible( &pak, otherclient );
}
this->MonsterTime->lastAttackTime = clock( );
}