sourcemod-plugins/scripting/include/feedthetrolls/combos.inc
2024-03-06 17:59:55 -06:00

101 lines
No EOL
3.2 KiB
SourcePawn

ArrayList combos;
enum struct SpecifiedTroll {
int id;
trollModifier mod;
int flags;
}
enum struct TrollComboData {
char name[32];
ArrayList trolls;
bool AddTroll(const char[] name, int flags = 0, trollModifier mod = TrollMod_Invalid) {
Troll instance;
if(!Troll.TryFromName(name, instance)) {
PrintToServer("[FTT] Combo \"%s\": unknown troll named \"%s\"", this.name, name);
return false;
}
if(mod == TrollMod_Invalid) mod = instance.GetDefaultMod();
SpecifiedTroll troll;
troll.id = instance.Id;
troll.mod = mod;
troll.flags = flags;
this.trolls.PushArray(troll, sizeof(troll));
return true;
}
void Activate(int client, int target) {
PrintToServer("Applying %d trolls for combo %s for %N", this.trolls.Length, this.name, target);
SpecifiedTroll troll;
for(int i = 0; i < this.trolls.Length; i++) {
this.trolls.GetArray(i, troll, sizeof(troll));
Troll(troll.id).Activate(client, target, troll.mod, troll.flags);
}
}
}
void SetupCombo(TrollComboData combo, const char[] name) {
strcopy(combo.name, sizeof(combo.name), name);
combo.trolls = new ArrayList(sizeof(SpecifiedTroll));
combos.PushArray(combo, sizeof(combo));
}
void SetupsTrollCombos() {
combos = new ArrayList(sizeof(TrollComboData));
TrollComboData combo;
SetupCombo(combo, "Magnet Galore");
combo.AddTroll("Special Magnet");
combo.AddTroll("Tank Magnet");
#if defined _behavior_included
combo.AddTroll("Witch Magnet");
#endif
SetupCombo(combo, "Rush Stopper");
combo.AddTroll("Special Magnet");
combo.AddTroll("Tank Magnet");
#if defined _behavior_included
combo.AddTroll("Witch Magnet");
#endif
combo.AddTroll("No Button Touchie", 17, TrollMod_Constant);
combo.AddTroll("Slow Speed", 2, TrollMod_Constant);
combo.AddTroll("Instant Commons", 1, TrollMod_Instant);
// combo.AddTroll("Swarm", TrollMod_Instant);
combo.AddTroll("Vomit Player");
combo.AddTroll("Dull Melee", .flags=2);
SetupCombo(combo, "Tank Run Noob");
combo.AddTroll("Slow Speed");
combo.AddTroll("Tank Magnet");
SetupCombo(combo, "Nuclear");
combo.AddTroll("Slow Speed");
combo.AddTroll("Special Magnet", .flags=1);
combo.AddTroll("Tank Magnet", .flags=1);
#if defined _behavior_included
combo.AddTroll("Witch Magnet");
#endif
combo.AddTroll("Reverse FF", .flags=2);
combo.AddTroll("Vomit Player");
SetupCombo(combo, "No more survival");
combo.AddTroll("No Pickup", .flags = 8)
combo.AddTroll("Throw It All", .flags = 1)
SetupCombo(combo, "Shut up");
combo.AddTroll("Vocalize Gag");
combo.AddTroll("Honk & Animal Sounds", .flags=1);
SetupCombo(combo, "Weakness Compels You");
combo.AddTroll("No Shove");
combo.AddTroll("Dull Melee", .flags=2);
combo.AddTroll("Temp Health Quick Drain");
SetupCombo(combo, "Blindness");
combo.AddTroll("Vomit Player", 0, TrollMod_Constant);
combo.AddTroll("Shakey Camera", .flags=16);
combo.AddTroll("Randomize Angles", .flags=16);
PrintToServer("[FTT] Loaded %d troll combos", combos.Length);
}