rott/kf_sources/KFMod/Classes/KFHumanPawnEnemy.uc
2026-07-14 20:27:09 +07:00

125 lines
3.3 KiB
Ucode

//=============================================================================
// KFPawn
//=============================================================================
class KFHumanPawnEnemy extends KFHumanPawn;
var() enum ESoldierOrders
{
ORDER_Guarding, // Just stand still fooling around...
ORDER_Wander, // Randomly walk around ...
ORDER_Hunt, // Actively hunt for enemies
ORDER_Patrol // Follow patroling points (start as guarding if bStartPatrolOnTrigger)
} SoldierOrders;
var() enum ESoldierAttitude
{
ATTITUDE_Hate, // Shoot right away
ATTITUDE_Ignore, // Ignore as long as not being bumped or damaged
ATTITUDE_Friendly, // Act as a friend
ATTITUDE_FollowOnUse, // Follow when used, stop following when used again.
ATTITUDE_FollowOnSee // Follow on see
} AttitudeToPlayer,AttitudeToSpecimen;
var() float Accuracy,ReactionTime;
var() int HealthMod;
var() class<Weapon> WeaponType;
var() bool bStationaryCombat,bStartPatrolOnTrigger;
var() edfindable PatrolingPoint FirstPatrolPoint;
simulated function PostNetBeginPlay(){}
function AddDefaultInventory();
function GiveDefaultWeapon()
{
CreateInventory(string(WeaponType));
if ( inventory != None )
inventory.OwnerEvent('LoadOut');
Controller.ClientSwitchToBestWeapon();
}
function vector GetFireStart(vector X, vector Y, vector Z)
{
return Weapon.GetFireStart(x,y,z);
}
function CreateInventory(string InventoryClassName)
{
local Inventory Inv;
local class<Inventory> InventoryClass;
InventoryClass = Level.Game.BaseMutator.GetInventoryClass(InventoryClassName);
if( (InventoryClass!=None) && (FindInventoryType(InventoryClass)==None) )
{
Inv = Spawn(InventoryClass);
if( Inv != None )
{
Inv.GiveTo(self);
if ( Inv != None )
Inv.PickupFunction(self);
}
}
}
event PostBeginPlay()
{
Super(xpawn).PostBeginPlay();
AddDefaultInventory();
Health = HealthMod;
if ( (ControllerClass != None) && (Controller == None) )
{
Controller = spawn(ControllerClass);
if ( Controller != None )
Controller.Possess(self);
}
}
function bool PreferMelee()
{
if (Weapon != none)
return Weapon.bMeleeWeapon;
}
function bool RecommendSplashDamage()
{
if( LAW(Weapon) != none || Flamethrower(Weapon) != none )
return true;
return false;
}
function Died(Controller Killer, class<DamageType> damageType, vector HitLocation)
{
if( Controller!=None )
Controller.bIsPlayer = False;
Super.Died(Killer,damageType,HitLocation);
}
defaultproperties
{
bCanDodgeDoubleJump=false
ShieldStrengthMax=100.000000
MaxMultiJump=1
bCanDoubleJump=false
bCanWallDodge=false
GroundSpeed=270.000000
WaterSpeed=250.000000
AirSpeed=250.000000
JumpZ=300.000000
MaxFallSpeed=6000.000000
BaseEyeHeight=44
EyeHeight=44
HealthMax=125.000000
Health=125
Mesh=SkeletalMesh'KF_Soldier_Trip.British_Soldier1'//SkeletalMesh'KFSoldiers.Soldier'
Skins(0)=Combiner'KF_Soldier_Trip_T.Uniforms.brit_soldier_I_cmb'//Texture'KFCharacters.DavinSkin'
//Skins(1)=Shader'KFCharacters.GasMaskShader'
ControllerClass=class'KFFriendlyAI'
Accuracy = 0
ReactionTime = 1
WeaponType=Class'Single'
HealthMod=125
AttitudeToPlayer=ATTITUDE_Friendly
}