void KServer::recv_attack(vce::VSint32 movableID) { if( !m_authenticationSuccess )return; if( !m_pc )return; Enemy *e = static_cast<Enemy*>(World::findMovable( movableID )); if(!e)return; if( e->coord.distance( m_pc->coord ) >= 4.0f ){ return; } int dmg = 3; e->attacked(m_pc,dmg); m_pc->sendStatusTo(this); }
void Bullet::hit( Movable *m ) { Movable *shooter = g_app->getMovable(shooterID); if( !shooter ){ toDelete = true; return; } if( shooter->typeID == MOVABLE_HUMAN ){ if( m=g_app->m_floor->hitMovableType( coord, MOVABLE_ENEMY ) ){ toDelete = true; Enemy *e = static_cast<Enemy*>(m); e->attacked(3, static_cast<Character*>(shooter)); } } else if( shooter->typeID == MOVABLE_ENEMY ){ if( m=g_app->m_floor->hitMovableType( coord, MOVABLE_HUMAN ) ){ toDelete = true; PlayerCharacter *pc = static_cast<PlayerCharacter*>(m); pc->attacked(3,static_cast<Character*>(shooter)); } } }