static void ApplySPuw() { uw_mode_pos=0; uw_mode=~uw_mode; ARX_SOUND_PlayCinematic("menestrel_uw2", true); MakeCoolFx(player.pos); if(uw_mode) { MakeSpCol(); DisplayCheatText("~-__-~~-__.U.W.__-~~-__-~"); } }
void ApplySPuw() { uw_mode_pos=0; uw_mode=~uw_mode; ARX_SOUND_PlayCinematic("menestrel_uw2", true); MakeCoolFx(player.pos); if(uw_mode) { MakeSpCol(); sp_max_ch = "~-__-~~-__.U.W.__-~~-__-~"; sp_max_start=arxtime.get_updated(); } }
bool PlaySoundKeyFramer(size_t index) { if(index >= TabSound.size() || !TabSound[index].exists) { return false; } CinematicSound & cs = TabSound[index]; LogDebug("playing " << (cs.isSpeech ? "speech" : "sound") << ' ' << index << " = " << cs.file); cs.handle = ARX_SOUND_PlayCinematic(cs.file, cs.isSpeech); return true; }
void ARX_NPC_TryToCutSomething(Entity * target, const Vec3f * pos) { //return; if(!target || !(target->ioflags & IO_NPC)) return; if(target->gameFlags & GFLAG_NOGORE) return; float mindistSqr = std::numeric_limits<float>::max(); ObjSelection numsel = ObjSelection(); long goretex = -1; for(size_t i = 0; i < target->obj->texturecontainer.size(); i++) { if(target->obj->texturecontainer[i] && boost::contains(target->obj->texturecontainer[i]->m_texName.string(), "gore") ) { goretex = i; break; } } for(size_t i = 0; i < target->obj->selections.size(); i++) { ObjSelection sel = ObjSelection(i); if(target->obj->selections[i].selected.size() > 0 && boost::contains(target->obj->selections[i].name, "cut_") ) { DismembermentFlag fll = GetCutFlag(target->obj->selections[i].name); if(IsAlreadyCut(target, fll)) continue; long out = 0; for(size_t ll = 0; ll < target->obj->facelist.size(); ll++) { EERIE_FACE & face = target->obj->facelist[ll]; if(face.texid != goretex) { if( IsInSelection(target->obj, face.vid[0], sel) || IsInSelection(target->obj, face.vid[1], sel) || IsInSelection(target->obj, face.vid[2], sel) ) { if(face.facetype & POLY_HIDE) { out++; } } } } if(out < 3) { float dist = glm::distance2(*pos, target->obj->vertexlist3[target->obj->selections[i].selected[0]].v); if(dist < mindistSqr) { mindistSqr = dist; numsel = sel; } } } } if(numsel == ObjSelection()) return; // Nothing to cut... bool hid = false; if(mindistSqr < square(60)) { // can only cut a close part... DismembermentFlag fl = GetCutFlag( target->obj->selections[numsel.handleData()].name ); if(fl && !(target->_npcdata->cuts & fl)) { target->_npcdata->cuts |= fl; hid = ARX_NPC_ApplyCuts(target); } } if(hid) { ARX_SOUND_PlayCinematic("flesh_critical", false); // TODO why play cinmeatic sound? ARX_NPC_SpawnMember(target, numsel); } }