示例#1
0
        private static void ACTION_USER_HAIR(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var nextIds = cqaction.param.Trim().Split(' ');

            invoker.Hair = uint.Parse(nextIds[1]);
            Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
        }
示例#2
0
        private static void ACTION_USER_EFFECT(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var nextIds = cqaction.param.Trim().Split(' ');

            (invoker as Player)?.Send(LegacyPackets.Effect(invoker, nextIds[1]));
            Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
        }
示例#3
0
        private static void ACTION_USER_MEDIAPLAY(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var nextIds = cqaction.param.Trim().Split(' ');

            //Send Sound Packet here
            Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
        }
示例#4
0
        private static void ACTION_ITEM_MULTIDEL(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var items = cqaction.param.Trim().Split(' ');

            var startId = int.Parse(items[0]);
            var endId   = int.Parse(items[1]);
            var amount  = int.Parse(items[2]);

            var range = Enumerable.Range(startId, (endId - startId) + 1);


            var amountFound = (from id in range from inventoryItem in invoker.Inventory.Items where inventoryItem.Value.ItemId == id select id).Count();
            var removed     = 0;

            foreach (var inventoryItem in invoker.Inventory.Items)
            {
                if (removed == amount)
                {
                    break;
                }
                if (range.Contains(inventoryItem.Value.ItemId))
                {
                    invoker.Inventory.RemoveItem(inventoryItem.Value);
                    removed++;
                }
            }


            Process(target, invoker, amountFound >= amount
                ? db.cq_action.Find(cqaction.id_next)
                : db.cq_action.Find(cqaction.id_nextfail), db);
        }
示例#5
0
        private static void ACTION_USER_CHGMAP(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var nextIds = cqaction.param.Trim().Split(' ');
            var map     = ushort.Parse(nextIds[0]);
            var x       = ushort.Parse(nextIds[1]);
            var y       = ushort.Parse(nextIds[2]);

            invoker.Teleport(x, y, map);
            Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
        }
示例#6
0
 private static void ACTION_ITEM_LEAVESPACE(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
 {
     if (invoker.Inventory.Count + cqaction.data < 40)
     {
         Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
     }
     else
     {
         Process(target, invoker, db.cq_action.Find(cqaction.id_nextfail), db);
     }
 }
示例#7
0
        private static void ACTION_ITEM_CHECK(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var itemId = cqaction.data;

            if (invoker.Inventory.HasItem(itemId))
            {
                Process(target, invoker, db.cq_action.Find(cqaction.id_next),
                        db);
            }
            else
            {
                Process(target, invoker, db.cq_action.Find(cqaction.id_nextfail), db);
            }
        }
示例#8
0
        private static void ACTION_USER_MAGIC(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var param   = cqaction.param.Trim().Split(' ');
            var skillId = ushort.Parse(param[1]);

            switch (param[0])
            {
            case "learn":
            {
                (invoker as Player)?.AddSkill(new Skill(skillId, 0, 0));
                break;
            }
            }
            Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
        }
示例#9
0
        private static void ACTION_RAND(YiObj target, YiObj attacker, cq_action cqaction, SquigglyContext db)
        {
            var amount     = float.Parse(cqaction.param.Trim().Split(' ')[0]);
            var afterKills = float.Parse(cqaction.param.Trim().Split(' ')[1]);

            if (YiCore.Success(afterKills / amount))
            {
                //Output.WriteLine($"{type}:{(int) type} -> Chance: {afterKills/amount}", ConsoleColor.Green);
                Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
            }
            else
            {
                //Output.WriteLine($"{type}:{(int) type} -> Chance: {afterKills / amount}", ConsoleColor.Red);
                Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
            }
        }
示例#10
0
        private static void ACTION_RANDACTION(YiObj target, YiObj attacker, cq_action cqaction, SquigglyContext db)
        {
            var nextIds = cqaction.param.Trim().Split(' ');

            var nextIndex = SafeRandom.Next(nextIds.Length);

            var nextId = long.Parse(nextIds[nextIndex]);

            cqaction = db.cq_action.Find(nextId);
            //Output.WriteLine($"Mob Action -> Data: {cqaction.data} Param: {cqaction.param.Trim()}",ConsoleColor.Green);

            var dropId = cqaction.param.Trim().Split(' ')[1];
            var item   = ItemFactory.Create(int.Parse(dropId));

            FloorItemSystem.Drop(attacker, target, item);
        }
示例#11
0
        private static void ACTION_ITEM_MULTICHK(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            var items = cqaction.param.Trim().Split(' ');

            var startId = int.Parse(items[0]);
            var endId   = int.Parse(items[1]);
            var amount  = int.Parse(items[2]);

            var range = Enumerable.Range(startId, (endId - startId) + 1);


            var amountFound = (from id in range from inventoryItem in invoker.Inventory.Items where inventoryItem.Value.ItemId == id select id).Count();

            Process(target, invoker, amountFound >= amount
                ? db.cq_action.Find(cqaction.id_next)
                : db.cq_action.Find(cqaction.id_nextfail), db);
        }
示例#12
0
        private static void ACTION_MST_DROPITEM(YiObj target, YiObj attacker, cq_action cqaction, SquigglyContext db)
        {
            var condition = cqaction.param.Trim();
            var what      = condition.Split(' ')[0];

            switch (what)
            {
            case "dropmoney":
            {
                var maxAmount = int.Parse(condition.Split(' ')[1]);
                var chance    = int.Parse(condition.Split(' ')[2]) / 100;


                if (YiCore.Success(chance))
                {
                    //Output.WriteLine($"{type}:{(int) type} -> {maxAmount} {chance}", ConsoleColor.Green);
                    Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    FloorItemSystem.DropMoney(attacker, target, maxAmount);
                }
                else
                {
                    //Output.WriteLine($"{type}:{(int) type} -> {maxAmount} {chance}", ConsoleColor.Red);
                    Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                }

                break;
            }

            case "dropitem":
            {
                var id = int.Parse(condition.Split(' ')[1]);
                //Output.WriteLine($"{type}:{(int) type} -> {id}", ConsoleColor.Green);
                Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                FloorItemSystem.Drop(attacker, target, ItemFactory.Create(id));
                Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                break;
            }
            }
        }
示例#13
0
        private static void ACTION_CHKTIME(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            if (cqaction.data == 3)
            {
                var param          = cqaction.param.Trim().Split(' ');
                var startDayOfWeek = int.Parse(param[0]);
                var startTime      = param[1];
                var endDayOfWeek   = int.Parse(param[2]);
                var endTime        = param[3];

                if (((int)DateTime.Now.DayOfWeek) >= startDayOfWeek && ((int)DateTime.Now.DayOfWeek) <= endDayOfWeek)
                {
                    var startDT = DateTime.ParseExact(startTime, "H:mm", null, System.Globalization.DateTimeStyles.None);
                    var endDT   = DateTime.ParseExact(endTime, "H:mm", null, System.Globalization.DateTimeStyles.None);

                    if (DateTime.Now.Hour >= startDT.Hour && DateTime.Now.Hour <= endDT.Hour)
                    {
                        Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
                        return;
                    }
                }
            }
            Process(target, invoker, db.cq_action.Find(cqaction.id_nextfail), db);
        }
示例#14
0
        private static void Process(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
        {
            if (cqaction == null || cqaction.id == 0)
            {
                return;
            }

            invoker.CurrentAction = cqaction;
            var type = (Cq_ActionId)cqaction.type;

            //Output.WriteLine($"Mob Action -> Type: {type}:{(int) type} Data: {cqaction.data} Param: {cqaction.param.Trim()}");

            switch (type)
            {
            default:
            {
                Output.WriteLine($"Unknown Cq_ActionId -> {cqaction}", ConsoleColor.Blue);
                break;
            }

            case Cq_ActionId.ACTION_MENUTEXT:
            {
                if (invoker is Player player)
                {
                    player.Send(LegacyPackets.NpcSay(cqaction.param.Trim().Replace("~", " ")));
                    if (cqaction.id_next == 0)
                    {
                        player.Send(LegacyPackets.NpcFinish());
                    }
                    else
                    {
                        Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
                    }
                }

                break;
            }

            case Cq_ActionId.ACTION_MENULINK:
            {
                if (invoker is Player player)
                {
                    var option   = cqaction.param.Trim().Split(' ')[0];
                    var sControl = cqaction.param.Split(' ', StringSplitOptions.RemoveEmptyEntries);
                    var control  = int.Parse(sControl[1]);

                    player.NpcTasks.Add((byte)player.NpcTasks.Count, (int)control);

                    player.Send(LegacyPackets.NpcLink(option.Replace("~", " "), (byte)(player.NpcTasks.Count - 1)));
                    if (cqaction.id_next == 0)
                    {
                        player.Send(LegacyPackets.NpcFinish());
                    }
                    else
                    {
                        Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
                    }
                }

                break;
            }

            case Cq_ActionId.ACTION_MENUPIC:
            {
                if (invoker is Player player)
                {
                    var faceId = byte.Parse(cqaction.param.Trim().Split(' ')[2]);
                    player.Send(LegacyPackets.NpcFace(faceId));
                    if (cqaction.id_next == 0)
                    {
                        player.Send(LegacyPackets.NpcFinish());
                    }
                    else
                    {
                        Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
                    }
                }
                break;
            }

            case Cq_ActionId.ACTION_MENUCREATE:
            {
                if (invoker is Player player)
                {
                    player.Send(LegacyPackets.NpcFinish());
                }
                break;
            }

            case Cq_ActionId.ACTION_USER_SEX:
            {
                if (cqaction.id_nextfail == 0 && cqaction.id_next == 0)
                {
                    return;
                }

                //If male next_id else nextid_fail

                break;
            }

            case Cq_ActionId.ACTION_ITEM_CHECK:
            {
                ACTION_ITEM_CHECK(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_MST_DROPITEM:
            {
                ACTION_MST_DROPITEM(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_RAND:
            {
                ACTION_RAND(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_USER_ATTR:
            {
                ACTION_USER_ATTR(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_RANDACTION:
            {
                ACTION_RANDACTION(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_USER_TALK:
            {
                invoker.GetMessage("SYSTEM", invoker.Name.Trim(), cqaction.param.Trim().Replace("~", ""), (MsgTextType)cqaction.data);
                break;
            }

            case Cq_ActionId.ACTION_USER_HAIR:
            {
                ACTION_USER_HAIR(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_USER_MEDIAPLAY:
            {
                ACTION_USER_MEDIAPLAY(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_USER_EFFECT:
            {
                ACTION_USER_EFFECT(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_USER_CHGMAP:
            {
                ACTION_USER_CHGMAP(target, invoker, cqaction, db);
                break;
            }

            case Cq_ActionId.ACTION_ITEM_LEAVESPACE:
                ACTION_ITEM_LEAVESPACE(target, invoker, cqaction, db);
                break;

            case Cq_ActionId.ACTION_ITEM_ADD:
                ACTION_ITEM_ADD(target, invoker, cqaction, db);
                break;

            case Cq_ActionId.ACTION_ITEM_MULTICHK:
                ACTION_ITEM_MULTICHK(target, invoker, cqaction, db);
                break;

            case Cq_ActionId.ACTION_ITEM_MULTIDEL:
                ACTION_ITEM_MULTIDEL(target, invoker, cqaction, db);
                break;

            case Cq_ActionId.ACTION_CHKTIME:
                ACTION_CHKTIME(target, invoker, cqaction, db);
                break;

            case Cq_ActionId.ACTION_USER_MAGIC:
                ACTION_USER_MAGIC(target, invoker, cqaction, db);
                break;
            }
        }
示例#15
0
        private static void ACTION_USER_ATTR(YiObj target, YiObj attacker, cq_action cqaction, SquigglyContext db)
        {
            var condition = cqaction.param.Trim();
            var what      = condition.Split(' ')[0];

            switch (what)
            {
            case "level":
            {
                var op  = condition.Split(' ')[1];
                var val = condition.Split(' ')[2];

                switch (op)
                {
                case "<=":
                {
                    if (attacker.Level <= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">=":
                {
                    if (attacker.Level >= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "<":
                {
                    if (attacker.Level < byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">":
                {
                    if (attacker.Level > byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "==":
                {
                    if (attacker.Level == byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unknown Operator for " + what + " -> " + op);
                    break;
                }

                break;
            }

            case "life":
            {
                var op  = condition.Split(' ')[1];
                var val = condition.Split(' ')[2];

                switch (op)
                {
                case "<=":
                {
                    if (attacker.CurrentHp <= int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next),
                                db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">=":
                {
                    if (attacker.CurrentHp >= int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "<":
                {
                    if (attacker.CurrentHp < int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">":
                {
                    if (attacker.CurrentHp > int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "==":
                {
                    if (attacker.CurrentHp == int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unknown Operator for " + what + " -> " + op);
                    break;
                }

                break;
            }

            case "metempsychosis":
            {
                var op  = condition.Split(' ')[1];
                var val = condition.Split(' ')[2];

                switch (op)
                {
                case "<=":
                {
                    if (attacker.Reborn <= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">=":
                {
                    if (attacker.Reborn >= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "<":
                {
                    if (attacker.Reborn < byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">":
                {
                    if (attacker.Reborn > byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "==":
                {
                    if (attacker.Reborn == byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next),
                                db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int) type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker,
                                db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unknown Operator for " + what + " -> " + op);
                    break;
                }

                break;
            }

            case "profession":
            {
                var op  = condition.Split(' ')[1];
                var val = condition.Split(' ')[2];

                switch (op)
                {
                case "<=":
                {
                    if (attacker.Class <= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "<":
                {
                    if (attacker.Class < byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">=":
                {
                    if (attacker.Class >= byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">":
                {
                    if (attacker.Class > byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "==":
                {
                    if (attacker.Class == byte.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unknown Operator for " + what + " -> " + op);
                    break;
                }

                break;
            }

            case "money":
            {
                var op  = condition.Split(' ')[1];
                var val = condition.Split(' ')[2];

                switch (op)
                {
                case "+=":
                {
                    attacker.Money += int.Parse(val);
                    Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    break;
                }

                case "<=":
                {
                    if (attacker.Money <= int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "<":
                {
                    if (attacker.Money < int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">=":
                {
                    if (attacker.Money >= int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case ">":
                {
                    if (attacker.Money > int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                case "==":
                {
                    if (attacker.Money == int.Parse(val))
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Green);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_next), db);
                    }
                    else
                    {
                        //Output.WriteLine($"{type}:{(int)type} -> {condition}", ConsoleColor.Red);
                        Process(target, attacker, db.cq_action.Find(cqaction.id_nextfail), db);
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unknown Operator for " + what + " -> " + op);
                    break;
                }

                break;
            }

            default:
            {
                Console.WriteLine("Unknown ACTION_USER_ATTR -> " + what);
                break;
            }
            }
        }
示例#16
0
 private static void ACTION_ITEM_ADD(YiObj target, YiObj invoker, cq_action cqaction, SquigglyContext db)
 {
     invoker.Inventory.AddItem(ItemFactory.Create(721189));
     Process(target, invoker, db.cq_action.Find(cqaction.id_next), db);
 }