forked from github/server
"buying more luxury goods than available for basic price gives wrong total cost" Wow. Was wir alles fuer Fehler haben...
This commit is contained in:
parent
00aea147a0
commit
4478e666a9
|
@ -1788,7 +1788,6 @@ expandbuying(region * r, request * buyorders)
|
||||||
trade = trades;
|
trade = trades;
|
||||||
while (trade->type!=ltype) ++trade;
|
while (trade->type!=ltype) ++trade;
|
||||||
multi = trade->multi;
|
multi = trade->multi;
|
||||||
if (trade->number + 1 > max_products) ++multi;
|
|
||||||
price = ltype->price * multi;
|
price = ltype->price * multi;
|
||||||
|
|
||||||
if (get_pooled(oa[j].unit, oldresourcetype[R_SILVER], GET_DEFAULT, price) >= price) {
|
if (get_pooled(oa[j].unit, oldresourcetype[R_SILVER], GET_DEFAULT, price) >= price) {
|
||||||
|
@ -1800,42 +1799,43 @@ expandbuying(region * r, request * buyorders)
|
||||||
* merken muß. */
|
* merken muß. */
|
||||||
attrib * a = a_find(u->attribs, &at_luxuries);
|
attrib * a = a_find(u->attribs, &at_luxuries);
|
||||||
if (a==NULL) a = a_add(&u->attribs, a_new(&at_luxuries));
|
if (a==NULL) a = a_add(&u->attribs, a_new(&at_luxuries));
|
||||||
|
|
||||||
i_change((item**)&a->data.v, ltype->itype, 1);
|
i_change((item**)&a->data.v, ltype->itype, 1);
|
||||||
i_change(&oa[j].unit->items, ltype->itype, 1);
|
i_change(&oa[j].unit->items, ltype->itype, 1);
|
||||||
use_pooled(u, oldresourcetype[R_SILVER], GET_DEFAULT, price);
|
use_pooled(u, oldresourcetype[R_SILVER], GET_DEFAULT, price);
|
||||||
if (u->n < 0)
|
if (u->n < 0)
|
||||||
u->n = 0;
|
u->n = 0;
|
||||||
u->n += price;
|
u->n += price;
|
||||||
|
|
||||||
rsetmoney(r, rmoney(r) + price);
|
rsetmoney(r, rmoney(r) + price);
|
||||||
|
|
||||||
/* Falls mehr als max_products Bauern ein Produkt verkauft haben, steigt
|
/* Falls mehr als max_products Bauern ein Produkt verkauft haben, steigt
|
||||||
* der Preis Multiplikator für das Produkt um den Faktor 1. Der Zähler
|
* der Preis Multiplikator für das Produkt um den Faktor 1. Der Zähler
|
||||||
* wird wieder auf 0 gesetzt. */
|
* wird wieder auf 0 gesetzt. */
|
||||||
if (++trade->number > max_products) {
|
if (++trade->number == max_products) {
|
||||||
trade->number = 0;
|
trade->number = 0;
|
||||||
++trade->multi;
|
++trade->multi;
|
||||||
}
|
}
|
||||||
fset(u, UFL_LONGACTION);
|
fset(u, UFL_LONGACTION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(oa);
|
free(oa);
|
||||||
|
|
||||||
/* Ausgabe an Einheiten */
|
/* Ausgabe an Einheiten */
|
||||||
|
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
attrib * a = a_find(u->attribs, &at_luxuries);
|
attrib * a = a_find(u->attribs, &at_luxuries);
|
||||||
item * itm;
|
item * itm;
|
||||||
if (a==NULL) continue;
|
if (a==NULL) continue;
|
||||||
ADDMSG(&u->faction->msgs, msg_message("buy", "unit money", u, u->n));
|
ADDMSG(&u->faction->msgs, msg_message("buy", "unit money", u, u->n));
|
||||||
for (itm=(item*)a->data.v; itm; itm=itm->next) {
|
for (itm=(item*)a->data.v; itm; itm=itm->next) {
|
||||||
if (itm->number) {
|
if (itm->number) {
|
||||||
ADDMSG(&u->faction->msgs, msg_message("buyamount",
|
ADDMSG(&u->faction->msgs, msg_message("buyamount",
|
||||||
"unit amount resource", u, itm->number, itm->type->rtype));
|
"unit amount resource", u, itm->number, itm->type->rtype));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a_remove(&u->attribs, a);
|
a_remove(&u->attribs, a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue