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); } }
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")); }
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>"); } }
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); }
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; } }
private void TurnOptionsOff() { Attack.SetActive(false); Defense.SetActive(false); Sabotage.SetActive(false); }
public override void LevelUp() { base.LevelUp(); ActionTime = Sabotage.SabotageTime(Level); }