예제 #1
0
        }//fin du Main

        // ce qui est écrit dans le livre sur chaque substance
        internal static void LireSubstance(Substances s)
        {
            switch (s)
            {
            case Substances.dimercaprol:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du nalidixique " +
                                  "et du phytoménadione\nPotion B en mélangeant avec du glipizide et du rasburicase\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du nitrofurantoïne");
                break;

            case Substances.glipizide:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du phytoménadione " +
                                  "et du nitrofurantoïne\nPotion B en mélangeant avec du dimercaprol et du noramidopyrine\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du nalidixique");
                break;

            case Substances.nalidixique:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du sulfacétamide " +
                                  "et du phytoménadione\nPotion B en mélangeant avec du glipizide et du rasburicase\n Potion C en mélangeant avec " +
                                  "du noramidopyrine et du nitrofurantoïne");
                break;

            case Substances.nitrofurantoïne:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du glipizide " +
                                  "et du sulfaméthizol\nPotion B en mélangeant avec du dimercaprol et du rasburicase\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du nalidixique");
                break;

            case Substances.noramidopyrine:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du nalidixique " +
                                  "et du phytoménadione\nPotion B en mélangeant avec du glipizide et du nitrofurantoïne\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du rasburicase");
                break;

            case Substances.phytoménadione:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du nitrofurantoïne " +
                                  "et du rasburicase\nPotion B en mélangeant avec du glipizide et du sulfacétamide\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du sulfaméthizol");
                break;

            case Substances.rasburicase:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du sulfaméthizol " +
                                  "et du nalidixique\nPotion B en mélangeant avec du glipizide et du phytoménadione\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du nitrofurantoïne");
                break;

            case Substances.sulfacétamide:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du nalidixique " +
                                  "et du phytoménadione\nPotion B en mélangeant avec du sulfaméthizol et du rasburicase\n Potion C en mélangeant avec " +
                                  "du glipizide et du nitrofurantoïne");
                break;

            case Substances.sulfaméthizol:
                Console.WriteLine("substance pouvant servir à faire 3 potions :\nPotion A en mélangeant avec du nitrofurantoïne " +
                                  "et du glipizide\nPotion B en mélangeant avec du rasburicase et du phytoménadione\n Potion C en mélangeant avec " +
                                  "du sulfacétamide et du noramidopyrine");
                break;
            }
        }
예제 #2
0
        public void CanCreateSubstanceInstance()
        {
            var substances = new Substances();

            Assert.NotNull(substances);
            Assert.NotEmpty(substances.StateNames);
            Assert.Equal(States.Liquid, substances.GetStateValue("Liquid"));
            Assert.NotEmpty(substances.Get());
            Assert.NotEmpty(substances.Get(m => m.State.Equals(States.Liquid)));
        }
예제 #3
0
        public bool Defier(Joueur pj)
        {
            Substances substanceVolee = pj._inventaireSubstances[0];

            pj._inventaireSubstances.Remove(substanceVolee);
            Console.WriteLine(this._nom + " vous a volé le " + substanceVolee + " pour vous défier.");

            bool abandon = false;

            bool finCombat = false;

            while ((finCombat == false) && (abandon == false))
            {
                pj._ptVie -= this._degat;
                Console.WriteLine(this._nom + " vous attaque. Vous perdez " + this._degat + " points de vie. " +
                                  "Il vous reste " + pj._ptVie + " points de vie.");
                Console.WriteLine("Que voulez-vous faire ?\n1 : Répliquer avec un coup de pied\n2 : Répliquer avec un coup de poing" +
                                  "\n3 : Abandonner puis aller reprendre des forces dans la salle de repos");
                int choix = int.Parse(Console.ReadLine());
                if ((choix == 1) || (choix == 2))
                {
                    pj.Defier(this, choix);
                }
                if (choix == 3)
                {
                    abandon = true;
                }

                if ((pj._ptVie <= 0) || (this._ptVie <= 0))
                {
                    finCombat = true;
                }
            }

            if (this._ptVie == 0)
            {
                pj._inventaireSubstances.Add(substanceVolee);
                Console.WriteLine("Bravo ! Vous avez récupéré la substance qui vous avait été volée !" +
                                  " Vous pouvez continuer à préparer la potion.");
            }
            else if (abandon == true)
            {
                Console.WriteLine("Vous abandonnez et allez vous reposer");
            }
            else
            {
                // Appel à la fonction qui quitte le jeu
                Console.WriteLine("Perdu");
            }

            return(abandon);
        }
예제 #4
0
    public float this[UrbSubstanceTag Tag] {
        get {
            if (Tag == UrbSubstanceTag.All)
            {
                return(UsedCapacity);
            }

            if (Substances.TryGetValue(Tag, out float val))
            {
                return(val);
            }

            return(0.0f);
        }
    }
예제 #5
0
        }//fin du Main

        internal static void LireSubstance(Substances s)
        {
            switch (s)
            {
            case Substances.dimercaprol:
                Console.WriteLine("yeah");
                break;

            case Substances.glipizide:
                Console.WriteLine("yeahoh");
                break;

            case Substances.nalidixique:
                Console.WriteLine("yeahohoh");
                break;
            }
        }
예제 #6
0
        // Méthode permettant au bagarreur de défier le joueur en lui volant une de ses substances et en l'attaquant
        // En entrée : le joueur pj
        // En sortie : un booléen indiquant si le joueur a abandonné (true si oui) et doit aller en salle de repos
        internal bool Defier(Joueur pj)
        {
            // la bagarreur vole une substance au joueur
            Substances substanceVolee = pj._inventaireSubstances[0];

            pj._inventaireSubstances.Remove(substanceVolee);
            Console.WriteLine(this._nom + " vous a volé le " + substanceVolee + " pour vous défier.");

            bool abandon   = false;
            bool finCombat = false;

            // COMBAT
            while ((finCombat == false) && (abandon == false))
            {
                pj._ptVie -= this._degat;
                Console.WriteLine(this._nom + " vous attaque. Vous perdez " + this._degat + " points de vie. " +
                                  "Il vous reste " + pj._ptVie + " points de vie.");

                Console.WriteLine("Que voulez-vous faire ?\n1 : Répliquer avec un coup de pied\n2 : Répliquer avec un coup de poing" +
                                  "\n3 : Abandonner puis aller reprendre des forces dans la salle de repos");
                int choix = int.Parse(Console.ReadLine());

                if ((choix == 1) || (choix == 2)) // si le joueur choisit de répliquer
                {
                    pj.Defier(this, choix);
                }
                if (choix == 3) // si le joueur choisit d'abandonner et de quitter le laboratoire
                {
                    abandon = true;
                }

                if ((pj._ptVie <= 0) || (this._ptVie <= 0))
                {
                    finCombat = true;
                }
            }

            // Test : pourquoi le combat s'est il arrêté

            // Soit le bagarreur n'a plus de vie, le joueur a gagné le combat
            if (this._ptVie <= 0)
            {
                pj._inventaireSubstances.Add(substanceVolee);
                Console.WriteLine("Bravo ! Vous avez récupéré la substance qui vous avait été volée !" +
                                  " Vous pouvez continuer à préparer la potion.");
            }

            // Soit le joueur a abandonné
            else if (abandon == true)
            {
                Console.WriteLine("Vous abandonnez et allez vous reposer");
            }

            // Soit le joueur n'a plus de vie, le joueur a perdu la partie
            else
            {
                // FAIRE APPEL A LA FONCTION QUI PERMET DE QUITTER LE JEU
                Console.WriteLine("Perdu");
            }

            return(abandon);
        }
예제 #7
0
        static void Main(string[] args)
        {
            bool rejouer      = false;
            bool prendlafuite = false;
            bool gagne        = false;

            do
            {
                // Instanciation du personnage joueur
                Console.ForegroundColor = ConsoleColor.DarkMagenta;
                Console.WriteLine("\n\n\n\n\n\n\n\n\n");
                Console.WriteLine("                        ALCHIMED : EXPERIMENTONS LE FUTUR");
                Console.WriteLine("                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                Console.ReadKey();
                Console.ResetColor();
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("Bienvenue dans le jeu ALCHIMED ! Pour la suite vous allez incarner un personnage");
                Console.WriteLine("\nVeuillez entrer son prénom");
                Console.ResetColor();
                string prenom = Console.ReadLine();
                titan = new Joueur(prenom, 0, 100);
                titan._savoirs.Add(Savoirs.Chimie);
                titan._savoirs.Add(Savoirs.Culture);
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("\nVeuillez choisir sa caractéristique principale");
                titan.AttribuerCaracteristique();
                Console.WriteLine("\nAmusez vous bien !");
                Console.ResetColor();
                Console.ReadKey();


                //Instanciation de l'environnement de jeu

                // Construction des personnages non joueurs
                Bagarreur edgar = new Bagarreur("Edgar", 20);

                // Construction des objets
                ObjetSpecial ob1  = new ObjetSpecial("un lit", "Que ce lit est douillet...", Effets.regenerateur);
                ObjetSpecial ob2  = new ObjetSpecial("un poste radio", "Bonne idée, écoutons un peu de musique pour se détendre...", Effets.stress);
                ObjetSpecial ob3  = new ObjetSpecial("une table avec de la nourriture", "Il y a des smoothies et des gateaux, vous vous régalez !", Effets.vieP);
                ObjetSpecial ob4  = new ObjetSpecial("des haltères", "Vous pouvez utiliser les haltères pour un petit entraînement du haut du corps.", Effets.force1);
                ObjetSpecial ob5  = new ObjetSpecial("une presse", "Vous pouvez entraîner le bas de votre corps grâce à la presse !", Effets.force2);
                ObjetSpecial ob6  = new ObjetSpecial("un tapis de course", "Votre cardio va vite s'améliorer avec cet entraînement !", Effets.force3);
                Objet        ob7  = new Objet("une armoire", "Cette armoire est remplie de toutes sortes de choses...");
                Objet        ob8  = new Objet("une table basse", "Il y a un tas de journaux et de livres posés ici...");
                Objet        ob9  = new Objet("une blouse sur le porte manteau", "C'est une très belle blouse ! Je ne sais pas à qui elle est...");
                Objet        ob10 = new Objet("un tableau", "Ce tableau est magnifique ! On pourrait rester ici des heures à le contempler...");
                Objet        ob11 = new Objet("une fenêtre", "On a l'impression d'être en pleine nature ici ! Il y a des arbres et des fleurs à perte de vue...");
                Objet        ob12 = new Objet("une lampe de bureau", "Cette lampe me rappelle celle de ma grand mère...");
                Objet        ob13 = new Objet("un canapé", "Ce canapé marron a l'air douillet, et il vous tend les bras...");
                Contenant    ob17 = new Contenant("un livre", "Je me demande ce qu'il y a dans ce livre...", 9, new Substances[9] {
                    Substances.dimercaprol, Substances.glipizide,
                    Substances.nalidixique, Substances.nitrofurantoïne, Substances.noramidopyrine, Substances.phytoménadione, Substances.rasburicase,
                    Substances.sulfacétamide, Substances.sulfaméthizol
                });
                Objet     ob14 = new Objet("des paillasses", "Ces paillasses me seront utiles pour mélanger les substances et fabriquer\nle médicament.");
                Contenant ob15 = new Contenant("une armoire", "C'est génial, cette armoire est remplie de substances chimiques en tous genres...", 9,
                                               new Substances [9] {
                    Substances.dimercaprol, Substances.glipizide, Substances.nalidixique, Substances.nitrofurantoïne, Substances.noramidopyrine,
                    Substances.phytoménadione, Substances.rasburicase, Substances.sulfacétamide, Substances.sulfaméthizol
                });
                Contenant ob16 = new Contenant("un carton", "Ce carton a l'air poussiéreux...", new List <Contenant>()
                {
                    ob17
                });
                Objet ob18 = new Objet("Charles le squelette", "J'ai pour seule compagnie... Un squelette... Le prends pas mal hein");
                Objet ob19 = new Objet("un évier", "Cet évier est si sale...");
                Objet ob20 = new Objet("une commode", "Pouah ! Cette commode est rempli de blouses, de masques et de gants usagés...");
                Objet ob21 = new Objet("des bocaux", "Le contenu de ces bocaux est... étrange...");

                Potion p1 = new Potion("le galafène", "a pour effet blabla", Effets.p_galactumerie, new List <Substances>()
                {
                    Substances.sulfacétamide,
                    Substances.nalidixique, Substances.glipizide
                });

                // Construction des salles
                Piece salleRepos = new Piece("la salle de repos", new List <Objet>()
                {
                    ob1, ob2, ob3
                });
                Piece salleEntrainement = new Piece("la salle d'entraînement", new List <Objet>()
                {
                    ob4, ob5, ob6
                });
                Piece salleEtude = new Piece("la salle d'étude", new List <Objet>()
                {
                    ob7, ob8, ob9, ob10, ob11, ob12, ob13
                });
                salleEtude.AttribuerSavoir();
                Piece laboratoire = new Piece("le laboratoire", new List <Objet>()
                {
                    ob14, ob15, ob16, ob18, ob19, ob20, ob21
                });

                //Construction du Bâtiment Alchimed, enceinte du jeu
                Alchimed = new List <Piece> {
                    salleRepos, salleEtude, salleEntrainement, laboratoire
                };

                Console.WriteLine("\nEnfin ! La lettre d’Alchimed est arrivée...\n 'Félicitations, vous avez été présélectionné pour " +
                                  "intégrer notre prestigieux\n  programme ! Nous vous invitons désormais à nous rejoindre afin de vous\n  préparer au mieux " +
                                  "à la sélection finale. Comme vous le savez, cela consiste\n  à la fabrication d’un médicament dans un contexte imposé et un temps imparti.'");

                Console.WriteLine("Deux jours après, je me rendais à l’adresse indiquée dans la lettre et me\ntrouvais devant un bâtiment imposant," +
                                  " d’un blanc éclatant.\nJe me présentais alors à l'accueil d’Alchimed...\n\n 'Bonjour, bienvenue chez Alchimed ! Vous êtes" +
                                  " {0} n’est ce pas ? Je vais\n vous présenter les locaux qui vous ont été attribués et les différents éléments à votre" +
                                  " disposition.Vous pourrez rester ici aussi longtemps que nécessaire !\n Suivez-moi...\n\n La première pièce à votre gauche" +
                                  " est la salle de repos, où vous pourrez vous\n détendre et vous reposer. Ensuite, la seconde pièce à votre gauche est la\n salle d'étude," +
                                  " c'est ici que vous allez pouvoir enrichir votre culture. Sur\n votre droite se trouve la salle d'entraînement, où divers équipements" +
                                  " vous\n permettront d'améliorer votre force. Enfin, au boût du couloir se trouve le\n grand Laboratoire. Lorsque vous serez " +
                                  "suffisamment entraîné et vous sentirez\n prêt, présentez vous devant l'entrée. C'est là où se déroulera l'épreuve finale" +
                                  " Je vous laisse maintenant !'", titan._nom);



                //Première action du joueur : choisir une pièce à explorer
                Piece destination = null;
                int   choix;
                while (!gagne)
                {
                    //présentation des pièces et analyse du choix du joueur
                    destination = ChoisirPiece(Alchimed, titan);

                    // boucle de choix objet-action dans la pièce courante, la touche b permettant de changer de pièce
                    while ((Console.ReadKey().KeyChar != 'b') && (!prendlafuite))
                    {
                        //Affichage des objets de la pièce
                        destination.Lister();
                        //gestion des éventuelles erreurs de saisie
                        choix = VerifSaisie(destination._objets.Count);

                        //interactions avec les objets des pièces autre que le laboratoire
                        if (destination != laboratoire)
                        {
                            titan.DeplacerVersObjet(destination, choix);
                        }

                        //interactions avec les objets du laboratoire
                        else
                        {
                            //Renommage pour plus de clarté
                            Objet elementChoisi = destination._objets.ElementAt(choix - 1);
                            bool  estMeuble     = destination._objets.ElementAt(choix - 1) is Contenant;

                            //si on a pas choisi un meuble
                            if (!estMeuble)
                            {
                                elementChoisi.AfficheDescription();
                            }

                            //si c'est un meuble
                            else
                            {
                                //on peut faire un upcast puisqu'on a vérifié que l'objet est un meuble
                                Contenant choisi = (Contenant)destination._objets.ElementAt(choix - 1);
                                //le meuble choisi contient plusieurs objets avec lesquel on peut interagir
                                Console.WriteLine("\n\n" + choisi);
                                // choisi.AfficheDescription();


                                //une liste numérotées des objets contenus dans le meuble s'affiche

                                // si c'est l'armoire qui a été choisie
                                if (choisi.Nom == "une armoire")
                                {
                                    choisi.AfficheContenuS();
                                    choisi.ListerS();
                                    int indexChoisi = VerifSaisie(choisi._elements.Length + 1);
                                    //Renommage pour plus de clarté
                                    Substances contenuChoisi = choisi._elements.ElementAt(indexChoisi - 1);
                                    titan._inventaireSubstances.Add(contenuChoisi);
                                }
                                else // si c'est le carton
                                {
                                    Contenant r           = choisi.AfficheContenuO();
                                    int       indexChoisi = VerifSaisie(3);
                                    //Renommage pour plus de clarté
                                    Substances contenuChoisi = r._elements.ElementAt(indexChoisi - 1);
                                    LireSubstance(contenuChoisi);
                                }

                                //interactions selon l'objet

                                /* switch (contenuChoisi.Nom)
                                 * {
                                 *  case 1:
                                 *  "un livre":
                                 *      contenuChoisi.AfficheDescription();
                                 *      break;
                                 *  case "un becher":
                                 *      Console.WriteLine("\nCe bécher est vide et prêt à l'emploi. On peut y mélanger 3 substances.\n");
                                 *      if (choisi.Melanger(titan))
                                 *      {
                                 *          prendlafuite = edgar.Defier(titan);
                                 *          if (prendlafuite == true) {
                                 *              destination = salleRepos;
                                 *              titan.SeReposer(ob1);
                                 *          }
                                 *      }
                                 *      break;
                                 * }*/
                            }
                        }
                        Console.WriteLine("\nAppuyez sur b pour changer de pièce ou sur n'importe quelle autre touche pour continuer");
                        //le joueur a appuyé sur 'b', il souhaite donc changer de pièce
                    }

                    // fin du jeu : proposer de rejouer + enregistrement score
                }
            }while (rejouer);
        }//fin du Main
예제 #8
0
 public string RegisterSubstance(Substance substance)
 {
     Substances.Add(substance);
     globalCount++;
     return(Substances.Count.ToString());
 }
예제 #9
0
        internal override void OnTimerTick()
        {
            if (base.GetBotData() != null)
            {
                #region Ammunation
                if (base.GetRoom().RoomData.Description.Contains("AMMUNATION"))
                {
                    if (base.GetRoomUser().RotBody != 2)
                    {
                        base.GetRoomUser().RotBody = 2;
                        base.GetRoomUser().RotHead = 2;
                    }
                }
                #endregion

                #region Hobo

                if (base.GetBotData().InteractingWith != null && base.GetBotData().Name.Contains("HOBO"))
                {
                    HabboHotel.PathFinding.Vector2D Pos1 = new HabboHotel.PathFinding.Vector2D(base.GetRoomUser().X, base.GetRoomUser().Y);

                    HabboHotel.PathFinding.Vector2D Pos2 = new HabboHotel.PathFinding.Vector2D(base.GetBotData().InteractingWith.X, base.GetBotData().InteractingWith.Y);

                    if (LActionTimer <= 5)
                    {
                        List <Point> list = base.GetRoom().GetGameMap().getWalkableList();
                        if (list.Count == 0)
                        {
                            return;
                        }
                        int randomNumber = new Random(DateTime.Now.Millisecond + this._virtualId ^ 2).Next(0, list.Count - 1);
                        base.GetRoomUser().MoveTo(list[randomNumber].X, list[randomNumber].Y, true);

                        LActionTimer++;
                    }
                    else
                    {
                        if (!Robbed)
                        {
                            if (RoleplayManager.Distance(Pos1, Pos2) > 1)
                            {
                                base.GetRoomUser().MoveTo(Pos2.X, Pos2.Y + 1, true);
                            }
                            else
                            {
                                base.GetRoomUser().MoveTo(Pos2.X, Pos2.Y + 1, true);
                                Robbed = true;
                            }
                        }

                        if (!Robbed && !base.GetRoomUser().IsWalking)
                        {
                            base.GetBotData().TimesTried++;
                        }

                        if (base.GetBotData().TimesTried >= 20)
                        {
                            base.GetRoomUser().Chat(null, "Filho da puta!", true, 1);
                            System.Threading.Thread.Sleep(2000);
                            RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                        }

                        if (Robbed && !Done)
                        {
                            Random _s   = new Random();
                            int    Amnt = _s.Next(5, 100);

                            if (base.GetBotData().InteractingWith.GetClient() == null)
                            {
                                Done = true;
                            }

                            if (base.GetBotData().InteractingWith.GetClient().GetHabbo() == null)
                            {
                                Done = true;
                            }

                            if (base.GetBotData().InteractingWith.GetClient().GetHabbo().Credits - Amnt <= 0)
                            {
                                base.GetRoomUser().Chat(null, "Droga, você está sem dinheiro, vou deixar você ir desta vez!", true, 1);
                                Done = true;
                                return;
                            }

                            base.GetRoomUser().Chat(null, "*Rouba $" + Amnt + " de " + base.GetBotData().InteractingWith.GetClient().GetHabbo().UserName + " e foge*", true, 1);
                            RoleplayManager.GiveMoney(base.GetBotData().InteractingWith.GetClient(), -Amnt);
                            Done = true;
                        }

                        if (Done)
                        {
                            RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                        }
                    }
                }
                else
                {
                    if (base.GetBotData() != null)
                    {
                        if (base.GetBotData().Name.Contains("HOBO"))
                        {
                            if (base.GetBotData().InteractingWith == null && base.GetBotData().Name.Contains("HOBO") || base.GetBotData().InteractingWith.GetClient().GetHabbo().CurrentRoomId != base.GetBotData().RoomId)
                            {
                                RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                            }
                        }
                    }
                }

                #endregion

                #region Hobo 2

                if (base.GetBotData().InteractingWith != null && base.GetBotData().Name.Contains("HOBO 2"))
                {
                    HabboHotel.PathFinding.Vector2D Pos1 = new HabboHotel.PathFinding.Vector2D(base.GetRoomUser().X, base.GetRoomUser().Y);

                    HabboHotel.PathFinding.Vector2D Pos2 = new HabboHotel.PathFinding.Vector2D(base.GetBotData().InteractingWith.X, base.GetBotData().InteractingWith.Y);

                    if (LActionTimer <= 5)
                    {
                        List <Point> list = base.GetRoom().GetGameMap().getWalkableList();
                        if (list.Count == 0)
                        {
                            return;
                        }
                        int randomNumber = new Random(DateTime.Now.Millisecond + this._virtualId ^ 2).Next(0, list.Count - 1);
                        base.GetRoomUser().MoveTo(list[randomNumber].X, list[randomNumber].Y, true);

                        LActionTimer++;
                    }
                    else
                    {
                        if (!Robbed)
                        {
                            if (RoleplayManager.Distance(Pos1, Pos2) > 1)
                            {
                                base.GetRoomUser().MoveTo(Pos2.X, Pos2.Y + 1, true);
                            }
                            else
                            {
                                base.GetRoomUser().MoveTo(Pos2.X, Pos2.Y + 1, true);
                                Robbed = true;
                            }
                        }

                        if (!Robbed && !base.GetRoomUser().IsWalking)
                        {
                            base.GetBotData().TimesTried++;
                        }

                        if (base.GetBotData().TimesTried >= 20)
                        {
                            base.GetRoomUser().Chat(null, "Filho da puta!", true, 1);
                            System.Threading.Thread.Sleep(2000);
                            RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                        }

                        if (Robbed && !Done)
                        {
                            Random _s       = new Random();
                            int    AmntBank = _s.Next(5, 500);

                            if (base.GetBotData().InteractingWith.GetClient() == null)
                            {
                                Done = true;
                            }

                            if (base.GetBotData().InteractingWith.GetClient().GetHabbo() == null)
                            {
                                Done = true;
                            }

                            if (base.GetBotData().InteractingWith.GetClient().GetRoleplay().Bank - AmntBank <= 0)
                            {
                                base.GetRoomUser().Chat(null, "Droga, você está sem dinheiro, vou deixar você ir desta vez!", true, 1);
                                Done = true;
                                return;
                            }

                            base.GetRoomUser().Chat(null, "*Rouba $" + AmntBank + " de " + base.GetBotData().InteractingWith.GetClient().GetHabbo().UserName + " e foge*", true, 1);
                            base.GetBotData().InteractingWith.GetClient().GetRoleplay().SaveQuickStat("bank", "" + (base.GetBotData().InteractingWith.GetClient().GetRoleplay().Bank - AmntBank));
                            base.GetBotData().InteractingWith.GetClient().GetRoleplay().Bank -= AmntBank;
                            Done = true;
                        }

                        if (Done)
                        {
                            RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                        }
                    }
                }
                else
                {
                    if (base.GetBotData() != null)
                    {
                        if (base.GetBotData().Name.Contains("HOBO 2"))
                        {
                            if (base.GetBotData().InteractingWith == null && base.GetBotData().Name.Contains("HOBO 2") || base.GetBotData().InteractingWith.GetClient().GetHabbo().CurrentRoomId != base.GetBotData().RoomId)
                            {
                                RoleplayManager.KickBotFromRoom(base.GetRoomUser().BotData.Name, base.GetBotData().RoomId);
                            }
                        }
                    }
                }

                #endregion

                #region Free Roam Bot



                #endregion

                #region Store Bot

                if (robber != null)
                {
                    if (robber.GetHabbo() == null)
                    {
                        beingRobbed = false;
                        gatherNum   = 0;
                        gatherMsg   = 0;
                        amount      = 0;
                        return;
                    }

                    if (robber.GetHabbo().GetRoomUser() == null)
                    {
                        beingRobbed = false;
                        gatherNum   = 0;
                        gatherMsg   = 0;
                        amount      = 0;
                        return;
                    }


                    if (robber.GetRoleplay() == null)
                    {
                        beingRobbed = false;
                        gatherNum   = 0;
                        gatherMsg   = 0;
                        amount      = 0;
                        return;
                    }

                    if (robber.GetHabbo().GetRoomUser().Frozen || robber.GetRoleplay().Jailed || robber.GetRoleplay().Dead)
                    {
                        amount    = 0;
                        gatherMsg = 0;
                        gatherNum = 0;
                        robber.GetRoleplay().robbingStore = 0;
                        robber = null;
                        base.GetRoomUser().ApplyEffect(13);
                        disableRob  = true;
                        beingRobbed = false;
                        return;
                    }

                    if (gatherMsg <= 0)
                    {
                        base.GetRoomUser().Chat(null, "*Begins taking money from cash register*", true, 1);

                        if (gatherSpeed == 1)
                        {
                            gatherMsg = 10;
                        }

                        if (gatherSpeed == 2)
                        {
                            gatherMsg = 5;
                        }

                        if (gatherSpeed == 0)
                        {
                            gatherMsg = 20;
                        }


                        gatherNum++;
                    }
                    else
                    {
                        gatherMsg--;
                    }


                    if (gatherNum == 5)
                    {
                        int amount = new Random().Next(0, 100);

                        if (attack <= 6)
                        {
                            if (robber == null)
                            {
                                amount    = 0;
                                gatherMsg = 0;
                                gatherNum = 0;
                                robber.GetRoleplay().robbingStore = 0;
                                robber = null;
                                base.GetRoomUser().ApplyEffect(13);
                                disableRob  = true;
                                beingRobbed = false;
                                return;
                            }
                            else
                            {
                                attackCount++;

                                base.GetRoomUser().Chat(null, "*Takes out their pump shotgun*", true, 1);
                                base.GetRoomUser().ApplyEffect(164);

                                base.GetRoomUser().Chat(null, "*Shoots " + robber.GetHabbo().UserName + ", killing them!*", true, 1);

                                robber.GetRoleplay().DeadFigSet  = false;
                                robber.GetRoleplay().DeadSeconds = 60;
                                robber.GetRoleplay().DeadTimer   = 2;
                                robber.GetRoleplay().Dead        = true;
                                robber.GetRoleplay().SaveStatusComponents("dead");
                                RoleplayManager.HandleDeath(robber);
                                robber.SendNotif("You have been killed by a store clerk.");
                                return;
                            }
                        }

                        base.GetRoomUser().Chat(null, "*Drops money* Theres your money, now leave me alone!! [-$" + amount + "]", true, 1);
                        RoleplayManager.GiveMoney(robber, +amount);

                        amount    = 0;
                        gatherMsg = 0;
                        gatherNum = 0;
                        robber.GetRoleplay().robbingStore = 0;
                        robber = null;
                        base.GetRoomUser().ApplyEffect(13);
                        disableRob  = true;
                        beingRobbed = false;
                    }
                }
                else
                {
                    beingRobbed = false;
                    gatherNum   = 0;
                    gatherMsg   = 0;
                    amount      = 0;
                }

                lastRobbed++;
                if (lastRobbed > 5000 && disableRob)
                {
                    disableRob = false;
                    lastRobbed = 0;
                    base.GetRoomUser().ApplyEffect(0);
                }
            }

            #endregion

            #region Eatery Bot
            if (base.GetRoom() == null)
            {
                return;
            }
            if (base.GetRoom().RoomData.Description.Contains("EATERY"))
            {
                if (event_serving && event_serving_orderPlaced && !event_serving_delivered && !GetRoomUser().IsWalking)
                {
                    if (!resetted)
                    {
                        if (order_tick >= 15)
                        {
                            resetted = true;
                            GetRoomUser().Chat(null, "An error occured with pathfinding and I was unable to get to you, sorry about that!", true, 1);
                            serving.SendWhisper("Order has been aborted! Try sitting closer maybe?");
                            ResetVariablesFor("eatery");
                        }
                        else
                        {
                            order_tick++;
                        }
                    }
                }

                if (event_serving)
                {
                    if (event_serving_orderPlaced && !event_serving_delivered)
                    {
                        RoomUser User = serving.GetHabbo().GetRoomUser();


                        #region Delete Serve Session
                        if (serving == null)
                        {
                            event_serving = false;
                            ResetVariablesFor("eatery");
                            return;
                        }
                        if (serving.GetHabbo() == null)
                        {
                            event_serving = false;
                            ResetVariablesFor("eatery");
                            return;
                        }
                        if (serving.GetRoleplay() == null)
                        {
                            event_serving = false;
                            ResetVariablesFor("eatery");
                            return;
                        }
                        if (serving.GetHabbo().CurrentRoom == null)
                        {
                            event_serving = false;
                            ResetVariablesFor("eatery");
                            return;
                        }
                        if (serving.GetHabbo().CurrentRoom != GetRoom())
                        {
                            event_serving = false;
                            ResetVariablesFor("eatery");
                            return;
                        }
                        #endregion
                        if (!event_set_items)
                        {
                            event_serving_plate   = retrieveItem("diner_tray_0", true, User);
                            event_serving_oneway  = retrieveItem("one_way_door*1");
                            event_serving_oneway2 = retrieveItem("one_way_door*4");
                            event_set_items       = true;

                            if (event_serving_plate == null)
                            {
                                GetRoomUser().Chat(null, "Can you sit near an empty plate please?", true, 1);
                                ResetVariablesFor("eatery");
                                return;
                            }
                        }
                        else
                        {
                            /*
                             * Vector2D TargetVector = new Vector2D(event_serving_plate.GetX,event_serving_plate.GetY);
                             * Vector2D CurrentPos = new Vector2D(GetRoomUser().X,GetRoomUser().Y);
                             * if(Plus.Misc.Distance(TargetVector,CurrentPos) > 2)
                             * {
                             *
                             * }*/

                            if (Undefined_Timer_Tick_2 != 2)
                            {
                                passing_cur_gate       = false;
                                Undefined_Timer_Tick_2 = 2;
                            }

                            if (!event_serving_passedGate1)
                            {
                                HandleGatePass(event_serving_oneway);
                            }
                            else
                            {
                                GetRoomUser().AllowOverride = false;
                                if (!event_serving_atTable)
                                {
                                    if (GetRoomUser().X == RoleplayManager.GetPosSquare("behind", User).X&& GetRoomUser().Y == RoleplayManager.GetPosSquare("behind", User).Y)
                                    {
                                        GetRoomUser().RotBody = User.RotBody;
                                        GetRoomUser().RotHead = User.RotBody;
                                        event_serving_atTable = true;
                                    }
                                    else
                                    {
                                        GetRoomUser().MoveTo(RoleplayManager.GetPosSquare("behind", User));
                                    }
                                }
                                else
                                {
                                    if (!event_serving_delivered)
                                    {
                                        Food nFood = Substances.GetFoodByUName(event_serving_fooditem);

                                        RoleplayManager.ReplaceItem(serving, event_serving_plate, nFood.Item_Name);
                                        event_serving_delivered = true;
                                        GetRoomUser().Chat(null, "There you go, enjoy!", true, 1);

                                        ServerMessage action = new ServerMessage(LibraryParser.OutgoingRequest("RoomUserActionMessageComposer"));
                                        action.AppendInteger(GetRoomUser().VirtualId);
                                        action.AppendInteger(2);
                                        GetRoom().SendMessage(action);

                                        passing_cur_gate = false;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (!event_serving_passedGate2)
                        {
                            HandleGatePass(event_serving_oneway2);
                        }
                        else
                        {
                            ResetVariablesFor("eatery");
                        }
                    }
                }
            }
            #endregion
        }
예제 #10
0
        // Méthode permettant au bagarreur de défier le joueur en lui volant une de ses substances et en l'attaquant
        // En entrée : le joueur pj
        // En sortie : un booléen indiquant si le joueur a abandonné (true si oui) et doit aller en salle de repos
        internal bool Defier(Joueur pj)
        {
            // la bagarreur vole une substance au joueur
            Substances substanceVolee = pj._inventaireSubstances[0];

            pj._inventaireSubstances.Remove(substanceVolee);
            Console.WriteLine(this._nom + " vous a volé le " + substanceVolee + " pour vous défier.");

            bool abandon   = false;
            bool finCombat = false;

            // COMBAT
            while ((finCombat == false) && (abandon == false))
            {
                Console.WriteLine();
                pj._ptVie -= this._degat;
                Console.Write(this._nom + " vous attaque. Vous perdez " + this._degat + " points de vie. ");
                if (pj._ptVie <= 0)
                {
                    Console.WriteLine("Il ne vous reste aucun point de vie.");
                }
                else
                {
                    Console.WriteLine("Il vous reste " + pj._ptVie + " points de vie.");
                }

                if (pj._ptVie <= 0)
                {
                    finCombat = true;
                }
                else
                {
                    Console.WriteLine("Que voulez-vous faire ?\n1 : Répliquer avec un coup de pied\n2 : Répliquer avec un coup de poing" +
                                      "\n3 : Abandonner puis aller reprendre des forces dans la salle de repos");
                    int choix = Program.VerifSaisie(3);
                    Console.WriteLine();
                    if ((choix == 1) || (choix == 2)) // si le joueur choisit de répliquer
                    {
                        pj.Defier(this, choix);
                    }
                    if (choix == 3) // si le joueur choisit d'abandonner et de quitter le laboratoire
                    {
                        abandon = true;
                    }

                    if (this._ptVie <= 0)
                    {
                        finCombat = true;
                    }
                }
            }



            // Test : pourquoi le combat s'est il arrêté

            // Soit le joueur n'a plus de vie, le joueur a perdu la partie
            if (pj._ptVie <= 0)
            {
                Console.WriteLine("\nVous avez perdu !");
                Program.Quitter();
            }

            // Soit le bagarreur n'a plus de vie, le joueur a gagné le combat
            else if (this._ptVie <= 0)
            {
                pj._inventaireSubstances.Add(substanceVolee);
                Console.WriteLine("\nBravo ! Vous avez récupéré la substance qui vous avait été volée !" +
                                  " Vous pouvez continuer à préparer la potion.\n");
            }

            // Soit le joueur a abandonné
            else
            {
                Console.WriteLine("\nDommage ! Vous abandonnez et allez vous reposer.");
            }

            return(abandon);
        }
예제 #11
0
        // Procédure qui permet de fabriquer une potion
        // En entrée : le joueur pj souhaitant interagir avec l'objet
        internal static bool Melanger(Joueur pj)
        {
            bool              trouvePotion = false;
            Potion            potionTrouve = null;
            List <Substances> melange      = new List <Substances>();

            if (pj.NbSubstances >= 3)
            {
                Console.WriteLine("Quelles substances souhaitez-vous ajouter pour réaliser une potion avec ce bécher ?\n");
                pj.AfficheInventaire();
                int subN = 0;
                while (subN < 3)
                {
                    subN++;

                    Console.WriteLine("\nChoisissez la substance numéro {0} à ajouter.", subN);
                    int        indexSub   = VerifSaisie(pj.NbSubstances);
                    Substances subChoisie = pj._inventaireSubstances.ElementAt(indexSub - 1);
                    melange.Add(subChoisie);
                    pj._inventaireSubstances.Remove(subChoisie);
                }
                Console.WriteLine("\nPréparation en cours");
                int k = 0;
                while ((potions[k] != potionTrouve) && (k < potions.Count))
                {
                    //Nouveau nom pour plus de clarté
                    Potion test = potions[k];
                    int    i    = 0;
                    while (i < 4)
                    {
                        if (test._composition.Contains(melange[i]))
                        {
                            i++;
                        }
                        else
                        {
                            break;
                        }
                    }
                    if (i == 3)
                    {
                        potionTrouve = test;
                        trouvePotion = true;
                    }
                    else
                    {
                        k++;
                    }
                }
                if (k > potions.Count)
                {
                    trouvePotion = false;
                }
                else
                {
                    Console.WriteLine("\n\n\nFelicitation ! Vous avez fabriqué du " + Program.potions[k].Nom);
                }
            }
            pj._inventaireSubstances.Sort();
            return(trouvePotion);
        }