mirror of
				https://github.com/ineedbots/t5_bot_warfare.git
				synced 2025-10-30 15:46:58 +00:00 
			
		
		
		
	bot_equipment_kill_think
This commit is contained in:
		| @@ -318,8 +318,8 @@ bot_spawn() | ||||
| 	{ | ||||
| 	/* | ||||
| 		self thread bot_target_vehicle(); | ||||
| 		self thread bot_equipment_kill_think(); | ||||
| 		*/ | ||||
| 		self thread bot_equipment_kill_think(); | ||||
| 		self thread bot_turret_think(); | ||||
| 		self thread bot_dogs_think(); | ||||
| 	} | ||||
| @@ -1204,6 +1204,183 @@ bot_turret_think() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Bot will attack the equipment | ||||
| */ | ||||
| bot_equipment_attack(equ) | ||||
| { | ||||
| 	equ endon("death"); | ||||
| 	equ endon("hacked"); | ||||
| 	 | ||||
| 	wait_time = RandomIntRange( 7, 10 ); | ||||
|  | ||||
| 	for ( i = 0; i < wait_time; i++ ) | ||||
| 	{ | ||||
| 		wait( 1 ); | ||||
|  | ||||
| 		if ( !IsDefined( equ ) ) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Bots target equipment | ||||
| */ | ||||
| bot_equipment_kill_think() | ||||
| { | ||||
| 	self endon( "death" ); | ||||
| 	self endon( "disconnect" ); | ||||
| 	level endon ( "game_ended" ); | ||||
|  | ||||
| 	myteam = self.pers[ "team" ]; | ||||
|  | ||||
| 	for ( ;; ) | ||||
| 	{ | ||||
| 		hasHacker = self HasPerk( "specialty_showenemyequipment" ); | ||||
| 		if ( hasHacker ) | ||||
| 			wait( RandomIntRange( 2, 5 ) ); | ||||
| 		else | ||||
| 			wait( RandomIntRange( 5, 7 ) ); | ||||
|  | ||||
| 		if(isDefined(self GetThreat()) || self IsRemoteControlling() || self UseButtonPressed()) | ||||
| 			continue; | ||||
|  | ||||
| 		grenades = GetEntArray( "grenade", "classname" ); | ||||
| 		target = undefined; | ||||
|  | ||||
| 		for ( i = 0; i < grenades.size; i++ ) | ||||
| 		{ | ||||
| 			item = grenades[i]; | ||||
|  | ||||
| 			if (!isDefined(item)) | ||||
| 				continue; | ||||
|  | ||||
| 			if ( !IsDefined( item.name ) ) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			if ( !IsDefined( item.owner ) ) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			if ( level.teamBased && item.owner.team == myteam ) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			if ( item.owner == self ) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			if ( !IsWeaponEquipment( item.name ) ) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 			 | ||||
| 			if(!isDefined(item.bots)) | ||||
| 				item.bots = 0; | ||||
| 			 | ||||
| 			if(item.bots >= 2) | ||||
| 				continue; | ||||
|  | ||||
| 			dist = DistanceSquared( item.origin, self.origin ); | ||||
| 			if ( hasHacker && dist < 512 * 512 ) | ||||
| 			{ | ||||
| 				target = item; | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 			if ( dist < 256 * 256 ) | ||||
| 			{ | ||||
| 				target = item; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		if ( !IsDefined( target ) ) | ||||
| 		{ | ||||
| 			players = get_players(); | ||||
| 			for ( i = 0; i < players.size; i++ ) | ||||
| 			{ | ||||
| 				player = players[i]; | ||||
| 				if ( player == self ) | ||||
| 				{ | ||||
| 					continue; | ||||
| 				} | ||||
| 				 | ||||
| 				if(!isDefined(player.team)) | ||||
| 					continue; | ||||
| 				 | ||||
| 				if ( level.teamBased && player.team == myteam ) | ||||
| 				{ | ||||
| 					continue; | ||||
| 				} | ||||
| 				 | ||||
| 				if(!isDefined(player.tacticalInsertion)) | ||||
| 					continue; | ||||
| 				 | ||||
| 				if(!isDefined(player.tacticalInsertion.bots)) | ||||
| 					player.tacticalInsertion.bots = 0; | ||||
| 				 | ||||
| 				if(player.tacticalInsertion.bots >= 2) | ||||
| 					continue; | ||||
| 				 | ||||
| 				dist = DistanceSquared( player.tacticalInsertion.origin, self.origin ); | ||||
| 				if ( hasHacker && dist < 512 * 512 ) | ||||
| 				{ | ||||
| 					target = player.tacticalInsertion; | ||||
| 					break; | ||||
| 				} | ||||
|  | ||||
| 				if ( dist < 256 * 256 ) | ||||
| 				{ | ||||
| 					target = player.tacticalInsertion; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if ( IsDefined( target ) ) | ||||
| 		{ | ||||
| 			facing = false; | ||||
| 			if(isDefined(target.name) && target.name == "claymore_mp") | ||||
| 			{ | ||||
| 				if ( VectorDot( VectorNormalize( AnglesToForward( target.angles ) ), VectorNormalize( self.origin - target.origin ) ) >= 0.342 && !target maps\mp\gametypes\_weaponobjects::isStunned() ) // cos 70 degrees | ||||
| 					facing = true; | ||||
| 			} | ||||
| 			 | ||||
| 			if ( (( self HasPerk( "specialty_disarmexplosive" ) && !facing ) || isDefined(target.enemyTrigger)) && !self HasScriptGoal() && !self.bot_lock_goal ) | ||||
| 			{ | ||||
| 				self SetBotGoal(target.origin, 32); | ||||
| 				self thread bot_inc_bots(target, true); | ||||
| 				self thread bots_watch_touch_obj( target ); | ||||
| 				 | ||||
| 				path = self waittill_any_return("bad_path", "goal", "new_goal"); | ||||
|  | ||||
| 				if (path != "new_goal") | ||||
| 					self ClearBotGoal(); | ||||
|  | ||||
| 				if (path != "goal" || !isDefined(target) || (isDefined(target.hackerTrigger) && !self isTouching(target.hackerTrigger)) || (isDefined(target.enemyTrigger) && !self isTouching(target.enemyTrigger))) | ||||
| 					continue; | ||||
| 			 | ||||
| 				hackTime = GetDvarFloat( #"perk_disarmExplosiveTime" ); | ||||
| 				self PressUseButton( hackTime + 0.5 ); | ||||
| 				wait( hackTime + 0.5 ); | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			self SetScriptEnemy( target ); | ||||
| 			self bot_equipment_attack(target); | ||||
| 			self ClearScriptEnemy(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Bots watch when they get stuck on a carepackage and cap it | ||||
| */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user