Skip to content

Commit

Permalink
2.0 (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
Katsute committed Aug 17, 2024
1 parent 4848f1b commit 7118a72
Show file tree
Hide file tree
Showing 5 changed files with 233 additions and 52 deletions.
31 changes: 5 additions & 26 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,8 @@ jobs:
url: https://raw.githubusercontent.com/KatsuteTF/RRM/main/addons/sourcemod/include/rrm.inc
file: rrm.inc

- name: Compile Plugin
run: |
spcomp -i ./ rrm_attribute_clip.sp
spcomp -i ./ rrm_attribute_firing.sp
spcomp -i ./ rrm_attribute_projectile.sp
spcomp -i ./ rrm_attribute_spread.sp
spcomp -i ./ rrm_bleed.sp
spcomp -i ./ rrm_charge.sp
spcomp -i ./ rrm_explode.sp
spcomp -i ./ rrm_fire.sp
spcomp -i ./ rrm_friendly.sp
spcomp -i ./ rrm_jarate.sp
spcomp -i ./ rrm_marked.sp
spcomp -i ./ rrm_medieval.sp
spcomp -i ./ rrm_milk.sp
spcomp -i ./ rrm_powerup_agility.sp
spcomp -i ./ rrm_powerup_haste.sp
spcomp -i ./ rrm_powerup_plague.sp
spcomp -i ./ rrm_powerup_precision.sp
spcomp -i ./ rrm_powerup_resistance.sp
spcomp -i ./ rrm_powerup_strength.sp
spcomp -i ./ rrm_powerup_vampire.sp
spcomp -i ./ rrm_resize.sp
spcomp -i ./ rrm_skeletons.sp
spcomp -i ./ rrm_stun.sp
spcomp -i ./ rrm_taunt.sp
- name: Compile Plugins
run: |-
for file in *.sp; do
spcomp -i ./ "$file"
done
31 changes: 5 additions & 26 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,32 +26,11 @@ jobs:
url: https://raw.githubusercontent.com/KatsuteTF/RRM/main/addons/sourcemod/include/rrm.inc
file: rrm.inc

- name: Compile Plugin
run: |
spcomp -i ./ rrm_attribute_clip.sp
spcomp -i ./ rrm_attribute_firing.sp
spcomp -i ./ rrm_attribute_projectile.sp
spcomp -i ./ rrm_attribute_spread.sp
spcomp -i ./ rrm_bleed.sp
spcomp -i ./ rrm_charge.sp
spcomp -i ./ rrm_explode.sp
spcomp -i ./ rrm_fire.sp
spcomp -i ./ rrm_friendly.sp
spcomp -i ./ rrm_jarate.sp
spcomp -i ./ rrm_marked.sp
spcomp -i ./ rrm_medieval.sp
spcomp -i ./ rrm_milk.sp
spcomp -i ./ rrm_powerup_agility.sp
spcomp -i ./ rrm_powerup_haste.sp
spcomp -i ./ rrm_powerup_plague.sp
spcomp -i ./ rrm_powerup_precision.sp
spcomp -i ./ rrm_powerup_resistance.sp
spcomp -i ./ rrm_powerup_strength.sp
spcomp -i ./ rrm_powerup_vampire.sp
spcomp -i ./ rrm_resize.sp
spcomp -i ./ rrm_skeletons.sp
spcomp -i ./ rrm_stun.sp
spcomp -i ./ rrm_taunt.sp
- name: Compile Plugins
run: |-
for file in *.sp; do
spcomp -i ./ "$file"
done
- name: Deploy to GitHub Releases
uses: AButler/upload-release-assets@v2.0.2
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Additional modifiers for the [RRM](https://forums.alliedmods.net/showthread.php?
|`rrm_attribute_clip_min`|`0.5`|Min clip size|
|`rrm_attribute_clip_max`|`4.0`|Max clip size|
|`rrm_attribute_clip_delay`|`1.2`|Attribute delay|
|`rrm_attribute_crit_duration`|`5`|Crit duration|
|`rrm_attribute_crit_delay`|`1.2`|Attribute delay|
|`rrm_attribute_firing_min`|`0.5`|Min firing speed|
|`rrm_attribute_firing_max`|`4.0`|Max firing speed|
|`rrm_attribute_firing_delay`|`1.2`|Attribute delay|
Expand All @@ -27,6 +29,8 @@ Additional modifiers for the [RRM](https://forums.alliedmods.net/showthread.php?
|`rrm_fire_min`|`0.1`|Min fire chance|
|`rrm_fire_max`|`1.0`|Max fire chance|
|`rrm_fire_duration`|`3.0`|Fire duration|
|`rrm_friction_min`|`0`|Min friction|
|`rrm_friction_max`|`1.0`|Max friction|
|`rrm_jarate_min`|`0.1`|Min jarate chance|
|`rrm_jarate_max`|`1.0`|Max jarate chance|
|`rrm_jarate_duration`|`3.0`|Jarate duration|
Expand Down
127 changes: 127 additions & 0 deletions rrm_attribute_crit.sp
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
// Copyright (C) 2024 Katsute | Licensed under CC BY-NC-SA 4.0

#pragma semicolon 1

#define RRM_VERSION "1.0"

#include <sourcemod>
#include <sdkhooks>
#include <tf2attributes>
#include <tf2>
#include <tf2_stocks>
#include <rrm>

#pragma newdecls required

int gEnabled = 0;
float gDur = 0.0;
ConVar cDur = null, cDelay = null;
float gDelay = 0.0;

public Plugin myinfo = {
name = "[RRM] critter Modifier",
author = "Katsute",
description = "Modifier that forces crit on kill.",
version = "1.0"
};

public void OnPluginStart(){
cDelay = CreateConVar("rrm_attribute_crit_delay", "1.2", "Delay to apply attribute.");
cDur = CreateConVar("rrm_attribute_crit_duration", "5", "How long to have crits.");

cDelay.AddChangeHook(OnConvarChanged);
cDur.AddChangeHook(OnConvarChanged);

gDelay = cDelay.FloatValue;
gDur = cDur.FloatValue;

HookEvent("post_inventory_application", PostInventoryApplication);

if(RRM_IsRegOpen())
RegisterModifiers();

AutoExecConfig(true, "rrm_attribute_crit", "rrm");
}

public int RRM_OnRegOpen(){
RegisterModifiers();
}

void RegisterModifiers(){
RRM_Register("Crit on Kill", 0.0, 0.0, false, RRM_Callback_Attribute);
}

public void OnConvarChanged(Handle convar, char[] oldValue, char[] newValue){
if (StrEqual(oldValue, newValue, true))
return;

float fNewValue = StringToFloat(newValue);

if(convar == cDelay)
gDelay = fNewValue;
else if(convar == cDur)
gDur = fNewValue;
}

public int RRM_Callback_Attribute(bool enable, float value){
gEnabled = enable;

for(int i = 1; i <= MaxClients; i++){
if(IsClientInGame(i)){
int health = GetClientHealth(i);
TF2_RemoveAllWeapons(i);
TF2_RegeneratePlayer(i);
SetEntityHealth(i, health < 1 ? 1 : health);
}
}
return gEnabled;
}

public void PostInventoryApplication(const Handle event, const char[] name, const bool dontBroadcast){
if(gEnabled){
int client = GetClientOfUserId(GetEventInt(event, "userid"));
CreateTimer(gDelay, PostInventoryApplicationDelayed, client, TIMER_FLAG_NO_MAPCHANGE);
}
}

public Action PostInventoryApplicationDelayed(const Handle timer, const int client){
if(gEnabled && IsClientInGame(client)){
int primary = GetPlayerWeaponSlot(client, 0);
int secondary = GetPlayerWeaponSlot(client, 1);
int melee = GetPlayerWeaponSlot(client, 2);

if(primary != -1 && TF2Attrib_GetByDefIndex(primary, 2050) == Address_Null){
ApplyPrimary(primary);
TF2Attrib_SetByDefIndex(primary, 2050, 1.0);
}
if(secondary != -1 && TF2Attrib_GetByDefIndex(secondary, 2050) == Address_Null){
ApplySecondary(secondary);
TF2Attrib_SetByDefIndex(secondary, 2050, 1.0);
}
if(melee != -1 && TF2Attrib_GetByDefIndex(melee, 2050) == Address_Null){
ApplyMelee(melee);
TF2Attrib_SetByDefIndex(melee, 2050, 1.0);
}
}
return Plugin_Continue;
}

public void ApplyAttribute(const int ent, const int attribute, const float value){
if(ent != -1 && IsValidEntity(ent)){
Address addr = TF2Attrib_GetByDefIndex(ent, attribute);
float current = addr != Address_Null ? TF2Attrib_GetValue(addr) : 1.0;
TF2Attrib_SetByDefIndex(ent, attribute, current * value);
}
}

public void ApplyPrimary(const int ent){
ApplyAttribute(ent, 31, gDur);
}

public void ApplySecondary(const int ent){
ApplyAttribute(ent, 31, gDur);
}

public void ApplyMelee(const int ent){
ApplyAttribute(ent, 31, gDur);
}
92 changes: 92 additions & 0 deletions rrm_friction.sp
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// Copyright (C) 2024 Katsute | Licensed under CC BY-NC-SA 4.0

#pragma semicolon 1

#define RRM_VERSION "1.0"

#include <sourcemod>
#include <sdkhooks>
#include <tf2attributes>
#include <tf2>
#include <tf2_stocks>
#include <rrm>

#pragma newdecls required

int gEnabled = 0;
float gMul = 0.0;
ConVar cMin = null, cMax = null;
float gMin = 0.0, gMax = 0.0;

public Plugin myinfo =
{
name = "[RRM] Friction Modifier",
author = "Katsute",
description = "Modifier changes friction.",
version = "1.0"
};

public void OnPluginStart()
{
cMin = CreateConVar("rrm_friction_min", "0.1", "Minimum value for the random number generator.");
cMax = CreateConVar("rrm_friction_max", "1.0", "Maximum value for the random number generator.");

cMin.AddChangeHook(OnConvarChanged);
cMax.AddChangeHook(OnConvarChanged);

gMin = cMin.FloatValue;
gMax = cMax.FloatValue;

if(RRM_IsRegOpen())
RegisterModifiers();

AutoExecConfig(true, "rrm_friction", "rrm");
}

public void OnPluginEnd()
{
DisableEffect();
}

public int RRM_OnRegOpen()
{
RegisterModifiers();
}

void RegisterModifiers()
{
RRM_Register("Friction", gMin, gMax, false, RRM_Callback_Effect);
}

public void OnConvarChanged(Handle convar, char[] oldValue, char[] newValue){
if (StrEqual(oldValue, newValue, true))
return;

float fNewValue = StringToFloat(newValue);

if(convar == cMin)
gMin = fNewValue;
else if(convar == cMax)
gMax = fNewValue;
}

public int RRM_Callback_Effect(bool enable, float value)
{
gEnabled = enable;
gMul = value;
if(gEnabled)
EnableEffect();
else
DisableEffect();
return enable;
}

void EnableEffect()
{
ServerCommand("sv_friction %f", 4 * gMul);
}

void DisableEffect()
{
ServerCommand("sv_friction 4");
}

0 comments on commit 7118a72

Please sign in to comment.