actofgod: New divine_nat_change(), similar to divine_sct_change()
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 3 Feb 2013 16:42:18 +0000 (17:42 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 6 Jun 2013 17:55:02 +0000 (19:55 +0200)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/actofgod.h
src/lib/subs/actofgod.c

index 69ba33db5fa3b00d077e6c052175e0e91d9c03d7..87a3f2d26550e8aed57eac892c1114dbb34abc1e 100644 (file)
@@ -45,6 +45,10 @@ extern void divine_sct_change(struct sctstr *, char *, int, int, char *, ...)
     ATTRIBUTE((format (printf, 5, 6)));
 #define divine_sct_change_quiet(sp, name, change, ...) \
     divine_sct_change((sp), (name), -(change), 0, __VA_ARGS__)
+extern void divine_nat_change(struct natstr *, char *, int, int, char *, ...)
+    ATTRIBUTE((format (printf, 5, 6)));
+#define divine_nat_change_quiet(np, name, change, ...) \
+    divine_nat_change((np), (name), -(change), 0, __VA_ARGS__)
 extern void divine_unit_change(struct empobj *, char *, int, int, char *, ...)
     ATTRIBUTE((format (printf, 5, 6)));
 #define divine_unit_change_quiet(unit, name, change, ...) \
index 06054ee0a36fc5468f54b255245ce6bfaaeaa21b..e564eaf093b00a166d352f795c980e25216743fb 100644 (file)
@@ -109,6 +109,34 @@ divine_sct_change(struct sctstr *sp, char *name,
     }
 }
 
+/*
+ * Report deity meddling with NP.
+ * Just like divine_sct_change(), only for nations.
+ */
+void
+divine_nat_change(struct natstr *np, char *name,
+                  int change, int goodness, char *fmt, ...)
+{
+    va_list ap;
+    char buf[4096];
+
+    va_start(ap, fmt);
+    vsnprintf(buf, sizeof(buf), fmt, ap);
+    va_end(ap);
+
+    if (!change) {
+       pr("%s of %s unchanged\n", name, prnat(np));
+       return;
+    }
+
+    pr("%s of %s changed %s\n", name, prnat(np), buf);
+    if (change > 0 && np->nat_cnum != player->cnum) {
+       wu(0, np->nat_cnum, "%s changed %s by an act of %s!\n",
+          name, buf, cname(player->cnum));
+       nreport_divine_aid(np->nat_cnum, goodness);
+    }
+}
+
 /*
  * Report deity meddling with UNIT.
  * Just like divine_sct_change(), only for ships, planes, land units,