Complete.Org: Mailing Lists: Archives: freeciv-dev: November 2002:
[Freeciv-Dev] rfc: Effect of loss of Marco's on treaties
Home

[Freeciv-Dev] rfc: Effect of loss of Marco's on treaties

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] rfc: Effect of loss of Marco's on treaties
From: "Per I. Mathisen" <per@xxxxxxxxxxx>
Date: Sat, 2 Nov 2002 00:22:44 +0000 (GMT)

This patch allows us to clean up the special case of diplomats and allied
cities, which makes for a lot of mess for such a stupid special case.
For instance: If this is applied then diplomats don't need a dialog before
entering allied cities (they can behave like normal units), and all code
related to DIPLOMAT_MOVE can go away.

It also makes sense (at least to me) for in-game reasons. You can't
maintain diplomatic relations with someone that you cannot contact.

  - Per

Index: server/srv_main.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/srv_main.c,v
retrieving revision 1.98
diff -u -r1.98 srv_main.c
--- server/srv_main.c   2002/10/18 09:58:49     1.98
+++ server/srv_main.c   2002/11/02 00:17:06
@@ -320,6 +320,16 @@
       pdiplstate->has_reason_to_cancel =
          MAX(pdiplstate->has_reason_to_cancel - 1, 0);

+      /* If we had Marco's and lost it again, we lose all treaties. */
+      if ((pdiplstate->type == DS_ALLIANCE
+           || pdiplstate->type == DS_PEACE
+           || pdiplstate->type == DS_CEASEFIRE)
+          && !player_has_embassy(player1, player2)) {
+        pdiplstate->type = DS_NEUTRAL; /* no reputation loss */
+        pdiplstate->turns_left = 0;
+        continue;
+      }
+
       if(pdiplstate->type == DS_CEASEFIRE) {
        switch(--pdiplstate->turns_left) {
        case 1:

Attachment: marcotreaty1.diff
Description: Text document


[Prev in Thread] Current Thread [Next in Thread]