Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

140 lines
3.7 KiB
Plaintext

fsm SlaughterBot : integer;
//------------------------------------------------------------------
// UberBot: Level 8
// Intended to display the maximum amount of challenge that the game can provide.
//------------------------------------------------------------------
//------------------------------------------------------------------
// Constants
//------------------------------------------------------------------
const
#include_ <content\ABLScripts\mwconst.abi>
//------------------------------------------------------------------
// Types
//------------------------------------------------------------------
type
#include_ <content\ABLScripts\mwtype.abi>
//------------------------------------------------------------------
// Variables
//------------------------------------------------------------------
var
static integer attackRange; // At what range do I start shooting?
static integer withdrawRange; // At what range do I withdraw?
static integer bot_activated_timer; // How long to wait before startup?
//------------------------------------------------------------------
// Init: my initialization function
//------------------------------------------------------------------
function Init;
code
// script-specific variables
attackRange = 9999;
withdrawRange = 9999;
// driver settings
SetFiringDelay (ME,0.0,0.0);
SetIgnoreFriendlyFire (ME,true);
SetIsShotRadius (ME,200);
// SetEntropyMood (ME,AGRESSIVE_END);
// SetCurMood (ME,AGRESSIVE_END);
SetEntropyMood (ME,BRUTAL_START);
SetCurMood (ME,BRUTAL_START);
SetSkillLevel (ME,100,999,100);
SetAttackThrottle (ME,100);
// SetMinSpeed (ME,100);
EnablePerWeaponRayCasting (ME,TRUE);
bot_activated_timer = gti_Timer_1;
endfunction;
//------------------------------------------------------------------
// StartState: my initial state
//------------------------------------------------------------------
state StartState;
code
StartTimer(bot_activated_timer);
trans CheckTimer;
endstate;
state CheckTimer;
code
//---------------------------------------------
// Time before Bot Wakes up and starts Shooting
//---------------------------------------------
if (TimeGreater(bot_activated_timer,5.0)) then
trans WaitToAmbushState;
endif;
//---------------------------------------------
// Firing upon/near before timer up lets the bot go play
//---------------------------------------------
if (IsShot(ME) == TRUE) then
SetTarget(ME,WhoShot(ME));
trans WaitToAmbushState;
endif;
trans CheckTimer;
endstate;
//------------------------------------------------------------------
// WaitInAmbushState: wait for someone to come close enough to attack
//------------------------------------------------------------------
state WaitToAmbushState;
code
if (Bot_FindEnemy(attackrange)) then
trans AttackState;
endif;
OrderMoveLookOut;
endstate;
//------------------------------------------------------------------
// AttackState: the ambush is over -- let's kick some ass!
//------------------------------------------------------------------
state AttackState;
code
if (LeaveAttackState(withdrawRange)) then
trans WaitToAmbushState;
endif;
// OrderAttackTactic(TACTIC_FAST_CIRCLE,TRUE);
OrderAttackTactic(TACTIC_CIRCLE,TRUE);
endstate;
//------------------------------------------------------------------
// DeadState: OK, I kicked the bucket.
//------------------------------------------------------------------
state DeadState;
code
orderDie;
endstate;
endfsm.