PHP-Code:
# Money player gets for selling bonus
def calculateBonusSellingPrice(pUnit, pCity):
if not pUnit.getUnitType() in L.LTradeUnits:
return -1
eBonus = CvUtil.getScriptData(pUnit, ["b"], -1)
if eBonus == -1:
return -1
iValue = getBonusValue(eBonus)
#iValue += iValue / 2 # besserer Verkaufswert fuer bessere Bonusgueter (Luxusgut)
iBuyer = pCity.getOwner()
iSeller = CvUtil.getScriptData(pUnit, ["originCiv"], pUnit.getOwner())
pBuyer = gc.getPlayer(iBuyer)
pSeller = gc.getPlayer(iSeller)
if CvUtil.hasBonusIgnoreFreeBonuses(pCity, eBonus): # allows "cancellation" of buying / Bonus direkt nach Einkauf wieder verkaufen (ohne Gewinn)
return _calculateBonusBuyingPrice(eBonus, iSeller, iBuyer) # Switch positions of seller and buyer
if pBuyer.getTeam() == pSeller.getTeam():
iModifier = 110 # doch +10%
else:
# Furious = 0, Annoyed = 1, Cautious = 2, Pleased = 3, Friendly = 4
iModifier = 100 + 10 * pSeller.AI_getAttitude(iBuyer)
# Hauptstadt
if pCity.isCapital(): iModifier += 20
#CyInterface().addMessage(iBuyer, True, 10, CyTranslator().getText("TXT_KEY_MESSAGE_TEST",("iValue",iValue)), None, 2, None, ColorTypes(10), 0, 0, False, False)
#CyInterface().addMessage(iBuyer, True, 10, CyTranslator().getText("TXT_KEY_MESSAGE_TEST",("iModifier",iModifier)), None, 2, None, ColorTypes(10), 0, 0, False, False)
#CyInterface().addMessage(iBuyer, True, 10, CyTranslator().getText("TXT_KEY_MESSAGE_TEST",("City Pop.",pCity.getPopulation())), None, 2, None, ColorTypes(10), 0, 0, False, False)
#CyInterface().addMessage(iBuyer, True, 10, CyTranslator().getText("TXT_KEY_MESSAGE_TEST",("100 + Pop * 5",(100 + pCity.getPopulation() * 5))), None, 2, None, ColorTypes(10), 0, 0, False, False)
#CyInterface().addMessage(iBuyer, True, 10, CyTranslator().getText("TXT_KEY_MESSAGE_TEST",("Gesamt",(iValue * iModifier * (100 + pCity.getPopulation() * 5)) / 10000)), None, 2, None, ColorTypes(10), 0, 0, False, False)
return (iValue * iModifier * (100 + pCity.getPopulation() * 5)) / 10000
# --- End of price stuff (trade) ---
Nachher:
PHP-Code:
# Money player gets for selling bonus
def calculateBonusSellingPrice(pUnit, pCity):
if not pUnit.getUnitType() in L.LTradeUnits:
return -1
eBonus = CvUtil.getScriptData(pUnit, ["b"], -1)
iSeller = CvUtil.getScriptData(pUnit, ["originCiv"], pUnit.getOwner())
x = CvUtil.getScriptData(pUnit, ["x"], -1)
y = CvUtil.getScriptData(pUnit, ["y"], -1)
if eBonus == -1:
return -1
iValue = getBonusValue(eBonus)
iBuyer = pCity.getOwner()
iModifier = 100
if not (iBuyer == iSeller and x == pUnit.getX() and y == pUnit.getY()):
pBuyer = gc.getPlayer(iBuyer)
pSeller = gc.getPlayer(iSeller)
# iModifier = pCity.totalTradeModifier()
# pOriginPlot = CyMap().plot(x,y)
# pOriginCity = None
# if pOriginPlot != None and not pOriginPlot.isNone():
# pOriginCity = pOriginPlot.getPlotCity()
# if pOriginCity != None and not pOriginCity.isNone():
# if pCity.area() != pOriginCity.area():
# iModifier += gc.getDefineINT("OVERSEAS_TRADE_MODIFIER");
if pBuyer.getTeam() == pSeller.getTeam():
iModifier += 10 # doch +10%
else:
# Furious = 0, Annoyed = 1, Cautious = 2, Pleased = 3, Friendly = 4
iModifier += 10 * pSeller.AI_getAttitude(iBuyer)
# iModifier += pCity.getForeignTradeRouteModifier();
# Hauptstadt
if pCity.isCapital():
iModifier += 20
iModifier *= (100 + pCity.getPopulation() * 5) / 100
return iValue * iModifier / 100
# --- End of price stuff (trade) ---
Auskommentiert sind da noch 2 Varianten drin, die in der BtS-Handelswegberechnung berücksichtigt werden.