1 #using scripts\shared\math_shared;
3 #define LEARNING_RATE 0.1
4 #define MIN_TRAIT_VALUE 0.0
5 #define MAX_TRAIT_VALUE 1.0
6 #define DEFAULT_TRAIT_VALUE 0.5
8 #namespace behaviorTracker;
15 if ( isDefined(
self.behaviorTracker.traits ) )
18 self.behaviorTracker.traits = [];
25 if (
self.behaviorTracker.version != 0 )
27 traits = getArrayKeys(
self.behaviorTracker.traits );
29 for ( i = 0; i < traits.size; i++ )
39 if ( isdefined(
self.pers[
"isBot"] ) )
42 if ( isDefined(
self.behaviorTracker ) )
45 if ( isdefined( level.disableBehaviorTracker ) && level.disableBehaviorTracker ==
true )
48 self.behaviorTracker = spawnstruct();
53 self.behaviorTracker.valid =
true;
71 if ( !isDefined(
self ) )
74 if ( !isDefined(
self.behaviorTracker ) )
77 if ( !
self.behaviorTracker.valid )
80 if ( isdefined( level.disableBehaviorTracker ) && level.disableBehaviorTracker ==
true )
96 return self.behaviorTracker.traits[ trait ];
101 self.behaviorTracker.traits[trait] = value;
124 newValue = currentvalue + weightedDelta;
134 if ( isDefined( victim ) && victim
IsAllowed() )
136 damageRatio = float(
damage ) / float( victim.maxhealth );
139 damageRatio = damageRatio * -1.0;
143 if ( victim IsWallRunning() )
145 victim
UpdateTrait(
"effectiveWallRunCombat", damageRatio );
148 if ( victim IsSliding() )
150 victim
UpdateTrait(
"effectiveSlideCombat", damageRatio );
153 if ( victim IsDoubleJumping() )
155 victim
UpdateTrait(
"effectiveDoubleJumpCombat", damageRatio );
159 if ( isDefined( attacker ) && ( attacker
IsAllowed() ) && attacker != victim )
161 damageRatio = float(
damage ) / float( attacker.maxhealth );
164 attacker
UpdateTrait(
"effectiveCombat", damageRatio );
166 if ( attacker IsWallRunning() )
168 attacker
UpdateTrait(
"effectiveWallRunCombat", damageRatio );
171 if ( attacker IsSliding() )
173 attacker
UpdateTrait(
"effectiveSlideCombat", damageRatio );
176 if ( attacker IsDoubleJumping() )
178 attacker
UpdateTrait(
"effectiveDoubleJumpCombat", damageRatio );
185 if ( isDefined( victim ) && victim
IsAllowed() )
190 if ( victim IsWallRunning() )
195 if ( victim IsSliding() )
200 if ( victim IsDoubleJumping() )
202 victim
UpdateTrait(
"effectiveDoubleJumpCombat", -1.0 );
206 if ( isDefined( attacker ) && ( attacker
IsAllowed() ) && attacker != victim )
211 if ( attacker IsWallRunning() )
216 if ( attacker IsSliding() )
221 if ( attacker IsDoubleJumping() )
223 attacker
UpdateTrait(
"effectiveDoubleJumpCombat", 1.0 );
234 if (
self.behaviorTracker.version == 0 )
237 self.behaviorTracker.numRecords =
self.behaviorTracker.numRecords + 1;
240 traits = getArrayKeys(
self.behaviorTracker.traits );
242 for ( i = 0; i < traits.size; i++ )
245 value =
self.behaviorTracker.traits[trait];
253 return self getDStat(
"behaviorTracker", trait );
258 self setDStat(
"behaviorTracker", trait, value );