Wann wird oncitydoturn ausgeführt? Anfang oder Ende einer Runde? (brauch ich für Feitoria-Beschreibung)
Wann wird oncitydoturn ausgeführt? Anfang oder Ende einer Runde? (brauch ich für Feitoria-Beschreibung)
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Also die Frage müsste lauten, werden Städte am Ende oder am Anfang einer Runde durchgegangen.
Am Ende der CvCity::doTurn() steht der Pythonaufruf. Das müsste am Rundenanfang sein.
Städte kommen nach beginPlayerTurn Pythonaufruf, aber damit vor den aktiven Einheitenbewegen.
ok. Also schreib ich "stellt bei Rundenanfang die Trefferpunkte der in der Stadt befindlichen Wasser-Einheiten wieder her"
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Warum hat mein Kampfpanzer mit 4/40 Stärke (90% Schaden und tonnenweise Beförderungen) nach einem siegreichen Kampf gegen einen japanischen Kampfpanzer mit 40 Basisstärke (und 8/40 Stärke, also 80% Schaden, was irrelevant ist) 3.2/40 Stärke und nicht genau 3/40 Stärke? Wenn ich mit dem Taschenrechner rechne, müsste genau 1 Stärke von den 4 abgezogen werden.PHP-Code:
if pLoser.baseCombatStr() > 0:
# Geom. Mittel
iGeoM = sqrt((pLoser.baseCombatStr() * pWinner.baseCombatStr()))
iMaximum = min(pWinner.baseCombatStr(), iGeoM) ###### Das Maximum soll nicht mehr sein als pWinner.baseCombatStr(), dadurch ist iMaximum / pWinner.baseCombatStr() nie größer 1
iRatio100 = ((100 * iMaximum / pWinner.baseCombatStr()) * 25)
iJapanDamage = int((100 - pWinner.getDamage()) * iRatio100 / 10000)
if iJapanDamage > 0: pWinner.changeDamage(iJapanDamage, false)
Mein Kampfpanzer mit 40/40 Stärke hat nach dem Kampf korrekterweise 30/40 Stärke (genau 25% Verlust).
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Das liegt an der Schadensbrechnung. Schreibe später mehr.
Geändert von rucivfan (07. Mai 2014 um 14:56 Uhr)
Ich finde das schwer nachzurechnen, weil ich pWinner.getDamage() nicht kenne. Wie ist der Schaden vor dem Abzug?
Hast du zuletzt den Kampfpanzer gegen einen japanische Krieger kämpfern lassen?
Verwende bitte statt 100 pWinner.maxHitPoints(). Der Wert ist zwar auch 100, kann dann aber global geändert werden.
Geändert von rucivfan (07. Mai 2014 um 15:11 Uhr)
getDamage vom Gewinner ist 90.
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Bist du dir sicher? Es kann auch höher sein durch den Kampf. Die 0.8 müssen nicht aus deinen Code stammten. Weil der Wert kleiner 4 ist, wird der Abzug in der Formel zu 0. So würde ich denken, sind die Tatsachen.
Warum höher? Wäre niedriger nicht logischer?
Naja ich lass es erstmal so.
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Höher auf den Schaden bezogen ist richtig. Der Schaden steigt ja an. Lebenspunkte werden keine codeseitig reduziert. Eigentlich macht das so nur Sinn, wenn man variable Lebenspunkte zulassen will. Jedoch sind die Lebenspunkt in BTS fest und daher hätte ein Zähler für Schaden und Lebenspunkte gereicht, der von oben, vom maxWert, nach unten zur 0 zählt.
Hier schon mal das SDK:
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
XML:
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Python:
Pucc's Lets Plays BASE 6.0: #1 #2 #3 #4 #5
Download von BASE 6.4 [D]: HIER (klick mich!) (Stand: 08.07.2022)
Schon den ersten Konflikt gefunden. Ich habe die addProductionExperience angepasst, damit Ghazis keine Stadtverteidigung mehr erhalten als "Reiter". Mal schauen, wie ich Polens Vorteil übertragen werde.