diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index c469f12a0..fe9cbf4ba 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -163,6 +163,26 @@ namespace MWDialogue iss >> ifunction; switch(ifunction) { + case 39://PC Expelled + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 43://PC Crime level + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 46://Same faction + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 48://Detected + if(!selectCompare(comp,1,select.i)) return false; + break; + + case 49://Alarmed + if(!selectCompare(comp,0,select.i)) return false; + break; + case 50://choice isAChoice = true; if(choice) @@ -171,20 +191,61 @@ namespace MWDialogue } break; + case 60://PC Vampire + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 61://Level + if(!selectCompare(comp,1,select.i)) return false; + break; + + case 62://Attacked + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 63://Talked to PC + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 64://PC Health + if(!selectCompare(comp,50,select.i)) return false; + break; + + case 65://Creature target + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 66://Friend hit + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 67://Fight + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 68://Hello???? + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 69://Alarm + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 70://Flee + if(!selectCompare(comp,0,select.i)) return false; + break; + + case 71://Should Attack + if(!selectCompare(comp,0,select.i)) return false; + break; + default: break; } } } - if(isAChoice) - { - return true; - } - if(isFunction) - { - return false; - } + return true; } @@ -373,6 +434,9 @@ namespace MWDialogue if (toLower (info.actor)!=MWWorld::Class::get (actor).getId (actor)) return false; + //PC Faction + if(!info.pcFaction.empty()) return false; + //NPC race if (!info.race.empty()) { @@ -544,7 +608,7 @@ namespace MWDialogue for (std::vector::const_iterator iter (it->second.mInfo.begin()); iter!=it->second.mInfo.end(); ++iter) { - if (isMatching (actor, *iter) && functionFilter(mActor,*iter,false)) + if (isMatching (actor, *iter) && functionFilter(mActor,*iter,true)) { if (!iter->sound.empty()) {