Пример #1
0
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);
}
Пример #2
0
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));
        }
    }
}