Ihnatus branch for 2.6 Longturn server/client

Can you help improve your favourite game? Hardcore C mages, talented artists, and players with any level of experience are welcome!
Ignatus
Hardened
Posts: 258
Joined: Mon Nov 06, 2017 12:05 pm
Location: St.Petersburg, Russia
Contact:

Ihnatus branch for 2.6 Longturn server/client

Postby Ignatus » Sat Nov 30, 2019 6:06 pm

I have started a branch of 2.6 mods some of which may go to the main or Longturn releases. Network compatibility with 2.6 protocol is kept.
Features:
  • Bombardment revealing may be restricted with option "bombardment_reveal":
    "ALL" reveals all participants of bombardment (current behaviour),
    "BEST" reveals only the strongest defender,
    "ATTACKER" reveals the bombarder only,
    "NONE" hides the bombarder if otherwise unseen (in 2.6 that means mostly bombarding from behind city walls).
    Whatever is the option, the bombarding side knows if it has succeeded in reducing at least 1 hp from any unit, and the defender knows nationality and type of the bombarder.
  • Option "cargo_visibility": "NONE" = don't see any non-allied units (default behaviour), "FORTIFY" = see if they are fortifying or fortified, "ACTIVITIES" = see if they do any terrain-related activity (it's just implausible that workers can stay hidden manipulating huge land masses), "ALL" = just see all of them (e.g. transports in your ruleset are horses and bikes).
  • Removed exploits of bouncing units around for terrain change or stack conflicts: they now keep UWT and lose movepoints if they have landed.
  • For the Gtk3.22 client, if you click a tech that may possibly be researched in a moment with you current bulbs, you get a confirmation popup.
  • Different client Lua callbacks are added to help you not lose anything. Callbacks now may send feedback to the C code; so, "event" callback may change the place the message is displayed (output/chat/box/nowhere).
    "unit_remove" (Unit unit) - when unit is going out of sight by any reason (defore processing it).
    "unit_moved" (Unit unit, Tile t_from, Tile t_to) - after we processed a package of unit info about a unit that was on another position just before.
    "unit_captured"(Unit unit, Player gainer) - before we process a package of unit info when we just have seen the unit ID on another side. "unit_remove" and "unit_create" are also called in this case (but if you can't see the captured unit any more, you get only "unit_remove" of all callbacks).
    "unit_create"(Unit unit) - after we have processed an info about a unit not in sight just before (or that belonged to another player).
    "combat_info"(Unit attacker, Unit defender, int att_hp, int def_hp, bool veteranship_achieved) - when a combat was seen. The last parameter requires more testing though.
    "city_create"(City city) - a city newly seen.
    "city_transferred"(City city, Player gainer, Player loser)
    "city_remove"(City city) - we see the tile without the city that was there.
    "event"(string plain_text, Tile ptile, int event, int turn, Player sender, table objects) - an event message received. event is a value from E table. objects is a sequence of links (Unit, City or Tile type) mentioned in the message; your callback may create a key "show" in it: boolean value false means that the message goes hidden, string "Popup" (any case) displays it in a window, string "Messages" puts it into message window, any other string sends it to the console.