From 55e53e356f10a20af238374814909a37f3c7683c Mon Sep 17 00:00:00 2001 From: INeedBots Date: Mon, 21 Dec 2020 01:45:15 -0600 Subject: [PATCH] stuff --- main_shared/maps/mp/bots/_bot_script.gsc | 4 +- main_shared/maps/mp/bots/_bot_utility.gsc | 169 +++++++++++++++++++++ main_shared/maps/mp/gametypes/_bot.gsc | 171 +--------------------- 3 files changed, 173 insertions(+), 171 deletions(-) diff --git a/main_shared/maps/mp/bots/_bot_script.gsc b/main_shared/maps/mp/bots/_bot_script.gsc index af778ce..bf5c61d 100644 --- a/main_shared/maps/mp/bots/_bot_script.gsc +++ b/main_shared/maps/mp/bots/_bot_script.gsc @@ -15,7 +15,7 @@ */ added() { - self maps\mp\bots\_bot_loadout::bot_get_cod_points(); + self maps\mp\bots\_bot_loadout::bot_get_cod_points(); self maps\mp\bots\_bot_loadout::bot_get_rank(); self maps\mp\bots\_bot_loadout::bot_get_prestige(); @@ -23,7 +23,7 @@ added() self.pers["bot"][ "cod_points_org" ] = self.pers["bot"][ "cod_points" ];//killstreaks cannot be set again - self maps\mp\bots\_bot_loadout::bot_set_class(); + self maps\mp\bots\_bot_loadout::bot_set_class(); } /* diff --git a/main_shared/maps/mp/bots/_bot_utility.gsc b/main_shared/maps/mp/bots/_bot_utility.gsc index 7f02fd6..ab371ce 100644 --- a/main_shared/maps/mp/bots/_bot_utility.gsc +++ b/main_shared/maps/mp/bots/_bot_utility.gsc @@ -112,3 +112,172 @@ bot_wait_for_host() wait 0.05; } } + +/* + Fixes sd bomb planting +*/ +bot_onUsePlantObjectFix( player ) +{ + // planted the bomb + if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) + { + level thread bot_bombPlanted( self, player ); + player logString( "bomb planted: " + self.label ); + + // disable all bomb zones except this one + for ( index = 0; index < level.bombZones.size; index++ ) + { + if ( level.bombZones[index] == self ) + continue; + + level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); + } + thread playSoundOnPlayers( "mus_sd_planted"+"_"+level.teamPostfix[player.pers["team"]] ); +// removed plant audio until finalization of assest TODO : new plant sounds when assests are online +// player playSound( "mpl_sd_bomb_plant" ); + player notify ( "bomb_planted" ); + + level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player ); + + if( isdefined(player.pers["plants"]) ) + { + player.pers["plants"]++; + player.plants = player.pers["plants"]; + } + + player maps\mp\_medals::saboteur(); + player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 ); + + maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" ); + + maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player ); + //player thread [[level.onXPEvent]]( "plant" ); + } +} + +/* + Fixes sd bomb planting +*/ +bot_bombPlanted( destroyedObj, player ) +{ + maps\mp\gametypes\_globallogic_utils::pauseTimer(); + level.bombPlanted = true; + + destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" ); + //Play suspense music + level thread maps\mp\gametypes\sd::bombPlantedMusicDelay(); + + //thread maps\mp\gametypes\_globallogic_audio::actionMusicSet(); + + level.tickingObject = destroyedObj.visuals[0]; + + level.timeLimitOverride = true; + setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) ); + setMatchFlag( "bomb_timer", 1 ); + + if ( !level.multiBomb ) + { + level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + level.sdBomb maps\mp\gametypes\_gameobjects::setDropped(); + level.sdBombModel = level.sdBomb.visuals[0]; + } + else + { + + for ( index = 0; index < level.players.size; index++ ) + { + if ( isDefined( level.players[index].carryIcon ) ) + level.players[index].carryIcon destroyElem(); + } + + trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player ); + + tempAngle = randomfloat( 360 ); + forward = (cos( tempAngle ), sin( tempAngle ), 0); + forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) ); + dropAngles = vectortoangles( forward ); + + level.sdBombModel = spawn( "script_model", trace["position"] ); + level.sdBombModel.angles = dropAngles; + level.sdBombModel setModel( "prop_suitcase_bomb" ); + } + destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" ); + destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); + /* + destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined ); + destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined ); + destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined ); + destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined ); + */ + label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel(); + + // create a new object to defuse with. + trigger = destroyedObj.bombDefuseTrig; + trigger.origin = level.sdBombModel.origin; + visuals = []; + defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) ); + defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); + defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); + defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); + defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); + defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); + defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label ); + defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label ); + defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label ); + defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label ); + defuseObject.label = label; + defuseObject.onBeginUse = maps\mp\gametypes\sd::onBeginUse; + defuseObject.onEndUse = maps\mp\gametypes\sd::onEndUse; + defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject; + defuseObject.useWeapon = "briefcase_bomb_defuse_mp"; + + level.defuseObject = defuseObject;//every cod... + + player.isBombCarrier = false; + + maps\mp\gametypes\sd::BombTimerWait(); + setMatchFlag( "bomb_timer", 0 ); + + destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound(); + + if ( level.gameEnded || level.bombDefused ) + return; + + level.bombExploded = true; + + + + explosionOrigin = level.sdBombModel.origin+(0,0,12); + level.sdBombModel hide(); + + if ( isdefined( player ) ) + { + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); + level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player ); + player maps\mp\_medals::bomber(); + player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 ); + } + else + destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); + + rot = randomfloat(360); + explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); + triggerFx( explosionEffect ); + + thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin ); + //thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" ); + + if ( isDefined( destroyedObj.exploderIndex ) ) + exploder( destroyedObj.exploderIndex ); + + for ( index = 0; index < level.bombZones.size; index++ ) + level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); + defuseObject maps\mp\gametypes\_gameobjects::disableObject(); + + setGameEndTime( 0 ); + + wait 3; + + maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] ); +} diff --git a/main_shared/maps/mp/gametypes/_bot.gsc b/main_shared/maps/mp/gametypes/_bot.gsc index 99f2be6..1e73ea7 100644 --- a/main_shared/maps/mp/gametypes/_bot.gsc +++ b/main_shared/maps/mp/gametypes/_bot.gsc @@ -427,6 +427,8 @@ addBots() { level endon ( "game_ended" ); + bot_wait_for_host(); + for (;;) { wait 1.5; @@ -765,172 +767,3 @@ fixGamemodes() wait 0.05; } } - -/* - Fixes sd bomb planting -*/ -bot_onUsePlantObjectFix( player ) -{ - // planted the bomb - if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) ) - { - level thread bot_bombPlanted( self, player ); - player logString( "bomb planted: " + self.label ); - - // disable all bomb zones except this one - for ( index = 0; index < level.bombZones.size; index++ ) - { - if ( level.bombZones[index] == self ) - continue; - - level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); - } - thread playSoundOnPlayers( "mus_sd_planted"+"_"+level.teamPostfix[player.pers["team"]] ); -// removed plant audio until finalization of assest TODO : new plant sounds when assests are online -// player playSound( "mpl_sd_bomb_plant" ); - player notify ( "bomb_planted" ); - - level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player ); - - if( isdefined(player.pers["plants"]) ) - { - player.pers["plants"]++; - player.plants = player.pers["plants"]; - } - - player maps\mp\_medals::saboteur(); - player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 ); - - maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" ); - - maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player ); - //player thread [[level.onXPEvent]]( "plant" ); - } -} - -/* - Fixes sd bomb planting -*/ -bot_bombPlanted( destroyedObj, player ) -{ - maps\mp\gametypes\_globallogic_utils::pauseTimer(); - level.bombPlanted = true; - - destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" ); - //Play suspense music - level thread maps\mp\gametypes\sd::bombPlantedMusicDelay(); - - //thread maps\mp\gametypes\_globallogic_audio::actionMusicSet(); - - level.tickingObject = destroyedObj.visuals[0]; - - level.timeLimitOverride = true; - setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) ); - setMatchFlag( "bomb_timer", 1 ); - - if ( !level.multiBomb ) - { - level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - level.sdBomb maps\mp\gametypes\_gameobjects::setDropped(); - level.sdBombModel = level.sdBomb.visuals[0]; - } - else - { - - for ( index = 0; index < level.players.size; index++ ) - { - if ( isDefined( level.players[index].carryIcon ) ) - level.players[index].carryIcon destroyElem(); - } - - trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player ); - - tempAngle = randomfloat( 360 ); - forward = (cos( tempAngle ), sin( tempAngle ), 0); - forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) ); - dropAngles = vectortoangles( forward ); - - level.sdBombModel = spawn( "script_model", trace["position"] ); - level.sdBombModel.angles = dropAngles; - level.sdBombModel setModel( "prop_suitcase_bomb" ); - } - destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" ); - destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" ); - /* - destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined ); - destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined ); - destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined ); - destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined ); - */ - label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel(); - - // create a new object to defuse with. - trigger = destroyedObj.bombDefuseTrig; - trigger.origin = level.sdBombModel.origin; - visuals = []; - defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) ); - defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" ); - defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime ); - defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" ); - defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" ); - defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); - defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label ); - defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label ); - defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label ); - defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label ); - defuseObject.label = label; - defuseObject.onBeginUse = maps\mp\gametypes\sd::onBeginUse; - defuseObject.onEndUse = maps\mp\gametypes\sd::onEndUse; - defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject; - defuseObject.useWeapon = "briefcase_bomb_defuse_mp"; - - level.defuseObject = defuseObject;//every cod... - - player.isBombCarrier = false; - - maps\mp\gametypes\sd::BombTimerWait(); - setMatchFlag( "bomb_timer", 0 ); - - destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound(); - - if ( level.gameEnded || level.bombDefused ) - return; - - level.bombExploded = true; - - - - explosionOrigin = level.sdBombModel.origin+(0,0,12); - level.sdBombModel hide(); - - if ( isdefined( player ) ) - { - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); - level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player ); - player maps\mp\_medals::bomber(); - player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 ); - } - else - destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); - - rot = randomfloat(360); - explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) ); - triggerFx( explosionEffect ); - - thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin ); - //thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" ); - - if ( isDefined( destroyedObj.exploderIndex ) ) - exploder( destroyedObj.exploderIndex ); - - for ( index = 0; index < level.bombZones.size; index++ ) - level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject(); - defuseObject maps\mp\gametypes\_gameobjects::disableObject(); - - setGameEndTime( 0 ); - - wait 3; - - maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] ); -}