From 23cbb7aeac1027e013f640e7de19976b97feccb0 Mon Sep 17 00:00:00 2001 From: Jackz Date: Thu, 15 Feb 2024 09:01:54 -0600 Subject: [PATCH] Internal refactor --- plugins/l4d2_feedthetrolls.smx | Bin 97405 -> 101593 bytes scripting/include/feedthetrolls/base.inc | 661 +++++++++++-------- scripting/include/feedthetrolls/combos.inc | 8 +- scripting/include/feedthetrolls/commands.inc | 62 +- scripting/include/feedthetrolls/events.inc | 99 +-- scripting/include/feedthetrolls/menus.inc | 135 ++-- scripting/include/feedthetrolls/misc.inc | 97 ++- scripting/include/feedthetrolls/timers.inc | 14 +- scripting/include/feedthetrolls/trolls.inc | 561 ++++++++-------- scripting/include/ftt.inc | 2 + scripting/l4d2_feedthetrolls.sp | 25 +- 11 files changed, 967 insertions(+), 697 deletions(-) diff --git a/plugins/l4d2_feedthetrolls.smx b/plugins/l4d2_feedthetrolls.smx index 1003165b8b1cf6c3d85b195252efa88be5870bcf..1d530e58a21f05b17a83837c8161e4b8381df8e0 100644 GIT binary patch literal 101593 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 M%mH8gfBzy)8?|oBKL7v# literal 97405 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%0AGnOlC**R?ISf$jD=5+O?z&K%sxY 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 ^Yno!5c`Jq`3+>_R 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
D^X(F)`#QUNcuz^@;9K~{4Q5E`L^zs1f~ghm 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 diff --git a/scripting/include/feedthetrolls/base.inc b/scripting/include/feedthetrolls/base.inc index cc3a067..ffd8d1c 100644 --- a/scripting/include/feedthetrolls/base.inc +++ b/scripting/include/feedthetrolls/base.inc @@ -4,9 +4,11 @@ //Allow MAX_TROLLS to be defined elsewhere #if defined MAX_TROLLS #else - #define MAX_TROLLS 55 + #define MAX_TROLLS 56 #endif +Troll t_metaReverse; + enum trollModifier { TrollMod_Invalid = 0, TrollMod_Instant = 1 << 0, @@ -20,6 +22,10 @@ enum TrollEffectResponse { TE_Menu // Switching menus / etc, don't continue menu } +typedef ActivateFunction = function void (Troll troll, int activator, int victim, int flags, trollModifier mod); +typedef ResetFunction = function void (Troll troll, int activator, int victim); +typedef PromptActivateFunction = function TrollEffectResponse (Troll troll, int activator, int victim, any data, int flags, trollModifier mod); + StringMap trollKV; char trollIds[MAX_TROLLS+1][MAX_TROLL_NAME_LENGTH]; char DEFAULT_FLAG_PROMPT_MULTIPLE[] = "Enable options (Multiple)"; @@ -27,7 +33,6 @@ char DEFAULT_FLAG_PROMPT[] = "Select an option"; bool SilentMenuSelected[MAXPLAYERS+1]; static int g_trollAddPromptIndex; -ArrayList gRandomClients; char SPECIAL_NAMES[][] = { "Smoker", "Boomer", "Hunter", "Spitter", "Jockey", "Charger", "Witch", "Tank" @@ -35,11 +40,17 @@ char SPECIAL_NAMES[][] = { enum struct TrollFlagPrompt { char promptText[MAX_TROLL_FLAG_LENGTH]; + // enabled flags int flags; + // default values int defaults; + // is multiple flags selectable? bool multiselect; + // flags that need to be active to show this prompt int requireFlags; + PrivateForward activateFn; + void GetPromptText(char[] prompt, int maxlength) { if(this.promptText[0] != '\0') { strcopy(prompt, maxlength, this.promptText); @@ -51,19 +62,12 @@ enum struct TrollFlagPrompt { } } - -// Very hacky but map a power (say 16, 32) to the index in a list -// Used to get the name of a flag (flag #16 for example) in ArrayList of flag names -int GetIndexFromPower(int powerOfTwo) { - for(int i = 0; i < 16; i++) { - if(1 << i == powerOfTwo) { - return i; - } - } - return -1; +enum struct TrollOptionData { + char name[MAX_TROLL_FLAG_LENGTH]; + int data; // can also be float } -enum struct Troll { +enum struct TrollData { int id; // The id or the index into the global Trolls[] array int categoryID; // The category this troll belongs in @@ -71,11 +75,15 @@ enum struct Troll { char description[128]; bool hidden; + PrivateForward activateFn; + PrivateForward resetFn; + int mods; // Combination of valid modifiers. Only two are ever supported // Flags int activeFlagClients[MAXPLAYERS+1]; ArrayList flagNames; + ArrayList promptOptions; ArrayList flagPrompts; // Custom timer @@ -84,140 +92,6 @@ enum struct Troll { float timerInterval; int timerRequiredFlags; - void SetTimer(float interval, Timer timer, int requiredFlags = 0) { - this.timerInterval = interval; - this.timerFunction = timer; - this.timerRequiredFlags = requiredFlags; - for(int i = 0; i <= MAXPLAYERS; i++) { - this.timerHandles[i] = null; - } - } - - bool HasMod(trollModifier mod) { - return ((this.mods >> (view_as(mod)) - 1) & 1) == 1; - } - - // Gets the default modifier to use - trollModifier GetDefaultMod() { - // If the flags is equal to the 2^n flag, then it must be the only flag: - if(this.mods == view_as(TrollMod_Instant)) return TrollMod_Instant; - else if(this.mods == view_as(TrollMod_Constant)) return TrollMod_Constant; - else return TrollMod_Invalid; - } - -/////// FLAGS - - bool GetFlagName(int index, char[] buffer, int maxlength) { - if(this.flagNames == null || index >= this.flagNames.Length) return false; - this.flagNames.GetString(index, buffer, maxlength); - return true; - } - - bool GetFlagNames(int client, char[] output, int maxlength) { - if(this.flagNames == null) return false; - char buffer[16]; - for(int i = 0; i < this.flagNames.Length; i++) { - int value = 1 << i; - // If client has this flag: - if(this.activeFlagClients[client] & value) { - this.flagNames.GetString(i, buffer, sizeof(buffer)); - Format(output, maxlength, "%s%s,", output, buffer); - } - } - return true; - } - - int AddCustomFlagPrompt(const char[] promptText, bool multiselect = false, int requireFlags = 0) { - TrollFlagPrompt prompt; - prompt.multiselect = multiselect; - prompt.requireFlags = requireFlags; - strcopy(prompt.promptText, MAX_TROLL_FLAG_LENGTH, promptText); - int index = this.flagPrompts.PushArray(prompt); - g_trollAddPromptIndex = index; - return index; - } - - int AddFlagPrompt(bool multiselect = false, int requireFlags = 0) { - //g_trollAddPromptIndex - TrollFlagPrompt prompt; - prompt.multiselect = multiselect; - prompt.requireFlags = requireFlags; - int index = this.flagPrompts.PushArray(prompt); - g_trollAddPromptIndex = index; - return index; - } - - int AddFlag(const char[] name, bool defaultOn) { - if(this.flagNames == null) { - this.flagNames = new ArrayList(MAX_TROLL_FLAG_LENGTH); - } - - // Check if flag already added - int flagIndex = this.GetFlagIndex(name); - if(flagIndex == -1) flagIndex = this.flagNames.PushString(name); - - // Grab the prompt - static TrollFlagPrompt prompt; - // TODO: CHECK IF MISSING PROMPT - if(g_trollAddPromptIndex >= this.flagPrompts.Length) { - ThrowError("No prompt added for troll \"%s\", for flag \"%s\"", this.id, name); - } - this.flagPrompts.GetArray(g_trollAddPromptIndex, prompt); - - - prompt.flags |= (1 << flagIndex); - - if(defaultOn) { - // If out of bounds, set to default -1 -> pick global prompt - if(this.flagPrompts.Length == 0) { - ThrowError("Troll \"%s\" does not have any flag prompts, thus a default value cannot be set. (flag=\"%s\")", this.name, name); - return -1; - } - if(!prompt.multiselect && prompt.defaults > 0) { - ThrowError("Flag \"%s\" cannot be set as default flag in single select mode, as one has already been set for prompt %d", name, g_trollAddPromptIndex); - return -1; - } - prompt.defaults |= (1 << flagIndex); - } - this.flagPrompts.SetArray(g_trollAddPromptIndex, prompt); //May not be required - return flagIndex; - } - - int GetFlagIndex(const char[] flagName) { - static char comprFlag[MAX_TROLL_FLAG_LENGTH]; - for(int i = 0; i < this.flagNames.Length; i++) { - this.flagNames.GetString(i, comprFlag, sizeof(comprFlag)); - if(StrEqual(comprFlag, flagName)) { - return i; - } - } - return -1; - } - - bool HasFlags() { - return this.flagNames != null && this.flagNames.Length > 0 && this.flagPrompts.Length > 0; - } - - int GetFlagCount() { - return this.flagNames != null ? this.flagNames.Length : 0; - } - - int GetClientFlags(int client) { - return this.activeFlagClients[client]; - } - void GetFlagPrompt(int index, TrollFlagPrompt prompt) { - this.flagPrompts.GetArray(index, prompt); - } - -/////// TROLL ACTIVATION - - TrollEffectResponse Activate(int client, int activator, trollModifier modifier = TrollMod_Invalid, int flags = 0, bool silent = false) { - if(modifier == TrollMod_Invalid) modifier = this.GetDefaultMod(); - // Sadly, unable to pass in to ApplyTroll, so it has to do unnecessary lookup via string - return ApplyTroll(client, this.name, activator, modifier, flags, silent); - } - - void Toggle(int client, int flags) { if(this.IsActive(client)) { this.Disable(client); @@ -245,25 +119,22 @@ enum struct Troll { PrintToServer("FTT Debug: Disabling timer for %N", client); delete this.timerHandles[client]; } + if(this.resetFn != null) { + Call_StartForward(this.resetFn); + Call_PushCell(0); + Call_PushCell(client); + Call_PushCell(0); + Call_Finish(); + } } bool IsActive(int client) { return this.activeFlagClients[client] != -1; } - int GetRandomClient(int start = 0) { - gRandomClients.Clear(); - for(int i = start + 1; i <= MaxClients; i++) { - if(this.activeFlagClients[i] != -1) { - gRandomClients.Push(i); - } - } - if(gRandomClients.Length == 0) return -1; - return GetRandomInt(0, gRandomClients.Length); - } } -Troll Trolls[MAX_TROLLS+1]; +TrollData Trolls[MAX_TROLLS+1]; ArrayList categories; static int categoryID = -1; @@ -271,10 +142,11 @@ static int categoryID = -1; void ResetClient(int victim, bool wipe = true) { if(victim == 0 || !IsClientConnected(victim)) return; if(wipe) { - for(int i = 0; i <= MAX_TROLLS; i++) { - Trolls[i].Disable(victim); + for(int i = 1; i <= MAX_TROLLS; i++) { + Troll(i).Reset(victim); } } + // TODO: move to reset functions!! noRushingUsSpeed[victim] = 1.0; BaseComm_SetClientMute(victim, false); SetEntityGravity(victim, 1.0); @@ -286,42 +158,312 @@ void ResetClient(int victim, bool wipe = true) { SDKUnhook(wpn, SDKHook_Reload, Event_WeaponReload); } -int SetupTroll(const char[] name, const char description[128], int mods) { - static int i = 0; - if(mods == 0) { - ThrowError("Troll \"%s\" has no modifiers defined.", name); - return -1; - } else if(i == MAX_TROLLS + 1) { - ThrowError("Maximum number of trolls (%d) reached. Up MAX_TROLLS value.", MAX_TROLLS); - return -1; +// TrollInstance of TrollData +methodmap Troll { + public Troll(int index) { + return view_as(index); } - g_trollAddPromptIndex = 0; - Trolls[i].id = i; - strcopy(Trolls[i].name, MAX_TROLL_NAME_LENGTH, name); - strcopy(Trolls[i].description, 128, description); - Trolls[i].categoryID = categoryID; - Trolls[i].mods = mods; - Trolls[i].flagPrompts = new ArrayList(sizeof(TrollFlagPrompt)); - strcopy(trollIds[i], MAX_TROLL_NAME_LENGTH, name); - trollKV.SetValue(name, i); - return i++; + public static Troll FromName(const char[] name) { + int i = GetTrollID(name); + if(i == -1) + LogError("Unknown troll \"%s\"", name); + return view_as(i); + } + property bool Hidden { + public get() { return Trolls[this.Id].hidden; } + } + property int CategoryId { + public get() { return Trolls[this.Id].categoryID; } + } + property int PromptCount { + public get() { return Trolls[this.Id].flagPrompts.Length; } + } + property int TotalOptionsCount { + public get() { + return Trolls[this.Id].promptOptions == null ? -1 : Trolls[this.Id].promptOptions.Length; + } + } + property bool HasTimer { + public get() { return Trolls[this.Id].timerInterval > 0.0; } + } + property int Id { + public get() { return view_as(this); } + } + property bool HasOptions { + public get() { return this.TotalOptionsCount > 0; } + } + + public bool IsActive(int client) { + return Trolls[this.Id].activeFlagClients[client] != -1; + } + + public bool HasFlag(int client, int flag) { + return Trolls[this.Id].activeFlagClients[client] & flag != 0; + } + + public int GetFlags(int client) { + return Trolls[this.Id].activeFlagClients[client] + } + + public bool HasMod(trollModifier mod) { + return Trolls[this.Id].mods & view_as(mod) != 0; + } + + public void GetName(char[] output, int maxlen) { + strcopy(output, maxlen, Trolls[this.Id].name); + } + + public TrollEffectResponse Activate(int activator, int victim, trollModifier modifier = TrollMod_Invalid, int flags = 0, bool silent = false) { + PrintToServer("Activate: act:%d vic:%d", activator, victim); + if(modifier == TrollMod_Invalid) modifier = this.GetDefaultMod(); + return ApplyTroll(victim, this, activator, modifier, flags, silent); + } + public void Reset(int victim) { + Trolls[this.Id].activeFlagClients[victim] = -1; + if(Trolls[this.Id].resetFn != null) { + Call_StartForward(Trolls[this.Id].resetFn); + Call_PushCell(this); + Call_PushCell(0); + Call_PushCell(victim); + Call_PushCell(0); + Call_Finish(); + } + } + + public bool GetOptionData(int optionIndex, TrollOptionData data) { + if(optionIndex < 0 || optionIndex >= Trolls[this.Id].promptOptions.Length) return false; + Trolls[this.Id].promptOptions.GetArray(optionIndex, data); + return true; + } + + /// If prompt is NOT multiselect, returns the selected value from the option's data property + public bool GetPromptDataInt(int client, int promptIndex, int &out) { + if(promptIndex < 0 || promptIndex >= Trolls[this.Id].flagPrompts.Length) { + ThrowError(".GetPromptData called with invalid prompt index (%d, max %d) on troll #%d", promptIndex, Trolls[this.Id].flagPrompts.Length, this.Id); + } + TrollFlagPrompt prompt; + Trolls[this.Id].flagPrompts.GetArray(promptIndex, prompt); + if(prompt.multiselect) { + ThrowError(".GetPromptData: attempted to receive data for a multiselect prompt. Operation unspported. promptIndex:%d troll:%d", promptIndex, this.Id); + } + TrollOptionData option; + int flags = this.GetFlags(client); + for(int i = 0; i < Trolls[this.Id].promptOptions.Length; i++) { + int bit = 1 << i; + // If prompt has flag AND flag is active: + if(prompt.flags & bit && flags & bit) { + Trolls[this.Id].promptOptions.GetArray(i, option); + out = option.data; + return true; + } + } + return false; + } + + public bool GetPromptDataFloat(int client, int promptIndex, float &out) { + int value; + if(this.GetPromptDataInt(client, promptIndex, value)) { + // We just retagged it as int, but it's float data + out = view_as(value); + return true; + } + return false; + } + + public bool GetPrompt(int promptIndex, TrollFlagPrompt prompt) { + if(promptIndex < 0 || promptIndex >= Trolls[this.Id].flagPrompts.Length) return false; + Trolls[this.Id].flagPrompts.GetArray(promptIndex, prompt); + return true; + } + + public void GetOptionName(int optionIndex, char[] output, int maxlen) { + TrollOptionData option; + this.GetOptionData(optionIndex, option); + strcopy(output, maxlen, option.name); + } + + public bool GetFlagNames(int client, int flags = -1, char[] output, int maxlength) { + if(this.TotalOptionsCount == 0) return false; + char buffer[32]; + if(flags == -1) flags = Trolls[this.Id].activeFlagClients[client]; + int count; + for(int i = 0; i < this.TotalOptionsCount; i++) { + int bit = 1 << i; + // If client has this flag: + if(flags & bit) { + this.GetOptionName(i, buffer, sizeof(buffer)); + if(count == 0) + Format(output, maxlength, "%s", buffer); + else + Format(output, maxlength, "%s,%s", output, buffer); + count++; + } + } + return true; + } + + /// Gets the default modifier to use + public trollModifier GetDefaultMod() { + // If the flags is equal to the 2^n flag, then it must be the only flag: + if(Trolls[this.Id].mods == view_as(TrollMod_Instant)) return TrollMod_Instant; + else if(Trolls[this.Id].mods == view_as(TrollMod_Constant)) return TrollMod_Constant; + else return TrollMod_Invalid; + } } -// Gets the Troll enum struct via name -// Returns index of troll enum -int GetTroll(const char[] name, Troll troll) { - static int i = 0; - if(trollKV.GetValue(name, i)) { - troll = Trolls[i]; - return i; +int g_iTrollIndex; +methodmap TrollBuilder { + public TrollBuilder(const char[] name, const char description[128], int mods) { + if(mods == 0) { + ThrowError("Troll \"%s\" has no modifiers defined.", name); + } else if(g_iTrollIndex == MAX_TROLLS + 1) { + ThrowError("Maximum number of trolls (%d) reached. Up MAX_TROLLS value.", MAX_TROLLS); + } + int i = g_iTrollIndex; + g_iTrollIndex++; + g_trollAddPromptIndex = 0; + Trolls[i].id = i; + strcopy(Trolls[i].name, MAX_TROLL_NAME_LENGTH, name); + strcopy(Trolls[i].description, 128, description); + Trolls[i].categoryID = categoryID; + Trolls[i].mods = mods; + Trolls[i].flagPrompts = new ArrayList(sizeof(TrollFlagPrompt)); + + char buffer[MAX_TROLL_NAME_LENGTH]; + strcopy(buffer, sizeof(buffer), name); + StringToLower(buffer); + trollKV.SetValue(buffer, i); + return view_as(i); } - ThrowError("GetTroll: Troll was not found \"%s\"", name); - return -1; + + property int Id { + public get() { return view_as(this); } + } + + public TrollBuilder Hide() { + Trolls[this.Id].hidden = true; + } + + public TrollBuilder SetDescription(const char description[128]) { + strcopy(Trolls[this.Id].description, 128, description); + } + + public TrollBuilder SetTimer(float interval, Timer timer, int requiredFlags = 0) { + Trolls[this.Id].timerInterval = interval; + Trolls[this.Id].timerFunction = timer; + Trolls[this.Id].timerRequiredFlags = requiredFlags; + for(int i = 0; i <= MAXPLAYERS; i++) { + Trolls[this.Id].timerHandles[i] = null; + } + return this; + } + + public TrollBuilder AddPrompt(const char[] customPrompt = "", int requiredFlags = 0) { + this._AddPrompt(false, requiredFlags, customPrompt); + return this; + } + + public TrollBuilder AddPromptMulti(const char[] customPrompt = "", int requiredFlags = 0) { + this._AddPrompt(true, requiredFlags, customPrompt); + return this; + } + + // Adds event handle for when an option for a non-multi prompt is selected. If current prompt is multi, will error + public TrollBuilder OnPromptActivate(PromptActivateFunction fn) { + TrollFlagPrompt prompt; + Trolls[this.Id].flagPrompts.GetArray(g_trollAddPromptIndex, prompt); + if(prompt.multiselect) ThrowError("Current prompt is multiselect"); + if(prompt.activateFn == null) prompt.activateFn = new PrivateForward(ET_Single, Param_Cell, Param_Cell, Param_Cell, Param_Any, Param_Cell, Param_Cell); + prompt.activateFn.AddFunction(INVALID_HANDLE, fn); + + Trolls[this.Id].flagPrompts.SetArray(g_trollAddPromptIndex, prompt); + return this; + } + + public void _AddPrompt(bool multiselect, int requiredFlags = 0, const char[] customPrompt) { + TrollFlagPrompt prompt; + prompt.multiselect = multiselect; + prompt.requireFlags = requiredFlags; + if(customPrompt[0] != '\0') + strcopy(prompt.promptText, MAX_TROLL_FLAG_LENGTH, customPrompt); + int index = Trolls[this.Id].flagPrompts.PushArray(prompt); + g_trollAddPromptIndex = index; + } + + public TrollBuilder AddOption(const char[] name, bool defaultOn = false) { + this._AddOption(name, defaultOn); + return this; + } + + public TrollBuilder AddOptionInt(const char[] name, bool defaultOn = false, int data) { + this._AddOption(name, defaultOn, data); + return this; + } + public TrollBuilder AddOptionFloat(const char[] name, bool defaultOn = false, float data) { + // This is intentional - we do not want to convert float -> int, just change type + this._AddOption(name, defaultOn, view_as(data)); + return this; + } + + public void _AddOption(const char[] name, bool defaultOn = false, int data = 0) { + if(Trolls[this.Id].promptOptions == null) { + Trolls[this.Id].promptOptions = new ArrayList(sizeof(TrollOptionData)); + } + TrollOptionData option; + strcopy(option.name, MAX_TROLL_FLAG_LENGTH, name); + option.data = data; + int optionIndex = Trolls[this.Id].promptOptions.PushArray(option); + + // Add option to current prompt + TrollFlagPrompt prompt; + if(g_trollAddPromptIndex >= Trolls[this.Id].flagPrompts.Length) { + ThrowError("No prompt added for troll \"%s\", for flag \"%s\"", this.Id, name); + } + Trolls[this.Id].flagPrompts.GetArray(g_trollAddPromptIndex, prompt); + prompt.flags |= ( 1 << optionIndex ); + if(defaultOn) { + // If out of bounds, set to default -1 -> pick global prompt + if(Trolls[this.Id].flagPrompts.Length == 0) { + ThrowError("Troll \"%s\" does not have any flag prompts, thus a default value cannot be set. (flag=\"%s\")", Trolls[this.Id].name, name); + } else if(!prompt.multiselect && prompt.defaults > 0) { + ThrowError("Flag \"%s\" cannot be set as default flag in single select mode, as one has already been set for prompt %d", name, g_trollAddPromptIndex); + } + prompt.defaults |= (1 << optionIndex); + } + // Save changes to prompt + Trolls[this.Id].flagPrompts.SetArray(g_trollAddPromptIndex, prompt); + + } + + public TrollBuilder SetActivationFunction(ActivateFunction fn) { + if(Trolls[this.Id].activateFn == null) { + Trolls[this.Id].activateFn = new PrivateForward(ET_Ignore, Param_Cell, Param_Cell, Param_Cell, Param_Cell, Param_Cell); + } + Trolls[this.Id].activateFn.AddFunction(INVALID_HANDLE, fn); + return this; + } + + public TrollBuilder SetResetFunction(ResetFunction fn) { + if(Trolls[this.Id].resetFn == null) { + Trolls[this.Id].resetFn = new PrivateForward(ET_Ignore, Param_Cell, Param_Cell, Param_Cell); + } + Trolls[this.Id].resetFn.AddFunction(INVALID_HANDLE, fn); + return this; + } + + public Troll Build() { + return Troll(this.Id); + } + } + int GetTrollID(const char[] name) { static int i = 0; - if(trollKV.GetValue(name, i)) { + char buffer[MAX_TROLL_NAME_LENGTH]; + strcopy(buffer, sizeof(buffer), name); + StringToLower(buffer); + if(trollKV.GetValue(buffer, i)) { return i; } PrintToServer("GetTrollID: Troll was not found \"%s\"", name); @@ -334,11 +476,6 @@ bool IsAnyTrollActive(int victim) { } return false; } -// Gets the Troll enum struct via key index -// Returns index of troll enum -void GetTrollByKeyIndex(int index, Troll troll) { - troll = Trolls[index]; -} void SetTrollFlags(int client, const char[] name, int flags = -1) { int index = GetTrollID(name); @@ -349,19 +486,15 @@ void SetTrollFlags(int client, const char[] name, int flags = -1) { } -TrollEffectResponse ApplyTroll(int victim, const char[] name, int activator, trollModifier modifier, int flags = 0, bool silent = false) { - static Troll troll; - int trollIndex = GetTroll(name, troll); - if(trollIndex == -1) { - ReplyToCommand(activator, "Unknown troll \"%s\"", name); - PrintToServer("[FTT] %N attempted to apply unknown troll: %s", activator, name); - return TE_Error; - } +TrollEffectResponse ApplyTroll(int victim, Troll troll, int activator, trollModifier modifier, int flags = 0, bool silent = false) { + char name[MAX_TROLL_NAME_LENGTH]; + troll.GetName(name, sizeof(name)); + int trollIndex = troll.Id; - bool isActive = Trolls[trollIndex].activeFlagClients[victim] > -1; + bool isActive = troll.IsActive(victim); // Clear troll specific timer: - if(Trolls[trollIndex].timerInterval > 0.0) { + if(troll.HasTimer) { if(!isActive) { if(modifier & TrollMod_Constant && (Trolls[trollIndex].timerRequiredFlags == 0 || Trolls[trollIndex].timerRequiredFlags & flags)) { Trolls[trollIndex].timerHandles[victim] = CreateTimer(Trolls[trollIndex].timerInterval, Trolls[trollIndex].timerFunction, victim, TIMER_REPEAT); @@ -374,14 +507,10 @@ TrollEffectResponse ApplyTroll(int victim, const char[] name, int activator, tro if(!silent && SilentMenuSelected[activator]) silent = true; - static int MetaInverseTrollID; - if(!MetaInverseTrollID) MetaInverseTrollID = GetTrollID("Meta: Inverse"); - - if(activator > 0 && Trolls[MetaInverseTrollID].IsActive(activator)) { - float max = 1.0; - if(Trolls[MetaInverseTrollID].activeFlagClients[activator] & 2) max = 0.5; - else if(Trolls[MetaInverseTrollID].activeFlagClients[activator] & 4) max = 0.1; - if(GetURandomFloat() <= max) { + if(activator > 0 && t_metaReverse.IsActive(activator)) { + float chance; + t_metaReverse.GetPromptDataFloat(activator, 0, chance); + if(GetURandomFloat() <= chance) { victim = activator; } } @@ -391,9 +520,9 @@ TrollEffectResponse ApplyTroll(int victim, const char[] name, int activator, tro int player = GetSpectatorClient(victim); if(player > 0) { // If there is an idle player, apply troll to them - ApplyTroll(player, name, activator, modifier, flags, silent); + ApplyTroll(player, troll, activator, modifier, flags, silent); // And continue IF there is TrollMod_PlayerOnly mod - if(troll.mods & view_as(TrollMod_PlayerOnly)) return TE_Success; + if(troll.HasMod(TrollMod_PlayerOnly)) return TE_Success; // Don't want to show two logs, so just ignore the bot silent = true; } @@ -409,63 +538,77 @@ TrollEffectResponse ApplyTroll(int victim, const char[] name, int activator, tro TrollEffectResponse response = ApplyAffect(victim, troll, activator, modifier, flags); if(response != TE_Success) return response; // Let the menu handler deal with checking + // Invoke Callbacks: + if(!isActive) { + Troll instance = Troll(trollIndex); + if(Trolls[trollIndex].activateFn != null) { + Call_StartForward(Trolls[trollIndex].activateFn); + Call_PushCell(instance); + Call_PushCell(activator); + Call_PushCell(victim); + Call_PushCell(flags); + Call_PushCell(modifier); + Call_Finish(); + } + + // Call the corresponding prompt callback if applicable + TrollFlagPrompt prompt; + for(int i = 0; i < Trolls[trollIndex].flagPrompts.Length; i++) { + Trolls[trollIndex].flagPrompts.GetArray(i, prompt); + if(!prompt.multiselect && prompt.activateFn != null) { + int value; + instance.GetPromptDataInt(victim, i, value); + for(int j = 0; j < Trolls[trollIndex].promptOptions.Length; i++) { + int bit = 1 << j; + if(flags & bit && prompt.flags & bit) { + Call_StartForward(prompt.activateFn); + Call_PushCell(instance); + Call_PushCell(activator); + Call_PushCell(victim); + Call_PushCell(value); + Call_PushCell(flags); + Call_PushCell(modifier); + response = view_as(Call_Finish()); + if(response != TE_Success) return response; // Let the menu handler deal with checking + break; + } + } + break; + } + } + + } else if(isActive && Trolls[trollIndex].resetFn != null) { + Call_StartForward(Trolls[trollIndex].resetFn); + Call_PushCell(Troll(trollIndex)); + Call_PushCell(activator); + Call_PushCell(victim); + Call_PushCell(modifier); + Call_Finish(); + } + // Log all actions, indicating if constant or single-fire, and if any flags if(!silent) { if(isActive) { - CShowActivityEx(activator, "[FTT] ", "deactivated {yellow}%s{default} on %N. ", troll.name, victim); - LogAction(activator, victim, "\"%L\" deactivated \"%s\" on \"%L\"", activator, troll.name, victim); + CShowActivityEx(activator, "[FTT] ", "deactivated {yellow}%s{default} on %N. ", name, victim); + LogAction(activator, victim, "\"%L\" deactivated \"%s\" on \"%L\"", activator, name, victim); } else { - char flagName[MAX_TROLL_FLAG_LENGTH]; - // strcopy(flagName, sizeof(flagName), troll.name) - // Call_StartForward(g_TrollAppliedForward); - // Call_PushCell(victim); - // Call_PushString(flagName); - // Call_PushCell(flags); - // Call_PushCell(activator); - // Call_Finish(); - if(flags > 0) { - troll.GetFlagNames(victim, flagName, sizeof(flagName)); - // Checks if there is not more than one flag set on the bitfield - // if(flags & flags - 1 == 0 && flags & flags + 1 == 0) { - // // Get the flag name if there is only one flag set - // troll.GetFlagName(GetIndexFromPower(flags), flagName, sizeof(flagName)); - // } else { - // Format(flagName, sizeof(flagName), "%d", flags); - // } + char flagName[50]; + if(flags > 0 && troll.GetFlagNames(victim, flags, flagName, sizeof(flagName))) { Format(flagName, sizeof(flagName), " (\x04%s|%d\x01)", flagName, flags); - // CFormatColor(flagName, sizeof(flagName)); } - if(modifier & TrollMod_Constant) { - CShowActivityEx(activator, "[FTT] ", "activated constant {yellow}%s{default}%s for %N. ", troll.name, flagName, victim); + CShowActivityEx(activator, "[FTT] ", "activated constant {yellow}%s{default}%s for %N. ", name, flagName, victim); } else { - CShowActivityEx(activator, "[FTT] ", "activated {yellow}%s{default}%s for %N. ", troll.name, flagName, victim); + CShowActivityEx(activator, "[FTT] ", "activated {yellow}%s{default}%s for %N. ", name, flagName, victim); } - LogAction(activator, victim, "\"%L\" activated \"%s\" (%d) for \"%L\"", activator, troll.name, flags, victim); + LogAction(activator, victim, "\"%L\" activated \"%s\" (%d) for \"%L\"", activator, name, flags, victim); } } else { - CReplyToCommand(activator, "[FTT] Applied silently {yellow}\"%s\"{default} on %N with flags=%d", troll.name, victim, flags); + CReplyToCommand(activator, "[FTT] Applied silently {yellow}\"%s\"{default} on %N with flags=%d", name, victim, flags); } return TE_Success; } -bool IsTrollActive(int client, const char[] troll) { - if(troll[0] == '\0') { - ThrowError("Troll name is empty"); - return false; - } - static int i = 0; - if(trollKV.GetValue(troll, i)) { - return Trolls[i].activeFlagClients[client] != -1; - } - ThrowError("Troll \"%s\" does not exist", troll); - return false; //errors instead but compiler no like -} - -bool IsTrollActiveByRawID(int client, int id) { - return Trolls[id].activeFlagClients[client] != -1; -} - void EnableTroll(int client, const char[] troll, int flags = 0) { SetTrollFlags(client, troll, flags); @@ -496,12 +639,8 @@ public int Native_ApplyTroll(Handle plugin, int numParams) { int flags = GetNativeCell(4); int activator = GetNativeCell(5); - int index = GetTrollID(name); - if(index > 0) { - Trolls[index].Activate(victim, activator, modifier, flags, GetNativeCell(6)); - } else { - ThrowNativeError(SP_ERROR_NATIVE, "Could not find troll with name \"%s\"", name); - } + Troll troll = Troll.FromName(name); + troll.Activate(victim, activator, modifier, flags, GetNativeCell(6)); return 0; } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/combos.inc b/scripting/include/feedthetrolls/combos.inc index acb9e90..aecc340 100644 --- a/scripting/include/feedthetrolls/combos.inc +++ b/scripting/include/feedthetrolls/combos.inc @@ -11,10 +11,10 @@ enum struct TrollCombo { ArrayList trolls; void AddTroll(const char[] name, int flags = 0, trollModifier mod = TrollMod_Invalid) { - int id = GetTrollID(name); - if(mod == TrollMod_Invalid) mod = Trolls[id].GetDefaultMod(); + Troll instance = Troll.FromName(name); + if(mod == TrollMod_Invalid) mod = instance.GetDefaultMod(); SpecifiedTroll troll; - troll.id = id; + troll.id = instance.Id; troll.mod = mod; troll.flags = flags; this.trolls.PushArray(troll, sizeof(troll)); @@ -24,7 +24,7 @@ enum struct TrollCombo { for(int i = 0; i < this.trolls.Length; i++) { SpecifiedTroll troll; this.trolls.GetArray(i, troll, sizeof(troll)); - Trolls[troll.id].Activate(target, client, troll.mod, troll.flags); + Troll(troll.id).Activate(target, client, troll.mod, troll.flags); } } } diff --git a/scripting/include/feedthetrolls/commands.inc b/scripting/include/feedthetrolls/commands.inc index 6d844f2..c23dbba 100644 --- a/scripting/include/feedthetrolls/commands.inc +++ b/scripting/include/feedthetrolls/commands.inc @@ -130,9 +130,12 @@ Action Command_InstaSpecialFace(int client, int args) { Action Command_WitchAttack(int client, int args) { - if(args < 1) { + if(!g_actionsAvailable) { + ReplyToCommand(client, "Unavailable: Missing \"actions\""); + return Plugin_Handled; + } else if(args < 1) { ReplyToCommand(client, "Usage: sm_witch_attack [# of witches or 0 for all]"); - }else{ + } else{ char arg1[32]; GetCmdArg(1, arg1, sizeof(arg1)); char target_name[MAX_TARGET_LENGTH]; @@ -377,6 +380,7 @@ public Action Command_ListTheTrolls(int client, int args) { return Plugin_Handled; } + char buffer[50]; for(int p = 0; p < target_count; p++) { int target = target_list[p]; if(IsPlayerAlive(target)) @@ -388,25 +392,18 @@ public Action Command_ListTheTrolls(int client, int args) { int player = GetRealClient(target); if(player != -1) target = player; } - - for(int j = 1; j <= MAX_TROLLS; j++) { - if(Trolls[j].hidden) continue; - if(trollIds[j][0] != '\0' && IsTrollActive(target, trollIds[j])) { - if(Trolls[j].activeFlagClients[target] > 0) { - static char list[MAX_TROLL_FLAG_LENGTH*8]; //May in future need to up magic number 8 (supports 8 active flags ) - static char buffer[MAX_TROLL_FLAG_LENGTH]; - for(int i = 0; i < Trolls[j].flagNames.Length; i++) { - int a = (1 << i); - if(Trolls[j].activeFlagClients[target] & a) { - Trolls[j].flagNames.GetString(i, buffer, sizeof(buffer)); - Format(list, sizeof(list), "%s%s;", list, buffer); - } else { - Trolls[j].flagNames.GetString(i, buffer, sizeof(buffer)); - } - } - ReplyToCommand(client, "\"%s\" Flags: %s", trollIds[j], list); + + for(int j = 1; j < MAX_TROLLS; j++) { + Troll troll = Troll(j); + if(troll.Hidden) continue; + if(troll.IsActive(target)) { + int flags = troll.GetFlags(target); + if(flags > 0) { + buffer[0] = '\0'; + troll.GetFlagNames(target, flags, buffer, sizeof(buffer)); + ReplyToCommand(client, "\"%s\" Flags: %s", Trolls[troll.Id].name, buffer); } else - ReplyToCommand(client, trollIds[j]); + ReplyToCommand(client, "%s", Trolls[troll.Id].name); } } } @@ -424,8 +421,9 @@ public Action Command_ListTheTrolls(int client, int args) { } int modeCount = 0; for(int j = 1; j <= MAX_TROLLS; j++) { - if(trollIds[j][0] != '\0' && IsTrollActive(i, trollIds[j])) { - if(Trolls[j].activeFlagClients[i] > 0) + Troll troll = Troll(j); + if(troll.IsActive(i)) { + if(troll.GetFlags(i) > 0) Format(modeListArr[modeCount], MAX_TROLL_NAME_LENGTH, "%s(%d)", trollIds[j], Trolls[j].activeFlagClients[i]); else strcopy(modeListArr[modeCount], MAX_TROLL_NAME_LENGTH, trollIds[j]); @@ -729,7 +727,7 @@ Action Command_SetReverseFF(int client, int args) { } } - ApplyTroll(target, "Reverse FF", client, TrollMod_Constant, flag); + ApplyTroll(target, Troll.FromName("Reverse FF"), client, TrollMod_Constant, flag); return Plugin_Handled; } @@ -749,7 +747,7 @@ Action Command_SetMagnetShortcut(int client, int args) { } Action Command_CarSplat(int client, int args) { if(args < 1) { - ReplyToCommand(client, "Usage: sm_magnet [top/front/back]"); + ReplyToCommand(client, "Usage: sm_carsplat [top/front/back]"); return Plugin_Handled; } char arg[32]; @@ -779,9 +777,21 @@ Action Command_CarSplat(int client, int args) { LogAction(client, target, "spawned car on/in %s of \"%L\"", arg, target); ShowActivity(client, "spawned car (%s) of %N", arg, target); } else { - Troll troll; - GetTroll("Car Splat", troll); + Troll troll = Troll.FromName("Car Splat"); ShowSelectFlagMenu(client, GetClientUserId(target), view_as(TrollMod_Instant), troll); } return Plugin_Handled; +} + +Action Command_AddTypo(int client, int args) { + if(args == 2) { + char src[32], replacement[32]; + GetCmdArg(1, src, sizeof(src)); + GetCmdArg(2, replacement, sizeof(replacement)); + AddTypo(src, replacement, true); + ShowActivity(client, "added typo \"%s\" -> \"%s\"", src, replacement); + } else { + ReplyToCommand(client, "Syntax: /typo "); + } + return Plugin_Handled; } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/events.inc b/scripting/include/feedthetrolls/events.inc index fb85a37..5885944 100644 --- a/scripting/include/feedthetrolls/events.inc +++ b/scripting/include/feedthetrolls/events.inc @@ -22,13 +22,13 @@ public void OnMapStart() { g_spSpawnQueue.Clear(); spIsActive = false; - //CreateTimer(30.0, Timer_AutoPunishCheck, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); } + public void OnClientPutInServer(int client) { pdata[client].pendingTrollBan = 0; pdata[client].shootAtTarget = 0; fAntiRushFrequencyCounter[client] = 0.0; - if(IsTrollActive(client, "Voice Mute")) + if(t_voiceMute.IsActive(client)) BaseComm_SetClientMute(client, true); SDKHook(client, SDKHook_OnTakeDamage, Event_TakeDamage); SDKHook(client, SDKHook_OnTakeDamageAlive, NerfGun_OnTakeDamage); @@ -63,7 +63,7 @@ void OnCarHitByTank(const char[] output, int caller, int activator, float delay) } void EntityCreateCallback(int entity) { - if(!HasEntProp(entity, Prop_Send, "m_hOwnerEntity") || !IsValidEntity(entity)) return; + if(!IsValidEntity(entity) || !HasEntProp(entity, Prop_Send, "m_hOwnerEntity")) return; static char class[16]; static int badThrowID; @@ -126,9 +126,8 @@ enum ProjectileMagnetType { ProjType_Cars = 4, } - - -public void Event_DoorToggle(Event event, const char[] name, bool dontBroadcast) { +void Event_DoorToggle(Event event, const char[] name, bool dontBroadcast) { + // TODO: hook OnOpen entity output? int client = GetClientOfUserId(event.GetInt("userid")); if(client && Trolls[t_slipperyShoesIndex].IsActive(client) && Trolls[t_slipperyShoesIndex].activeFlagClients[client] & 2) { L4D_StaggerPlayer(client, client, NULL_VECTOR); @@ -185,14 +184,25 @@ Action Timer_CheckSpecial(Handle h, int specialID) { } return Plugin_Handled; } -public void Frame_Boom(int special) { +void Frame_Boom(int special) { SDKHooks_TakeDamage(special, special, special, 1000.0); } -public void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { +void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); if(client > 0) ResetClient(client, true); } +void Event_PlayerDisconnect(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + if(client > 0) { + for(int i = 0 ; i < MAX_TROLLS; i++) { + Trolls[i].activeFlagClients[client] = 0; + if(Trolls[i].timerHandles[client] != null) { + delete Trolls[i].timerHandles[client]; + } + } + } +} public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { int userid = event.GetInt("userid"); @@ -216,7 +226,7 @@ public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast } public Action Event_WeaponReload(int weapon) { int client = GetEntPropEnt(weapon, Prop_Send, "m_hOwner"); - if(client > 0 && IsTrollActive(client, "Gun Jam")) { + if(client > 0 && t_gunJam.IsActive(client)) { if(GetRandomFloat() < 0.10) { //10% chance gun jams return Plugin_Stop; } @@ -385,7 +395,8 @@ public Action L4D2_OnChooseVictim(int attacker, int &curTarget) { return Plugin_Continue; } -bool WillMagnetRun(const Troll troll, int i) { +// TODO: migrate to Troll +bool WillMagnetRun(const TrollData troll, int i) { // In the case none of the flags are set, return true (100% chance) // Some systems may give magnet w/ no flags if(troll.activeFlagClients[i] == 0) return true; @@ -451,7 +462,7 @@ public Action OnClientSayCommand(int client, const char[] command, const char[] } PrintToServer("%N: %s", client, sArgs); return Plugin_Handled; - } else if(IsTrollActive(client, "Reversed")) { + } else if(Troll.FromName("Reversed").IsActive(client)) { int length = strlen(sArgs); char[] message = new char[length+1]; int j = 0; @@ -462,7 +473,7 @@ public Action OnClientSayCommand(int client, const char[] command, const char[] CPrintToChatAll("{blue}%N {default}: %s", client, message); PrintToServer("%N: %s", client, sArgs); return Plugin_Handled; - }else if(IsTrollActive(client, "iCantSpellNoMore")) { + }else if(Troll.FromName("iCantSpellNoMore").IsActive(client)) { int type = GetRandomInt(1, 14 + 3); char letterSrc, replaceChar; switch(type) { @@ -585,18 +596,21 @@ public Action OnClientSayCommand(int client, const char[] command, const char[] PrintToServer("%N: %s", client, sArgs); return Plugin_Handled; } else if(Trolls[typooId].IsActive(client)) { - char strings[32][MAX_TYPOS_LENGTH]; - int words = ExplodeString(sArgs, " ", strings, 32, MAX_TYPOS_LENGTH); - // Replace all typos - static char typoReplacement[32]; - for(int i = 0; i < words; i++) { - if(TYPOS_DICT.GetString(strings[i], typoReplacement, sizeof(typoReplacement))) { - strcopy(strings[i], MAX_TYPOS_LENGTH, typoReplacement); - } - } - int length = MAX_TYPOS_LENGTH * words; - char[] message = new char[length]; - ImplodeStrings(strings, 32, " ", message, length); + int len = strlen(sArgs) + 40; + char[] message = new char[len]; + ReplaceWithTypos(sArgs, message, len); + // char strings[32][MAX_TYPOS_LENGTH]; + // int words = ExplodeString(sArgs, " ", strings, 32, MAX_TYPOS_LENGTH); + // // Replace all typos + // static char typoReplacement[32]; + // for(int i = 0; i < words; i++) { + // if(TYPOS_DICT.GetString(strings[i], typoReplacement, sizeof(typoReplacement))) { + // strcopy(strings[i], MAX_TYPOS_LENGTH, typoReplacement); + // } + // } + // int length = MAX_TYPOS_LENGTH * words; + // char[] message = new char[length]; + // ImplodeStrings(strings, 32, " ", message, length); CPrintToChatAll("{blue}%N {default}: %s", client, message); PrintToServer("%N: %s", client, sArgs); @@ -636,7 +650,7 @@ public Action Event_ItemPickup(int client, int weapon) { } else if(flags & 32 && GetEntityClassname(weapon, wpnName, sizeof(wpnName)) && StrEqual(wpnName, "weapon_gascan")) { return Plugin_Handled; } - } else if(Trolls[UziRulesIndex].IsActive(client) || IsTrollActive(client, "Primary Disable")) { + } else if(Trolls[UziRulesIndex].IsActive(client) || Troll.FromName("Primary Disable").IsActive(client)) { GetEdictClassname(weapon, wpnName, sizeof(wpnName)); if(strcmp(wpnName[7], "rifle") >= 0 || strcmp(wpnName[7], "smg") >= 0 @@ -664,7 +678,7 @@ public Action Event_ItemPickup(int client, int weapon) { SetCommandFlags("give", flags); return Plugin_Stop; } - } else if(IsTrollActive(client, "Primary Disable")) { + } else if(Troll.FromName("Primary Disable").IsActive(client)) { return Plugin_Stop; } } @@ -793,9 +807,9 @@ Action Event_TakeDamage(int victim, int& attacker, int& inflictor, float& damage if(isSameTeam && Trolls[t_reverseFFIndex].IsActive(attacker)) { // Should this be applied? (as in no FF granted) bool disableFF = false; - if(damagetype == DMG_BURN) { + if(damagetype & DMG_BURN) { disableFF = Trolls[t_reverseFFIndex].activeFlagClients[attacker] & 32 != 0; - } else if(damagetype == DMG_BLAST) { + } else if(damagetype & DMG_BLAST) { disableFF = Trolls[t_reverseFFIndex].activeFlagClients[attacker] & 64 != 0; } else { // Does not run if DMG_BURN or DMG_BLAST @@ -932,11 +946,13 @@ public Action SoundHook(int clients[MAXPLAYERS], int& numClients, char sample[PL if(Trolls[honkID].IsActive(entity)) { if(Trolls[honkID].activeFlagClients[entity] & 1) strcopy(sample, sizeof(sample), "player/footsteps/clown/concrete1.wav"); - else if(Trolls[honkID].activeFlagClients[entity] & 2) + else if(Trolls[honkID].activeFlagClients[entity] & 2) { strcopy(sample, sizeof(sample), "custom/meow1.mp3"); - else if(Trolls[honkID].activeFlagClients[entity] & 4) + volume += 0.2; + } else if(Trolls[honkID].activeFlagClients[entity] & 4) { strcopy(sample, sizeof(sample), "custom/woof1.mp3"); - else + volume += 0.6; + } else return Plugin_Continue; return Plugin_Changed; } else if(Trolls[vocalGagID].IsActive(entity)) { @@ -1050,14 +1066,9 @@ public void L4D2_CInsectSwarm_CanHarm_Post(int acid, int spitter, int entity) { public void Event_EnteredSpit(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); - if(Trolls[t_stickyGooIndex].IsActive(client)) { - int flags = Trolls[t_stickyGooIndex].activeFlagClients[client]; - float movement = 0.0; - if(flags & 1) movement = 0.9; - else if(flags & 2) movement = 0.8; - else if(flags & 4) movement = 0.7; - else if(flags & 8) movement = 0.5; - else if(flags & 16) movement = 0.3; + if(t_stickyGoo.IsActive(client)) { + float movement; + t_stickyGoo.GetPromptDataFloat(client, 0, movement); SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", movement); pdata[client].lastInSpitTime = GetGameTime(); if(~pdata[client].flags & view_as(Flag_HasSpitTimer)) { @@ -1065,22 +1076,18 @@ public void Event_EnteredSpit(Event event, const char[] name, bool dontBroadcast pdata[client].flags |= view_as(Flag_HasSpitTimer); } } - } public void Event_BotPlayerSwap(Event event, const char[] name, bool dontBroadcast) { //Player replaced their idle bot int client = GetClientOfUserId(event.GetInt("player")); if(client > 0) { - bool debug_hadTroll = false; for(int i = 1; i <= MAX_TROLLS; i++) { - if(Trolls[i].IsActive(client) && Trolls[i].HasMod(TrollMod_Constant)) { //Add activeFlagClients >= 0 check possibly? - ApplyAffect(client, Trolls[i], -1, TrollMod_Constant, Trolls[i].activeFlagClients[client]); - debug_hadTroll = true; + Troll troll = Troll(i); + if(troll.IsActive(client) && troll.HasMod(TrollMod_Constant)) { //Add activeFlagClients >= 0 check possibly? + ApplyAffect(client, troll, -1, TrollMod_Constant, troll.GetFlags(client)); } } - if(debug_hadTroll) - PrintToServer("[FTT] Re-applied trolls for was-idle player %N", client); } } diff --git a/scripting/include/feedthetrolls/menus.inc b/scripting/include/feedthetrolls/menus.inc index 5c62874..cb6992b 100644 --- a/scripting/include/feedthetrolls/menus.inc +++ b/scripting/include/feedthetrolls/menus.inc @@ -158,7 +158,7 @@ public int ChooseCategoryHandler(Menu menu, MenuAction action, int param1, int p // Reset troll: if(category == -1) { - ApplyTroll(GetClientOfUserId(userid), "Reset User", param1, TrollMod_Instant); + Troll.FromName("Reset User").Activate(param1, victim, TrollMod_Instant); return 0; } @@ -182,22 +182,22 @@ public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int p static char str[2][8]; ExplodeString(info, "|", str, 2, 8, false); int userid = StringToInt(str[0]); - int client = GetClientOfUserId(userid); - if(client == 0) { + int victim = GetClientOfUserId(userid); + if(victim == 0) { ReplyToCommand(param1, "FTT: Could not acquire player"); return 0; } int keyIndex = StringToInt(str[1]); - static Troll troll; - GetTrollByKeyIndex(keyIndex, troll); + Troll troll = Troll(keyIndex); //If troll has multiple flags, prompt: - if(StrEqual(troll.name, "Throw It All")) { + if(troll == t_throwItAll) { // Setup menu to call itself, but with an extra data point ShowThrowItAllMenu(param1, userid); - } else if(!troll.IsActive(client) && troll.HasMod(TrollMod_Instant) && troll.HasMod(TrollMod_Constant)) { + } else if(!troll.IsActive(victim) && troll.HasMod(TrollMod_Instant) && troll.HasMod(TrollMod_Constant)) { Menu modiferMenu = new Menu(ChooseTrollModiferHandler); - Format(info, sizeof(info), "%s: Choose Modifier", troll.name); + // sadly cannot use methodmap easily to return name + Format(info, sizeof(info), "%s: Choose Modifier", Trolls[troll.Id].name); modiferMenu.SetTitle(info); Format(info, sizeof(info), "%d|%d|1", userid, keyIndex); @@ -209,13 +209,13 @@ public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int p modiferMenu.ExitButton = true; modiferMenu.Display(param1, 0); - } else if(!troll.IsActive(client) && troll.HasFlags()) { + } else if(!troll.IsActive(victim) && troll.HasOptions) { ShowSelectFlagMenu(param1, userid, -1, troll); } else { - TrollEffectResponse response = troll.Activate(client, param1); + TrollEffectResponse response = troll.Activate(param1, victim); // Only show menu if success or error, not TE_Menu if(response != TE_Menu) - ShowTrollsForCategory(param1, userid, troll.categoryID); + ShowTrollsForCategory(param1, userid, troll.CategoryId); } } else if (action == MenuAction_End) @@ -263,29 +263,27 @@ public int ChooseTrollModiferHandler(Menu menu, MenuAction action, int param1, i static char str[3][8]; ExplodeString(info, "|", str, 3, 8, false); int userid = StringToInt(str[0]); - int client = GetClientOfUserId(userid); + int victim = GetClientOfUserId(userid); int keyIndex = StringToInt(str[1]); int modifiers = StringToInt(str[2]); - if(client == 0) { + if(victim == 0) { ReplyToCommand(param1, "FTT: Could not acquire player"); return 0; } - static Troll troll; - GetTrollByKeyIndex(keyIndex, troll); - - if(!troll.IsActive(client) && troll.HasFlags()) { + Troll troll = Troll(keyIndex); + if(!troll.IsActive(victim) && troll.HasOptions) { // Show flag selection if troll is not enabled already ShowSelectFlagMenu(param1, userid, modifiers, troll); } else { TrollEffectResponse response; if(modifiers == 1 || modifiers == 3) - response = troll.Activate(client, param1, TrollMod_Instant); + response = troll.Activate(param1, victim, TrollMod_Instant); if(modifiers == 2 || modifiers == 3) - response = troll.Activate(client, param1, TrollMod_Constant); + response = troll.Activate(param1, victim, TrollMod_Constant); if(response != TE_Menu) - ShowTrollsForCategory(param1, userid, troll.categoryID); + ShowTrollsForCategory(param1, userid, troll.CategoryId); } } else if (action == MenuAction_End) @@ -300,20 +298,19 @@ public int ChooseTrollFlagHandler(Menu menu, MenuAction action, int param1, int static char str[6][8]; ExplodeString(info, "|", str, 6, 8, false); int userid = StringToInt(str[0]); - int client = GetClientOfUserId(userid); + int victim = GetClientOfUserId(userid); int keyIndex = StringToInt(str[1]); int modifiers = StringToInt(str[2]); int flags = StringToInt(str[3]); int index = StringToInt(str[4]); bool isDone = StringToInt(str[5]) == 1; // 0 = cont, 1 = done - if(client == 0) { + if(victim == 0) { ReplyToCommand(param1, "FTT: Could not acquire player"); return 0; } - static Troll troll; - GetTrollByKeyIndex(keyIndex, troll); + Troll troll = Troll(keyIndex); // If told to go to next prompt, find the next VALID prompt // Valid prompt is one where the required flags for it, are active @@ -321,7 +318,7 @@ public int ChooseTrollFlagHandler(Menu menu, MenuAction action, int param1, int if(isDone || index == -1) { int nextIndex = GetNextPrompt(troll, flags, index); // If there is a prompt available, show it, else fall down - if(nextIndex != -1) { + if(nextIndex >= 0) { ShowSelectFlagMenu(param1, userid, modifiers, troll, flags, nextIndex); return 0; } @@ -335,15 +332,15 @@ public int ChooseTrollFlagHandler(Menu menu, MenuAction action, int param1, int // Done with prompts, apply flags & modifiers if(modifiers > 0) { if(modifiers & view_as(TrollMod_Instant)) - response = troll.Activate(client, param1, TrollMod_Instant, flags); + response = troll.Activate(param1, victim, TrollMod_Instant, flags); if(modifiers & view_as(TrollMod_Constant)) - response = troll.Activate(client, param1, TrollMod_Constant, flags); + response = troll.Activate(param1, victim, TrollMod_Constant, flags); } else { - response = troll.Activate(client, param1, TrollMod_Invalid, flags); + response = troll.Activate(param1, victim, TrollMod_Invalid, flags); } // Jump back to selection screen if(response != TE_Menu) - ShowTrollsForCategory(param1, userid, troll.categoryID); + ShowTrollsForCategory(param1, userid, troll.CategoryId); } else if (action == MenuAction_End) delete menu; return 0; @@ -426,23 +423,21 @@ void ShowTrollsForCategory(int client, int userid, int category) { Format(info, sizeof(info), "Category: %s", info); trollMenu.SetTitle(info); - static Troll troll; - int victim = GetClientOfUserId(userid); // Add all menus that have same category ID to list - static char name[MAX_TROLL_NAME_LENGTH+8]; + char name[MAX_TROLL_NAME_LENGTH+8]; for(int i = 0; i < trollKV.Size; i++) { - GetTrollByKeyIndex(i, troll); + Troll troll = Troll(i); // If troll is hidden and using normal menu, do not show - if(troll.hidden && !SilentMenuSelected[client]) continue; - if(troll.categoryID == category) { + if(troll.Hidden && !SilentMenuSelected[client]) continue; + if(troll.CategoryId == category) { Format(info, sizeof(info), "%d|%d", userid, i); if(troll.IsActive(victim)) { - Format(name, sizeof(name), "%s (Active)", troll.name); + Format(name, sizeof(name), "%s (Active)", Trolls[i].name); trollMenu.AddItem(info, name); } else - trollMenu.AddItem(info, troll.name); + trollMenu.AddItem(info, Trolls[i].name); } } trollMenu.ExitButton = true; @@ -452,51 +447,44 @@ void ShowTrollsForCategory(int client, int userid, int category) { // Called with defaults on start, then recalled by ChooseTrollFlagHandler until prompt selection finished void ShowSelectFlagMenu(int activator, int victimUserID, int modifiers, Troll troll, int prevFlags = -1, int promptIndex = 0) { - static char info[MAX_TROLL_NAME_LENGTH+16]; //victimUSERID|trollID|modifiers|flags||flagIndex - static char name[32]; + char info[MAX_TROLL_NAME_LENGTH+16]; //victimUSERID|trollID|modifiers|flags||flagIndex + char name[32]; Menu flagMenu = new Menu(ChooseTrollFlagHandler); TrollFlagPrompt prompt; - troll.GetFlagPrompt(promptIndex, prompt); + troll.GetPrompt(promptIndex, prompt); prompt.GetPromptText(info, sizeof(info)); + flagMenu.SetTitle("%s", info); - Format(info, sizeof(info), "%s: %s", troll.name, info); - flagMenu.SetTitle(info); + if(prevFlags == -1) prevFlags = prompt.defaults; + + Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.Id, modifiers, prevFlags, promptIndex); if(prompt.multiselect) { - if(prevFlags == -1) prevFlags = prompt.defaults; - - Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.id, modifiers, prevFlags, promptIndex); + Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.Id, modifiers, prevFlags, promptIndex); flagMenu.AddItem(info, "Apply / Next Prompt"); - - for(int i = 0; i < troll.flagNames.Length; i++) { - int a = 1 << i; - if(prompt.flags & a) { - troll.flagNames.GetString(i, name, sizeof(name)); - // If flag is enabled, show indication (On) - if(prevFlags > 0 && prevFlags & a) - Format(name, sizeof(name), "%s ✓", name); - int newFlags = prevFlags ^ a; //Toggle the flag instead of setting like below, as it's toggleable here - Format(info, sizeof(info), "%d|%d|%d|%d|%d|0", victimUserID, troll.id, modifiers, newFlags, promptIndex); - flagMenu.AddItem(info, name); - } - } } else { - // Single choice only if(prevFlags == -1) prevFlags = 0; - for(int i = 0; i < troll.flagNames.Length; i++) { - int a = 1 << i; - if(prompt.flags & a) { - troll.flagNames.GetString(i, name, sizeof(name)); - // Add (default) indicator - - if(prompt.defaults & a) + } + for(int i = 0; i < troll.TotalOptionsCount; i++) { + int bit = 1 << i; + // Does prompt have bit + if(prompt.flags & bit) { + troll.GetOptionName(i, name, sizeof(name)); + // If flag is enabled, show indication (On) + int newFlags; + if(prompt.multiselect) { + if(prevFlags & bit) + Format(name, sizeof(name), "%s ✓", name); + newFlags = prevFlags ^ bit; //Toggle the flag instead of setting like below, as it's toggleable here + } else { + if(prompt.defaults & bit) Format(name, sizeof(name), "%s (default)", name); - int newFlags = prevFlags | a; //Set flag with any from previous prompts - Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.id, modifiers, newFlags, promptIndex); - flagMenu.AddItem(info, name); + newFlags = prevFlags | bit; } + Format(info, sizeof(info), "%d|%d|%d|%d|%d|%b", victimUserID, troll.Id, modifiers, newFlags, promptIndex, !prompt.multiselect); + flagMenu.AddItem(info, name); } } flagMenu.ExitButton = true; @@ -535,11 +523,12 @@ void ShowThrowItAllMenu(int client, int userid) { } int GetNextPrompt(Troll troll, int flags, int currentPrompt = 0) { - static TrollFlagPrompt prompt; + TrollFlagPrompt prompt; + // Check if we at the end of all possible prompts: + if(currentPrompt + 1 == troll.PromptCount) return -2; //If this prompt requires flags but they don't exist, skip to next that is valid or be done: - if(currentPrompt + 1 == troll.flagPrompts.Length) return -1; - for(int i = currentPrompt + 1; i < troll.flagPrompts.Length; i++) { - troll.GetFlagPrompt(i, prompt); + for(int i = currentPrompt + 1; i < troll.PromptCount; i++) { + troll.GetPrompt(i, prompt); if(flags & prompt.requireFlags == prompt.requireFlags) { return i; } diff --git a/scripting/include/feedthetrolls/misc.inc b/scripting/include/feedthetrolls/misc.inc index d3336c3..e0bbabc 100644 --- a/scripting/include/feedthetrolls/misc.inc +++ b/scripting/include/feedthetrolls/misc.inc @@ -4,13 +4,13 @@ void ActivateAutoPunish(int client) { if(hAutoPunish.IntValue & 2 == 2) - ApplyTroll(client, "Special Magnet", 0, TrollMod_Constant); + Troll.FromName("Special Magnet").Activate(0, client, TrollMod_Constant); if(hAutoPunish.IntValue & 1 == 1) - ApplyTroll(client, "Tank Magnet", 0, TrollMod_Constant); + Troll.FromName("Tank Magnet").Activate(0, client, TrollMod_Constant); if(hAutoPunish.IntValue & 8 == 8) - ApplyTroll(client, "Vomit Player", 0, TrollMod_Instant); + Troll.FromName("Vomit Player").Activate(0, client, TrollMod_Instant); else if(hAutoPunish.IntValue & 4 == 4) - ApplyTroll(client, "Swarm", 0, TrollMod_Instant); + Troll.FromName("Swarm").Activate(0, client, TrollMod_Instant); if(hAutoPunishExpire.IntValue > 0) { CreateTimer(60.0 * hAutoPunishExpire.FloatValue, Timer_ResetAutoPunish, GetClientOfUserId(client)); } @@ -82,7 +82,7 @@ stock bool IsPlayerIncapped(int client) { #define MAX_TYPOS_LENGTH 16 StringMap TYPOS_DICT; void LoadTypos() { - TYPOS_DICT.Clear(); + TYPOS_DICT = new StringMap(); char sPath[PLATFORM_MAX_PATH]; BuildPath(Path_SM, sPath, sizeof(sPath), "data/ftt_typos.txt"); @@ -100,10 +100,72 @@ void LoadTypos() { char buffer[140], key[32]; while(file.ReadLine(buffer, sizeof(buffer))) { int index = SplitString(buffer, " ", key, sizeof(key)); - TYPOS_DICT.SetString(key, buffer[index]); + AddTypo(key, buffer[index]); } - file.Close(); + delete file; +} + +ArrayList SplitStringList(const char[] message, char separator, int wordSize = 64) { + ArrayList words = new ArrayList(ByteCountToCells(wordSize)); + char[] word = new char[wordSize]; + int len = strlen(message); + int prevIndex; + for(int i = 0; i < len; i++) { + if(message[i] == separator) { + // Only copy the length of the string. The len includes space, which is used as null term + int wordLen = (i - prevIndex); + if(wordSize < wordLen) wordLen = wordSize; + strcopy(word, wordLen, message[prevIndex]); + words.PushString(word); + prevIndex = i; + } + } + // End of string, copy the remainder + strcopy(word, len, message[prevIndex]); + words.PushString(word); + return words; +} +void ReplaceWithTypos(const char[] message, char[] output, int maxlen) { + ArrayList words = SplitStringList(message, ' '); + message[0] = '\0'; + char word[64]; + ArrayList replaceList; + for(int i = 0; i < words.Length; i++) { + words.GetString(i, word, sizeof(word)); + if(TYPOS_DICT.GetValue(word, replaceList)) { + int index = GetRandomInt(0, replaceList.Length - 1); + replaceList.GetString(index, word, sizeof(word)); + if(i == 0) + Format(output, maxlen, "%s", word); + else + Format(output, maxlen, "%s %s", message, word); + } + } + delete words; +} + +void AddTypo(const char[] src, const char[] typo, bool save = false) { + ArrayList list; + TYPOS_DICT.GetValue(src, list); + if(list == null) { + list = new ArrayList(ByteCountToCells(MAX_TYPOS_LENGTH)); + } + list.PushString(typo); + TYPOS_DICT.SetValue(src, list); + if(save) { + char sPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sPath, sizeof(sPath), "data/ftt_typos.txt"); + File file = OpenFile(sPath, "a", false, NULL_STRING); + if(file == null) { + PrintToServer("[FTT] Cannot open for saving: data/ftt_typos.txt"); + return; + } + file.Seek(SEEK_END, 0); + file.WriteLine("%s %s", src, typo); + file.Flush(); + delete file; + } } #define MAX_PHRASES_PER_WORD 8 @@ -577,4 +639,25 @@ void SetSlot(int client, int slot) { static char slotStr[8]; Format(slotStr, sizeof(slotStr), "slot%d", slot); ClientCommand(client, slotStr); +} + +void RewindPlayer(int client) { + float curFlow = L4D2Direct_GetFlowDistance(client); + ArrayList navs = new ArrayList(); + L4D_GetAllNavAreas(navs); + navs.Sort(Sort_Random, Sort_Integer); + float minFlow = curFlow - 300.0; + float maxFlow = curFlow - 150.0; + // This finds the first nav area in range, usually closer + for(int i = 0; i < navs.Length; i++) { + float flow = L4D2Direct_GetTerrorNavAreaFlow(navs.Get(i)); + if(flow >= minFlow && flow <= maxFlow) { + float pos[3]; + L4D_FindRandomSpot(navs.Get(i), pos); + TeleportEntity(client, pos, NULL_VECTOR, NULL_VECTOR); + L4D_WarpToValidPositionIfStuck(client); + break; + } + } + delete navs; } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/timers.inc b/scripting/include/feedthetrolls/timers.inc index cb0712e..d664b48 100644 --- a/scripting/include/feedthetrolls/timers.inc +++ b/scripting/include/feedthetrolls/timers.inc @@ -1,10 +1,7 @@ Action Timer_ThrowTimer(Handle timer, int client) { - if(!IsClientInGame(client)) { - Trolls[t_throwItAllIndex].timerHandles[client] = null; - return Plugin_Stop; - } - ThrowAllItems(client); + if(IsClientInGame(client)) + ThrowAllItems(client); return Plugin_Continue; } int instantCommonRef[MAXPLAYERS+1]; @@ -481,4 +478,11 @@ Action Timer_RestoreHud(Handle h, int userid) { SetEntProp(client, Prop_Send, "m_iHideHUD", 0); } return Plugin_Handled; +} +Action Timer_RandomRewind(Handle h, int client) { + if(IsClientInGame(client) && GetURandomFloat() > 0.3) { + RewindPlayer(client); + } + return Plugin_Handled; + } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/trolls.inc b/scripting/include/feedthetrolls/trolls.inc index feca0cb..9a7f578 100644 --- a/scripting/include/feedthetrolls/trolls.inc +++ b/scripting/include/feedthetrolls/trolls.inc @@ -1,7 +1,7 @@ // UP THE VALUE 'MAX_TROLLS' in base.inc before adding new ones! int t_slipperyShoesIndex = 0; -int t_stickyGooIndex = 0; +Troll t_stickyGoo; int t_invertedTrollIndex; int t_randomizeAnglesIndex; int t_randomizeVelocityIndex; @@ -10,272 +10,270 @@ int t_shakeyCameraIndex; int t_slotRouletteIndex; int t_damageBoostIndex; int t_reverseFFIndex; -int t_throwItAllIndex; int t_hideHUDIndex; +Troll t_throwItAll; +Troll t_voiceMute; +Troll t_gunJam; void SetupTrolls() { trollKV = new StringMap(); categories = new ArrayList(ByteCountToCells(16)); - gRandomClients = new ArrayList(); - int index; - SetupTroll("Reset User", "Resets the user, removes all troll effects", TrollMod_Instant); + TrollBuilder("Reset User", "Resets the user, removes all troll effects", TrollMod_Instant); /// CATEGORY: Magnets + TrollBuilder troll; SetCategory("Magnets"); - index = SetupTroll("Special Magnet", "Attracts ALL specials to any alive target with this troll enabled", TrollMod_Constant); - AddMagnetFlags(index); - index = SetupTroll("Tank Magnet", "Attracts ALL tanks to any alive target with this troll enabled", TrollMod_Constant); - AddMagnetFlags(index); + troll = TrollBuilder("Special Magnet", "Attracts ALL specials to any alive target with this troll enabled", TrollMod_Constant); + AddMagnetFlags(troll); + troll = TrollBuilder("Tank Magnet", "Attracts ALL tanks to any alive target with this troll enabled", TrollMod_Constant); + AddMagnetFlags(troll); #if defined _actions_included - index = SetupTroll("Witch Magnet", "All witches when startled will target any player with this troll", TrollMod_Constant); + TrollBuilder("Witch Magnet", "All witches when startled will target any player with this troll", TrollMod_Constant); #endif - index = SetupTroll("Projectile Magnet", "Makes all projectiles (biles, molotovs, pipes, tank rocks) go to player", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Target Sources", true); - // Tied to: ProjectileMagnetType - Trolls[index].AddFlag("Infected (rocks/goo)", true); - Trolls[index].AddFlag("Teammates (grenades)", false); - Trolls[index].AddFlag("Thrown Tank Objects", false); + TrollBuilder("Projectile Magnet", "Makes all projectiles (biles, molotovs, pipes, tank rocks) go to player", TrollMod_Constant) + .AddPromptMulti("Target Sources") + // Tied to: ProjectileMagnetType + .AddOption("Infected (rocks/goo)", true) + .AddOption("Teammates (grenades)") + .AddOption("Thrown Tank Objects"); /// CATEGORY: Infected SetCategory("Infected"); - SetupTroll("Swarm", "Swarms a player with zombies. Requires swarm plugin", TrollMod_Instant | TrollMod_Constant); - t_vomitPlayerIndex = SetupTroll("Vomit Player", "Shortcut to sm_vomitplayer. vomits the player.", TrollMod_Instant | TrollMod_Constant); - index = SetupTroll("Insta Special", "Shortcut to sm_insta", TrollMod_Instant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Around them (Director)", true); - Trolls[index].AddFlag("On top / in-face", false); - SetupTroll("Goo", "Spawns a spitter puddle underneath them", TrollMod_Instant); - index = SetupTroll("Sticky Goo", "Slows player down in goo", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("90% Movement Speed", true); - Trolls[index].AddFlag("80% Movement Speed", false); - Trolls[index].AddFlag("70% Movement Speed", false); - Trolls[index].AddFlag("50% Movement Speed", false); - Trolls[index].AddFlag("30% Movement Speed", false); - Trolls[index].AddFlag("0% Movement Speed", false); - t_stickyGooIndex = index; - index = SetupTroll("Vocalize Specials", "Spawn commons on special vocals", TrollMod_Constant) - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Mute Vocalization", true); - Trolls[index].AddFlag("Do not mute", false); - index = SetupTroll("Instant Commons", "Spawns commons behind or infront", TrollMod_Instant | TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("In Back", true); - Trolls[index].AddFlag("In Front", false); - index = SetupTroll("Smart Charge", "Waits until coast is clear to charge", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Attempt Timeout", false); - Trolls[index].AddFlag("15 Seconds", true); - Trolls[index].AddFlag("30 Seconds", false); - Trolls[index].AddFlag("1 minute", false); - Trolls[index].AddFlag("5 minutes", false); + TrollBuilder("Swarm", "Swarms a player with zombies. Requires swarm plugin", TrollMod_Instant | TrollMod_Constant); + t_vomitPlayerIndex = TrollBuilder("Vomit Player", "Shortcut to sm_vomitplayer. vomits the player.", TrollMod_Instant | TrollMod_Constant).Id; + TrollBuilder("Insta Special", "Shortcut to sm_insta", TrollMod_Instant) + .AddPrompt() + .AddOption("Around them (Director)", true) + .AddOption("On top / in-face"); + TrollBuilder("Goo", "Spawns a spitter puddle underneath them", TrollMod_Instant); + t_stickyGoo = TrollBuilder("Sticky Goo", "Slows player down in goo", TrollMod_Constant) + .AddPrompt() + .AddOptionFloat("90% Movement Speed", true, 0.9) + .AddOptionFloat("80% Movement Speed", false, 0.8) + .AddOptionFloat("70% Movement Speed", false, 0.7) + .AddOptionFloat("50% Movement Speed", false, 0.5) + .AddOptionFloat("30% Movement Speed", false, 0.3) + .AddOptionFloat("0% Movement Speed", false, 0.0) + .Build(); + TrollBuilder("Vocalize Specials", "Spawn commons on special vocals", TrollMod_Constant) + .AddPrompt() + .AddOption("Mute Vocalization", true) + .AddOption("Do not mute", false) + TrollBuilder("Instant Commons", "Spawns commons behind or infront", TrollMod_Instant | TrollMod_Constant) + .AddPrompt() + .AddOption("In Back", true) + .AddOption("In Front", false); + TrollBuilder("Smart Charge", "Waits until coast is clear to charge", TrollMod_Constant) + .AddPrompt("Attempt Timeout") + .OnPromptActivate(Activate_SmartCharge) + .AddOptionInt("15 Seconds", true, 15) + .AddOptionInt("30 Seconds", false, 30) + .AddOptionInt("1 minute", false, 60) + .AddOptionInt("5 minutes", false, 300); // CATEGORY: Projectiles SetCategory("Projectiles"); - index = SetupTroll("Rock Dropper", "Drops on a rock. On their head.", TrollMod_Instant); - // Trolls[index].AddFlagPrompt(false); - // Trolls[index].AddFlag("Drop From Above", true); - // Trolls[index].AddFlag("From behind", false); - index = SetupTroll("Car Splat", "Car. splats.", TrollMod_Instant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("On Top", true); - Trolls[index].AddFlag("Into (Infront)", false); - Trolls[index].AddFlag("Into (Behind)", false); - index = SetupTroll("Bad Throw", "Player drops throwables on throw, and biles/molotovs themselves", TrollMod_Constant); - Trolls[index].AddFlagPrompt(true); - Trolls[index].AddFlag("Biles", true); - Trolls[index].AddFlag("Molotovs", true); - Trolls[index].AddFlag("Pipebombs", true); - index = SetupTroll("Molotov Bath", "Throws a molotov on their feet", TrollMod_Instant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Normal", true); - Trolls[index].AddFlag("Set the town ablaze", false); + TrollBuilder("Rock Dropper", "Drops on a rock. On their head.", TrollMod_Instant); + TrollBuilder("Car Splat", "Car. splats.", TrollMod_Instant) + .AddPrompt() + .AddOption("On Top", true) + .AddOption("Into (Infront)", false) + .AddOption("Into (Behind)", false); + TrollBuilder("Bad Throw", "Player drops throwables on throw, and biles/molotovs themselves", TrollMod_Constant) + .AddPromptMulti() + .AddOption("Biles", true) + .AddOption("Molotovs", true) + .AddOption("Pipebombs", true) + TrollBuilder("Molotov Bath", "Throws a molotov on their feet", TrollMod_Instant) + .AddPrompt() + .AddOption("Normal", true) + .AddOption("Set the town ablaze", false); // CATEGORY: Items SetCategory("Items"); - index = SetupTroll("Throw It All", "Player throws their item(s) periodically to a nearby player", TrollMod_Instant); - Trolls[index].SetTimer(THROWITALL_INTERVAL, Timer_ThrowTimer); - index = SetupTroll("Spicy Gas", "Gascans player picks up just ignite. Magic.", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Always (100%)", false); - Trolls[index].AddFlag("Half Time (50%)", true); - Trolls[index].AddFlag("Rare (10%)", false); - index = SetupTroll("No Pickup", "Prevents a player from picking up ANY (new) item. Use ThrowItAll to make them drop", TrollMod_Constant); - Trolls[index].AddFlagPrompt(true); - Trolls[index].AddFlag("No Primary", false); - Trolls[index].AddFlag("No Melee", false); - Trolls[index].AddFlag("No Throwables", true); - Trolls[index].AddFlag("No Kits", true); - Trolls[index].AddFlag("No Pills / Adr", true); - Trolls[index].AddFlag("No GASCANS", true); - index = SetupTroll("UziRules / AwpSmells", "Picking up a weapon gives them a UZI or AWP instead", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("UZI Only", true); - Trolls[index].AddFlag("AWP Only", false); - SetupTroll("Primary Disable", "Player cannot pickup any weapons, only melee/pistols", TrollMod_Constant); - index = SetupTroll("Dull Melee", "Player's melee weapon does 0 damage (based on %). Headshots still work", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Always (100%)", false); - Trolls[index].AddFlag("Half Time (50%)", true); - Trolls[index].AddFlag("Rare (10%)", false); - SetupTroll("Nerf Gun", "When they shoot it does no damage.", TrollMod_Constant); - SetupTroll("Randomize Clip Ammo", "Randomly changes their clip ammo downwards", TrollMod_Constant | TrollMod_Instant); - SetupTroll("CameTooEarly", "When they shoot, random chance they empty whole clip", TrollMod_Constant); - index = SetupTroll("Slot Roulette", "Randomize their slots", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Activations:", true); - Trolls[index].AddFlag("On Vomitted", false); // 1 - Trolls[index].AddFlag("On Damage", false); // 2 - Trolls[index].AddFlag("On Vocalize", false); // 4 - Trolls[index].AddFlag("Periodically", true); //8 - Trolls[index].AddCustomFlagPrompt("Frequency:", false, 8); - Trolls[index].AddFlag("Subtle", false); // 16 - Trolls[index].AddFlag("Confusing", false); // 32 - Trolls[index].AddFlag("Annoying", false); // 64 - Trolls[index].AddFlag("Unusable", false); // 128 - Trolls[index].SetTimer(0.2, Timer_SlotRoulette, 8); - t_slotRouletteIndex = index; + t_throwItAll = TrollBuilder("Throw It All", "Player throws their item(s) periodically to a nearby player", TrollMod_Instant) + .SetTimer(THROWITALL_INTERVAL, Timer_ThrowTimer) + .Build(); + TrollBuilder("Spicy Gas", "Gascans player picks up just ignite. Magic.", TrollMod_Constant) + .AddPrompt() + .AddOption("Always (100%)", false) + .AddOption("Half Time (50%)", true) + .AddOption("Rare (10%)", false); + TrollBuilder("No Pickup", "Prevents a player from picking up ANY (new) item. Use ThrowItAll to make them drop", TrollMod_Constant) + .AddPromptMulti() + .AddOption("No Primary", false) + .AddOption("No Melee", false) + .AddOption("No Throwables", true) + .AddOption("No Kits", true) + .AddOption("No Pills / Adr", true) + .AddOption("No GASCANS", true); + TrollBuilder("UziRules / AwpSmells", "Picking up a weapon gives them a UZI or AWP instead", TrollMod_Constant) + .AddPrompt() + .AddOption("UZI Only", true) + .AddOption("AWP Only", false) + TrollBuilder("Primary Disable", "Player cannot pickup any weapons, only melee/pistols", TrollMod_Constant); + TrollBuilder("Dull Melee", "Player's melee weapon does 0 damage (based on %). Headshots still work", TrollMod_Constant) + .AddPrompt() + .AddOption("Always (100%)", false) + .AddOption("Half Time (50%)", true) + .AddOption("Rare (10%)", false); + TrollBuilder("Nerf Gun", "When they shoot it does no damage.", TrollMod_Constant); + TrollBuilder("Randomize Clip Ammo", "Randomly changes their clip ammo downwards", TrollMod_Constant | TrollMod_Instant); + TrollBuilder("CameTooEarly", "When they shoot, random chance they empty whole clip", TrollMod_Constant); + t_slotRouletteIndex = TrollBuilder("Slot Roulette", "Randomize their slots", TrollMod_Constant) + .SetTimer(0.2, Timer_SlotRoulette, 8) + .AddPromptMulti("Activiations") + .AddOption("On Vomitted") // 1 << 0 + .AddOption("On Damage") // 1 << 1 + .AddOption("On Vocalize") // 1 << 2 + .AddOption("Periodically") // 1 << 3 + .AddPrompt("Frequency", 1 << 3) + .AddOption("Subtle") // 1 << 4 + .AddOption("Confusing") // 1 << 5 + .AddOption("Annoying") // 1 << 6 + .AddOption("Unusuable") // 1 << 7 + .Id; /// CATEGORY: Chat SetCategory("Chat"); - SetupTroll("Typoos", "", TrollMod_Constant); - SetupTroll("iCantSpellNoMore", "Chat messages letter will randomly changed with wrong letters", TrollMod_Constant); - index = SetupTroll("No Profanity", "Replaces some words with random phrases", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Only Replace Swears", false); - Trolls[index].AddFlag("Replace Full Messages", true); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Show Modified to Them", true); - Trolls[index].AddFlag("Show Original to Them", false); - index = SetupTroll("Vocalize Gag", "Prevents player from sending any vocalizations (even automatic)", TrollMod_Constant); - // Trolls[index].AddFlagPrompt(false); - // Trolls[index].AddFlag("Mute for All", true); - // Trolls[index].AddFlag("Mute For All But Them", false); - index = SetupTroll("Honk / Meow / Woof", "Custom sounds", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Choose Sound:"); - Trolls[index].AddFlag("Honk", true); - Trolls[index].AddFlag("Meow", false); - Trolls[index].AddFlag("Woof", false); - Trolls[index].AddCustomFlagPrompt("Choose Chat modifier:", false, 1); - Trolls[index].AddFlag("Show Modified to Them", true); - Trolls[index].AddFlag("Show Original to Them", false); - Trolls[index].AddFlag("Show Modified Only To Them", false); - SetupTroll("Reversed", "Reserves their message", TrollMod_Constant); - SetupTroll("Voice Mute", "Mutes from voice", TrollMod_Constant); - SetupTroll("No Rushing Us", "Decreases player speed everytime they yell hurry up", TrollMod_Constant); + TrollBuilder("Typoos", "", TrollMod_Constant); + TrollBuilder("iCantSpellNoMore", "Chat messages letter will randomly changed with wrong letters", TrollMod_Constant); + TrollBuilder("No Profanity", "Replaces some words with random phrases", TrollMod_Constant) + .AddPrompt() + .AddOption("Only Replace Swears") + .AddOption("Replace Full Messages", true) + .AddPrompt() + .AddOption("Show Modified to Them", true) + .AddOption("Show Original to Them"); + TrollBuilder("Vocalize Gag", "Prevents player from sending any vocalizations (even automatic)", TrollMod_Constant); + // .AddPrompt() + // .AddOption("Mute for All", true); + // .AddOption("Mute For All But Them", false); + TrollBuilder("Honk / Meow / Woof", "Custom sounds", TrollMod_Constant) + .AddPrompt("Choose Sound:") + .AddOption("Honk", true) + .AddOption("Meow", false) + .AddOption("Woof", false) + .AddPrompt("Choose Chat modifier:", 1) + .AddOption("Show Modified to Them", true) + .AddOption("Show Original to Them", false) + .AddOption("Show Modified Only To Them", false); + TrollBuilder("Reversed", "Reserves their message", TrollMod_Constant); + t_voiceMute = TrollBuilder("Voice Mute", "Mutes from voice", TrollMod_Constant).Build(); + TrollBuilder("No Rushing Us", "Decreases player speed everytime they yell hurry up", TrollMod_Constant); /// CATEGORY: Health SetCategory("Health"); - t_damageBoostIndex = SetupTroll("Damage Boost", "Makes a player take more damage than normal", TrollMod_Constant); - SetupTroll("Temp Health Quick Drain", "Makes a player's temporarily health drain very quickly", TrollMod_Constant); - SetupTroll("Slow Drain", "Will make the player slowly lose health over time", TrollMod_Constant); - SetupTroll("KillMeSoftly", "Make player eat or waste pills whenever possible", TrollMod_Instant | TrollMod_Constant); - index = SetupTroll("Reverse FF", "All damage dealt to a player is reversed", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Choose Reverse FF", false); - Trolls[index].AddFlag("1:1 Ratio", true); //1 - Trolls[index].AddFlag("2x Ratio", false); //2 - Trolls[index].AddFlag("0.5x Ratio", false); //4 - Trolls[index].AddFlag("0.0x Ratio (None)", false); //8 - Trolls[index].AddFlag("3x Ratio", false); //16 - Trolls[index].AddCustomFlagPrompt("Modes", true); - Trolls[index].AddFlag("Reverse Fire Damage", false); //32 - Trolls[index].AddFlag("Reverse Explosions", false); //64 - t_reverseFFIndex = index; + t_damageBoostIndex = TrollBuilder("Damage Boost", "Makes a player take more damage than normal", TrollMod_Constant).Id; + TrollBuilder("Temp Health Quick Drain", "Makes a player's temporarily health drain very quickly", TrollMod_Constant); + TrollBuilder("Slow Drain", "Will make the player slowly lose health over time", TrollMod_Constant); + TrollBuilder("KillMeSoftly", "Make player eat or waste pills whenever possible", TrollMod_Instant | TrollMod_Constant); + t_reverseFFIndex = TrollBuilder("Reverse FF", "All damage dealt to a player is reversed", TrollMod_Constant) + .AddPrompt("Choose Reverse FF", false) + .AddOption("1:1 Ratio", true) //1 + .AddOption("2x Ratio", false) //2 + .AddOption("0.5x Ratio", false) //4 + .AddOption("0.0x Ratio (None)", false) //8 + .AddOption("3x Ratio", false) //16 + .AddPromptMulti("Modes") + .AddOption("Reverse Fire Damage", false) //32 + .AddOption("Reverse Explosions", false) //64 + .Id; - index = SetupTroll("Dep Bots", "Makes bots heal a player. At any cost", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Do not spawn extra", true); // 1 - Trolls[index].AddFlag("Spawn extra bots (broke)", false); // 2 - Trolls[index].AddCustomFlagPrompt("# Of Bots", false); - Trolls[index].AddFlag("1", false); // 4 - Trolls[index].AddFlag("2", false); // 8 - Trolls[index].AddFlag("3", false); // 16 - Trolls[index].AddFlag("4", true); // 32 - Trolls[index].AddFlag("5", false); // 64 - Trolls[index].AddCustomFlagPrompt("Auto Timeout", false, 0); - Trolls[index].AddFlag("Until Healed / Map Change", false); // 128 - Trolls[index].AddFlag("15 seconds", true); // 255 - Trolls[index].AddFlag("30 seconds", false); // 512 - Trolls[index].AddFlag("1 minute", false); //1024 - Trolls[index].AddFlag("5 minutes", false); //2048 + TrollBuilder("Dep Bots", "Makes bots heal a player. At any cost", TrollMod_Constant) + .AddPrompt() + .AddOption("Do not spawn extra", true) // 1 + .AddOption("Spawn extra bots (broke)", false) // 2 + .AddPrompt("# Of Bots") + .AddOption("1", false) // 4 + .AddOption("2", false) // 8 + .AddOption("3", false) // 16 + .AddOption("4", true) // 32 + .AddOption("5", false) // 64 + .AddPrompt("Auto Timeout") + .AddOption("Until Healed / Map Change", false) // 128 + .AddOption("15 seconds", true) // 255 + .AddOption("30 seconds", false) // 512 + .AddOption("1 minute", false) //1024 + .AddOption("5 minutes", false); //2048 /// CATEGORY: Movement SetCategory("Movement"); - index = SetupTroll("Slow Speed", "Sets player speed to 0.8x of normal speed", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("90% Movement Speed", true); - Trolls[index].AddFlag("80% Movement Speed", false); - Trolls[index].AddFlag("70% Movement Speed", false); - Trolls[index].AddFlag("50% Movement Speed", false); - Trolls[index].AddFlag("30% Movement Speed", false); - Trolls[index].AddFlag("0% Movement Speed", false); - SetupTroll("Higher Gravity", "Sets player gravity to 1.3x of normal gravity", TrollMod_Constant); - t_invertedTrollIndex = SetupTroll("Inverted Controls", "Well, aint it obvious", TrollMod_Constant); - SetupTroll("Stagger", "Like a slap, but different", TrollMod_Instant); - index = SetupTroll("Slippery Shoes", "Periodically stumbles around.", TrollMod_Constant); - Trolls[index].AddFlagPrompt(true); - Trolls[index].AddFlag("Periodically", true); - Trolls[index].AddFlag("When using doors", false); - Trolls[index].AddFlag("On throwable use", false); - Trolls[index].AddFlag("On pills/adrenaline use", false); - Trolls[index].AddFlag("On zombie bite", false); - t_slipperyShoesIndex = index; - index = SetupTroll("Randomize Angles", "Randomly change their angles", TrollMod_Constant); - Trolls[index].AddCustomFlagPrompt("Frequency:", false); - Trolls[index].AddFlag("Once in a while", true); //1 - Trolls[index].AddFlag("Periodically", false); //2 - Trolls[index].AddFlag("A lot", false); //4 - Trolls[index].AddFlag("Painful", false); //8 - Trolls[index].AddFlag("Seizure", false); //16 - t_randomizeAnglesIndex = index; - index = SetupTroll("Randomize Velocity", "Randomly change their velocity", TrollMod_Constant); - Trolls[index].SetTimer(0.1, Timer_RandomVelocity); - Trolls[index].AddCustomFlagPrompt("Frequency:", false); - Trolls[index].AddFlag("Loose", true); //1 - Trolls[index].AddFlag("Slippery", false); //2 - Trolls[index].AddFlag("Earthquake", false); //4 - Trolls[index].AddFlag("Severe Earthquake", false); //8 - Trolls[index].AddFlag("Bouncy Castle", false); //16 - t_randomizeVelocityIndex = index; + TrollBuilder("Slow Speed", "Sets player speed to 0.8x of normal speed", TrollMod_Constant) + .AddPrompt() + .AddOptionFloat("90% Movement Speed", true, 0.9) + .AddOptionFloat("80% Movement Speed", false, 0.8) + .AddOptionFloat("70% Movement Speed", false, 0.7) + .AddOptionFloat("50% Movement Speed", false, 0.5) + .AddOptionFloat("30% Movement Speed", false, 0.3) + .AddOptionFloat("0% Movement Speed", false, 0.0); + TrollBuilder("Higher Gravity", "Sets player gravity to 1.3x of normal gravity", TrollMod_Constant); + t_invertedTrollIndex = TrollBuilder("Inverted Controls", "Well, aint it obvious", TrollMod_Constant).Id; + t_slipperyShoesIndex = TrollBuilder("Slippery Shoes", "Periodically stumbles around.", TrollMod_Constant | TrollMod_Instant) + .AddPromptMulti() + .AddOption("Periodically", true) // 1 << 0 + .AddOption("When using doors") // 1 << 1 + .AddOption("On throwable use") + .AddOption("On pills/adrenaline use") + .AddOption("On zombie bite") + .Id + t_randomizeAnglesIndex = TrollBuilder("Randomize Angles", "Randomly change their angles", TrollMod_Constant) + .AddPrompt("Frequency:") + .AddOption("Once in a while", true) //1 + .AddOption("Periodically", false) //2 + .AddOption("A lot", false) //4 + .AddOption("Painful", false) //8 + .AddOption("Seizure", false) //16 + .Id; + t_randomizeVelocityIndex = TrollBuilder("Randomize Velocity", "Randomly change their velocity", TrollMod_Constant) + .SetTimer(0.1, Timer_RandomVelocity) + .AddPrompt("Frequency:") + .AddOption("Loose", true) //1 + .AddOption("Slippery", false) //2 + .AddOption("Earthquake", false) //4 + .AddOption("Severe Earthquake", false) //8 + .AddOption("Bouncy Castle", false) //16 + .Id; + TrollBuilder("Rewind", "Teleports player backwards", TrollMod_Instant | TrollMod_Constant) + .SetTimer(10.0, Timer_RandomRewind); /// CATEGORY: MISC SetCategory("Misc"); - SetupTroll("Gun Jam", "On reload, small chance their gun gets jammed - Can't reload.", TrollMod_Constant); - SetupTroll("No Shove", "Prevents a player from shoving", TrollMod_Constant); - index = SetupTroll("No Button Touchie", "Stops people from pressing buttons", TrollMod_Constant); - Trolls[index].AddFlagPrompt(true); - Trolls[index].AddFlag("Prevent Use", true); - Trolls[index].AddFlag("Vomit On Touch", false); - Trolls[index].AddFlag("Incap On Touch", false); - Trolls[index].AddFlag("Slay On Touch", false); - Trolls[index].AddFlag("0.8x Speed", false); + t_gunJam = TrollBuilder("Gun Jam", "On reload, small chance their gun gets jammed - Can't reload.", TrollMod_Constant).Build(); + TrollBuilder("No Shove", "Prevents a player from shoving", TrollMod_Constant); + TrollBuilder("No Button Touchie", "Stops people from pressing buttons", TrollMod_Constant) + .AddPromptMulti() + .AddOption("Prevent Use", true) + .AddOption("Vomit On Touch", false) + .AddOption("Incap On Touch", false) + .AddOption("Slay On Touch", false) + .AddOption("0.8x Speed", false); // TODO: setup instant - index = SetupTroll("Shakey Camera", "Horrible", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); + t_shakeyCameraIndex = TrollBuilder("Shakey Camera", "Horrible", TrollMod_Constant) + .AddPrompt() // add flag: vomit on touch - Trolls[index].AddFlag("Annoying but playable", false); - Trolls[index].AddFlag("Bad", true); - Trolls[index].AddFlag("Sickness", false); - Trolls[index].AddFlag("Violent", false); - Trolls[index].AddFlag("Violent XX", false); - t_shakeyCameraIndex = index; - index = SetupTroll("Hide HUD", "Horrible", TrollMod_Constant); - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("Rare & Short", false); - Trolls[index].AddFlag("Sometimes & Medium", false); - Trolls[index].AddFlag("Constantly", true); - t_hideHUDIndex = index; - index = SetupTroll("Meta: Random", "Picks a random troll", TrollMod_Instant); - index = SetupTroll("Meta: Inverse", "Uhm you are not supposed to see this...", TrollMod_Instant); - Trolls[index].hidden = true; - Trolls[index].AddFlagPrompt(false); - Trolls[index].AddFlag("100%", true); - Trolls[index].AddFlag("50%", false); - Trolls[index].AddFlag("10%", false); - - - - + .AddOption("Annoying but playable", false) + .AddOption("Bad", true) + .AddOption("Sickness", false) + .AddOption("Violent", false) + .AddOption("Violent XX", false) + .Id; + t_hideHUDIndex = TrollBuilder("Hide HUD", "Horrible", TrollMod_Constant) + .AddPrompt() + .AddOption("Rare & Short", false) + .AddOption("Sometimes & Medium", false) + .AddOption("Constantly", true) + .Id; + TrollBuilder("Meta: Random", "Picks a random troll", TrollMod_Instant); + t_metaReverse = TrollBuilder("Meta: Inverse", "Uhm you are not supposed to see this...", TrollMod_Instant) + .Hide() + .AddPrompt() + .AddOptionFloat("100%", true, 1.0) + .AddOptionFloat("50%", false, 0.5) + .AddOptionFloat("10%", false, 0.1) + .Build(); // Initialize the default flag values to -1 for(int i = 0; i <= MAX_TROLLS; i++) { @@ -287,16 +285,31 @@ void SetupTrolls() { } -void AddMagnetFlags(int index) { - Trolls[index].AddCustomFlagPrompt("Choose Magnet Chance:", false); - Trolls[index].AddFlag("Always (100%)", true); - Trolls[index].AddFlag("Half Time (50%)", false); - Trolls[index].AddFlag("Rare (10%)", false); +TrollEffectResponse Activate_SmartCharge(Troll troll, int activator, int victim, int timeout, int flags, trollModifier mod) { + if(pdata[victim].smartChargeActivator > 0) { + ReplyToCommand(activator, "Target already has smart charge enabled"); + return TE_Error; + } + pdata[victim].smartChargeAttempts = 0; + pdata[victim].smartChargeMaxAttempts = timeout; + pdata[victim].smartChargeActivator = GetClientUserId(activator); + CreateTimer(1.0, Timer_CheckForChargerOpportunity, GetClientUserId(victim), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); + return TE_Success; } -TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, trollModifier modifier, int flags) { - bool toActive = IsTrollActiveByRawID(victim, troll.id); - if(StrEqual(troll.name, "Reset User")) { +void AddMagnetFlags(TrollBuilder troll) { + PrintToServer("adding: %d", troll.Id); + troll.AddPrompt("Choose Magnet Chance:") + .AddOptionFloat("Always (100%)", true, 1.0) + .AddOptionFloat("Half Time (50%)", false, 0.5) + .AddOptionFloat("Rare (10%)", false, 0.1); +} + +TrollEffectResponse ApplyAffect(int victim, Troll troll, int activator, trollModifier modifier, int flags) { + bool toActive = troll.IsActive(victim); + char name[MAX_TROLL_NAME_LENGTH]; + troll.GetName(name, sizeof(name)); + if(StrEqual(name, "Reset User")) { LogAction(activator, victim, "\"%L\" reset all effects for \"%L\"", activator, victim); ShowActivityEx(activator, "[FTT] ", "reset effects for %N. ", victim); // for(int i = 0; i <= MAX_TROLLS; i++) { @@ -306,7 +319,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr // SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 1.0); ResetClient(victim, true); return TE_Error; // Not an error, but don't want to show activation - } else if(StrEqual(troll.name, "Slow Speed")) { + } else if(StrEqual(name, "Slow Speed")) { if(toActive) { float movement = 0.0; if(flags & 1) movement = 0.9; @@ -317,22 +330,22 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", movement); } else SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 1.0); - } else if(StrEqual(troll.name, "Higher Gravity")) + } else if(StrEqual(name, "Higher Gravity")) SetEntityGravity(victim, toActive ? 1.3 : 1.0); - else if(StrEqual(troll.name, "UziRules / AwpSmells")) { + else if(StrEqual(name, "UziRules / AwpSmells")) { DisableTroll(victim, "No Pickup"); DisableTroll(victim, "Primary Disable"); - } else if(StrEqual(troll.name, "Primary Disable")) { + } else if(StrEqual(name, "Primary Disable")) { DisableTroll(victim, "UziRules / AwpSmells"); DisableTroll(victim, "No Pickup"); SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); - } else if(StrEqual(troll.name, "No Pickup")) { + } else if(StrEqual(name, "No Pickup")) { DisableTroll(victim, "UziRules / AwpSmells"); DisableTroll(victim, "Primary Disable"); SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); - } else if(StrEqual(troll.name, "CameTooEarly")) { + } else if(StrEqual(name, "CameTooEarly")) { ReplyToCommand(activator, "This troll mode is not implemented."); - } else if(StrEqual(troll.name, "KillMeSoftly")) { + } else if(StrEqual(name, "KillMeSoftly")) { static char wpn[32]; GetClientWeaponName(victim, 4, wpn, sizeof(wpn)); if(StrEqual(wpn, "weapon_adrenaline") || StrEqual(wpn, "weapon_pain_pills")) { @@ -344,17 +357,17 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr } //TODO: Implement TrollMod_Constant return TE_Error; - } else if(StrEqual(troll.name, "Throw It All")) { + } else if(StrEqual(name, "Throw It All")) { if(modifier & TrollMod_Instant) { if(flags & 1) { // Hacky, just throw their kit ThrowItemToPlayer(victim, activator, 3); } else ThrowAllItems(victim); } - } else if(StrEqual(troll.name, "Swarm")) { + } else if(StrEqual(name, "Swarm")) { if(modifier & TrollMod_Instant) { L4D2_RunScript("RushVictim(GetPlayerFromUserID(%d), %d)", victim, 15000); } - } else if(StrEqual(troll.name, "Gun Jam")) { + } else if(StrEqual(name, "Gun Jam")) { int wpn = GetClientWeaponEntIndex(victim, 0); if(wpn > -1) SDKHook(wpn, SDKHook_Reload, Event_WeaponReload); @@ -362,25 +375,25 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr ReplyToCommand(activator, "Victim does not have a primary weapon."); return TE_Error; } - } else if(StrEqual(troll.name, "Vomit Player")) + } else if(StrEqual(name, "Vomit Player")) L4D_CTerrorPlayer_OnVomitedUpon(victim, victim); - else if(StrEqual(troll.name, "Insta Special")) { + else if(StrEqual(name, "Insta Special")) { int mode = 0; if(flags & 2) mode = 1; ShowInstaSpecialChooser(activator, GetClientUserId(victim), mode); return TE_Menu; - } else if(StrEqual(troll.name, "Goo")) { + } else if(StrEqual(name, "Goo")) { static float pos[3], ang[3]; GetClientAbsOrigin(victim, pos); GetClientAbsAngles(victim, ang); L4D2_SpitterPrj(victim, pos, ang); - } else if(StrEqual(troll.name, "Stagger")) { + } else if(StrEqual(name, "Stagger")) { L4D_StaggerPlayer(victim, victim, NULL_VECTOR); - } else if(StrEqual(troll.name, "Voice Mute")) { + } else if(StrEqual(name, "Voice Mute")) { BaseComm_SetClientMute(victim, toActive); - } else if(StrEqual(troll.name, "Spicy Gas")) { + } else if(StrEqual(name, "Spicy Gas")) { SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); - } else if(StrEqual(troll.name, "Car Splat")) { + } else if(StrEqual(name, "Car Splat")) { if(flags & 1) { if(!SpawnCarOnPlayer(victim)) { ReplyToCommand(activator, "Could not find a suitable area to spawn a car. Requires vertical space above victim."); @@ -397,7 +410,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr return TE_Error; } } - } else if(StrEqual(troll.name, "Instant Commons")) { + } else if(StrEqual(name, "Instant Commons")) { if(modifier & TrollMod_Instant) { float pos[3]; GetHorizontalPositionFromClient(victim, flags & 1 ? -40.0 : 40.0, pos); @@ -407,7 +420,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr L4D2_RunScript("CommandABot({cmd=0,bot=EntIndexToHScript(%i),target=GetPlayerFromUserID(%i)})", c, victimId); } } - } else if(StrEqual(troll.name, "Randomize Clip Ammo")) { + } else if(StrEqual(name, "Randomize Clip Ammo")) { if(modifier & TrollMod_Instant) { int primaryWpn = GetPlayerWeaponSlot(victim, 0); if(primaryWpn > 0) { @@ -415,7 +428,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr SetEntProp(primaryWpn, Prop_Send, "m_iClip1", GetRandomInt(0, maxCap)); } } - } else if(StrEqual(troll.name, "Rock Dropper")) { + } else if(StrEqual(name, "Rock Dropper")) { float pos[3], dropPos[3]; GetClientEyePosition(victim, pos); dropPos = pos; @@ -428,7 +441,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr float ang[3]; ang[0] = 90.0; L4D_TankRockPrj(0, dropPos, ang); - } else if(StrEqual(troll.name, "Molotov Bath")) { + } else if(StrEqual(name, "Molotov Bath")) { int count = 1; if(flags & 2) count = 8; float pos[3], dropPos[3]; @@ -449,7 +462,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr for(int i = 0; i < count; i++) { L4D_MolotovPrj(victim, dropPos, vel); } - } else if(StrEqual(troll.name, "Dep Bots")) { + } else if(StrEqual(name, "Dep Bots")) { if(!toActive) { StopHealingBots(); return TE_Success; @@ -513,7 +526,7 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr wasSbFixEnabled = hSbFixEnabled.BoolValue; hSbFixEnabled.BoolValue = false; } - } else if(StrEqual(troll.name, "Smart Charge")) { + } else if(StrEqual(name, "Smart Charge")) { if(pdata[victim].smartChargeActivator > 0) { ReplyToCommand(activator, "Target already has smart charge enabled"); return TE_Error; @@ -526,32 +539,36 @@ TrollEffectResponse ApplyAffect(int victim, const Troll troll, int activator, tr pdata[victim].smartChargeMaxAttempts = timeout; pdata[victim].smartChargeActivator = GetClientUserId(activator); CreateTimer(1.0, Timer_CheckForChargerOpportunity, GetClientUserId(victim), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); - } else if(StrEqual(troll.name, "No Rushing Us")) { + } else if(StrEqual(name, "No Rushing Us")) { SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 1.0); - } else if(StrEqual(troll.name, "Hide HUD")) { + } else if(StrEqual(name, "Hide HUD")) { if(toActive) HideHUDRandom(victim); else SetEntProp(victim, Prop_Send, "m_iHideHUD", 0); - } else if(StrEqual(troll.name, "Meta: Random")) { - int rndTroll = GetRandomInt(0, MAX_TROLLS); + } else if(StrEqual(name, "Rewind")) { + if(modifier & TrollMod_Instant) { + RewindPlayer(victim); + } + } else if(StrEqual(name, "Meta: Random")) { + Troll rndTroll = Troll(GetRandomInt(0, MAX_TROLLS)); int rndFlags = 0; - int maxFlags = Trolls[rndTroll].GetFlagCount(); + int maxFlags = rndTroll.TotalOptionsCount; int numFlags = GetRandomInt(0, maxFlags); while(numFlags > 0) { // Apply a random flag rndFlags |= GetRandomInt(0, maxFlags) numFlags--; } - trollModifier rndMod = Trolls[rndTroll].GetDefaultMod(); - if(Trolls[rndTroll].HasMod(TrollMod_Constant) && GetURandomFloat() > 0.5) { + trollModifier rndMod = rndTroll.GetDefaultMod(); + if(rndTroll.HasMod(TrollMod_Constant) && GetURandomFloat() > 0.5) { rndMod = TrollMod_Instant; - } else if(Trolls[rndTroll].HasMod(TrollMod_Instant) && GetURandomFloat() > 0.5) { + } else if(rndTroll.HasMod(TrollMod_Instant) && GetURandomFloat() > 0.5) { rndMod = TrollMod_Constant; } - Trolls[rndTroll].Activate(victim, activator, rndMod, rndFlags); + rndTroll.Activate(victim, activator, rndMod, rndFlags); } else if(~modifier & TrollMod_Constant) { - PrintToServer("[FTT] Warn: Possibly invalid troll, no apply action defined for \"%s\"", troll.name); + PrintToServer("[FTT] Warn: Possibly invalid troll, no apply action defined for \"%s\"", name); #if defined DEBUG ReplyToCommand(activator, "[FTT/Debug] If nothing occurs, this troll possibly was not implemented correctly. "); #endif diff --git a/scripting/include/ftt.inc b/scripting/include/ftt.inc index 7242a69..6ba9cd2 100644 --- a/scripting/include/ftt.inc +++ b/scripting/include/ftt.inc @@ -11,6 +11,8 @@ enum L4D2Infected L4D2Infected_Tank = 8 }; +bool g_actionsAvailable; + GlobalForward g_PlayerMarkedForward; GlobalForward g_TrollAppliedForward; Handle g_hWitchAttack; diff --git a/scripting/l4d2_feedthetrolls.sp b/scripting/l4d2_feedthetrolls.sp index b4bea0b..92fd432 100644 --- a/scripting/l4d2_feedthetrolls.sp +++ b/scripting/l4d2_feedthetrolls.sp @@ -10,13 +10,16 @@ #include #include #include -#include #include +#include +#undef REQUIRE_PLUGIN #tryinclude +#undef REQUIRE_PLUGIN #tryinclude #include #include #include +#undef REQUIRE_PLUGIN #tryinclude public Plugin myinfo = @@ -32,7 +35,20 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max CreateNative("ApplyTroll", Native_ApplyTroll); return APLRes_Success; } - +public void OnLibraryAdded(const char[] name) { + if(StrEqual(name, "actionslib")) { + g_actionsAvailable = true; + } +} +public void OnLibraryRemoved(const char[] name) { + if(StrEqual(name, "actionslib")) { + g_actionsAvailable = false; + } +} +public void OnAllPluginsLoaded() { + g_actionsAvailable = LibraryExists("actionslib"); +} + public void OnPluginStart() { EngineVersion g_Game = GetEngineVersion(); @@ -47,7 +63,6 @@ public void OnPluginStart() { // Load core things (trolls & phrases): REPLACEMENT_PHRASES = new StringMap(); - TYPOS_DICT = new StringMap(); LoadPhrases(); LoadTypos(); SetupTrolls(); @@ -102,9 +117,11 @@ public void OnPluginStart() { RegAdminCmd("sm_rff", Command_SetReverseFF, ADMFLAG_KICK, "Set reverse FF on player"); RegAdminCmd("sm_magnet", Command_SetMagnetShortcut, ADMFLAG_KICK, ""); RegAdminCmd("sm_csplat", Command_CarSplat, ADMFLAG_KICK, ""); + RegAdminCmd("sm_typo", Command_AddTypo, ADMFLAG_GENERIC); HookEvent("player_spawn", Event_PlayerSpawn); HookEvent("player_first_spawn", Event_PlayerFirstSpawn); + HookEvent("player_disconnect", Event_PlayerDisconnect); HookEvent("player_death", Event_PlayerDeath); HookEvent("triggered_car_alarm", Event_CarAlarm); HookEvent("witch_harasser_set", Event_WitchVictimSet); @@ -198,6 +215,7 @@ bool IsPlayerFarDistance(int client, float distance) { return client == farthestClient && difference > distance; } +#if defined _actions_included BehaviorAction CreateWitchAttackAction(int target = 0) { BehaviorAction action = ActionsManager.Allocate(18556); SDKCall(g_hWitchAttack, action, target); @@ -211,6 +229,7 @@ Action OnWitchActionUpdate(BehaviorAction action, int actor, float interval, Act result.SetReason("FTT"); return Plugin_Handled; } +#endif void HideHUD(int victim, float timeout = 0.0) { SetEntProp(victim, Prop_Send, "m_iHideHUD", 64);