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(); } } }
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; }
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(); }
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); }
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); } }