Push more misc files.
This commit is contained in:
parent
cad6ba6fec
commit
1f55c43bf3
23 changed files with 741 additions and 12 deletions
1
PROJECT
Normal file
1
PROJECT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
RadTherapy2
|
|
@ -1,5 +1,7 @@
|
||||||
CC=fteqcc
|
QCC=fteqcc
|
||||||
|
|
||||||
all:
|
all:
|
||||||
cd client && $(MAKE)
|
cd client && $(MAKE)
|
||||||
cd server && $(MAKE)
|
cd server && $(MAKE)
|
||||||
|
cd ../zpak001.pk3dir/maps/ && $(QCC) singleplayer.qc
|
||||||
|
cd ../zpak001.pk3dir/maps/mp/gametypes && $(QCC) dm.qc
|
||||||
|
|
|
@ -1,2 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2021 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../shared/defs.h"
|
||||||
|
#include "../../../valve/src/client/obituary.h"
|
||||||
|
#include "../../../valve/src/client/particles.h"
|
||||||
|
#include "../../../valve/src/client/hud_sprite.h"
|
||||||
|
#include "../../../valve/src/client/HLWeaponSelect.h"
|
||||||
|
|
||||||
|
var int autocvar_cl_autoweaponswitch = TRUE;
|
||||||
|
|
||||||
|
vector g_hud_color;
|
||||||
|
vector g_hudmins;
|
||||||
|
vector g_hudres;
|
||||||
|
|
||||||
|
var string g_hud1_spr;
|
||||||
|
var string g_hud2_spr;
|
||||||
|
var string g_hud3_spr;
|
||||||
|
var string g_hud4_spr;
|
||||||
|
var string g_hud5_spr;
|
||||||
|
var string g_hud6_spr;
|
||||||
|
var string g_hud7_spr;
|
||||||
|
var string g_cross_spr;
|
||||||
|
var string g_laser_spr;
|
||||||
|
|
||||||
|
/* muzzleflash indices */
|
||||||
|
var int MUZZLE_SMALL;
|
||||||
|
var int MUZZLE_RIFLE;
|
||||||
|
var int MUZZLE_WEIRD;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
/* hud.c */
|
||||||
|
int m_iHealthOld;
|
||||||
|
float m_flHealthAlpha;
|
||||||
|
int m_iArmorOld;
|
||||||
|
float m_flArmorAlpha;
|
||||||
|
int m_iAmmo1Old;
|
||||||
|
float m_flAmmo1Alpha;
|
||||||
|
int m_iAmmo2Old;
|
||||||
|
float m_flAmmo2Alpha;
|
||||||
|
int m_iAmmo3Old;
|
||||||
|
float m_flAmmo3Alpha;
|
||||||
|
int m_iPickupWeapon;
|
||||||
|
float m_flPickupAlpha;
|
||||||
|
int m_iHUDWeaponSelected;
|
||||||
|
float m_flHUDWeaponSelectTime;
|
||||||
|
int m_iItemsOld;
|
||||||
|
|
||||||
|
float m_flDamageIndicator;
|
||||||
|
float m_flTitleAlpha;
|
||||||
|
|
||||||
|
HLWeaponSelect weaponSelectionHUD;
|
||||||
|
} g_seatslocal[4], *pSeatLocal;
|
||||||
|
|
||||||
|
void HUD_DrawAmmo1(void);
|
||||||
|
void HUD_DrawAmmo2(void);
|
||||||
|
void HUD_DrawAmmo3(void);
|
||||||
|
void HUD_DrawAmmoBar(vector pos, float val, float max, float a);
|
||||||
|
void HUD_WeaponPickupNotify(int);
|
||||||
|
|
||||||
font_s FONT_HUD_CROSS;
|
font_s FONT_HUD_CROSS;
|
|
@ -11,7 +11,6 @@
|
||||||
../../../src/shared/fteextensions.qc
|
../../../src/shared/fteextensions.qc
|
||||||
../../../src/shared/defs.h
|
../../../src/shared/defs.h
|
||||||
../../../src/client/defs.h
|
../../../src/client/defs.h
|
||||||
../../../valve/src/client/defs.h
|
|
||||||
../../../hl2/src/client/defs.h
|
../../../hl2/src/client/defs.h
|
||||||
../../../src/vgui/include.src
|
../../../src/vgui/include.src
|
||||||
../../../src/gs-entbase/client.src
|
../../../src/gs-entbase/client.src
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "../shared/defs.h"
|
||||||
#include "../../../valve/src/server/gamerules.h"
|
#include "../../../valve/src/server/gamerules.h"
|
||||||
#include "../../../valve/src/server/items.h"
|
#include "../../../valve/src/server/items.h"
|
||||||
#include "../../../valve/src/server/flashlight.h"
|
#include "../../../valve/src/server/flashlight.h"
|
||||||
|
|
104
src/server/item_battery.qc
Normal file
104
src/server/item_battery.qc
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*QUAKED item_battery (0 0 0.8) (-16 -16 0) (16 16 36)
|
||||||
|
|
||||||
|
HALF-LIFE (1998) ENTITY
|
||||||
|
|
||||||
|
HEV Suit energy battery.
|
||||||
|
It adds the following energy values to the HEV Suit by default:
|
||||||
|
Skill 1 (Easy): 15
|
||||||
|
Skill 2 (Medium): 15
|
||||||
|
Skill 3 (Hard): 10
|
||||||
|
|
||||||
|
The values can be tweaked in the skill.cfg file.
|
||||||
|
|
||||||
|
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
|
||||||
|
model="models/w_battery.mdl"
|
||||||
|
*/
|
||||||
|
class item_battery:NSRenderableEntity
|
||||||
|
{
|
||||||
|
void(void) item_battery;
|
||||||
|
|
||||||
|
virtual void(void) Spawned;
|
||||||
|
virtual void(void) Respawn;
|
||||||
|
virtual void(entity) Touch;
|
||||||
|
};
|
||||||
|
|
||||||
|
void item_battery::Touch(entity eToucher)
|
||||||
|
{
|
||||||
|
if (eToucher.classname != "player") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSClientPlayer pl = (NSClientPlayer)eToucher;
|
||||||
|
|
||||||
|
/* don't pick up if we don't have a suit */
|
||||||
|
if (!(pl.g_items & ITEM_SUIT))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* maxxed out */
|
||||||
|
if (pl.armor >= 100) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Move this somewhere else? */
|
||||||
|
pl.armor += Skill_GetValue("battery", 15);
|
||||||
|
if (pl.armor > 100) {
|
||||||
|
pl.armor = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logging_Pickup(eToucher, this, __NULL__);
|
||||||
|
Sound_Play(eToucher, CHAN_ITEM, "item.battery");
|
||||||
|
|
||||||
|
if (real_owner || cvar("sv_playerslots") == 1) {
|
||||||
|
Destroy();
|
||||||
|
} else {
|
||||||
|
Disappear();
|
||||||
|
ScheduleThink(Respawn, 30.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void item_battery::Respawn(void)
|
||||||
|
{
|
||||||
|
SetSolid(SOLID_TRIGGER);
|
||||||
|
SetMovetype(MOVETYPE_TOSS);
|
||||||
|
SetOrigin(GetSpawnOrigin());
|
||||||
|
SetModel(GetSpawnModel());
|
||||||
|
SetSize([-16,-16,0],[16,16,16]);
|
||||||
|
botinfo = BOTINFO_ARMOR;
|
||||||
|
|
||||||
|
ReleaseThink();
|
||||||
|
|
||||||
|
if (!real_owner && time > 30.0f)
|
||||||
|
Sound_Play(this, CHAN_ITEM, "item.respawn");
|
||||||
|
|
||||||
|
DropToFloor();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_battery::Spawned(void)
|
||||||
|
{
|
||||||
|
super::Spawned();
|
||||||
|
|
||||||
|
Sound_Precache("item.battery");
|
||||||
|
Sound_Precache("item.respawn");
|
||||||
|
}
|
||||||
|
|
||||||
|
void item_battery::item_battery(void)
|
||||||
|
{
|
||||||
|
model = "models/items/battery.mdl";
|
||||||
|
}
|
87
src/server/item_healthkit.qc
Normal file
87
src/server/item_healthkit.qc
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*QUAKED item_healthkit (0 0 0.8) (-16 -16 0) (16 16 36)
|
||||||
|
|
||||||
|
HALF-LIFE (1998) ENTITY
|
||||||
|
|
||||||
|
Healthkit item.
|
||||||
|
Adds 20 of health to the player.
|
||||||
|
|
||||||
|
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
|
||||||
|
model="models/w_medkit.mdl"
|
||||||
|
*/
|
||||||
|
class item_healthkit:NSRenderableEntity
|
||||||
|
{
|
||||||
|
void(void) item_healthkit;
|
||||||
|
|
||||||
|
virtual void(void) Spawned;
|
||||||
|
virtual void(void) Respawn;
|
||||||
|
virtual void(entity) Touch;
|
||||||
|
};
|
||||||
|
|
||||||
|
void item_healthkit::Touch(entity eToucher)
|
||||||
|
{
|
||||||
|
if (eToucher.classname != "player") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eToucher.health >= eToucher.max_health) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Damage_Apply(eToucher, this, -20, 0, DMG_GENERIC);
|
||||||
|
Sound_Play(this, CHAN_ITEM, "item.healthkit");
|
||||||
|
Logging_Pickup(eToucher, this, __NULL__);
|
||||||
|
|
||||||
|
if (real_owner || cvar("sv_playerslots") == 1) {
|
||||||
|
Destroy();
|
||||||
|
} else {
|
||||||
|
Disappear();
|
||||||
|
ScheduleThink(Respawn, 30.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void item_healthkit::Respawn(void)
|
||||||
|
{
|
||||||
|
SetSolid(SOLID_TRIGGER);
|
||||||
|
SetMovetype(MOVETYPE_TOSS);
|
||||||
|
SetOrigin(GetSpawnOrigin());
|
||||||
|
SetModel(GetSpawnModel());
|
||||||
|
SetSize([-16,-16,0],[16,16,16]);
|
||||||
|
botinfo = BOTINFO_HEALTH;
|
||||||
|
|
||||||
|
ReleaseThink();
|
||||||
|
|
||||||
|
if (!real_owner && time > 30.0f)
|
||||||
|
Sound_Play(this, CHAN_ITEM, "item.respawn");
|
||||||
|
|
||||||
|
DropToFloor();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_healthkit::Spawned(void)
|
||||||
|
{
|
||||||
|
super::Spawned();
|
||||||
|
|
||||||
|
Sound_Precache("item.healthkit");
|
||||||
|
Sound_Precache("item.respawn");
|
||||||
|
}
|
||||||
|
|
||||||
|
void item_healthkit::item_healthkit(void)
|
||||||
|
{
|
||||||
|
model = "models/items/healthkit.mdl";
|
||||||
|
}
|
127
src/server/item_suit.qc
Normal file
127
src/server/item_suit.qc
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*QUAKED item_suit (0 0 0.8) (-16 -16 0) (16 16 36) SUIT_LONGINTRO
|
||||||
|
|
||||||
|
HALF-LIFE (1998) ENTITY
|
||||||
|
|
||||||
|
HEV Suit
|
||||||
|
Provides the player with armor, a flashlight and a Heads-Up-Display.
|
||||||
|
|
||||||
|
When SUIT_LONGINTRO is set, the intro dialog will be longer.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
class item_suit:NSRenderableEntity
|
||||||
|
{
|
||||||
|
string m_strOnPlayerTouch;
|
||||||
|
|
||||||
|
void(void) item_suit;
|
||||||
|
|
||||||
|
virtual void(void) Spawned;
|
||||||
|
virtual void(entity) Touch;
|
||||||
|
virtual void(void) Respawn;
|
||||||
|
virtual void(string, string) SpawnKey;
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
item_suit::Touch(entity eToucher)
|
||||||
|
{
|
||||||
|
if (other.classname != "player") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player pl = (player)other;
|
||||||
|
if (pl.g_items & ITEM_SUIT) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logging_Pickup(other, this, __NULL__);
|
||||||
|
sound(other, CHAN_ITEM, "fvox/bell.wav", 1, ATTN_NORM);
|
||||||
|
sound(other, CHAN_VOICE, "fvox/hev_logon.wav", 1, ATTN_NORM);
|
||||||
|
pl.g_items |= ITEM_SUIT;
|
||||||
|
m_iValue = TRUE;
|
||||||
|
|
||||||
|
if (!target) {
|
||||||
|
UseOutput(other, m_strOnPlayerTouch);
|
||||||
|
} else {
|
||||||
|
UseTargets(other, TRIG_TOGGLE, m_flDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (real_owner || cvar("sv_playerslots") == 1) {
|
||||||
|
Destroy();
|
||||||
|
} else {
|
||||||
|
Disappear();
|
||||||
|
ScheduleThink(Respawn, 30.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_suit::Respawn(void)
|
||||||
|
{
|
||||||
|
if (cvar_string("fs_game") == "bshift") {
|
||||||
|
Destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetSolid(SOLID_TRIGGER);
|
||||||
|
SetMovetype(MOVETYPE_TOSS);
|
||||||
|
SetOrigin(GetSpawnOrigin());
|
||||||
|
SetModel(GetSpawnModel());
|
||||||
|
SetSize(VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]);
|
||||||
|
m_iValue = FALSE;
|
||||||
|
|
||||||
|
ReleaseThink();
|
||||||
|
|
||||||
|
if (!real_owner && time > 30.0f)
|
||||||
|
Sound_Play(this, CHAN_ITEM, "item.respawn");
|
||||||
|
|
||||||
|
DropToFloor();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_suit::SpawnKey(string strKey, string strValue)
|
||||||
|
{
|
||||||
|
switch (strKey) {
|
||||||
|
case "OnPlayerTouch":
|
||||||
|
strValue = strreplace(",", ",_", strValue);
|
||||||
|
m_strOnPlayerTouch = strcat(m_strOnPlayerTouch, ",_", strValue);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
super::SpawnKey(strKey, strValue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_suit::Spawned(void)
|
||||||
|
{
|
||||||
|
super::Spawned();
|
||||||
|
|
||||||
|
precache_sound("items/suitchargeok1.wav");
|
||||||
|
precache_sound("fvox/hev_logon.wav");
|
||||||
|
precache_sound("fvox/bell.wav");
|
||||||
|
Sound_Precache("item.respawn");
|
||||||
|
|
||||||
|
if (m_strOnPlayerTouch)
|
||||||
|
m_strOnPlayerTouch = CreateOutput(m_strOnPlayerTouch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
item_suit::item_suit(void)
|
||||||
|
{
|
||||||
|
model = "models/items/hevsuit.mdl";
|
||||||
|
}
|
|
@ -15,7 +15,7 @@
|
||||||
../../../src/botlib/botinfo.h
|
../../../src/botlib/botinfo.h
|
||||||
../../../src/gs-entbase/server.src
|
../../../src/gs-entbase/server.src
|
||||||
../../../src/gs-entbase/shared.src
|
../../../src/gs-entbase/shared.src
|
||||||
../../../valve/src/server/defs.h
|
../../../hl2/src/server/defs.h
|
||||||
../shared/include.src
|
../shared/include.src
|
||||||
../../../valve/src/server/player.qc
|
../../../valve/src/server/player.qc
|
||||||
../../../valve/src/server/HLScientist.qc
|
../../../valve/src/server/HLScientist.qc
|
||||||
|
|
63
src/shared/HL2Weapon.h
Normal file
63
src/shared/HL2Weapon.h
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! \brief Half-Life weapon base class. */
|
||||||
|
/*!QUAKED HLWeapon (0 0.8 0.8) (-16 -16 0) (16 16 72)
|
||||||
|
# OVERVIEW
|
||||||
|
Half-Life specific weapon based on NSWeapon.
|
||||||
|
|
||||||
|
# NEW KEYS
|
||||||
|
- "ammoIcon" - Which sprites/ image to use. See notes.
|
||||||
|
- "crosshair" - Which sprites/ image to use as a crosshair. See notes.
|
||||||
|
- "hudSlot" - In which weapon selection slot this weapon belongs to.
|
||||||
|
- "hudSlotPos" - The position of the weapon in the respective weapon selection slot.
|
||||||
|
|
||||||
|
# NOTES
|
||||||
|
Both `ammoIcon` and `crosshair` refer to sprite declarations inside the sprites/ directory. FreeHL scans the `sprites/hud.txt` file and and weapon specific files.
|
||||||
|
Since the weapon specific files only contain short names like `ammo` and `crosshair` you have to refer to them with a prefix separated by a `.` period symbol.
|
||||||
|
|
||||||
|
For example, `ammoIcon` being set to `weapon_foobar.ammo` will look up `ammo` inside `sprites/weapon_foobar.txt`.
|
||||||
|
*/
|
||||||
|
class
|
||||||
|
HLWeapon:NSWeapon
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void HLWeapon(void);
|
||||||
|
|
||||||
|
virtual void AddedToInventory(void);
|
||||||
|
|
||||||
|
#ifdef SERVER
|
||||||
|
virtual void SpawnKey(string, string);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CLIENT
|
||||||
|
virtual void UpdateGUI(void);
|
||||||
|
nonvirtual void DrawLaser(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
#ifdef CLIENT
|
||||||
|
int m_iHudSlot;
|
||||||
|
int m_iHudSlotPos;
|
||||||
|
string m_ammoIcon;
|
||||||
|
string m_ammo2Icon;
|
||||||
|
string m_crossHair;
|
||||||
|
string m_icon;
|
||||||
|
string m_iconSel;
|
||||||
|
NSWeapon m_nextWeapon;
|
||||||
|
#endif
|
||||||
|
bool m_bAltModeLaser;
|
||||||
|
};
|
192
src/shared/HL2Weapon.qc
Normal file
192
src/shared/HL2Weapon.qc
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
HLWeapon::HLWeapon(void)
|
||||||
|
{
|
||||||
|
#ifdef CLIENT
|
||||||
|
m_iHudSlot = 0i;
|
||||||
|
m_iHudSlotPos = 0i;
|
||||||
|
m_ammoIcon = __NULL__;
|
||||||
|
m_ammo2Icon = __NULL__;
|
||||||
|
m_crossHair = __NULL__;
|
||||||
|
m_nextWeapon = __NULL__;
|
||||||
|
#endif
|
||||||
|
m_bAltModeLaser = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SERVER
|
||||||
|
void
|
||||||
|
HLWeapon::SpawnKey(string keyName, string setValue)
|
||||||
|
{
|
||||||
|
switch (keyName) {
|
||||||
|
default:
|
||||||
|
super::SpawnKey(keyName, setValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void
|
||||||
|
HLWeapon::AddedToInventory(void)
|
||||||
|
{
|
||||||
|
super::AddedToInventory();
|
||||||
|
|
||||||
|
#ifdef CLIENT
|
||||||
|
m_ammoIcon = GetDefString("ammoIcon");
|
||||||
|
|
||||||
|
if (m_ammoIcon == "") {
|
||||||
|
m_ammoIcon = sprintf("%s.ammo", strtolower(classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_ammo2Icon = GetDefString("ammoIcon");
|
||||||
|
|
||||||
|
if (m_ammo2Icon == "") {
|
||||||
|
m_ammo2Icon = sprintf("%s.ammo2", strtolower(classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_crossHair = GetDefString("crosshair");
|
||||||
|
|
||||||
|
if (m_crossHair == "") {
|
||||||
|
m_crossHair = sprintf("%s.crosshair", strtolower(classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_icon = GetDefString("icon");
|
||||||
|
|
||||||
|
if (m_icon == "") {
|
||||||
|
m_icon = sprintf("%s.weapon", strtolower(classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_iconSel = GetDefString("iconSelected");
|
||||||
|
|
||||||
|
if (m_iconSel == "") {
|
||||||
|
m_iconSel = sprintf("%s.weapon_s", strtolower(classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ammoIcon == "none") {
|
||||||
|
m_ammoIcon = __NULL__;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ammo2Icon == "none") {
|
||||||
|
m_ammo2Icon = __NULL__;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_crossHair == "none") {
|
||||||
|
m_crossHair = __NULL__;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_icon == "none") {
|
||||||
|
m_icon = __NULL__;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_iconSel == "none") {
|
||||||
|
m_iconSel = __NULL__;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
m_iHudSlot = GetDefInt("hudSlot");
|
||||||
|
m_iHudSlotPos = GetDefInt("hudSlotPos");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_bAltModeLaser = GetDefBool("laser");
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CLIENT
|
||||||
|
void
|
||||||
|
HLWeapon::UpdateGUI(void)
|
||||||
|
{
|
||||||
|
NSClientPlayer ourOwner = __NULL__;
|
||||||
|
vector ammoPos;
|
||||||
|
|
||||||
|
/* draw crosshair */
|
||||||
|
//HLSprite_DrawCrosshair(m_crossHair);
|
||||||
|
|
||||||
|
if (m_bAltModeLaser) {
|
||||||
|
DrawLaser();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
vector vSize = [540,16];
|
||||||
|
vector vMainPos;
|
||||||
|
float progress;
|
||||||
|
|
||||||
|
progress = (m_flOverheating / m_fiOverheatLength);
|
||||||
|
|
||||||
|
if (progress > 1.0) {
|
||||||
|
progress = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_fiOverheatLength && progress > 0) {
|
||||||
|
vMainPos = g_hudmins;
|
||||||
|
vMainPos[0] += (g_hudres[0] / 2) - (vSize[0] / 2);
|
||||||
|
vMainPos[1] += (g_hudres[1] / 2) - (vSize[1] / 2);
|
||||||
|
|
||||||
|
vector vBar = vSize;
|
||||||
|
vBar[0] = 538 * progress;
|
||||||
|
vBar[1] = 14;
|
||||||
|
drawfill(vMainPos + [1,1], vBar, g_hud_color, 1.0, DRAWFLAG_ADDITIVE);
|
||||||
|
drawfill(vMainPos, [vSize[0], 1], g_hud_color, 1.0f); // Top
|
||||||
|
drawfill([vMainPos[0], vMainPos[1] + vSize[1]], [vSize[0], 1], g_hud_color, 1.0f); // Bottom
|
||||||
|
drawfill(vMainPos, [1, vSize[1]], g_hud_color, 1.0f); // Left
|
||||||
|
drawfill([vMainPos[0] + vSize[0], vMainPos[1]], [1, vSize[1] + 1], g_hud_color, 1.0f); // Right
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (m_bAmmoRequired == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ourOwner = (NSClientPlayer)GetOwner();
|
||||||
|
|
||||||
|
if (m_iClipSize > 0i) {
|
||||||
|
ourOwner.a_ammo1 = m_iClip;
|
||||||
|
HUD_DrawAmmo1();
|
||||||
|
}
|
||||||
|
|
||||||
|
ourOwner.a_ammo2 = ourOwner.GetReserveAmmo(m_primaryAmmoType);
|
||||||
|
HUD_DrawAmmo2();
|
||||||
|
|
||||||
|
if (m_secondaryAmmoType && m_primaryAmmoType != m_secondaryAmmoType) {
|
||||||
|
ourOwner.a_ammo3 = ourOwner.GetReserveAmmo(m_secondaryAmmoType);
|
||||||
|
HUD_DrawAmmo3();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HLWeapon::DrawLaser(void)
|
||||||
|
{
|
||||||
|
NSClientPlayer ourOwner = (NSClientPlayer)GetOwner();
|
||||||
|
float lerpValue;
|
||||||
|
vector laser_pos = g_vec_null;
|
||||||
|
vector jitter = [0.0f, 0.0f, 0.0f];
|
||||||
|
|
||||||
|
vector src = ourOwner.GetEyePos();
|
||||||
|
traceline(src, src + (anglesToForward(ourOwner.v_angle) * 256), FALSE, ourOwner);
|
||||||
|
lerpValue = lerp(18,6, trace_fraction);
|
||||||
|
jitter[0] = (random(0,2) - 2) * (1 - trace_fraction);
|
||||||
|
jitter[1] = (random(0,2) - 2) * (1 - trace_fraction);
|
||||||
|
laser_pos = g_hudmins + (g_hudres / 2) + ([-lerpValue,-lerpValue] / 2);
|
||||||
|
|
||||||
|
drawsubpic(
|
||||||
|
laser_pos + jitter,
|
||||||
|
[lerpValue,lerpValue],
|
||||||
|
"materials/Sprites/redglow1",
|
||||||
|
[0,0],
|
||||||
|
[1.0, 1.0],
|
||||||
|
[1,1,1],
|
||||||
|
1.0f,
|
||||||
|
DRAWFLAG_ADDITIVE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#endif
|
1
src/shared/defs.h
Normal file
1
src/shared/defs.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "HL2Weapon.h"
|
|
@ -9,6 +9,6 @@
|
||||||
../../../valve/src/shared/fx_gaussbeam.qc
|
../../../valve/src/shared/fx_gaussbeam.qc
|
||||||
../../../valve/src/shared/fx_corpse.qc
|
../../../valve/src/shared/fx_corpse.qc
|
||||||
../../../valve/src/shared/HLGaussBeam.qc
|
../../../valve/src/shared/HLGaussBeam.qc
|
||||||
../../../valve/src/shared/HLWeapon.qc
|
../../../hl2/src/shared/HL2Weapon.qc
|
||||||
../../../valve/src/shared/w_tripmine.qc
|
../../../valve/src/shared/w_tripmine.qc
|
||||||
#endlist
|
#endlist
|
||||||
|
|
47
src/shared/pmove.qc
Normal file
47
src/shared/pmove.qc
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define PMOVE_AIRSTEPHEIGHT 0
|
||||||
|
#define PMOVE_STEPHEIGHT 18
|
||||||
|
#define PMOVE_FRICTION 4
|
||||||
|
#define PMOVE_EDGEFRICTION 1
|
||||||
|
#define PMOVE_STOPSPEED 100
|
||||||
|
#define PMOVE_GRAVITY 800
|
||||||
|
#define PMOVE_AIRACCELERATE 10
|
||||||
|
#define PMOVE_WATERACCELERATE 10
|
||||||
|
#define PMOVE_ACCELERATE 10
|
||||||
|
#define PMOVE_MAXSPEED 320
|
||||||
|
#define PMOVE_STEP_WALKSPEED 190
|
||||||
|
#define PMOVE_STEP_RUNSPEED 320
|
||||||
|
#define PHY_VIEWPOS [0,0,28]
|
||||||
|
#define PHY_VIEWPOS_CROUCHED [0,0,12]
|
||||||
|
|
||||||
|
void
|
||||||
|
player::Physics_Jump(void)
|
||||||
|
{
|
||||||
|
if (waterlevel >= 2) {
|
||||||
|
if (watertype == CONTENT_WATER) {
|
||||||
|
velocity[2] = 100;
|
||||||
|
} else if (watertype == CONTENT_SLIME) {
|
||||||
|
velocity[2] = 80;
|
||||||
|
} else {
|
||||||
|
velocity[2] = 50;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (flags & FL_ONGROUND)
|
||||||
|
velocity[2] += 265;
|
||||||
|
}
|
||||||
|
}
|
13
src/shared/prop_vehicle_jeep.qc
Normal file
13
src/shared/prop_vehicle_jeep.qc
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#ifdef SERVER
|
||||||
|
class prop_vehicle_jeep:prop_vehicle_driveable
|
||||||
|
{
|
||||||
|
void(void) prop_vehicle_jeep;
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
prop_vehicle_jeep::prop_vehicle_jeep(void)
|
||||||
|
{
|
||||||
|
m_vecSeatOffest = [0,0,0];
|
||||||
|
model = "models/buggy.mdl";
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -23,6 +23,10 @@ set bot_sidespeed "152" // Bots desired maximum strafe speed.
|
||||||
set bot_skill "2" // Bot version of cvar "skill".
|
set bot_skill "2" // Bot version of cvar "skill".
|
||||||
set bot_walk "0" // Bots are forced to walk slowly.
|
set bot_walk "0" // Bots are forced to walk slowly.
|
||||||
|
|
||||||
|
seta gl_conback "gfx/devcon"
|
||||||
|
seta con_textfont "fonts/IBMPlexMono-Text.otf?col=1,1,1"
|
||||||
|
seta con_textsize "14"
|
||||||
|
|
||||||
set cg_chatEnabled "1" // Enable the display of chat messages.
|
set cg_chatEnabled "1" // Enable the display of chat messages.
|
||||||
set cg_damageShake "0" // Shake the display upon taking damage.
|
set cg_damageShake "0" // Shake the display upon taking damage.
|
||||||
set cg_hudAspect "0" // Aspect ratio override for the HUD. 1.0 is 1:1 square, 0 is auto.
|
set cg_hudAspect "0" // Aspect ratio override for the HUD. 1.0 is 1:1 square, 0 is auto.
|
||||||
|
|
|
@ -12,8 +12,8 @@ entityDef player
|
||||||
entityDef player_mp
|
entityDef player_mp
|
||||||
{
|
{
|
||||||
"inherit" "player"
|
"inherit" "player"
|
||||||
"ammo_9mm" "44"
|
"ammo_pistol" "150"
|
||||||
"item" "item_suit"
|
"item" "item_suit"
|
||||||
"weapon" "weapon_crowbar,weapon_pistol"
|
"weapon" "weapon_crowbar,weapon_pistol"
|
||||||
"current_weapon" "1"
|
"current_weapon" "1"
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,6 @@ entityDef fireInfo_shotgun
|
||||||
{
|
{
|
||||||
"def_onFire" "projectile_shotgun"
|
"def_onFire" "projectile_shotgun"
|
||||||
"ammoPerShot" "1"
|
"ammoPerShot" "1"
|
||||||
"fireRate" "0.75"
|
|
||||||
"actFire" "1"
|
"actFire" "1"
|
||||||
"actFireStop" "8"
|
"actFireStop" "8"
|
||||||
"punchAngle" "-5 0 0"
|
"punchAngle" "-5 0 0"
|
||||||
|
@ -68,7 +67,6 @@ entityDef fireInfo_altShotgun
|
||||||
{
|
{
|
||||||
"def_onFire" "projectile_shotgun_alt"
|
"def_onFire" "projectile_shotgun_alt"
|
||||||
"ammoPerShot" "2"
|
"ammoPerShot" "2"
|
||||||
"fireRate" "1.5"
|
|
||||||
"actFire" "2"
|
"actFire" "2"
|
||||||
"actFireStop" "8"
|
"actFireStop" "8"
|
||||||
"punchAngle" "-10 0 0"
|
"punchAngle" "-10 0 0"
|
||||||
|
|
|
@ -8,7 +8,7 @@ seta "con_color" "255 150 0"
|
||||||
seta "vgui_color" "255 170 0"
|
seta "vgui_color" "255 170 0"
|
||||||
seta "cross_color" "0 255 0"
|
seta "cross_color" "0 255 0"
|
||||||
|
|
||||||
seta pm_walkspeed 190
|
seta pm_walkspeed "190"
|
||||||
seta pm_runspeed 320
|
seta pm_runspeed "320"
|
||||||
|
seta fov "65"
|
||||||
seta r_imageextensions "vtf tga"
|
seta r_imageextensions "vtf tga"
|
||||||
|
|
|
@ -5,7 +5,7 @@ bind "a" "+moveleft"
|
||||||
bind "d" "+moveright"
|
bind "d" "+moveright"
|
||||||
bind "SPACE" "+jump"
|
bind "SPACE" "+jump"
|
||||||
bind "CTRL" "+duck"
|
bind "CTRL" "+duck"
|
||||||
bind "SHIFT" "+speed"
|
bind "SHIFT" "+sprint"
|
||||||
bind "0" "slot10"
|
bind "0" "slot10"
|
||||||
bind "1" "slot1"
|
bind "1" "slot1"
|
||||||
bind "2" "slot2"
|
bind "2" "slot2"
|
||||||
|
|
BIN
zpak001.pk3dir/gfx/console1.tga
Normal file
BIN
zpak001.pk3dir/gfx/console1.tga
Normal file
Binary file not shown.
BIN
zpak001.pk3dir/gfx/console2.tga
Normal file
BIN
zpak001.pk3dir/gfx/console2.tga
Normal file
Binary file not shown.
17
zpak001.pk3dir/gfx/devcon.mat
Normal file
17
zpak001.pk3dir/gfx/devcon.mat
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
nopicmip
|
||||||
|
nocompress
|
||||||
|
|
||||||
|
{
|
||||||
|
rgbGen const (0 1 1)
|
||||||
|
map gfx/console2.tga
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
rgbGen const (0 1 1)
|
||||||
|
map gfx/console1.tga
|
||||||
|
tcMod scroll 0.01 0.02
|
||||||
|
tcMod scale 8 4
|
||||||
|
blendFunc add
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue