public static QuestCondition BuildCondition(int step, string conditions) { QCComposition qcAnd = new QCComposition(QCComposition.Mode.And); if( conditions != null && conditions.Length > 0 ) { string [] codelist = conditions.Split(','); foreach(string code in codelist) { string [] kv = code.Split( ':'); string key = kv[0].Trim(); string val = string.Empty; if( kv.Length > 1 ) { val = kv[1].Trim(); } QuestCondition qc = null; if( key == "stepover" ) { qc = new QCStepTest(QCStepTest.Mode.Over, step); } else if( key == "stepunder" ) { qc = new QCStepTest(QCStepTest.Mode.Under, step); } else if( key == "stepin" ) { qc = new QCStepTest(QCStepTest.Mode.Equal, step); } else if( key == "beatall" ) { qc = new QCBeatEnemy(QCBeatEnemy.Mode.All, System.Int32.Parse (val), 0 ); } else if( key == "beatover" ) { string [] ekv = code.Split( '+'); string eid = ekv[0].Trim(); string en = ekv[1].Trim(); qc = new QCBeatEnemy(QCBeatEnemy.Mode.More, System.Int32.Parse (eid), System.Int32.Parse (en) ); } else if( key == "beatunder" ) { string [] ekv = code.Split( '+'); string eid = ekv[0].Trim(); string en = ekv[1].Trim(); qc = new QCBeatEnemy(QCBeatEnemy.Mode.Less, System.Int32.Parse (eid), System.Int32.Parse (en) ); } else if( key == "item" ) { qc = new QCHasItem(QCHasItem.Mode.HasItem, System.Int32.Parse (val)); } else if( key == "notitem" ) { qc = new QCHasItem(QCHasItem.Mode.DoesntHaveItem, System.Int32.Parse (val)); } else if( key == "levelover" ) { qc = new QCLevelTest(QCLevelTest.Mode.Over, System.Int32.Parse (val)); } else if( key == "levelunder" ) { qc = new QCLevelTest(QCLevelTest.Mode.Under, System.Int32.Parse (val)); } else if( key == "event" ) { qc = new QCEventTest(QCEventTest.Mode.Completed, System.Int32.Parse (val)); } else if( key == "notevent" ) { qc = new QCEventTest(QCEventTest.Mode.NotCompleted, System.Int32.Parse (val)); } if(qc != null) { qcAnd.Add (qc); } } } return qcAnd; }