<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40261 >

2008/6/9 Jason Dorje Short:
>>  Fixing that so that passengers never occupy cities also avoids above
>> crash (which is caused by enemy unit on board conquering city when
>> transport arrives and then city is no longer owned by transport owner.
>> Enemy unit on board is not a bug during civil war)
> Good explanation but how does that cause the assertion?

 In the failing assert
 unit_owner(punit) == city_owner(new_pcity)
 punit is transporter and new_pcity is new homecity transport is moving to.

 really_unit_change_homecity() is called for transporter when another
city is transferred to rebels. In the beginning of the function
transport owner == city owner. Then transport teleports ( move_unit()
) to new homecity and enemy on board conquers it. Now city is owned by
enemy -> transport owner != city owner.


 I don't like teleporting units in general, and teleporting with
passengers even less. But the alternative is to sometimes drown all
the passengers when transport teleports.
 And from ruleset author point of view: this allows special unit that
can airlift several others.

 - ML

Freeciv-dev mailing list

Reply via email to