This commit is contained in:
2023-04-13 17:30:38 +02:00
commit 013c6f3b4d
921 changed files with 337975 additions and 0 deletions

19
mp/_acousticsensor.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_acousticsensor.gsc Normal file

File diff suppressed because one or more lines are too long

714
mp/_ambient.csc Normal file

File diff suppressed because one or more lines are too long

88
mp/_arena.gsc Normal file

File diff suppressed because one or more lines are too long

55
mp/_armblade.gsc Normal file

File diff suppressed because one or more lines are too long

91
mp/_armor.gsc Normal file
View File

@ -0,0 +1,91 @@
#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\math_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#precache( "lui_menu_data", "hudItems.armorPercent" );
#namespace armor;
function setLightArmorHP( newValue )
{
if ( IsDefined( newValue ) )
{
self.lightArmorHP = newValue;
if( IsPlayer( self ) && IsDefined( self.maxLightArmorHP ) && self.maxLightArmorHP > 0 )
{
lightArmorPercent = math::clamp( self.lightArmorHP / self.maxLightArmorHP, 0, 1 );
self SetControllerUIModelValue( "hudItems.armorPercent", lightArmorPercent );
}
}
else
{
self.lightArmorHP = undefined;
self.maxLightArmorHP = undefined;
self SetControllerUIModelValue( "hudItems.armorPercent", 0 );
}
}
/////////////////////////////////////////////////////////////////
// ARMOR: give a health boost
function setLightArmor( optionalArmorValue )
{
self notify( "give_light_armor" );
if( IsDefined( self.lightArmorHP ) )
unsetLightArmor();
self thread removeLightArmorOnDeath();
self thread removeLightArmorOnMatchEnd();
if( IsDefined( optionalArmorValue ) )
self.maxLightArmorHP = optionalArmorValue;
else
self.maxLightArmorHP = 150;
self setLightArmorHP( self.maxLightArmorHP );
}
function removeLightArmorOnDeath()
{
self endon ( "disconnect" );
self endon( "give_light_armor" );
self endon( "remove_light_armor" );
self waittill ( "death" );
unsetLightArmor();
}
function unsetLightArmor()
{
self setLightArmorHP( undefined );
self notify( "remove_light_armor" );
}
function removeLightArmorOnMatchEnd()
{
self endon ( "disconnect" );
self endon ( "remove_light_armor" );
level waittill( "game_ended" );
self thread unsetLightArmor();
}
function hasLightArmor()
{
return ( IsDefined( self.lightArmorHP ) && self.lightArmorHP > 0 );
}
function getArmor()
{
if( IsDefined( self.lightArmorHP ) )
{
return self.lightArmorHP;
}
return 0;
}

332
mp/_art.gsc Normal file

File diff suppressed because one or more lines are too long

17
mp/_ballistic_knife.gsc Normal file

File diff suppressed because one or more lines are too long

15
mp/_bb.gsc Normal file

File diff suppressed because one or more lines are too long

279
mp/_behavior_tracker.gsc Normal file
View File

@ -0,0 +1,279 @@
#using scripts\shared\math_shared;
#namespace behaviorTracker;
/////////////////////////////////////////////////////
///// Inititialize & Finaliize ////
/////////////////////////////////////////////////////
function SetupTraits()
{
if ( isDefined( self.behaviorTracker.traits ) )
return;
self.behaviorTracker.traits = [];
// Define the traits with a default value. This default value will be used if we dont have stats.
// Add the information to the BBPrint()
self.behaviorTracker.traits["effectiveCombat"] = 0.5;
self.behaviorTracker.traits["effectiveWallRunCombat"] = 0.5;
self.behaviorTracker.traits["effectiveDoubleJumpCombat"] = 0.5;
self.behaviorTracker.traits["effectiveSlideCombat"] = 0.5;
if ( self.behaviorTracker.version != 0 )
{
traits = getArrayKeys( self.behaviorTracker.traits );
for ( i = 0; i < traits.size; i++ )
{
trait = traits[i];
self.behaviorTracker.traits[trait] = float( self GetTraitStatValue( trait ) );
}
}
}
function Initialize()
{
if ( isdefined( self.pers["isBot"] ) )
return;
if ( isDefined( self.behaviorTracker ) )
return;
if ( isdefined( level.disableBehaviorTracker ) && level.disableBehaviorTracker == true )
return;
self.behaviorTracker = spawnstruct();
self.behaviorTracker.version = int( self GetTraitStatValue( "version" ) );
self.behaviorTracker.numRecords = int( self GetTraitStatValue( "numRecords" ) ) + 1;
self SetupTraits();
self.behaviorTracker.valid = true;
}
function Finalize()
{
if ( !( self IsAllowed() ) )
return;
self SetTraitStats();
self PrintTrackerToBlackBox();
}
/////////////////////////////////////////////////////
///// Utility Functions ////
/////////////////////////////////////////////////////
function IsAllowed()
{
if ( !isDefined( self ) )
return false;
if ( !isDefined( self.behaviorTracker ) )
return false;
if ( !self.behaviorTracker.valid )
return false;
if ( isdefined( level.disableBehaviorTracker ) && level.disableBehaviorTracker == true )
return false;
return true;
}
function PrintTrackerToBlackBox()
{
// Prepare the list of traits & its values
// TODO: Construct the string with all the traits so that it can just be added as a single variable in the print.
/*traitsStr = "";
traits = getArrayKeys( self.behaviorTracker.traits );
for ( i = 0; i < traits.size; i++ )
{
trait = traits[i];
value = self.behaviorTracker.traits[trait];
traitsStr = traitsStr + trait + " " + value + " ";
}
bbPrint( "mpbehaviortracker", "username %s version %d numRecords %d %s", self.name, self.behaviorTracker.version, self.behaviorTracker.numRecords, traitsStr ); */
bbPrint( "mpbehaviortracker", "username %s version %d numRecords %d effectiveSlideCombat %f effectiveDoubleJumpCombat %f effectiveWallRunCombat %f effectiveCombat %f",
self.name, self.behaviorTracker.version, self.behaviorTracker.numRecords, self.behaviorTracker.traits["effectiveSlideCombat"],
self.behaviorTracker.traits["effectiveDoubleJumpCombat"], self.behaviorTracker.traits["effectiveWallRunCombat"], self.behaviorTracker.traits["effectiveCombat"] );
}
/////////////////////////////////////////////////////
///// Set, Get & Update Trait ////
/////////////////////////////////////////////////////
function GetTraitValue( trait )
{
return self.behaviorTracker.traits[ trait ];
}
function SetTraitValue( trait, value )
{
self.behaviorTracker.traits[trait] = value;
}
function UpdateTrait( trait, percent )
{
if ( !( self IsAllowed() ) )
return;
math::clamp( percent, -1.0, 1.0 );
currentValue = self GetTraitValue( trait );
if ( percent >= 0 )
{
delta = ( 1.0 - currentValue ) * percent;
}
else
{
delta = ( currentValue - 0.0 ) * percent;
}
weightedDelta = 0.1 * delta;
newValue = currentvalue + weightedDelta;
newValue = math::clamp( newValue, 0.0, 1.0 );
self SetTraitValue( trait, newValue );
bbprint( "mpbehaviortraitupdate", "username %s trait %s percent %f", self.name, trait, percent );
}
/////////////////////////////////////////////////////
///// Game Side Hooks ////
/////////////////////////////////////////////////////
function UpdatePlayerDamage( attacker, victim, damage )
{
if ( isDefined( victim ) && victim IsAllowed() )
{
damageRatio = float( damage ) / float( victim.maxhealth );
math::clamp( damageRatio, 0.0, 1.0 );
damageRatio = damageRatio * -1.0; // Negative damage percent since this is the victim
victim UpdateTrait( "effectiveCombat", damageRatio );
if ( victim IsWallRunning() )
{
victim UpdateTrait( "effectiveWallRunCombat", damageRatio );
}
if ( victim IsSliding() )
{
victim UpdateTrait( "effectiveSlideCombat", damageRatio );
}
if ( victim IsDoubleJumping() )
{
victim UpdateTrait( "effectiveDoubleJumpCombat", damageRatio );
}
}
if ( isDefined( attacker ) && ( attacker IsAllowed() ) && attacker != victim )
{
damageRatio = float( damage ) / float( attacker.maxhealth );
math::clamp( damageRatio, 0.0, 1.0 );
attacker UpdateTrait( "effectiveCombat", damageRatio );
if ( attacker IsWallRunning() )
{
attacker UpdateTrait( "effectiveWallRunCombat", damageRatio );
}
if ( attacker IsSliding() )
{
attacker UpdateTrait( "effectiveSlideCombat", damageRatio );
}
if ( attacker IsDoubleJumping() )
{
attacker UpdateTrait( "effectiveDoubleJumpCombat", damageRatio );
}
}
}
function UpdatePlayerKilled( attacker, victim )
{
if ( isDefined( victim ) && victim IsAllowed() )
{
// Passing -1.0 since to denote negative 100%.
victim UpdateTrait( "effectiveCombat", -1.0 );
if ( victim IsWallRunning() )
{
victim UpdateTrait( "effectiveWallRunCombat", -1.0 );
}
if ( victim IsSliding() )
{
victim UpdateTrait( "effectiveSlideCombat", -1.0 );
}
if ( victim IsDoubleJumping() )
{
victim UpdateTrait( "effectiveDoubleJumpCombat", -1.0 );
}
}
if ( isDefined( attacker ) && ( attacker IsAllowed() ) && attacker != victim )
{
// Passing 1.0 since to denote positive 100%.
attacker UpdateTrait( "effectiveCombat", 1.0 );
if ( attacker IsWallRunning() )
{
attacker UpdateTrait( "effectiveWallRunCombat", 1.0 );
}
if ( attacker IsSliding() )
{
attacker UpdateTrait( "effectiveSlideCombat", 1.0 );
}
if ( attacker IsDoubleJumping() )
{
attacker UpdateTrait( "effectiveDoubleJumpCombat", 1.0 );
}
}
}
/////////////////////////////////////////////////////
///// Stats Related ////
/////////////////////////////////////////////////////
function SetTraitStats()
{
if ( self.behaviorTracker.version == 0 )
return;
self.behaviorTracker.numRecords = self.behaviorTracker.numRecords + 1;
self SetTraitStatValue( "numRecords", self.behaviorTracker.numRecords );
traits = getArrayKeys( self.behaviorTracker.traits );
for ( i = 0; i < traits.size; i++ )
{
trait = traits[i];
value = self.behaviorTracker.traits[trait];
self SetTraitStatValue( trait, value );
}
}
function GetTraitStatValue( trait )
{
return self getDStat( "behaviorTracker", trait );
}
function SetTraitStatValue( trait, value )
{
self setDStat( "behaviorTracker", trait, value );
}

File diff suppressed because one or more lines are too long

13
mp/_bonuscard.gsh Normal file
View File

@ -0,0 +1,13 @@
// bonusCards_t

19
mp/_bouncingbetty.csc Normal file

File diff suppressed because one or more lines are too long

23
mp/_bouncingbetty.gsc Normal file

File diff suppressed because one or more lines are too long

301
mp/_callbacks.csc Normal file

File diff suppressed because one or more lines are too long

64
mp/_callbacks.gsc Normal file

File diff suppressed because one or more lines are too long

1952
mp/_challenges.gsc Normal file

File diff suppressed because one or more lines are too long

45
mp/_claymore.csc Normal file

File diff suppressed because one or more lines are too long

991
mp/_contracts.gsc Normal file

File diff suppressed because one or more lines are too long

16
mp/_contracts.gsh Normal file
View File

@ -0,0 +1,16 @@
//
// mp contract header
//

32
mp/_ctf.csc Normal file

File diff suppressed because one or more lines are too long

16
mp/_decoy.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_decoy.gsc Normal file

File diff suppressed because one or more lines are too long

48
mp/_destructible.csc Normal file

File diff suppressed because one or more lines are too long

610
mp/_destructible.gsc Normal file

File diff suppressed because one or more lines are too long

2
mp/_destructible.gsh Normal file
View File

@ -0,0 +1,2 @@

915
mp/_devgui.gsc Normal file

File diff suppressed because one or more lines are too long

319
mp/_end_game_flow.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_entityheadicons.gsc Normal file

File diff suppressed because one or more lines are too long

147
mp/_events.gsc Normal file

File diff suppressed because one or more lines are too long

120
mp/_explosive_bolt.csc Normal file

File diff suppressed because one or more lines are too long

60
mp/_explosive_bolt.gsc Normal file

File diff suppressed because one or more lines are too long

21
mp/_flashgrenades.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_flashgrenades.gsc Normal file

File diff suppressed because one or more lines are too long

488
mp/_gameadvertisement.gsc Normal file

File diff suppressed because one or more lines are too long

459
mp/_gamerep.gsc Normal file

File diff suppressed because one or more lines are too long

39
mp/_global_fx.csc Normal file

File diff suppressed because one or more lines are too long

173
mp/_gravity_spikes.csc Normal file

File diff suppressed because one or more lines are too long

18
mp/_hacker_tool.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_hacker_tool.gsc Normal file

File diff suppressed because one or more lines are too long

2
mp/_hacker_tool.gsh Normal file
View File

@ -0,0 +1,2 @@

File diff suppressed because one or more lines are too long

1213
mp/_helicopter_sounds.csc Normal file

File diff suppressed because one or more lines are too long

23
mp/_hive_gun.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_hive_gun.gsc Normal file

File diff suppressed because one or more lines are too long

488
mp/_incendiary.gsc Normal file

File diff suppressed because one or more lines are too long

275
mp/_laststand.gsc Normal file

File diff suppressed because one or more lines are too long

22
mp/_lightninggun.csc Normal file

File diff suppressed because one or more lines are too long

18
mp/_lightninggun.gsc Normal file

File diff suppressed because one or more lines are too long

160
mp/_load.csc Normal file

File diff suppressed because one or more lines are too long

214
mp/_load.gsc Normal file

File diff suppressed because one or more lines are too long

380
mp/_mgturret.gsc Normal file

File diff suppressed because one or more lines are too long

40
mp/_multi_extracam.csc Normal file

File diff suppressed because one or more lines are too long

185
mp/_nuketown_mannequin.gsc Normal file

File diff suppressed because one or more lines are too long

746
mp/_perks.csc Normal file

File diff suppressed because one or more lines are too long

290
mp/_perks.gsc Normal file

File diff suppressed because one or more lines are too long

537
mp/_pickup_items.gsc Normal file

File diff suppressed because one or more lines are too long

17
mp/_pickup_items.gsh Normal file
View File

@ -0,0 +1,17 @@

22
mp/_proximity_grenade.csc Normal file

File diff suppressed because one or more lines are too long

20
mp/_proximity_grenade.gsc Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

87
mp/_rat.gsc Normal file

File diff suppressed because one or more lines are too long

296
mp/_rewindobjects.csc Normal file

File diff suppressed because one or more lines are too long

20
mp/_riotshield.csc Normal file

File diff suppressed because one or more lines are too long

23
mp/_riotshield.gsc Normal file

File diff suppressed because one or more lines are too long

92
mp/_rotating_object.csc Normal file

File diff suppressed because one or more lines are too long

19
mp/_satchel_charge.csc Normal file

File diff suppressed because one or more lines are too long

18
mp/_satchel_charge.gsc Normal file

File diff suppressed because one or more lines are too long

1694
mp/_scoreevents.gsc Normal file

File diff suppressed because one or more lines are too long

22
mp/_scrambler.csc Normal file

File diff suppressed because one or more lines are too long

20
mp/_scrambler.gsc Normal file

File diff suppressed because one or more lines are too long

19
mp/_sensor_grenade.gsc Normal file

File diff suppressed because one or more lines are too long

58
mp/_shoutcaster.csc Normal file
View File

@ -0,0 +1,58 @@
#using scripts\codescripts\struct;
#using scripts\shared\system_shared;
#namespace shoutcaster;
function is_shoutcaster(localClientNum)
{
return IsShoutcaster(localClientNum);
}
function is_shoutcaster_using_team_identity(localClientNum)
{
return (is_shoutcaster(localClientNum) && GetShoutcasterSetting(localClientNum, "shoutcaster_team_identity" ));
}
function get_team_color_id( localClientNum, team )
{
if ( team == "allies" )
{
return GetShoutcasterSetting(localClientNum, "shoutcaster_fe_team1_color" );
}
return GetShoutcasterSetting(localClientNum, "shoutcaster_fe_team2_color" );
}
function get_team_color_fx( localClientNum, team, script_bundle )
{
color = get_team_color_id( localClientNum, team );
return script_bundle.objects[color].fx_colorid;
}
function get_color_fx( localClientNum, script_bundle )
{
effects = [];
effects["allies"] = get_team_color_fx( localClientNum, "allies", script_bundle );
effects["axis"] = get_team_color_fx( localClientNum, "axis", script_bundle );
return effects;
}
function is_friendly( localClientNum )
{
localplayer = getlocalplayer( localClientNum );
scorepanel_flipped = GetShoutcasterSetting(localClientNum, "shoutcaster_flip_scorepanel" );
if ( !scorepanel_flipped )
friendly = ( self.team == "allies" );
else
friendly = ( self.team == "axis" );
return friendly;
}

21
mp/_smokegrenade.gsc Normal file

File diff suppressed because one or more lines are too long

15
mp/_tabun.gsc Normal file

File diff suppressed because one or more lines are too long

20
mp/_tacticalinsertion.csc Normal file

File diff suppressed because one or more lines are too long

21
mp/_tacticalinsertion.gsc Normal file

File diff suppressed because one or more lines are too long

355
mp/_teamops.gsc Normal file

File diff suppressed because one or more lines are too long

13
mp/_teamops.gsh Normal file
View File

@ -0,0 +1,13 @@

15
mp/_teamset.csc Normal file

File diff suppressed because one or more lines are too long

192
mp/_teargrenades.gsc Normal file

File diff suppressed because one or more lines are too long

116
mp/_threat_detector.csc Normal file

File diff suppressed because one or more lines are too long

187
mp/_threat_detector.gsc Normal file

File diff suppressed because one or more lines are too long

21
mp/_trophy_system.csc Normal file

File diff suppressed because one or more lines are too long

20
mp/_trophy_system.gsc Normal file

File diff suppressed because one or more lines are too long

10
mp/_util.csc Normal file

File diff suppressed because one or more lines are too long

1270
mp/_util.gsc Normal file

File diff suppressed because one or more lines are too long

202
mp/_vehicle.csc Normal file

File diff suppressed because one or more lines are too long

2383
mp/_vehicle.gsc Normal file

File diff suppressed because one or more lines are too long

191
mp/_waterfall.csc Normal file

File diff suppressed because one or more lines are too long

954
mp/bots/_bot.gsc Normal file

File diff suppressed because one or more lines are too long

57
mp/bots/_bot.gsh Normal file
View File

@ -0,0 +1,57 @@
// matches the enum in bot.h
// 65 degrees
// 85 degrees
// 100 degrees
// 160 degrees

165
mp/bots/_bot_ball.gsc Normal file

File diff suppressed because one or more lines are too long

187
mp/bots/_bot_clean.gsc Normal file

File diff suppressed because one or more lines are too long

242
mp/bots/_bot_combat.gsc Normal file

File diff suppressed because one or more lines are too long

23
mp/bots/_bot_conf.gsc Normal file

File diff suppressed because one or more lines are too long

105
mp/bots/_bot_ctf.gsc Normal file

File diff suppressed because one or more lines are too long

148
mp/bots/_bot_dem.gsc Normal file

File diff suppressed because one or more lines are too long

149
mp/bots/_bot_dom.gsc Normal file

File diff suppressed because one or more lines are too long

76
mp/bots/_bot_escort.gsc Normal file

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More