-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
502 additions
and
0 deletions.
There are no files selected for viewing
Binary file added
BIN
+22.8 KB
Northstar.Client/mod/resource/northstar_client_localisation_english.txt
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
11
Teabag Confirmed/keyvalues/scripts/weapons/mp_weapon_wingman.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
247
Teabag Confirmed/mod/scripts/vscripts/gamemodes/_gamemode_tbag.nut
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
} |
Oops, something went wrong.