Пример #1
0
        private void CheckCommand()
        {
            try {
                string command = Page.Request.Form["sabotage"];

                if (command == null || command == "")
                {
                    return;
                }

                Planet target = Target;

                Sabotage sabotage = Sabotage.GetSabotage(command);
                Result   result   = sabotage.CanSabotage(Source, target);
                report.ResultSet = result;

                if (result.Ok)
                {
                    sabotage.PrepareSabotage(Source, target);
                }

                Log.log("----------SABOTAGE----------------");
                Log.log(result.log());
            } catch (Exception ex) {
                Log.log(ex);
            }
        }
Пример #2
0
        private void WriteItem(HtmlTextWriter writer)
        {
            TaskItem item     = (TaskItem)Source.Tasks.GetList(TaskDescriptor.Sabotage)[0];
            Sabotage sabotage = (Sabotage)item.Task;

            writer.WriteLine("<b>{0}</b>: {1}<br/>", CultureModule.getContent("Sabotage"), CultureModule.getContent(sabotage.Key));
            writer.WriteLine("<b>{0}</b>: {1}<br/>", CultureModule.getContent("scan_target"), sabotage.Target.Coordinate.ToString());
            writer.WriteLine("<b>{0}</b>: {1}<p/>", CultureModule.getContent("RemainingTime"), item.TurnsToAction);
            writer.WriteLine("<img src='{2}' /> <a href='javascript:cancelTaskItem({1});'>{0}</a><br/>", CultureModule.getContent("cancel"), item.Id, OrionGlobals.getCommonImagePath("move.gif"));
        }
Пример #3
0
 private void WriteItems(HtmlTextWriter writer)
 {
     foreach (SabotageFactory factory in Sabotage.Factories.Values)
     {
         Sabotage sabotage    = (Sabotage)factory.create(null);
         bool     canSabotage = sabotage.CanSabotage(Source, Source).Ok;
         writer.WriteLine("<tr onmouseover='overResource(this);' onmouseout='outResource(this);'>");
         writer.WriteLine("<td class='resource'>{0}</td>", CultureModule.getContent(sabotage.Key));
         writer.WriteLine("<td class='resourceCell'>{0}</td>", sabotage.Turns);
         writer.WriteLine("<td class='resourceCell'>{0}</td>", sabotage.Spies);
         writer.WriteLine("<td class='resourceCell'><a href='javascript:performSabotage(\"{1}\");'><img src='{0}' /></a></td>", OrionGlobals.YesNoImage(canSabotage), sabotage.Key);
         writer.WriteLine("</tr>");
     }
 }
Пример #4
0
        public static Card ToCardEvent(this string str)
        {
            Card ret;

            //First character indicates stage

            GameStage stage = (GameStage)int.Parse("" + str[0]);

            //Second character indicates subclass
            switch (str[1])
            {
            case 'a':
                //format: 'Stage''a''CrewCost''DayCost''Reward'
                ret = new AbandonedShip
                      (
                    stage,
                    Convert.ToInt32("" + str[2], 16),
                    int.Parse("" + str[3]),
                    Convert.ToInt32("" + str[4], 16)
                      );
                break;

            case 'A':
                //format: 'Stage''A''MinimumCrew''DayCost''Wares.Count'('Ware')+
                List <Ware> stationWares = new List <Ware>();
                int         wareCount    = int.Parse("" + str[4]);
                for (int i = 0; i < wareCount; ++i)
                {
                    stationWares.Add((Ware)(int.Parse("" + str[i + 5])));
                }
                ret = new AbandonedStation
                      (
                    stage,
                    Convert.ToInt32("" + str[2], 16),
                    int.Parse("" + str[3]),
                    stationWares
                      );
                break;

            case 'm':
                //format: 'Stage''m''Projectiles.Count'('Projectile','Direction')+
                List <(Projectile, Direction)> projectiles = new List <(Projectile, Direction)>();
                int projectileCount = int.Parse("" + str[2]);
                for (int i = 0; i < projectileCount; ++i)
                {
                    projectiles.Add(((Projectile)(int.Parse("" + str[3 + 2 * i])), (Direction)int.Parse("" + str[4 + 2 * i])));
                }
                ret = new MeteorShower(stage, projectiles);
                break;

            case 'y':
                //format: 'Stage''y''Firepower''DayCost''Reward''Penalty.Projectiles.Count'('Projectile','Direction')+
                List <(Projectile, Direction)> pirateProjectiles = new List <(Projectile, Direction)>();
                int pirateProjectileCount = int.Parse("" + str[5]);
                for (int i = 0; i < pirateProjectileCount; ++i)
                {
                    pirateProjectiles.Add(((Projectile)(int.Parse("" + str[6 + 2 * i])), (Direction)int.Parse("" + str[7 + 2 * i])));
                }
                ret = new Pirates
                      (
                    stage,
                    Convert.ToInt32("" + str[2], 16),
                    int.Parse("" + str[3]),
                    pirateProjectiles,
                    Convert.ToInt32("" + str[4], 16)
                      );
                break;

            case 'd':
                //format: 'Stage''d''Firepower''DayCost''Reward.Count'('Ware')+'Penalty'
                List <Ware> smugglerWares     = new List <Ware>();
                int         smugglerWareCount = int.Parse("" + str[4]);
                for (int i = 0; i < smugglerWareCount; ++i)
                {
                    smugglerWares.Add((Ware)int.Parse("" + str[5 + i]));
                }
                ret = new Smugglers
                      (
                    stage,
                    Convert.ToInt32("" + str[2], 16),
                    int.Parse("" + str[3]),
                    int.Parse("" + str[5 + smugglerWareCount]),
                    smugglerWares
                      );
                break;

            case 'S':
                //format: 'Stage''S''Firepower''DayCost''Reward''Penalty'
                ret = new Slavers
                      (
                    stage,
                    Convert.ToInt32("" + str[2], 16),
                    int.Parse("" + str[3]),
                    int.Parse("" + str[5]),
                    Convert.ToInt32("" + str[4], 16)
                      );
                break;

            case 'o':
                //format: 'Stage''o'
                ret = new OpenSpace(stage);
                break;

            case 'p':
                //format: 'Stage''p'
                ret = new Pandemic(stage);
                break;

            case 'g':
                //format: 'Stage''g'
                ret = new Sabotage(stage);
                break;

            case 'P':
                //format: 'Stage''P''DayCost''Offers.Count'('offer.count'('Ware')+)+
                List <List <Ware> > offers = new List <List <Ware> >();
                int offerCount             = int.Parse("" + str[3]);
                int index = 0;
                for (int i = 0; i < offerCount; ++i)
                {
                    int         offerWareCount = int.Parse("" + str[4 + index]);
                    List <Ware> offer          = new List <Ware>();
                    for (int j = 0; j < offerWareCount; ++j)
                    {
                        offer.Add((Ware)int.Parse("" + str[5 + index + j]));
                    }
                    offers.Add(offer);
                    index += offerWareCount + 1;
                }
                ret = new Planets
                      (
                    stage,
                    int.Parse("" + str[2]),
                    offers
                      );
                break;

            case 's':
                //format: 'Stage''s'
                ret = new Stardust(stage);
                break;

            case 'w':
                //format: 'Stage''w''Event1.Attribute''Event1.PenaltyType''Event1.Penalty'
                //                  'Event2.Attribute''Event2.PenaltyType''Event2.Penalty"
                //                  'Event3.Attribute''Event3.PenaltyType''Event3.Penalty.Projectiles.Count'('Projectile','Direction')+
                WarzoneEvent <int> event1 = new WarzoneEvent <int>
                                            (
                    (CardCheckAttribute)int.Parse("" + str[2]),
                    (CardPenalty)int.Parse("" + str[3]),
                    int.Parse("" + str[4])
                                            );
                WarzoneEvent <int> event2 = new WarzoneEvent <int>
                                            (
                    (CardCheckAttribute)int.Parse("" + str[5]),
                    (CardPenalty)int.Parse("" + str[6]),
                    int.Parse("" + str[7])
                                            );
                List <(Projectile, Direction)> event3Projectiles = new List <(Projectile, Direction)>();
                int event3ProjectilesCount = int.Parse("" + str[10]);
                for (int i = 0; i < event3ProjectilesCount; ++i)
                {
                    event3Projectiles.Add(((Projectile)int.Parse("" + str[11 + 2 * i]), (Direction)int.Parse("" + str[12 + 2 * i])));
                }
                WarzoneEvent <List <(Projectile, Direction)> > event3 = new WarzoneEvent <List <(Projectile, Direction)> >
                                                                        (
                    (CardCheckAttribute)int.Parse("" + str[8]),
                    (CardPenalty)int.Parse("" + str[9]),
                    event3Projectiles
                                                                        );
                ret = new Warzone(stage, event1, event2, event3);
                break;

            default:
                throw new InvalidCastException("Unrecognized CardEvent type character");
            }

            return(ret);
        }
Пример #5
0
        public static void PersonWasMachen(int id, int modus)
        {
            if (id == 0)   // Ungültige SpielerID?
            {
                return;
            }

            if (id == SW.Dynamisch.GetAktiverSpieler())
            {
                SW.Dynamisch.BelTextAnzeigen("Ihr könnt diese Aktion nicht auf Euch selbst anwenden");
                return;
            }

            switch (modus)
            {
            case 0:
                SW.UI.BeziehungPflegen.ShowDialog(id);
                break;

            case 1:
                #region Sabotage
                Sabotage sab;
                if (SW.Dynamisch.GetHumWithID(SW.Dynamisch.GetAktiverSpieler()).GetAktiveSabotage(id).GetDauer() > 0)
                {
                    sab = new Sabotage(id, true);
                }
                else
                {
                    sab = new Sabotage(id, false);
                }

                sab.ShowDialog();
                break;

                #endregion
            case 2:
                #region Anschwärzen
                // TODO: Auslagern
                if (SpE.getAnschwaerzID() == 0)
                {
                    SW.Dynamisch.BelTextAnzeigen(SW.Dynamisch.GetSpWithID(id).GetName() + " anschwärzen bei...");
                    SpE.setAnschwaerzID(id);
                }
                else
                {
                    if (id < SW.Statisch.GetMinKIID())
                    {
                        // TODO: Siehe Issue https://github.com/DerEinzehnte/Conspiratio-Programm/issues/57
                        SW.Dynamisch.BelTextAnzeigen("Ihr könnt nicht bei einem Mitspieler anschwärzen.");
                        break;
                    }

                    #region X bei Y anschwärzen
                    int x = SpE.getAnschwaerzID();
                    int y = id;

                    bool glaubtAnschuldigung = false;

                    if (x == y)
                    {
                        SW.Dynamisch.BelTextAnzeigen("Ihr könnt nicht jemanden bei sich selbst anschwärzen");
                        SpE.setAnschwaerzID(0);
                    }
                    else
                    {
                        //Wenn es verboten ist
                        if (SW.Dynamisch.GetGesetzX(22) != 0)
                        {
                            SW.Dynamisch.GetHumWithID(SW.Dynamisch.GetAktiverSpieler()).ErhoeheGesetzXUmEins(22);
                        }

                        SW.Dynamisch.GetHumWithID(SW.Dynamisch.GetAktiverSpieler()).GetSpielerStatistik().HiAnschwaerzungen++;

                        if (y >= SW.Statisch.GetMinKIID())
                        {
                            if (SW.Dynamisch.GetKIwithID(y).GetBeziehungZuKIX(SW.Dynamisch.GetAktiverSpieler()) >= 80)
                            {
                                glaubtAnschuldigung = true;
                            }
                        }
                        else
                        {
                            // TODO: Dem Mitspieler y die Vergehen anzeigen und ihn entscheiden lassen, ob er diesen Glauben schenkt
                        }

                        if (glaubtAnschuldigung)
                        {
                            if (y >= SW.Statisch.GetMinKIID())
                            {
                                //Beziehung um 30 herabsetzen
                                SW.Dynamisch.GetKIwithID(y).ErhoeheBeziehungZuX(x, -30);
                                SW.Dynamisch.GetKIwithID(y).ErhoeheBeziehungZuX(SW.Dynamisch.GetAktiverSpieler(), -10);
                                SW.Dynamisch.BelTextAnzeigen(SW.Dynamisch.GetKIwithID(y).GetKompletterName() + " schenkt Euren Worten Glauben.");
                            }
                            else
                            {
                                // TODO: Dem Mitspieler y mitteilen, dass bei ihm angeschwärzt wurde
                            }
                        }
                        else
                        {
                            if (x >= SW.Statisch.GetMinKIID())
                            {
                                SW.Dynamisch.GetKIwithID(x).ErhoeheBeziehungZuX(SW.Dynamisch.GetAktiverSpieler(), -50);
                                SW.Dynamisch.GetKIwithID(y).ErhoeheBeziehungZuX(SW.Dynamisch.GetAktiverSpieler(), -20);
                                SW.Dynamisch.BelTextAnzeigen(SW.Dynamisch.GetSpWithID(y).GetKompletterName() + " glaubt Euch kein Wort und berichtet " + SW.Dynamisch.GetSpWithID(x).GetKompletterName() + " von Euren Anschuldigungen.");
                            }
                            else
                            {
                                // TODO: Dem Mitspieler x mitteilen, dass er bei y angeschwärzt wurde
                            }
                        }
                    }

                    SpE.setAnschwaerzID(0);
                    #endregion
                }
                break;

                #endregion
            case 3:
                #region Spionage
                Spionage spi;
                if (SW.Dynamisch.GetHumWithID(SW.Dynamisch.GetAktiverSpieler()).GetAktiveSpionage(id).GetKosten() > 0)
                {
                    spi = new Spionage(id, true);
                }
                else
                {
                    spi = new Spionage(id, false);
                }
                spi.ShowDialog();
                break;

                #endregion
            case 4:
                SW.Dynamisch.Ermordung(id);
                break;

            case 5:
                SW.Dynamisch.Erpressen(id);
                break;

            case 7:
                SW.Dynamisch.PartnerSuchen(id);
                break;

            case 8:
                SW.Dynamisch.ProzessInitiieren(id);
                break;

            case 12:
                SW.Dynamisch.WeinVergiften(id);
                break;

            case 13:
                SW.Dynamisch.HenkersHand(id);
                break;
            }
        }
Пример #6
0
 private void TurnOptionsOff()
 {
     Attack.SetActive(false);
     Defense.SetActive(false);
     Sabotage.SetActive(false);
 }
Пример #7
0
 public override void LevelUp()
 {
     base.LevelUp();
     ActionTime = Sabotage.SabotageTime(Level);
 }