/* * CSB Furien Mod * Copyright (C) 2026 counter-strike-boost.com * * A Furien mod core. Furiens (Terrorists) get a knife only, high speed, low * gravity, multi-jump and partial invisibility; Anti-Furiens (CTs) keep full * weapons and a flashlight. Every attribute is a cvar, loadouts are applied on * spawn, multi-jump is handled in PlayerPreThink, and a HUD shows how many of * each side are still alive. * * Inspired by Furien Mod by Askhanar. Independent GPL re-implementation. * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. It is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See for details. */ #include #include #include #include new const PLUGIN[] = "CSB Furien Mod" new const VERSION[] = "1.0.0" new const AUTHOR[] = "counter-strike-boost.com" new g_pEnabled, g_pSpeed, g_pGravity, g_pMaxJumps, g_pInvis, g_pHealth new g_iJumps[33] new bool:g_bDidJump[33] new g_iHudSync public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_pEnabled = register_cvar("csb_furien_enabled", "1") g_pSpeed = register_cvar("csb_furien_speed", "320.0") g_pGravity = register_cvar("csb_furien_gravity", "0.5") g_pMaxJumps = register_cvar("csb_furien_maxjumps", "2") g_pInvis = register_cvar("csb_furien_invis", "120") g_pHealth = register_cvar("csb_furien_hp", "150") RegisterHam(Ham_Spawn, "player", "fwSpawnPost", 1) register_forward(FM_PlayerPreThink, "fwPreThink") g_iHudSync = CreateHudSyncObj() set_task(1.0, "taskHud", 0, _, _, "b") } public fwSpawnPost(id) { if (!get_pcvar_num(g_pEnabled) || !is_user_alive(id)) return new team = get_user_team(id) if (team == 1) applyFurien(id) else if (team == 2) applyAntiFurien(id) } applyFurien(id) { strip_user_weapons(id) give_item(id, "weapon_knife") set_user_health(id, get_pcvar_num(g_pHealth)) set_user_maxspeed(id, get_pcvar_float(g_pSpeed)) set_user_gravity(id, get_pcvar_float(g_pGravity)) /* partial invisibility */ new alpha = get_pcvar_num(g_pInvis) if (alpha < 0) alpha = 0 else if (alpha > 255) alpha = 255 set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, alpha) g_iJumps[id] = 0 client_print(id, print_chat, "[CSB] You are a Furien: knife, speed, low gravity and multi-jump.") } applyAntiFurien(id) { set_user_gravity(id, 1.0) set_user_maxspeed(id, 250.0) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0) /* flashlight ready */ set_user_footsteps(id, 0) client_print(id, print_chat, "[CSB] You are an Anti-Furien: full weapons. Hunt the Furiens.") } public fwPreThink(id) { if (!get_pcvar_num(g_pEnabled) || !is_user_alive(id)) return if (get_user_team(id) != 1) return new flags = pev(id, pev_flags) if (flags & FL_ONGROUND) { g_iJumps[id] = 0 g_bDidJump[id] = false return } new button = pev(id, pev_button) new oldbutton = pev(id, pev_oldbuttons) new maxJumps = get_pcvar_num(g_pMaxJumps) if ((button & IN_JUMP) && !(oldbutton & IN_JUMP) && g_iJumps[id] < maxJumps) { static Float:fVel[3] pev(id, pev_velocity, fVel) fVel[2] = 265.0 set_pev(id, pev_velocity, fVel) g_iJumps[id]++ } } public taskHud() { if (!get_pcvar_num(g_pEnabled)) return new fur = 0, anti = 0 new players[32], num get_players(players, num, "ae") for (new i = 0; i < num; i++) { if (get_user_team(players[i]) == 1) fur++ else if (get_user_team(players[i]) == 2) anti++ } set_hudmessage(255, 80, 80, 0.02, 0.06, 0, 0.0, 1.1, 0.0, 0.0, -1) ShowSyncHudMsg(0, g_iHudSync, "Furiens: %d Anti-Furiens: %d", fur, anti) }