]> granicus.if.org Git - xconq/blobdiff - kernel/aiutil.h
commits for 7.5.0 pre-release tarball
[xconq] / kernel / aiutil.h
diff --git a/kernel/aiutil.h b/kernel/aiutil.h
new file mode 100644 (file)
index 0000000..6655489
--- /dev/null
@@ -0,0 +1,86 @@
+/* Definitions common to all AIs.
+   Copyright (C) 2004 Eric A. McDonald
+
+Xconq is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.  See the file COPYING.  */
+
+/*! \file aiutil.h
+ * Declaration of generic functions that may be of use to an AI or 
+ * intelligent UI.
+ */
+
+#include "parambox.h"
+
+typedef enum a_occ_status {
+    CANNOT_HAVE_OCCS,
+    MAYBE_HAS_OCCS,
+    DEFINITELY_HAS_OCCS,
+    DEFINITELY_HAS_NO_OCCS
+} OccStatus;
+
+#define DAMAGE_TYPE_NONE        0
+#define DAMAGE_TYPE_ATTACK      1
+#define DAMAGE_TYPE_FIRE        2
+#define DAMAGE_TYPE_HIT         (DAMAGE_TYPE_ATTACK | DAMAGE_TYPE_FIRE)
+#define DAMAGE_TYPE_EXPLODE     4
+#define DAMAGE_TYPE_USE_OCC     8
+#define DAMAGE_TYPE_USE_TSPT    16
+
+#define VICTIM_NOTHING_SPECIAL  0
+#define VICTIM_CAPTURABLE       1
+#define VICTIM_SHAKEABLE        2
+#define VICTIM_ENCOUNTERABLE    4
+
+extern int dice_roll_min(int dicerep);
+extern int dice_roll_mean(int dicerep);
+extern int dice_roll_max(int dicerep);
+
+extern int could_damage(int u, int u2);
+extern int could_destroy(int u, int u2);
+
+extern int type_attack_damage_max(int u, int u2);
+extern int type_attack_damage_min(int u, int u2);
+extern int type_fire_damage_max(int u, int u2);
+extern int type_fire_damage_min(int u, int u2);
+extern int type_damage_max(int u, int u2);
+
+extern int type_attack_range_max(int u, int u2);
+extern int type_fire_range_max(int u, int u2);
+extern int type_hit_range_max(int u, int u2);
+extern int type_ideal_attack_range_max(int u, int u2);
+extern int type_ideal_fire_range_max(int u, int u2);
+extern int type_ideal_hit_range_max(int u, int u2);
+
+extern int type_possible_damage_methods(int u, int u2);
+
+extern OccStatus occ_status(UnitView *uview);
+
+extern int planning_to_hit_type_at(Unit *unit, int u, int x, int y);
+extern int planning_to_capture_type_at(Unit *unit, int u, int x, int y);
+extern int side_planning_to_hit_type_at(Side *side, int u, int x, int y);
+extern int n_planning_to_hit_type_at(Side *side, int u, int x, int y);
+extern int side_planning_to_capture_type_at(Side *side, int u, int x, int y);
+extern int n_planning_to_capture_type_at(Side *side, int u, int x, int y);
+
+extern int has_enough_of_material(Unit *unit, int m);
+extern int needs_n_of_material(Unit *unit, int m);
+extern int has_full_amount_of_material(Unit *unit, int m);
+extern int wants_n_of_material(Unit *unit, int m);
+extern int would_starve_without_material(int u, int m);
+extern int will_starve_wrt_material(Unit *unit, int m);
+extern int can_donate_n_of_material(Unit *unit, int m);
+extern int can_sacrifice_n_of_material(Unit *unit, int m);
+extern int has_enough_of_all_materials(Unit *unit);
+extern int has_full_amount_of_all_materials(Unit *unit);
+extern int will_starve(Unit *unit);
+extern int critically_needed_material(Unit *unit);
+extern int most_needed_material(Unit *unit, int *nmost);
+extern int most_wanted_material(Unit *unit, int *nmost);
+
+extern int can_be_blocked_by_any_known_enemy_at_if_at(int x, int y, 
+                                                      int *counter, 
+                                                      ParamBox *parambox);
+extern int can_be_blocked_by_any_known_enemy_if_at(int x, int y, int *counter, 
+                                                   ParamBox *parambox);