Ejemplo n.º 1
0
void LVL_Npc::deActivate()
{
    if(!wasDeactivated)
        wasDeactivated = true;

    if(!isActivated) return;

    isActivated = false;

    if(!is_shared_animation)
        animator.stop();

    if(!keep_position_on_despawn)
    {
        if(!reSpawnable)
            unregister();
        else
        {
            if(data.id != _npc_id)
            {
                transformTo_x(data.id); //Transform NPC back into initial form
            }

            setDefaults();
            setPos(data.x, data.y);
            setDirection(data.direct);
            setPaused(true);
            m_momentum.saveOld();
        }
    }
}
Ejemplo n.º 2
0
void LVL_Block::init()
{
    if(_isInited) return;
    LvlSceneP::s->layers.registerItem(data.layer, this);
    transformTo_x(data.id);
    setPos(data.x, data.y);
    _isInited=true;
}
Ejemplo n.º 3
0
void LVL_Block::init(bool force)
{
    if(_isInited && !force)
        return;

    if(!_isInited)
        dataInitial = data;
    else
    if(force)
    {
        construct();//reset ALL values into initial state
        data = dataInitial;
    }

    m_scene->layers.registerItem(data.layer, this);
    transformTo_x(data.id);
    _isInited = true;
    m_momentum.saveOld();
}
Ejemplo n.º 4
0
void LVL_Npc::init()
{
    if(_isInited) return;

    phys_setup.gravityAccel=ConfigManager::marker_npc.phs_gravity_accel;
    phys_setup.max_vel_y=   ConfigManager::marker_npc.phs_max_fall_speed;

    transformTo_x(data.id);
    setPos(data.x, data.y);
    _syncSection();
    if(isLuaNPC && !data.generator){
        try{
            lua_onInit();
        } catch (luabind::error& e) {
            LvlSceneP::s->getLuaEngine()->postLateShutdownError(e);
        }
    }

    _isInited=true;
    LvlSceneP::s->layers.registerItem(data.layer, this);
}
Ejemplo n.º 5
0
void LVL_Npc::harm(int damage, int damageReason)
{
    try {
        HarmEvent event;
        event.damage=damage;
        event.reason_code=damageReason;
        lua_onHarm(&event);
        if(event.cancel) return;
        damage = event.damage;
    } catch (luabind::error& e) {
        m_scene->getLuaEngine()->postLateShutdownError(e);
        return;
    }

    health -= damage;
    if(health <= 0)
    {
        if( setup->setup.contents_id == 0)
        {
            kill(damageReason);
        }
        else
        {
            //Spawn the contents of the dead NPC's container
            if (damageReason == LVL_Npc::DAMAGE_STOMPED)
                transformTo_x(setup->setup.contents_id);
            else
                kill(damageReason);
        }
    }
    else
    {
        if(setup->setup.hit_sound_id==0)
            PGE_Audio::playSoundByRole(obj_sound_role::NpcHit);
        else
            PGE_Audio::playSound(setup->setup.hit_sound_id);
    }
}