Пример #1
0
        public List <bool> Apply(Character target)
        {
            List <bool> returns = new List <bool>();

            foreach (Token change in this.Tokens)
            {
                if (change.Name.StartsWith("!"))
                {
                    change.Name = change.Name.Substring(1);
                    foreach (Token checktoken in target.Tokens)
                    {
                        if (checktoken.Equals(change))
                        {
                            target.RemoveToken(checktoken);
                            returns.Add(true);
                            break;
                        }
                    }
                    returns.Add(false);
                }
                else
                {
                    switch (change.Name)
                    {
                    case "deltaBreastSize":
                        target.FixBoobs();
                        target.GetToken("breasts").GetToken("size").Value += change.GetToken("size").Value;
                        returns.Add(true);
                        break;

                    case "deltaBreastNum":
                        target.FixBoobs();
                        target.GetToken("breasts").GetToken("amount").Value += change.GetToken("amount").Value;
                        returns.Add(true);
                        break;

                    case "dicknipples":
                        target.FixBoobs();
                        var nips = target.GetToken("breasts").GetToken("nipples");
                        if (nips != null)
                        {
                            if (!nips.HasToken("canfuck"))
                            {
                                nips.RemoveToken("fuckable");
                                nips.RemoveToken("wetness");
                                nips.RemoveToken("looseness");
                                nips.AddToken("canfuck");
                                nips.AddToken("length", change.GetToken("length").Value);
                                nips.AddToken("thickness", change.GetToken("thickness").Value);
                                returns.Add(true);
                            }
                            else
                            {
                                returns.Add(false);
                            }
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "nipplecunts":
                        nips = target.GetToken("breasts").GetToken("nipples");
                        if (nips != null)
                        {
                            if (!nips.HasToken("fuckable"))
                            {
                                nips.RemoveToken("canfuck");
                                nips.RemoveToken("length");
                                nips.RemoveToken("thickness");
                                nips.AddToken("fuckable");
                                nips.AddToken("wetness", change.GetToken("wetness").Value);
                                nips.AddToken("looseness", change.GetToken("looseness").Value);
                                returns.Add(true);
                            }
                            else
                            {
                                returns.Add(false);
                            }
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaCockLength":
                        if (target.HasToken("penis"))
                        {
                            target.GetToken("penis").GetToken("length").Value += change.GetToken("length").Value;
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaCockThickness":
                        if (target.HasToken("penis"))
                        {
                            target.GetToken("penis").GetToken("thickness").Value += change.GetToken("thickness").Value;
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaNippleSize":
                        target.FixBoobs();
                        if (target.GetToken("breasts").HasToken("nipples"))
                        {
                            target.GetToken("breasts").GetToken("nipples").GetToken("size").Value += change.GetToken("size").Value;
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaNippleNumber":
                        target.FixBoobs();
                        var boobs = target.GetToken("breasts");
                        if (boobs.HasToken("nipples"))
                        {
                            boobs.GetToken("nipples").Value += change.GetToken("amount").Value;
                            if (boobs.GetToken("nipples").Value <= 0)
                            {
                                boobs.RemoveToken("nipples");
                            }
                        }
                        else
                        {
                            boobs.AddToken("nipples", change.GetToken("amount").Value).AddToken("size", 0.5f);
                        }
                        returns.Add(true);
                        break;

                    case "taur":
                        if (!target.HasToken("taur"))
                        {
                            target.AddToken("taur", (int)change.Value + target.GetToken("quadruped").Value);
                            target.RemoveToken("snaketail");
                            target.RemoveToken("slimeblob");
                            target.RemoveToken("quadruped");
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            target.GetToken("taur").Value += (int)change.Value;
                            if (target.GetToken("taur").Value <= 0)
                            {
                                target.RemoveToken("taur");
                                target.FixBroken();
                            }
                            returns.Add(true);
                        }
                        break;

                    case "snaketail":
                        if (!target.HasToken("snaketail"))
                        {
                            target.RemoveToken("taur");
                            target.RemoveToken("slimeblob");
                            target.RemoveToken("quadruped");
                            target.AddToken("snaketail");
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "quadruped":
                        if (!target.HasToken("quadruped"))
                        {
                            target.AddToken("quadruped", change.Value + target.GetToken("taur").Value);
                            target.RemoveToken("taur");
                            target.RemoveToken("slimeblob");
                            target.RemoveToken("snaketail");
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            target.GetToken("quadruped").Value += (int)change.Value;
                            if (target.GetToken("quadruped").Value <= 0)
                            {
                                target.RemoveToken("quadruped");
                                target.FixBroken();
                            }
                            returns.Add(true);
                        }
                        break;

                    case "slimeblob":
                        if (!target.HasToken("slimeblob"))
                        {
                            target.RemoveToken("taur");
                            target.RemoveToken("snaketail");
                            target.RemoveToken("quadruped");
                            target.AddToken("slimeblob");
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "normalLegs":
                        if (target.HasToken("taur") || target.HasToken("snaketail") || target.HasToken("slimeblob") || target.HasToken("quadruped"))
                        {
                            target.RemoveToken("taur");
                            target.RemoveToken("snaketail");
                            target.RemoveToken("quadruped");
                            target.RemoveToken("slimeblob");
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaBalls":
                        if (target.HasToken("balls"))
                        {
                            target.GetToken("balls").GetToken("amount").Value += change.GetToken("amount").Value;
                            returns.Add(true);
                        }
                        else
                        {
                            if (change.GetToken("amount").Value > 0)
                            {
                                target.AddToken("balls").AddToken("amount", (int)change.GetToken("amount").Value);
                                returns.Add(true);
                            }
                            else
                            {
                                returns.Add(false);
                            }
                        }
                        target.FixBroken();
                        break;

                    case "deltaBallSize":
                        if (target.HasToken("balls"))
                        {
                            target.GetToken("balls").GetToken("size").Value += change.GetToken("size").Value;
                            target.FixBroken();
                            returns.Add(true);
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    case "deltaEyes":
                        target.GetToken("eyes").GetToken("count").Value += (int)change.GetToken("count").Value;
                        returns.Add(true);
                        break;

                    case "legs":
                        if (target.HasToken("legs"))
                        {
                            if (target.GetToken("legs").Text == change.Text)
                            {
                                returns.Add(false);
                            }
                            else
                            {
                                returns.Add(true);
                            }
                            target.GetToken("legs").Text = change.Text;
                        }
                        else
                        {
                            returns.Add(false);
                        }
                        break;

                    default:
                        target.AddToken(change);
                        returns.Add(true);
                        break;
                    }
                }
            }
            return(returns);
        }