Tiberian Technologies Scripts Reference Revision: 9000
Loading...
Searching...
No Matches
ms.h
1#pragma once
2#include "scripts.h"
3
4
5#define MS_BASE 0xDA000000
6
7#define CUSTOM 0x00010000
8#define TIMER 0x00020000
9#define ACTION 0x00030000
10
11#define CUSTOM_TARGETPAINTER_TARGET_OBJECT_CREATED (MS_BASE|CUSTOM|100201)
12#define CUSTOM_TARGETPAINTER_TARGET_OBJECT_DESTROY_SELF (MS_BASE|CUSTOM|100202)
13
14
15#define CUSTOM_AI_SOLDIER_DIED (MS_BASE|CUSTOM|100501)
16#define CUSTOM_AI_VEHICLE_DIED (MS_BASE|CUSTOM|100502)
17#define CUSTOM_AI_GO_TO_VEHICLE (MS_BASE|CUSTOM|100503)
18#define CUSTOM_AI_ARRIVED_TO_VEHICLE (MS_BASE|CUSTOM|100504)
19#define CUSTOM_AI_VEHICLE_REQUEST_ENTER (MS_BASE|CUSTOM|100505)
20#define CUSTOM_AI_VEHICLE_EXITED (MS_BASE|CUSTOM|100506)
21#define CUSTOM_AI_REQUEST_REFUND (MS_BASE|CUSTOM|100507)
22#define CUSTOM_AI_TRANSPORT_ARRIVED (MS_BASE|CUSTOM|100508)
23#define CUSTOM_AI_VEHICLE_AMMO_EMPTY (MS_BASE|CUSTOM|100509)
24#define CUSTOM_AI_CHECK_REPAIR_NEEDED (MS_BASE|CUSTOM|100510)
25#define CUSTOM_AI_GO_TO_REFILL (MS_BASE|CUSTOM|100511)
26#define CUSTOM_AI_GO_TO_RELOAD (MS_BASE|CUSTOM|100512)
27#define CUSTOM_AI_GO_TO_EXIT_VEHICLE (MS_BASE|CUSTOM|100513)
28#define CUSTOM_AI_ARRIVED_TO_REFILL (MS_BASE|CUSTOM|100514)
29#define CUSTOM_AI_ARRIVED_TO_EXIT_VEHICLE (MS_BASE|CUSTOM|100515)// TODO: use generic ARRIVED_TO_SECONDARY_TASK custom.
30#define CUSTOM_AI_REFILL_COMPLETE (MS_BASE|CUSTOM|100516)
31#define CUSTOM_AI_SEARCH_FOR_VEHICLE (MS_BASE|CUSTOM|100517)
32#define CUSTOM_AI_DEACTIVATE_AI (MS_BASE|CUSTOM|100518)
33#define CUSTOM_AI_GO_SWITCH_OBJECTIVE (MS_BASE|CUSTOM|100519)
34#define CUSTOM_AI_REQUEST_PATROL_POINT (MS_BASE|CUSTOM|100520)
35#define CUSTOM_AI_GO_TO_PATROL_POINT (MS_BASE|CUSTOM|100521)
36#define CUSTOM_AI_CHECK_GO_HOME (MS_BASE|CUSTOM|100522)
37#define CUSTOM_AI_SEND_PUBLIC_MESSAGE (MS_BASE|CUSTOM|100523)
38#define CUSTOM_AI_ADD_RADAR_TARGET (MS_BASE|CUSTOM|100524)
39#define CUSTOM_AI_CHECK_RADAR_TARGETS (MS_BASE|CUSTOM|100525)
40#define CUSTOM_AI_ENEMY_KILLED (MS_BASE|CUSTOM|100526)
41#define CUSTOM_AI_ADD_ALLY_TARGET (MS_BASE|CUSTOM|100527)
42#define CUSTOM_AI_REPAIR_NEEDED (MS_BASE|CUSTOM|100528)
43#define CUSTOM_AI_REPAIR_COMPLETE (MS_BASE|CUSTOM|100529)
44
45#define CUSTOM_AI_COOP_NEXT_RALLYPOINT (MS_BASE|CUSTOM|100601)
46#define CUSTOM_AI_COOP_ARRIVED_TO_RALLYPOINT (MS_BASE|CUSTOM|100602)
47#define CUSTOM_AI_COOP_GROUPRUSH_COMPLETE (MS_BASE|CUSTOM|100603)
48#define CUSTOM_AI_COOP_STOP_SECONDARY_OBJECTIVE (MS_BASE|CUSTOM|100604)
49
50#define CUSTOM_AI_COOP_PLAYER_RADIO_MESSAGE (MS_BASE|CUSTOM|100701)
51#define CUSTOM_AI_COOP_PLAYER_FOLLOW (MS_BASE|CUSTOM|100702)
52#define CUSTOM_AI_COOP_PLAYER_FOLLOW_COVER (MS_BASE|CUSTOM|100703)
53#define CUSTOM_AI_COOP_PLAYER_FOLLOW_STOP (MS_BASE|CUSTOM|100704)
54#define CUSTOM_AI_COOP_PLAYER_DEFEND_BASE (MS_BASE|CUSTOM|100705)
55#define CUSTOM_AI_COOP_PLAYER_CREATE_OBJECTIVE (MS_BASE|CUSTOM|100706)
56#define CUSTOM_AI_COOP_PLAYER_DESTROY_OBJECTIVE (MS_BASE|CUSTOM|100707)
57
58#define CUSTOM_AI_ORDER_MOVE (MS_BASE|CUSTOM|100801)
59#define CUSTOM_AI_ORDER_ATTACK (MS_BASE|CUSTOM|100802)
60#define CUSTOM_AI_ORDER_DEFEND (MS_BASE|CUSTOM|100803)
61
62#define TIMER_AI_CONTROLLER_PLAYERCHECK (MS_BASE|TIMER|100501)
63#define TIMER_AI_OBJECT_SPAWN_COUNTDOWN (MS_BASE|TIMER|100502)
64#define TIMER_AI_OBJECT_SPAWN_GHOSTING_COUNTDOWN (MS_BASE|TIMER|100503)
65#define TIMER_AI_OBJECT_ACTIVATE_COUNTDOWN (MS_BASE|TIMER|100504)
66#define TIMER_AI_WAIT_FOR_VEHICLE_CONSTRUCT (MS_BASE|TIMER|100505)
67#define TIMER_AI_GO_TO_VEHICLE_TIMEOUT (MS_BASE|TIMER|100506)
68#define TIMER_AI_UNDER_ATTACK (MS_BASE|TIMER|100507)
69#define TIMER_AI_REQUEST_DEPLOY (MS_BASE|TIMER|100508)
70#define TIMER_AI_POST_CREATED (MS_BASE|TIMER|100509)
71#define TIMER_AI_SEARCH_FOR_VEHICLE (MS_BASE|TIMER|100510)
72#define TIMER_AI_REFILL_COOLDOWN (MS_BASE|TIMER|100511)
73#define TIMER_AI_DEFEND (MS_BASE|TIMER|100512)
74
75#define TIMER_AI_CHECK_FOR_BLOCK (MS_BASE|TIMER|100551)
76#define TIMER_AI_CHECK_GET_AROUND_TIMEOUT (MS_BASE|TIMER|100552)
77#define TIMER_AI_CHECK_UNSTUCK_TIMEOUT (MS_BASE|TIMER|100553)
78#define TIMER_AI_CHECK_DISTANCE (MS_BASE|TIMER|100554)
79#define TIMER_AI_CHECK_RADAR (MS_BASE|TIMER|100555)
80#define TIMER_AI_CHECK_ALLIES (MS_BASE|TIMER|100556)
81
82#define TIMER_AI_COOP_RETRY_REQUEST (MS_BASE|TIMER|100601)
83#define TIMER_AI_COOP_GROUP_WAIT_TEAM_0 (MS_BASE|TIMER|100602)
84#define TIMER_AI_COOP_GROUP_WAIT_TEAM_1 (MS_BASE|TIMER|100603)
85#define TIMER_AI_COOP_PAUSE_INITIATION (MS_BASE|TIMER|100604)
86
87#define ACTION_AI_GO_TO_VEHICLE (MS_BASE|ACTION|100001)
88#define ACTION_AI_GET_AROUND_REVERSE (MS_BASE|ACTION|100002)
89#define ACTION_AI_GET_AROUND_FORWARD (MS_BASE|ACTION|100003)
90#define ACTION_AI_RANDOM_MOVING (MS_BASE|ACTION|100004)
91
92#define DEFAULT_BOT_NAME "Bot"
93
94#define MS_RGB_JOINLEFT_MSG 178,178,178 // grey
95#define MS_RGB_DEBUG 255,255,255
96
97class Radio_Message_Type
98{
99public:
100 static int BUILDING_NEEDS_REPAIRS;
101 static int GET_IN_THE_VEHICLE;
102 static int GET_OUT_OF_THE_VEHICLE;
103 static int DESTROY_THAT_VEHICLE;
104 static int DONT_GET_IN_MY_WAY;
105 static int AFFIRMATIVE;
106 static int NEGATIVE;
107
108 static int TAKE_THE_POINT;
109 static int MOVE_OUT;
110 static int FOLLOW_ME;
111 static int COVER_ME;
112 static int DESTROY_IT_NOW;
113
114 static int ATTACK_THE_HARVESTER;
115 static int ATTACK_THAT_STRUCTURE;
116 static int DEFEND_THE_BASE;
117 static int DEFEND_THE_HARVESTER;
118 static int DEFEND_THAT_STRUCTURE;
119};
120
121
122class MS_AccessHelper
123{
124public:
125 static void Init_AI_Global_Controller();
126 static int Get_AI_Player_Controllers_Count(int team);
127 static void Give_Bot_Credits(int team, float amount);
128 static float Steal_Bot_Credits(int team, float percentage);
129 static void Receive_Radio_Command(GameObject *sender, int AnnouncementID, int orderType = 0, int orderObjID = 0);
130 static void Send_Radio_Order_To_Bot(GameObject *sender, GameObject *receiver, int radioIndex, int orderType = 0, int orderObjID = 0);
131 static float Get_Money(GameObject *object);
132 static void Give_Money(GameObject *object, float money);
133 static void Activate_Defense_Protocol(int team);
134};
135
136
137class MS_AI_Rally_Point : public ScriptImpClass
138{
139 void Created(GameObject *obj) override;
140 void Destroyed(GameObject *obj) override;
141public:
142 int Get_Team();
143 int Get_NodeGroup();
144 int Get_NodeNum();
145 bool Get_IsInfantryOnly();
146 GameObject *Get_Object();
147};
148
149class MS_AI_Patrol_Point : public MS_AI_Rally_Point
150{
151 void Created(GameObject *obj) override;
152 void Destroyed(GameObject *obj) override;
153};