X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fdefault%2Fbot.qh;h=618a766b8098aad90ce59c1b07acc76e1f5b5c21;hb=b5c2004edc3d7e620e24283b1e3fe4d2396cd357;hp=0959307608d3239bd7405bc809c2352467fd1c6c;hpb=9185b58da6fe5f2b095d7066577e1e024b4d2798;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/bot/default/bot.qh b/qcsrc/server/bot/default/bot.qh index 095930760..618a766b8 100644 --- a/qcsrc/server/bot/default/bot.qh +++ b/qcsrc/server/bot/default/bot.qh @@ -3,20 +3,20 @@ * Globals and Fields */ -const int AI_STATUS_ROAMING = BIT(0); // Bot is just crawling the map. No enemies at sight -const int AI_STATUS_ATTACKING = BIT(1); // There are enemies at sight -const int AI_STATUS_RUNNING = BIT(2); // Bot is bunny hopping -const int AI_STATUS_DANGER_AHEAD = BIT(3); // There is lava/slime/trigger_hurt ahead -const int AI_STATUS_OUT_JUMPPAD = BIT(4); // Trying to get out of a "vertical" jump pad -const int AI_STATUS_OUT_WATER = BIT(5); // Trying to get out of water -const int AI_STATUS_WAYPOINT_PERSONAL_LINKING = BIT(6); // Waiting for the personal waypoint to be linked -const int AI_STATUS_WAYPOINT_PERSONAL_GOING = BIT(7); // Going to a personal waypoint -const int AI_STATUS_WAYPOINT_PERSONAL_REACHED = BIT(8); // Personal waypoint reached -const int AI_STATUS_JETPACK_FLYING = BIT(9); -const int AI_STATUS_JETPACK_LANDING = BIT(10); -const int AI_STATUS_STUCK = BIT(11); // Cannot reach any goal - -.float isbot; // true if this client is actually a bot +const int AI_STATUS_ROAMING = BIT(0); // Bot is just crawling the map. No enemies at sight +const int AI_STATUS_ATTACKING = BIT(1); // There are enemies at sight +const int AI_STATUS_RUNNING = BIT(2); // Bot is bunny hopping +const int AI_STATUS_DANGER_AHEAD = BIT(3); // There is lava/slime/trigger_hurt ahead +const int AI_STATUS_OUT_JUMPPAD = BIT(4); // Trying to get out of a "vertical" jump pad +const int AI_STATUS_OUT_WATER = BIT(5); // Trying to get out of water +const int AI_STATUS_WAYPOINT_PERSONAL_LINKING = BIT(6); // Waiting for the personal waypoint to be linked +const int AI_STATUS_WAYPOINT_PERSONAL_GOING = BIT(7); // Going to a personal waypoint +const int AI_STATUS_WAYPOINT_PERSONAL_REACHED = BIT(8); // Personal waypoint reached +const int AI_STATUS_JETPACK_FLYING = BIT(9); +const int AI_STATUS_JETPACK_LANDING = BIT(10); +const int AI_STATUS_STUCK = BIT(11); // Cannot reach any goal + +.bool isbot; // true if this client is actually a bot .int aistatus; // Skill system @@ -48,6 +48,8 @@ float bot_distance_close; entity bot_list; .entity nextbot; .string cleanname; +// the *_freeme fields exist only to avoid an engine crash +// when trying to strunzone the original fields .string netname_freeme; .string playermodel_freeme; .string playerskin_freeme; @@ -62,8 +64,10 @@ entity bot_list; .float bot_pickup; .float bot_pickupbasevalue; +.bool bot_pickup_respawning; .float bot_canfire; .float bot_strategytime; +.float bot_jump_time; .float bot_forced_team; .float bot_config_loaded; @@ -74,15 +78,19 @@ entity bot_strategytoken; float botframe_spawnedwaypoints; float botframe_nextthink; float botframe_nextdangertime; -float bot_cvar_nextthink; -float bot_ignore_bots; // let bots not attack other bots (only works in non-teamplay) + +int _content_type; +#define IN_LAVA(pos) (_content_type = pointcontents(pos), (_content_type == CONTENT_LAVA || _content_type == CONTENT_SLIME)) +#define IN_LIQUID(pos) (_content_type = pointcontents(pos), (_content_type == CONTENT_WATER || _content_type == CONTENT_LAVA || _content_type == CONTENT_SLIME)) +#define SUBMERGED(pos) IN_LIQUID(pos + autocvar_sv_player_viewoffset) +#define WETFEET(pos) IN_LIQUID(pos + eZ * (m1.z + 1)) /* * Functions */ entity bot_spawn(); -float bot_fixcount(); +bool bot_fixcount(); void bot_think(entity this); void bot_setnameandstuff(entity this);