Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
x3Karma authored Jan 4, 2022
1 parent bd39260 commit 7c23d93
Show file tree
Hide file tree
Showing 9 changed files with 502 additions and 0 deletions.
Binary file not shown.
73 changes: 73 additions & 0 deletions Teabag Confirmed/keyvalues/playlists_v2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
playlists
{
Gamemodes
{
tbag
{
inherit defaults
vars
{
name #PL_tbag
lobbytitle #PL_tbag_lobby
description #PL_tbag_desc
hint #PL_tbag_hint
abbreviation #PL_tbag_abbr
max_players 12
max_teams 2
classic_mp 1

gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM
}
}
}
Playlists
{
tbag
{
inherit defaults
vars
{
name #PL_tbag
lobbytitle #PL_tbag_lobby
description #PL_tbag_desc
abbreviation #PL_tbag_abbr
image ps
//mixtape_slot 7
mixtape_timeout 120
visible 0
}
gamemodes
{
tbag
{
maps
{
mp_forwardbase_kodai 1
mp_grave 1
mp_homestead 1
mp_thaw 1
mp_black_water_canal 1
mp_eden 1
mp_drydock 1
mp_crashsite3 1
mp_complex3 1
mp_angel_city 1
mp_colony02 1
mp_glitch 1
mp_lf_stacks 1
mp_lf_deck 1
mp_lf_meadow 1
mp_lf_traffic 1
mp_lf_township 1
mp_lf_uma 1
mp_relic02 1
mp_wargames 1
mp_rise 1
mp_coliseum 1
mp_coliseum_column 1
}
}
}
}
}
}
12 changes: 12 additions & 0 deletions Teabag Confirmed/keyvalues/resource/blah.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"lang"
{
"Language" "english"
"Token"
{
"PL_chamber" "One in the Chamber"
"PL_chamber_lobby" "One in the Chamber Lobby"
"PL_chamber_desc" "One Shot, One Kill. Get another bullet in your clip by scoring a kill."
"PL_chamber_abbr" "CHAMBER"
"GAMEMODE_TBAG" "One in the Chamber"
}
}
11 changes: 11 additions & 0 deletions Teabag Confirmed/keyvalues/scripts/weapons/mp_weapon_wingman.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
WeaponData
{
Mods
{
one_in_the_chamber
{
damage_near_value "9999"
damage_far_value "9999"
}
}
}
33 changes: 33 additions & 0 deletions Teabag Confirmed/mod.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"Name" : "Teabag Confirmed",
"Description": "Allows Teabag Confirmed in servers gamemodes",
"Version": "1.0.0",
"LoadPriority": 1,
"RequiredOnClient": true,

"Scripts": [
{
"Path": "gamemodes/sh_gamemode_tbag.nut",
"RunOn": "( CLIENT || SERVER ) && MP",
"ClientCallback": {
"Before": "Sh_GamemodeTbag_Init"
},

"ServerCallback": {
"Before": "Sh_GamemodeTbag_Init"
}
},
{
"Path": "gamemodes/_gamemode_tbag.nut",
"RunOn": "SERVER && MP"
},
{
"Path": "gamemodes/cl_gamemode_tbag.nut",
"RunOn": "CLIENT && MP"
},
],

"Localisation": [
"resource/tbag_custom_%language%.txt"
]
}
12 changes: 12 additions & 0 deletions Teabag Confirmed/mod/resource/tbag_custom_english.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"lang"
{
"Language" "english"
"Tokens"
{
"PL_tbag" "Teabag Confirmed"
"PL_tbag_lobby" "Teabag Confirmed Lobby"
"PL_tbag_desc" "Killing enemy pilots drops a battery. Teabag it to score a point"
"PL_tbag_abbr" "TBAG"
"GAMEMODE_TBAG" "Teabag Confirmed"
}
}
247 changes: 247 additions & 0 deletions Teabag Confirmed/mod/scripts/vscripts/gamemodes/_gamemode_tbag.nut
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
global function GamemodeTbag_Init

struct {
table<entity, float> players
table<entity, entity> trigger
table<entity, int> tbag
} file


void function GamemodeTbag_Init()
{
SetShouldUseRoundWinningKillReplay( true )
Riff_ForceTitanAvailability( eTitanAvailability.Never )
ClassicMP_ForceDisableEpilogue( true )

AddCallback_OnClientConnected( TbagInitPlayer )
AddCallback_OnPlayerKilled( TbagOnPlayerKilled )
AddCallback_OnClientDisconnected( TbagCleanupClient )
AddCallback_GameStateEnter( eGameState.WinnerDetermined, OnWinnerDetermined )

SetTimeoutWinnerDecisionFunc( CheckScoreForDraw )

AddClientCommandCallback("Tbag_down", Crouching );
}

void function TbagInitPlayer( entity player )
{
file.players[player] <- Time()
file.tbag[player] <- 0
}

void function TbagCleanupClient( entity player )
{
if (player in file.players)
delete file.players[player]

if (player in file.trigger)
delete file.trigger[player]

if (player in file.tbag)
delete file.tbag[player]
}

void function TbagOnPlayerKilled( entity victim, entity attacker, var damageInfo )
{
if ( !victim.IsPlayer() || GetGameState() != eGameState.Playing || attacker == victim)
return

if ( attacker.IsPlayer() )
{
CreateBattery(victim)
SetRoundWinningKillReplayAttacker(attacker)
}
}

void function CreateBattery(entity player)
{
entity batteryPack = CreateEntity( "prop_dynamic" )
batteryPack.SetValueForModelKey( RODEO_BATTERY_MODEL )
batteryPack.kv.fadedist = 10000

array ignoreArray = []
TraceResults downTrace = TraceLine( player.EyePosition(), player.GetOrigin() + <0.0, 0.0, -1000.0>, ignoreArray, TRACE_MASK_SHOT, TRACE_COLLISION_GROUP_BLOCK_WEAPONS )

batteryPack.SetOrigin(downTrace.endPos)
DispatchSpawn( batteryPack )
batteryPack.SetModel( RODEO_BATTERY_MODEL )
Battery_StartFX( batteryPack )
batteryPack.SetVelocity( < 0, 0, 1 > )

SetTeam(batteryPack, player.GetTeam())

thread CreateBatteryTrigger(batteryPack)
thread DestroyBattery(batteryPack, 45)
}

void function DestroyBattery(entity batteryPack, int duration)
{
batteryPack.EndSignal( "OnDestroy" )
OnThreadEnd(
function () : ( batteryPack )
{
if ( IsValid( batteryPack ) )
{
ClearChildren( batteryPack )
batteryPack.Destroy()
}
}
)
wait duration
}

void function CreateBatteryTrigger(entity batteryPack)
{
entity trigger = CreateEntity( "trigger_cylinder" )
trigger.SetRadius( 100 )
trigger.SetAboveHeight( 100 )
trigger.SetBelowHeight( 100 ) //i.e. make the trigger a sphere as opposed to a cylinder
trigger.SetOrigin( batteryPack.GetOrigin() )
trigger.SetParent( batteryPack )
trigger.kv.triggerFilterNpc = "none" // none
DispatchSpawn( trigger )
SetTeam(trigger, batteryPack.GetTeam())
trigger.SetEnterCallback( BatteryTrigger_Enter )
trigger.SetLeaveCallback( BatteryTrigger_Leave )

thread DestroyBattery(trigger, 45)
}

void function BatteryTrigger_Enter( entity trigger, entity player )
{
if ( trigger != null )
{
if (! (player in file.trigger))
{
if (IsValid(player) && player.IsPlayer())
{
file.trigger[player] <- trigger
}
}
}
}

void function BatteryTrigger_Leave( entity trigger, entity player )
{
if ( trigger != null )
{
if (player in file.trigger)
{
delete file.trigger[player]
}
}
}

void function CheckTbag(entity player)
{
/* wait 0.2
AddButtonPressedPlayerInputCallback(player, IN_DUCK, Crouching(player)) */
}

bool function Crouching(entity player, array<string> args)
{
if (! (player in file.players) )
return true;

if (! (player in file.trigger) )
return true;

if (Time() - file.players[player] > 3.0)
{
file.tbag[player] = 0
file.players[player] = Time()
}

if (Time() - file.players[player] <= 3.0)
{
int i = file.tbag[player]
i++
file.tbag[player] = i
file.players[player] = Time()
}

if (file.tbag[player] >= 4)
{
if (file.trigger[player].GetTeam() != player.GetTeam())
{
AddTeamScore( player.GetTeam(), 1)
entity batteryPack = file.trigger[player].GetParent()
if ( IsValid( batteryPack ) )
{
ClearChildren( batteryPack )
batteryPack.Destroy()
}
if (IsValid (file.trigger[player]))
{
entity trigger = file.trigger[player]
delete file.trigger[player]
trigger.Destroy()
}
Remote_CallFunction_NonReplay( player, "ServerCallback_TeabagConfirmed" )
} else
{
entity batteryPack = file.trigger[player].GetParent()
if ( IsValid( batteryPack ) )
{
ClearChildren( batteryPack )
batteryPack.Destroy()
}
if (IsValid (file.trigger[player]))
{
entity trigger = file.trigger[player]
delete file.trigger[player]
trigger.Destroy()
}
Remote_CallFunction_NonReplay( player, "ServerCallback_TeabagDenied" )
}
}
return true;
}

void function Standing(entity player)
{
print("standing detected")
if (! (player in file.players) )
return;

if (! (player in file.trigger) )
return;

if (file.trigger[player].GetTeam() == player.GetTeam())
{
print("Same team as victim, not triggering a teabag counter.")
}
else
{
if (Time() - file.players[player] > 3.0)
{
file.tbag[player] = 0
print ("Resetted teabag counter.")
file.players[player] = Time()
}

if (Time() - file.players[player] <= 3.0)
{
int i = file.tbag[player]
print("Teabag count for " + player.GetPlayerName() + " is " + i)
i++
file.tbag[player] = i
}
}
}

void function OnWinnerDetermined()
{
SetRespawnsEnabled( false )
SetKillcamsEnabled( false )
}

int function CheckScoreForDraw()
{
if (GameRules_GetTeamScore(TEAM_IMC) > GameRules_GetTeamScore(TEAM_MILITIA))
return TEAM_IMC
else if (GameRules_GetTeamScore(TEAM_MILITIA) > GameRules_GetTeamScore(TEAM_IMC))
return TEAM_MILITIA

return TEAM_UNASSIGNED
}
Loading

0 comments on commit 7c23d93

Please sign in to comment.