]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/assa.c
commands: Rename the command functions
[empserver] / src / lib / commands / assa.c
index e2d0a23bd5d07c79cbccb4f704316576f31af7b3..2812e0e9ce685b731072206fb6890906417bb2dd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2016, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
@@ -45,7 +45,7 @@ static void sneak_ashore(struct combat[], struct emp_qelem *,
                         struct combat *);
 
 int
-assa(void)
+c_assault(void)
 {
     struct combat off[1];      /* assaulting ship */
     struct combat def[1];      /* defending sector */
@@ -119,6 +119,12 @@ assa(void)
        return RET_OK;
     }
 
+    /* If only spies assault, try to sneak them ashore */
+    if (only_spies(off, &olist)) {
+       sneak_ashore(off, &olist, def);
+       return RET_OK;
+    }
+
     ototal = att_get_offense(A_ASSAULT, off, &olist, def);
     if (att_abort(A_ASSAULT, off, def)) {
        pr("Assault aborted\n");
@@ -132,18 +138,6 @@ assa(void)
      * happening in the game.
      */
 
-    /* First, we check to see if the only thing we have are spies
-     * assaulting.  If so, we try to sneak them on land.  If they
-     * make it, the defenders don't see a thing.  If they fail, well,
-     * the spies die, and the defenders see them. */
-
-    /* If no attacking forces (i.e. we got here with only spies)
-     * then try to sneak on-land. */
-    if (only_spies(off, &olist)) {
-       sneak_ashore(off, &olist, def);
-       return RET_OK;
-    }
-
     /* Get the real defense */
 
     att_get_defense(&olist, def, &dlist, a_spy, ototal);
@@ -198,7 +192,7 @@ sneak_ashore(struct combat off[], struct emp_qelem *olist,
     struct emp_qelem *qp;
     struct ulist *llp;
     struct lndstr *lp;
-    int rel;
+    enum relations rel;
 
     pr("Trying to sneak on shore...\n");
 
@@ -208,7 +202,9 @@ sneak_ashore(struct combat off[], struct emp_qelem *olist,
        llp = (struct ulist *)qp;
        lp = &llp->unit.land;
        rel = relations_with(def->own, player->cnum);
-       if (chance(0.10) || rel == ALLIED || !def->own) {
+       if (rel == ALLIED || !def->own
+           || !chance(LND_SPY_DETECT_CHANCE(lp->lnd_effic / 2))) {
+                               /* eff/2 because this is hard */
            pr("%s made it on shore safely.\n", prland(lp));
        } else {
            pr("%s was spotted", prland(lp));
@@ -222,7 +218,7 @@ sneak_ashore(struct combat off[], struct emp_qelem *olist,
                wu(0, def->own, "%s spy spotted in %s.\n",
                   cname(player->cnum), xyas(def->x, def->y,
                                             def->own));
-               pr(" but made it ok.\n");
+               pr(" but made it OK.\n");
            }
        }
     }