OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
fightaidefinitions.h
Go to the documentation of this file.
1#pragma once
2
3#include <zenkit/DaedalusVm.hh>
4#include <zenkit/addon/daedalus.hh>
5
6class FightAi final {
7 public:
8 struct FA final {
9 zenkit::IFightAi enemy_prehit; // Enemy attacks me
10 zenkit::IFightAi enemy_stormprehit; // Enemy makes a storm attack
11 zenkit::IFightAi my_w_combo; // I'm in the combo window
12 zenkit::IFightAi my_w_runto; // I run towards the opponent
13 zenkit::IFightAi my_w_strafe; // Just take hit
14 zenkit::IFightAi my_w_focus; // I have opponent in focus (can hit)
15 zenkit::IFightAi my_w_nofocus; // I don't have opponent in focus
16
17 // 'G' - range
18 zenkit::IFightAi my_g_combo; // I'm in the combo window (not used in G2)
19 zenkit::IFightAi my_g_runto; // I run towards the opponent (can make a storm attack)
20 zenkit::IFightAi my_g_strafe; // not used in G2
21 zenkit::IFightAi my_g_focus; // I have opponent in focus (can hit)
22
23 // FK Range Foes (far away)
24 zenkit::IFightAi my_fk_focus; // I have opponents in focus
25
26 zenkit::IFightAi my_g_fk_nofocus; // I am NOT in focus of opponents (also applies to G-distance!)
27
28 // Range + Magic (used at each removal)
29 zenkit::IFightAi my_fk_focus_far; // Opponents in focus
30 zenkit::IFightAi my_fk_nofocus_far; // Opponents NOT in focus
31
32 zenkit::IFightAi my_fk_focus_mag; // Opponents in focus
33 zenkit::IFightAi my_fk_nofocus_mag; // Opponents NOT in focus
34 };
35
36 FightAi();
37
38 const FA& operator[](size_t i) const;
39
40 private:
41 auto loadAi(zenkit::DaedalusVm &vm, std::string_view name) -> zenkit::IFightAi;
42 FA loadAi(zenkit::DaedalusVm &vm, size_t id);
43
44 std::vector<FA> fAi;
45 };
const FA & operator[](size_t i) const
zenkit::IFightAi my_g_focus
zenkit::IFightAi my_fk_nofocus_far
zenkit::IFightAi enemy_prehit
zenkit::IFightAi my_w_focus
zenkit::IFightAi enemy_stormprehit
zenkit::IFightAi my_g_runto
zenkit::IFightAi my_g_combo
zenkit::IFightAi my_w_nofocus
zenkit::IFightAi my_w_strafe
zenkit::IFightAi my_fk_focus_mag
zenkit::IFightAi my_w_combo
zenkit::IFightAi my_w_runto
zenkit::IFightAi my_fk_focus_far
zenkit::IFightAi my_fk_focus
zenkit::IFightAi my_g_strafe
zenkit::IFightAi my_fk_nofocus_mag
zenkit::IFightAi my_g_fk_nofocus