Ergebnis 1 bis 8 von 8

Thema: Gebäudezerstörung bei Stadteroberungen

  1. #1
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.040

    Gebäudezerstörung bei Stadteroberungen

    Über das Thema gibt's eigentlich nicht viel zu sagen, aber da ich mir das gerade angesehen hab, schreib ich es jetzt auch mal auf.
    Relevant ist dieser Code:

    PHP-Code:
    void CvPlayer::acquireCity(CvCitypOldCitybool bConquestbool bTradebool bUpdatePlotGroups)
    {
        [...]
        
    bRecapture = ((eHighestCulturePlayer != NO_PLAYER) ? (GET_PLAYER(eHighestCulturePlayer).getTeam() == getTeam()) : false);
        [...]
        for (
    iI 0iI GC.getNumBuildingInfos(); iI++)
        {
            
    int iNum 0;

            if (
    paiNumRealBuilding[iI] > 0)
            {
                
    BuildingClassTypes eBuildingClass = (BuildingClassTypes)GC.getBuildingInfo((BuildingTypes)iI).getBuildingClassType();
                if (::
    isWorldWonderClass(eBuildingClass))
                {
                    
    eBuilding = (BuildingTypes)iI;
                }
                else
                {
                    
    eBuilding = (BuildingTypes)GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(eBuildingClass);
                }

                if (
    eBuilding != NO_BUILDING)
                {
                    if (
    bTrade || !(GC.getBuildingInfo((BuildingTypes)iI).isNeverCapture()))
                    {
                        if (!
    isProductionMaxedBuildingClass(((BuildingClassTypes)(GC.getBuildingInfo(eBuilding).getBuildingClassType())), true))
                        {
                            if (
    pNewCity->isValidBuildingLocation(eBuilding))
                            {
                                if (!
    bConquest || bRecapture || GC.getGameINLINE().getSorenRandNum(100"Capture Probability") < GC.getBuildingInfo((BuildingTypes)iI).getConquestProbability())
                                {
                                    
    iNum += paiNumRealBuilding[iI];
                                }
                            }
                        }
                    }

                    
    pNewCity->setNumRealBuildingTimed(eBuildingstd::min(pNewCity->getNumRealBuilding(eBuilding) + iNumGC.getCITY_MAX_NUM_BUILDINGS()), false, ((PlayerTypes)(paiBuildingOriginalOwner[iI])), paiBuildingOriginalTime[iI]);
                }
            }
        }
        [...]

    Wird eine Stadt gehandelt oder zurückerobert, werden keine Gebäude zerstört. "Zurückerobert" heißt dabei, dass der Eroberer derjenige ist, der in der Stadt die höchste Kultur hat, wobei nicht die Feldkultur des Stadtplots (die auch im Stadtbildschirm angezeigt wird), sondern nur die Stadtkultur zählt. Stadtkultur wird nur akkumuliert, während man eine Stadt tatsächlich besitzt, kultureller Einfluss durch Nachbarstädte wird von der Stadtkultur ignoriert. In den meisten Fällen bedeutet "Rückeroberung" also genau das, was man sich darunter vorstellt
    Bei einer normalen Eroberung wird für jedes Gebäude separat geprüft, ob es erobert oder zerstört wurde, wobei die Eroberungswahrscheinlichkeit für jedes Gebäude dem Wert iConquestProb (in Prozent) aus dem BuildingsInfos.xml entspricht. Außerdem gibt es den Eintrag bNeverCapture, wenn der 1 ist, kann ein Gebäude nie erobert werden. Soweit ich das sehe, hat das für BtS keinen Einfluss, da alle Gebäude mit bNeverCapture=1 auch iConquestProb=0 haben, aber der Vollständigkeit halber sei es erwähnt

    Die XML-Werte aller Gebäude kann man, wie gesagt, in BuildingsInfos.xml finden, ich hab sie in diese Tabelle extrahiert:

    Achtung Spoiler:
    Gebäude;bNeverCapture;iConquestProb
    BUILDING_PALACE;0;0
    BUILDING_GREAT_PALACE;0;0
    BUILDING_VERSAILLES;0;100
    BUILDING_WALLS;0;0
    BUILDING_CELTIC_DUN;0;0
    BUILDING_CASTLE;0;0
    BUILDING_SPANISH_CITADEL;0;0
    BUILDING_BARRACKS;0;0
    BUILDING_ZULU_IKHANDA;0;0
    BUILDING_STABLE;0;0
    BUILDING_MONGOL_GER;0;0
    BUILDING_BUNKER;0;66
    BUILDING_BOMB_SHELTER;0;66
    BUILDING_GRANARY;0;66
    BUILDING_INCAN_TERRACE;0;66
    BUILDING_AQUEDUCT;0;66
    BUILDING_OTTOMAN_HAMMAM;0;66
    BUILDING_KHMER_BARAY;0;66
    BUILDING_HOSPITAL;0;66
    BUILDING_RECYCLING_CENTER;0;66
    BUILDING_LIGHTHOUSE;0;66
    BUILDING_VIKING_TRADING_POST;0;66
    BUILDING_HARBOR;0;66
    BUILDING_CARTHAGE_COTHON;0;66
    BUILDING_CUSTOM_HOUSE;0;66
    BUILDING_PORTUGAL_FEITORIA;0;66
    BUILDING_DRYDOCK;0;66
    BUILDING_AIRPORT;0;0
    BUILDING_FORGE;0;66
    BUILDING_MALI_MINT;0;66
    BUILDING_FACTORY;0;66
    BUILDING_GERMAN_ASSEMBLY_PLANT;0;66
    BUILDING_COAL_PLANT;0;66
    BUILDING_JAPANESE_SHALE_PLANT;0;66
    BUILDING_HYDRO_PLANT;0;66
    BUILDING_NUCLEAR_PLANT;0;66
    BUILDING_INDUSTRIAL_PARK;0;66
    BUILDING_OBELISK;1;0
    BUILDING_EGYPTIAN_OBELISK;1;0
    BUILDING_ETHIOPIAN_STELE;1;0
    BUILDING_NATIVE_AMERICA_TOTEM;1;0
    BUILDING_PUBLIC_TRANSPORTATION;0;0
    BUILDING_ACADEMY;0;100
    BUILDING_LIBRARY;1;0
    BUILDING_ARABIAN_MADRASSA;1;0
    BUILDING_UNIVERSITY;1;0
    BUILDING_KOREAN_SEOWON;1;0
    BUILDING_OBSERVATORY;0;66
    BUILDING_FRENCH_SALON;0;66
    BUILDING_LABORATORY;0;66
    BUILDING_RUSSIAN_RESEARCH_INSTITUTE;0;66
    BUILDING_THEATRE;1;0
    BUILDING_CHINESE_PAVILLION;1;0
    BUILDING_BYZANTINE_HIPPODROME;1;0
    BUILDING_COLOSSEUM;0;66
    BUILDING_GREEK_ODEON;0;0
    BUILDING_MAYA_BALL_COURT;0;66
    BUILDING_BABYLON_GARDEN;0;66
    BUILDING_BROADCAST_TOWER;0;66
    BUILDING_MARKET;0;66
    BUILDING_ROMAN_FORUM;0;66
    BUILDING_GROCER;0;66
    BUILDING_PERSIAN_APOTHECARY;0;66
    BUILDING_BANK;0;66
    BUILDING_ENGLISH_STOCK_EXCHANGE;0;66
    BUILDING_SUPERMARKET;0;66
    BUILDING_AMERICAN_MALL;0;66
    BUILDING_COURTHOUSE;0;66
    BUILDING_AZTEC_SACRIFICIAL_ALTAR;0;66
    BUILDING_HOLY_ROMAN_RATHAUS;0;66
    BUILDING_SUMERIAN_ZIGGURAT;0;66
    BUILDING_JAIL;0;66
    BUILDING_INDIAN_MAUSOLEUM;0;66
    BUILDING_LEVEE;0;66
    BUILDING_NETHERLANDS_DIKE;0;66
    BUILDING_INTELLIGENCE_AGENCY;0;66
    BUILDING_NATIONAL_SECURITY;0;66
    BUILDING_JEWISH_TEMPLE;1;0
    BUILDING_JEWISH_CATHEDRAL;1;0
    BUILDING_JEWISH_MONASTERY;1;0
    BUILDING_JEWISH_SHRINE;0;100
    BUILDING_CHRISTIAN_TEMPLE;1;0
    BUILDING_CHRISTIAN_CATHEDRAL;1;0
    BUILDING_CHRISTIAN_MONASTERY;1;0
    BUILDING_CHRISTIAN_SHRINE;0;100
    BUILDING_ISLAMIC_TEMPLE;1;0
    BUILDING_ISLAMIC_CATHEDRAL;1;0
    BUILDING_ISLAMIC_MONASTERY;1;0
    BUILDING_ISLAMIC_SHRINE;0;100
    BUILDING_HINDU_TEMPLE;1;0
    BUILDING_HINDU_CATHEDRAL;1;0
    BUILDING_HINDU_MONASTERY;1;0
    BUILDING_HINDU_SHRINE;0;100
    BUILDING_BUDDHIST_TEMPLE;1;0
    BUILDING_BUDDHIST_CATHEDRAL;1;0
    BUILDING_BUDDHIST_MONASTERY;1;0
    BUILDING_BUDDHIST_SHRINE;0;100
    BUILDING_CONFUCIAN_TEMPLE;1;0
    BUILDING_CONFUCIAN_CATHEDRAL;1;0
    BUILDING_CONFUCIAN_MONASTERY;1;0
    BUILDING_CONFUCIAN_SHRINE;0;100
    BUILDING_TAOIST_TEMPLE;1;0
    BUILDING_TAOIST_CATHEDRAL;1;0
    BUILDING_TAOIST_MONASTERY;1;0
    BUILDING_TAOIST_SHRINE;0;100
    BUILDING_HEROIC_EPIC;0;0
    BUILDING_NATIONAL_EPIC;0;0
    BUILDING_GLOBE_THEATRE;0;0
    BUILDING_NATIONAL_PARK;0;0
    BUILDING_HERMITAGE;0;0
    BUILDING_OXFORD_UNIVERSITY;0;0
    BUILDING_WALL_STREET;0;0
    BUILDING_IRON_WORKS;0;0
    BUILDING_WEST_POINT;0;0
    BUILDING_MT_RUSHMORE;0;0
    BUILDING_RED_CROSS;0;0
    BUILDING_SCOTLAND_YARD;0;100
    BUILDING_PYRAMID;0;100
    BUILDING_STONEHENGE;0;100
    BUILDING_GREAT_LIBRARY;0;100
    BUILDING_GREAT_LIGHTHOUSE;0;100
    BUILDING_HANGING_GARDEN;0;100
    BUILDING_COLOSSUS;0;100
    BUILDING_ORACLE;0;100
    BUILDING_PARTHENON;0;100
    BUILDING_ANGKOR_WAT;0;100
    BUILDING_HAGIA_SOPHIA;0;100
    BUILDING_CHICHEN_ITZA;0;100
    BUILDING_SISTINE_CHAPEL;0;100
    BUILDING_SPIRAL_MINARET;0;100
    BUILDING_NOTRE_DAME;0;100
    BUILDING_TAJ_MAHAL;0;100
    BUILDING_KREMLIN;0;100
    BUILDING_EIFFEL_TOWER;0;100
    BUILDING_STATUE_OF_LIBERTY;0;100
    BUILDING_BROADWAY;0;100
    BUILDING_ROCKNROLL;0;100
    BUILDING_HOLLYWOOD;0;100
    BUILDING_GREAT_DAM;0;100
    BUILDING_PENTAGON;0;100
    BUILDING_UNITED_NATIONS;0;100
    BUILDING_SPACE_ELEVATOR;0;100
    BUILDING_MILITARY_ACADEMY;0;100
    BUILDING_ARTEMIS;0;100
    BUILDING_SANKORE;0;100
    BUILDING_GREAT_WALL;0;100
    BUILDING_STATUE_OF_ZEUS;0;100
    BUILDING_MAUSOLEUM_OF_MAUSSOLLOS;0;100
    BUILDING_CRISTO_REDENTOR;0;100
    BUILDING_SHWEDAGON_PAYA;0;100
    BUILDING_MOAI_STATUES;0;0
    BUILDING_CORPORATION_1;0;100
    BUILDING_CORPORATION_2;0;100
    BUILDING_CORPORATION_3;0;100
    BUILDING_CORPORATION_4;0;100
    BUILDING_CORPORATION_5;0;100
    BUILDING_CORPORATION_6;0;100
    BUILDING_CORPORATION_7;0;100
    BUILDING_APOSTOLIC_PALACE;0;100


    In BtS hat jedes Gebäude also eine Eroberungswahrscheinlichkeit von 0%, 66% oder 100%, wobei nur Weltwunder, die (Wissi-) Akademie und die Militärakademie 100% bekommen (es gibt kein normales Gebäude außer den Akademien, das garantiert erobert wird, und kein Weltwunder, das zerstört werden kann). Ansonsten kann man grob sagen, das alle Gebäude mit 0% genau die sind, die

    • Kultur erzeugen,
    • einen militärischen Nutzen haben (Kaserne, Stallungen, Mauern/Schloss, Flughafen),
    • Nationalwunder oder
    • Öffentliche Verkehrsmittel sind. Weiß nicht, wieso die in diese Liste fallen


    Alle anderen Gebäude haben ne Eroberungschance von 66%.
    UBs (danke an Lord of the Civ für den Hinweis ) werden bei Eroberung durch eine andere Civ in Standardgebäude bzw. das UB der anderen Civ umgewandelt und genauso Standardgebäude in UBs, man erhält also immer das, was man in dieser Stadt selbst gebaut hätte. Dabei ist es so, dass die Eroberungschance des ursprünglichen Gebäudes zählt. Erobere ich eine Mali-Stadt mit Münzanstalt, zählt die Eroberungschance der Münzanstalt, auch wenn sie dann zur Schmiede wird; erobere ich als Mali eine Stadt mit Schmiede, zählt die Eroberungschance der Schmiede, auch wenn sie dann zur Münzanstalt wird. Das ist fast immer irrelevant, da Eroberungschance von UB und Standardgebäude fast immer übereinstimmen. Einzige Ausnahme sind die Griechen, deren Odeon eine Eroberungschance von 0 hat, während die Chance beim Kolosseum 66% ist. Das heißt: Griechen können Kolosseen erobern, die dann zu nem Odeon werden; aber wenn jemand anders eine griechische Stadt mit Odeon erobert, wird dieses immer zerstört. Auf den ersten Blick könnte man glauben, dass die veränderte Eroberungschance des Odeons daran liegt, dass es Kultur erzeugt und deshalb zerstört werden soll, aber wie meine Erläuterung zeigt, ist ja genau das Gegenteil der Fall: Es wird nur in den Fällen (garantiert) zerstört, in denen es ohnehin zu einem stinknormalen Kolosseum umgewandelt würde; Griechen können also trotzdem Städte mit einem kulturerzeugenden Odeon erobern. Wahrscheinlich hat da jemand nicht richtig aufgepasst, als der Wert festgelegt wurde
    Man beachte übrigens, dass auch KKs zu kulturerzeugenden Inka-Terrassen umgewandelt werden können.

    Und mehr gibt es dazu auch nicht zu sagen. Alle Angaben für BtS 3.19 und ohne Gewähr
    Geändert von BoggyB (12. September 2016 um 21:05 Uhr)
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  2. #2
    Avatar von Lord of the Civ
    Registriert seit
    15.09.13
    Beiträge
    11.931
    Du hast die UBs vergessen?


    Interessanterweise können sich die Werte zwischen dem normalen Gebäude und dem Spezialgebäude durchaus unterscheiden: beispielsweise hat das Kolosseum eine 66%-ige Chance stehenzubleiben, während das griechische Pendant hingegen immer zerstört wird (da es neben auch gibt).

  3. #3
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.040
    Zitat Zitat von Lord of the Civ Beitrag anzeigen
    Du hast die UBs vergessen?


    Interessanterweise können sich die Werte zwischen dem normalen Gebäude und dem Spezialgebäude durchaus unterscheiden: beispielsweise hat das Kolosseum eine 66%-ige Chance stehenzubleiben, während das griechische Pendant hingegen immer zerstört wird (da es neben auch gibt).
    Hab unterbewusst vorausgesetzt, dass das keinen Unterschied macht Werd die nachtragen Guter Hinweis, danke

    Edith stellt fest, dass das allerdings auch das einzige Beispiel ist, bei dem sich UB und Standardgebäude unterscheiden. Genauere Betrachtung ergibt außerdem: Dieser Unterschied bedeutet, dass ein Kolosseum oder Odeon immer zerstört wird, wenn ein Grieche eine Stadt erobert. Erobert ein Nicht-Grieche eine Stadt mit Odeon, kann aber ein Standard-Kolosseum stehenbleiben. Vor der Abriss-Überprüfung werden alle Gebäude in die UBs bzw. Standardgebäude der Erobererciv umgewandelt.

    Edit2: Edit 1 ist nicht ganz korrekt, siehe Startbeitrag bzw. Post 6. Es ist genau umgekehrt, Griechen können ein Odeon erobern, aber jeder, der eine griechische Stadt erobert, wird das gegebenenfalls vorhandene Odeon zerstören und nie ein Kolosseum erhalten.
    Geändert von BoggyB (12. September 2016 um 21:07 Uhr)
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  4. #4
    Storyleser
    Registriert seit
    01.02.11
    Beiträge
    761
    Habt Ihr das getestet? Meiner Erinnerung nach verhält es sich genau umgekehrt, dass man als Grieche nämlich die Chance hat, mit dem Kollosseum, das zum Odeon wird, ein -Gebäude zu erobern.
    Schaue ich mir nochmal an.
    Die Medizin verleiht einem vulgären Gemetzel Würde.

  5. #5
    Avatar von Lord of the Civ
    Registriert seit
    15.09.13
    Beiträge
    11.931
    Zitat Zitat von 1893er Beitrag anzeigen
    Meiner Erinnerung nach verhält es sich genau umgekehrt, dass man als Grieche nämlich die Chance hat, mit dem Kollosseum, das zum Odeon wird, ein -Gebäude zu erobern.
    Verwechselst Du das vielleicht mit dem Inka und seiner Inka-Terrasse?

  6. #6
    Antiker Benutzer Avatar von BoggyB
    Registriert seit
    21.08.11
    Beiträge
    7.040
    Hm. Meine Aussage oben war nur durch das Code-Stück im Startpost begründet, das, soweit ich das sehe, eigentlich wie von mir beschrieben funktionieren sollte. Ein Test...
    Bild
    lässt mich in 6 von 10 Fällen als Grieche ein Kolosseum als Odeon erobern, und umgekehrt wurde in 7 von 7 Fällen das Odeon zerstört, wenn ich als Mali eine griechische Stadt erobert hab. Scheint also tatsächlich umgekehrt zu sein... Hm.

    Edit: Ah ja, genau das sagt der Code ja auch aus. Da steht ja

    Code:
    GC.getGameINLINE().getSorenRandNum(100, "Capture Probability") < GC.getBuildingInfo((BuildingTypes)iI).getConquestProbability()
    Es zählt also die Eroberungschance des Ursprungsgebäudes. Ich dachte, da stünde

    Code:
    GC.getGameINLINE().getSorenRandNum(100, "Capture Probability") < GC.getBuildingInfo((BuildingTypes)eBuilding).getConquestProbability()
    Startbeitrag wird korrigiert.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von BoggyB (12. September 2016 um 20:51 Uhr)
    "Only Germans, perhaps, could make a game about economics - a stylish, intelligent and captivating one at that." - The New York Times

  7. #7
    Avatar von Lord of the Civ
    Registriert seit
    15.09.13
    Beiträge
    11.931
    Danke für Deine Bemühungen.

  8. #8
    Storyleser
    Registriert seit
    01.02.11
    Beiträge
    761
    Zitat Zitat von Lord of the Civ Beitrag anzeigen
    Verwechselst Du das vielleicht mit dem Inka und seiner Inka-Terrasse?
    Nein, ich hatte recht.
    Und ich schließe mich dem Dank an, BoggyB!
    Die Medizin verleiht einem vulgären Gemetzel Würde.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •