Lighty
Well-Known Member
- Joined
- Jan 9, 2016
- Messages
- 906
Dodgeball has quite a few useless perks which don't fit the gamemode at all, so I suggest fixing or at least removing some of them.
Someone jokingly said a perk which IMO is quite interesting and very gamemode specific, a perk where the rocket only targets you and no one else. Pretty simple to implement and probably different and way better ways to do it anyways than what I have provided.
How to implement it: though ron should already know
Since I can't add a vote that contains all of them nor have a separate vote for each one, just reply with what you think should be removed, fixed or left alone. Arguing/being toxic will get you reply banned.
- Scary Bullets
- It does nothing.
- FIX: Airblasted rocket scares anyone nearby it every second or two, enemy only.
- Infinite Ammo
- It does nothing. Needs to be removed.
- Ignition
- It does nothing.
- FIX: Pyros don't burn, so forcing them to burn or just execute sm_burn on the player to burn them.
- Bad Sauce
- Barely an annoyance, does nothing pretty much. Needs to be removed.
- Suffocation
- Barely an annoyance, does nothing pretty much.
- FIX: Make the effect last longer, it's too short to cause an annoyance, death or anything really. Otherwise needs to be removed.
- Outline
- It does nothing, not even a fun perk. Needs to be removed.
- Fire Timebomb
- It does nothing. The person that got it ends up blocking the enemy team because of it.
- FIX: Same as ignition, but this time it burns the pyros that were close enough including the person that rolled the perk. The person that rolled the perk should also possibly make it look like they are damaging them (aka dealing damage).
- Necro Mash
- Clients don't have the model and sounds in cache, so it causes a huge lagspike for whoever hasn't had it happen in their current tf2 session.
- FIX: Dirty fix would be to make it on client connect, wait for them to spawn, load the model outside the map and play the sounds at 0 volume so their game caches everything. Not sure if it'd work properly or not but, just a suggestion.
- Clients don't have the model and sounds in cache, so it causes a huge lagspike for whoever hasn't had it happen in their current tf2 session.
Someone jokingly said a perk which IMO is quite interesting and very gamemode specific, a perk where the rocket only targets you and no one else. Pretty simple to implement and probably different and way better ways to do it anyways than what I have provided.
How to implement it: though ron should already know
To keep it simple
RTD part is fairly simple
in forcedtarget.sp
Include and function call needs to be added to #manager.sp and #perks.sp as per documentation.
In rtd2_perks.default.cfg
Some more stuff should to be added to translations\rtd2_perks.phrases.txt so that it shows what it does via the command sm_perks, but otherwise unneeded.
Code:
..
//RTD
int g_iConstTarget; // Keep track of who should be targeted
..
RegServerCmd("db_rtd_target", SetConstantTarget); // Register the command
..
public Action SetConstantTarget(int iArgs)
{
char strBuffer[8];
GetCmdArg(1, strBuffer, sizeof(strBuffer));
g_iConstTarget = StringToInt(strBuffer);
}// Command callback, sets the player who should always be targeted
..
if (iClient == g_iConstTarget)return iClient; // See below
Code:
// in function SelectTarget() or similar
for (int iClient = 1; iClient <= MaxClients; iClient++)
{
// If the client isn't connected, skip.
if (!IsValidClient(iClient, true))continue;
if (iTeam && GetClientTeam(iClient) != iTeam)continue;
if (iClient == g_iConstTarget)return iClient; // if the client is valid and on
// the correct team, check if it needs to always be targeted.
// Determine if this client should be the target.
float fNewWeight = GetURandomFloatRange(0.0, 100.0);
if (bUseRocket == true)
{
float fClientPosition[3]; GetClientEyePosition(iClient, fClientPosition);
float fDirectionToClient[3]; MakeVectorFromPoints(fRocketPosition, fClientPosition, fDirectionToClient);
fNewWeight += GetVectorDotProduct(fRocketDirection, fDirectionToClient) * fWeight;
}
if ((iTarget == -1) || fNewWeight >= fTargetWeight)
{
iTarget = iClient;
fTargetWeight = fNewWeight;
}
}
in forcedtarget.sp
Code:
public void ForcedTarget_Perk(int client, const char[] sPref, bool apply){
if (apply)
ServerCommand("db_rtd_target %i", client);
else
ServerCommand("db_rtd_target -1");
}
In rtd2_perks.default.cfg
Code:
"56" //Forces rocket to only target the client
{
"name" "Forced Target"
"good" "0"
"sound" "vo/Heavy_negativevocalization02.mp3"
"token" "forcedtarget"
"time" "15"
"class" "0"
"weapons" "0"
"settings" "0" //This is not used for anything here
"tags" "forcedtarget|db|bad"
}