Skip to content

Commit

Permalink
Merge pull request #29 from Conspiratio/fix/humspieler-getgesamtvermo…
Browse files Browse the repository at this point in the history
…egen

Fix/humspieler getgesamtvermoegen
  • Loading branch information
SirTobyB committed Oct 23, 2022
2 parents f4f29c4 + d6e0368 commit f3cdda0
Show file tree
Hide file tree
Showing 10 changed files with 182 additions and 9 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog Conspiratio.Lib

## Unreleased

_TODO Releasedate_

**[DE]**
- Bei der Berechnung des Gesamtvermögens eines Spielers werden Rohstoffe nun nicht anhand des Standardpreises sondern des aktuellen Preises in der Stadt, in der sie gelagert sind, berechnet
- Neue Klasse für "Kupplerin" hinzugefügt
- Debug ToString Methoden zu verschiedenen Spielerklassen hinzugefügt, um Fehler einfacher finden zu können und einen besseren Überblick über die undurchsichtige Array Struktur mancher Objekte zu bekommen
- Titelstufe von Fürst/Fürstin und Herzog/Herzogin vertauscht, um sie an den historischen Rang in Europa anzupassen

## 2.0.0

_23.12.2021_
Expand Down
1 change: 1 addition & 0 deletions Conspiratio.Lib/Conspiratio.Lib.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
<Compile Include="Gameplay\Kampf\ZollOffizier.cs" />
<Compile Include="Gameplay\Kampf\ZollSoeldner.cs" />
<Compile Include="Gameplay\Kirche\Kirchgang.cs" />
<Compile Include="Gameplay\Kirche\Kupplerin.cs" />
<Compile Include="Gameplay\Kirche\Werbegeschenk.cs" />
<Compile Include="Gameplay\Niederlassung\EnumProduktionsslotAktionsart.cs" />
<Compile Include="Gameplay\Niederlassung\Karawane.cs" />
Expand Down
60 changes: 60 additions & 0 deletions Conspiratio.Lib/Gameplay/Kirche/Kupplerin.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using System;

using Conspiratio.Lib.Gameplay.Spielwelt;

namespace Conspiratio.Lib.Gameplay.Kirche
{
public class Kupplerin
{
public static int ErmittleOptimalenPartnerFuerSpieler(int spielerId)
{
int optimalerPartnerId = 0;

for (int i = SW.Statisch.GetMinKIID(); i < SW.Statisch.GetMaxKIID(); i++)
{
// Wenn sie unterschiedliches Geschlecht vorweisen
if (SW.Dynamisch.GetHumWithID(spielerId).GetMaennlich() != SW.Dynamisch.GetKIwithID(i).GetMaennlich())
{
// und nicht verheiratet sind
if (SW.Dynamisch.GetKIwithID(i).GetVerheiratet() == 0)
{
// und das Amt nicht höher ist als in der Stadtebene
if (SW.Dynamisch.GetKIwithID(i).GetAmtID() < 17)
{
if (optimalerPartnerId == 0)
{
optimalerPartnerId = i;
}
else
{
int Preis = BerechnePreisFuerKupplerin(i);

if (SW.Dynamisch.GetKIwithID(optimalerPartnerId).GetBeziehungZuKIX(SW.Dynamisch.GetAktiverSpieler()) < SW.Dynamisch.GetKIwithID(i).GetBeziehungZuKIX(SW.Dynamisch.GetAktiverSpieler()) + SW.Statisch.Rnd.Next(-15, 16) &&
Preis <= (SW.Dynamisch.GetHumWithID(spielerId).GetGesamtVermoegen(SW.Dynamisch.GetAktiverSpieler()) * 0.4d)) // Nur die Partner vorschlagen, deren Preis nicht höher liegt als 40 % des Gesamtvermögen des Spielers
{
optimalerPartnerId = i;
}
}
}
}
}
}

return optimalerPartnerId;
}

public static int BerechnePreisFuerKupplerin(int optimalerPartnerId)
{
return Convert.ToInt32(SW.Dynamisch.GetKIwithID(optimalerPartnerId).GetTaler() * SW.Statisch.GetKupplerProzente());
}

public static void BeginneWerbungUmOptimalenPartner(int spierlerId, int optimalerPartnerId, int preis)
{
SW.Dynamisch.GetHumWithID(spierlerId).WirbtUmSpielerID = optimalerPartnerId;
SW.Dynamisch.GetHumWithID(spierlerId).ErhoeheTaler(-preis);
SW.Dynamisch.GetKIwithID(optimalerPartnerId).ErhoeheVerliebt(50);

SW.Dynamisch.BelTextAnzeigen("Die Kupplerin leitet alle Vorkehrungen in die Wege...");
}
}
}
15 changes: 15 additions & 0 deletions Conspiratio.Lib/Gameplay/Niederlassung/SpHatWerkstaetten.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,20 @@ public void SetEnabled(bool enabled)
if (!_enabled)
_skill[1] = 0;
}

#region ToString (for debugging)
/// <summary>
/// Only for debugging purposes
/// </summary>
/// <returns></returns>
public override string ToString()
{
string text = "";
text += $"{nameof(_enabled)}: {_enabled}\t";
text += $"{nameof(_rohstoffID)}: {_rohstoffID}\t";
text += $"{nameof(_skill)}: {_skill}";
return text;
}
#endregion
}
}
59 changes: 56 additions & 3 deletions Conspiratio.Lib/Gameplay/Personen/HumSpieler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ public bool GetHenkersHand()
public override int GetGesamtVermoegen(int spielerID)
{
int gesamtVermoegen = 0;
double factor = 0.7;
double factorWertminderung = 0.7; // Der Faktor stellt die Wertminderung einer Werkstatt dar (sofern sie verkauft werden würde)

gesamtVermoegen += Taler; // Bargeld

Expand All @@ -308,12 +308,12 @@ public override int GetGesamtVermoegen(int spielerID)
// Werkstätten
if (_spielerHatInStadtXWerkstaettenY[i, j].GetEnabled() == true)
{
gesamtVermoegen += Convert.ToInt32(SW.Dynamisch.GetRohstoffwithID(SW.Dynamisch.GetStadtwithID(i).GetRohstoffe()[j]).GetWSKaufpreis() * factor);
gesamtVermoegen += Convert.ToInt32(SW.Dynamisch.GetRohstoffwithID(SW.Dynamisch.GetStadtwithID(i).GetRohstoffe()[j]).GetWSKaufpreis() * factorWertminderung);
}

// Rohstoffe
int rohid = SW.Dynamisch.GetStadtwithID(i).GetRohstoffe()[j];
gesamtVermoegen += SW.Dynamisch.GetRohstoffwithID(rohid).GetPreisStd() * _hatInStadtXMengeYRohstoffe[i, j];
gesamtVermoegen += SW.Dynamisch.GetStadtwithID(i).GetRohstoffPreisVonIDX(rohid) * _hatInStadtXMengeYRohstoffe[i, j];
}
}

Expand Down Expand Up @@ -764,5 +764,58 @@ public int ErmittlePreisWaisenkindAdoptieren(int spielerID)
return Convert.ToInt32(prozentfaktor * gesamtvermoegen / 100);
}
#endregion


#region ToString (for debugging)
/// <summary>
/// Only for debugging purposes
/// </summary>
/// <returns></returns>
public override string ToString()
{
string text = "";
text += base.ToString() + Environment.NewLine;

string rohstoffrechte = "";

for (int i = 1; i < SW.Statisch.GetMaxRohID(); i++)
{
if (GetRohstoffrechteX(i))
rohstoffrechte += SW.Dynamisch.GetRohstoffwithID(i).GetRohName() + ": Ja";
}

text += $"{nameof(_rohstoffrechte)}: {rohstoffrechte}{Environment.NewLine}";

string spielerHatHausVonStadtAnArraystelle = "";

for (int i = 1; i < SW.Statisch.GetMaxStadtID(); i++)
{
if (GetSpielerHatHausVonStadtAnArraystelle(i).GetHausID() != 0)
spielerHatHausVonStadtAnArraystelle += $"Stadt {SW.Dynamisch.GetStadtwithID(i).GetGebietsName()} ({i}):\t\t{GetSpielerHatHausVonStadtAnArraystelle(i)}{Environment.NewLine}";
}

text += $"{nameof(_spielerHatHausVonStadtAnArraystelle)}:{Environment.NewLine}{spielerHatHausVonStadtAnArraystelle}";

string spielerHatInStadtXWerkstaettenY = "";

for (int i = 0; i < SW.Statisch.GetMaxStadtID(); i++)
{
for (int j = 0; j < SW.Statisch.GetMaxWerkstaettenProStadt(); j++)
{
if (_spielerHatInStadtXWerkstaettenY[i, j].GetEnabled())
{
string stadtName = "Unbekannt";
if (i > 0)
stadtName = SW.Dynamisch.GetStadtwithID(i).GetGebietsName();

spielerHatInStadtXWerkstaettenY += $"Stadt {stadtName} ({i}):\t\tPlatz: {j + 1} {_spielerHatInStadtXWerkstaettenY[i, j]}{Environment.NewLine}";
}
}
}

text += $"{nameof(_spielerHatInStadtXWerkstaettenY)}:{Environment.NewLine}{spielerHatInStadtXWerkstaettenY}";
return text;
}
#endregion
}
}
17 changes: 17 additions & 0 deletions Conspiratio.Lib/Gameplay/Personen/Spieler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -368,5 +368,22 @@ public string GetSeinIhr()
return "ihr";
}
#endregion

#region ToString (for debugging)
/// <summary>
/// Only for debugging purposes
/// </summary>
/// <returns></returns>
public override string ToString()
{
string text = "";
text += $"{nameof(Name)}: {Name}\t";
text += $"{nameof(Maennlich)}: {Maennlich}\t";
text += $"{nameof(Taler)}: {Taler}\t";
text += $"{nameof(Religion)}: {Religion}\t";
text += $"{nameof(Alter)}: {Alter}";
return text;
}
#endregion
}
}
2 changes: 1 addition & 1 deletion Conspiratio.Lib/Gameplay/Rohstoffe/Rohstoff.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class Rohstoff
/// <param name="wekstattVerhaeltnisWerkstatt">Faktor Werkstätten für das Verhältnis Arbeiter zu Werkstätten</param>
/// <param name="rohstoffStufe">Rohstoffstufe (1 bis 3) zur Unterteilung auch für die Handelszertifikate und die Lagermenge</param>
/// <param name="textQualitaetProduktion">Text, der im Buch auftaucht, wenn die Ware produziert wurde, z.B. Eure Getreideernte verlief {0}</param>
/// <param name="lagermengeProQMeter">OPTIONAL: Gibt an, wie viel auf einem Qudaratmeter Lagerplatz gelagert werden können
/// <param name="lagermengeProQMeter">OPTIONAL: Gibt an, wie viel auf einem Quadratmeter Lagerplatz gelagert werden können
/// (standardmäßig abhängig von der Stufe: 1 = 10, 2 = 6, 3 = 3)</param>
public Rohstoff(int preisMin, int preisStd, int preisMax, string name, string produktionstext, int werkstattVerhaeltnisArbeiter,
int wekstattVerhaeltnisWerkstatt, int rohstoffStufe, string textQualitaetProduktion, int lagermengeProQMeter = 10)
Expand Down
4 changes: 2 additions & 2 deletions Conspiratio.Lib/Gameplay/Spielwelt/StatischeSpieldaten.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1221,8 +1221,8 @@ public void Initialisieren(IStrafe[] strafarten, IPrivileg[] privilegien)
Tit[5] = new Freiherr(5, "Freiherr", "Freifrau", 55);
Tit[6] = new Baron(6, "Baron", "Baronin", 75);
Tit[7] = new Graf(7, "Graf", "Gräfin", 100);
Tit[8] = new Herzog(8, "Herzog", "Herzogin", 125);
Tit[9] = new Fuerst(9, "Fürst", "Fürstin", 150);
Tit[8] = new Fuerst(8, "Fürst", "Fürstin", 125);
Tit[9] = new Herzog(9, "Herzog", "Herzogin", 150);
#endregion

#region Werbegeschenke anlegen
Expand Down
19 changes: 18 additions & 1 deletion Conspiratio.Lib/Gameplay/Wohnsitz/SpHatHaus.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;

using Conspiratio.Lib.Gameplay.Spielwelt;
using Conspiratio.Lib.Gameplay.Wohnsitz;

namespace Conspiratio.Lib.Gameplay.Wohnsitz
{
Expand Down Expand Up @@ -246,6 +246,23 @@ private int GetGesundheitsbonusAllerErweiterungen()
}
#endregion

#region ToString (for debugging)
/// <summary>
/// Only for debugging purposes
/// </summary>
/// <returns></returns>
public override string ToString()
{
string text = "";
text += $"{nameof(_hausID)}: {_hausID}\t";
text += $"{nameof(_stadtID)}: {_stadtID}\t";
text += $"{nameof(_restlicheBauzeit)}: {_restlicheBauzeit}\t";
text += $"{nameof(_zustandInProzent)}: {_zustandInProzent}\t";
text += $"{nameof(_wertverlustFaktor)}: {_wertverlustFaktor}";
return text;
}
#endregion


#region Properties

Expand Down
4 changes: 2 additions & 2 deletions Conspiratio.Lib/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@
//
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
[assembly: AssemblyVersion("2.0.0")]
[assembly: AssemblyFileVersion("2.0.0")]
[assembly: AssemblyVersion("2.1.0")]
[assembly: AssemblyFileVersion("2.1.0")]

0 comments on commit f3cdda0

Please sign in to comment.