Compatibility fixes against upstream Nuclide.

Hard-code some known water textures to use `defaultwarp` shader.
This commit is contained in:
Marco Cawthorne 2025-01-02 19:39:13 -08:00
parent f56b72d9b0
commit 6bfda4d419
135 changed files with 1527 additions and 362 deletions

View file

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void NSWeapon_SelectWeapon(NSWeapon nextWeapon);
void ncWeapon_SelectWeapon(ncWeapon nextWeapon);
void
HLWeaponSelect::HLWeaponSelect(void)
@ -32,7 +32,7 @@ HLWeaponSelect::Active(void)
void
HLWeaponSelect::Trigger(void)
{
NSWeapon_SelectWeapon(m_selectedWeapon);
ncWeapon_SelectWeapon(m_selectedWeapon);
Deactivate();
}
@ -46,7 +46,7 @@ HLWeaponSelect::Deactivate(void)
void
HLWeaponSelect::Draw(void)
{
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
if (!pl.m_activeWeapon) {
return;
@ -139,7 +139,7 @@ HLWeaponSelect::SelectSlot(int wantedSlot, bool fastSwitch)
void
HLWeaponSelect::SelectNext(bool fastSwitch)
{
NSClient ourPlayer = (NSClient)pSeat->m_ePlayer;
ncClient ourPlayer = (ncClient)pSeat->m_ePlayer;
m_firstWeapon = (HLWeapon)ourPlayer.SortWeaponChain();
@ -162,7 +162,7 @@ HLWeaponSelect::SelectNext(bool fastSwitch)
void
HLWeaponSelect::SelectPrevious(bool fastSwitch)
{
NSClient ourPlayer = (NSClient)pSeat->m_ePlayer;
ncClient ourPlayer = (ncClient)pSeat->m_ePlayer;
m_firstWeapon = (HLWeapon)ourPlayer.SortWeaponChain();

View file

@ -18,11 +18,19 @@ void HUD_DrawWeaponSelect_Back(void);
void HUD_DrawWeaponSelect_Forward(void);
void HUD_DrawWeaponSelect_Last(void);
void HUD_SlotSelect(int);
void VGUI_ChooseClass(int);
void VGUI_ChooseTeam(void);
int
ClientGame_ConsoleCommand(void)
{
switch(argv(0)) {
case "changeclass":
VGUI_ChooseClass(userinfo.GetInteger(pSeat->m_ePlayer, "*team"));
break;
case "changeteam":
VGUI_ChooseTeam();
break;
case "chooseteam":
localcmd(sprintf("cmd %s %s\n", argv(0), argv(1)));
break;

View file

@ -15,7 +15,7 @@
*/
void
Player_Flashlight(NSClientPlayer pl)
Player_Flashlight(ncPlayer pl)
{
}

View file

@ -58,15 +58,6 @@ ClientGame_EventParse(float fHeader)
case EV_VIEWMODEL:
View_PlayAnimation(readbyte());
break;
case EV_WEAPON_PICKUP:
int w = readbyte();
if (autocvar_cl_autoweaponswitch == 1) {
sendevent("PlayerSwitchWeapon", "i", w);
}
//HUD_WeaponPickupNotify(w);
break;
default:
return (0);
}

View file

@ -138,7 +138,7 @@ void
HUD_DrawHealth(void)
{
vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
if (pl.health != pSeatLocal->m_iHealthOld) {
pSeatLocal->m_flHealthAlpha = 1.0;
@ -185,7 +185,7 @@ void
HUD_DrawArmor(void)
{
vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
pos = g_hudmins + [198, g_hudres[1] - 42];
@ -232,7 +232,7 @@ HUD_DrawArmor(void)
void
HUD_DrawAmmo1(void)
{
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo1 != pSeatLocal->m_iAmmo1Old) {
@ -255,7 +255,7 @@ HUD_DrawAmmo1(void)
void
HUD_DrawAmmo2(void)
{
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo2 != pSeatLocal->m_iAmmo2Old) {
@ -277,7 +277,7 @@ HUD_DrawAmmo2(void)
void
HUD_DrawAmmo3(void)
{
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo3 != pSeatLocal->m_iAmmo3Old) {
@ -314,7 +314,7 @@ void
HUD_DrawFlashlight(void)
{
vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
pos = g_hudmins + [g_hudres[0] - 48, 16];
/* both on, draw both sprites at full intensity */
@ -390,7 +390,7 @@ HUD_DrawLogo(void)
void
HUD_DrawNotify(void)
{
NSClientPlayer pl = (NSClientPlayer)self;
ncPlayer pl = (ncPlayer)self;
vector pos;
float a;
@ -473,7 +473,7 @@ HUD_TimeRemaining(void)
void
HUD_Draw(void)
{
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
#ifndef TFC
#ifndef GEARBOX
@ -519,7 +519,7 @@ HUD_DrawSpectator(void)
{
Textmenu_Draw();
NSClientSpectator spec = (NSClientSpectator)pSeat->m_ePlayer;
ncSpectator spec = (ncSpectator)pSeat->m_ePlayer;
drawfont = Font_GetID(FONT_20);
vector vecPos = [0.0f, 0.0f, 0.0f];

View file

@ -113,7 +113,7 @@ HUD_AmmoNotify_Insert(int type, int count)
/* called whenever we should check for pickup updates */
void
HUD_AmmoNotify_Check(NSClientPlayer pl)
HUD_AmmoNotify_Check(ncPlayer pl)
{
HUD_AmmoNotify_Insert(0, pl.m_iAmmoTypes[1] - pl.m_iAmmoTypes_net[1]);
HUD_AmmoNotify_Insert(1, pl.m_iAmmoTypes[2] - pl.m_iAmmoTypes_net[2]);

View file

@ -76,7 +76,7 @@ HUD_ItemNotify_Insert(int type, int count)
/* called whenever we should check for pickup updates */
void
HUD_ItemNotify_Check(NSClientPlayer pl)
HUD_ItemNotify_Check(ncPlayer pl)
{
#if 0
int healthdiff = (int)bound(0, pl.health - pSeatLocal->m_iHealthOld, 100);

View file

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void View_ForceChange(NSClientPlayer pl, int targetWeapon);
void View_ForceChange(ncPlayer pl, int targetWeapon);
vector g_vecHUDNums[6] =
@ -28,7 +28,7 @@ vector g_vecHUDNums[6] =
};
void
HUD_SelectWeapon(NSWeapon nextWeapon)
HUD_SelectWeapon(ncWeapon nextWeapon)
{
if (!nextWeapon) {
pSeat->m_iHUDWeaponSelected = 0i;
@ -78,12 +78,12 @@ void
HUD_SlotSelect(int slot)
{
#if 0
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i;
#endif
if (g_textmenu != "") {
if (Textmenu_IsActive() == true) {
Textmenu_Input(slot);
return;
}
@ -136,7 +136,7 @@ void
HUD_DrawWeaponSelect(void)
{
#if 0
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}

View file

@ -25,6 +25,8 @@ void
ClientGame_Init(float apilevel, string enginename, float engineversion)
{
Obituary_Init();
registercommand("changeclass");
registercommand("changeteam");
registercommand("chooseteam");
registercommand("lastinv");

View file

@ -1,10 +1,10 @@
#pragma target fte_5768
#pragma progs_dat "../../zpak001.pk3dir/csprogs.dat"
#pragma forcecrc 54730
#define CSQC
#define CLIENT
#define VALVE
#define CLASSIC_VGUI
#includelist
../../../src/shared/fteextensions.qc
@ -34,6 +34,8 @@
../../../valve/src/client/hud_weaponselect.qc
../../../valve/src/client/scoreboard.qc
../../../src/client/include.src
../../../valve/src/client/vgui_changeclass.qc
../../../valve/src/client/vgui_chooseteam.qc
../../../valve/src/client/vgui_motd.qc
../../../src/shared/include.src
#endlist

View file

@ -29,7 +29,7 @@ Scores_Init(void)
}
void
Scores_DrawTeam(NSClientPlayer pl, vector pos)
Scores_DrawTeam(ncPlayer pl, vector pos)
{
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
@ -135,7 +135,7 @@ Scores_DrawTeam(NSClientPlayer pl, vector pos)
}
void
Scores_DrawNormal(NSClientPlayer pl, vector pos)
Scores_DrawNormal(ncPlayer pl, vector pos)
{
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
@ -192,9 +192,9 @@ void
Scores_Draw(void)
{
vector pos;
NSClientPlayer pl;
ncPlayer pl;
pl = (NSClientPlayer)pSeat->m_ePlayer;
pl = (ncPlayer)pSeat->m_ePlayer;
if (autocvar_cl_centerscores) {
int c = 10;

View file

@ -0,0 +1,160 @@
/*
* 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.
*/
static string g_classDescrScout;
static string g_classDescrSniper;
static string g_classDescrSoldier;
static string g_classDescrDemoman;
static string g_classDescrMedic;
static string g_classDescrHWGuy;
static string g_classDescrPyro;
static string g_classDescrSpy;
static string g_classDescrEngineer;
static string g_classDescrRandomPC;
static void
TFCClass_Init(void)
{
g_classDescrScout = textfile_to_string("classes/short_scout.txt");
g_classDescrSniper = textfile_to_string("classes/short_sniper.txt");
g_classDescrSoldier = textfile_to_string("classes/short_soldier.txt");
g_classDescrDemoman = textfile_to_string("classes/short_demoman.txt");
g_classDescrMedic = textfile_to_string("classes/short_medic.txt");
g_classDescrHWGuy = textfile_to_string("classes/short_hwguy.txt");
g_classDescrPyro = textfile_to_string("classes/short_pyro.txt");
g_classDescrSpy = textfile_to_string("classes/short_spy.txt");
g_classDescrEngineer = textfile_to_string("classes/short_engineer.txt");
g_classDescrRandomPC = textfile_to_string("classes/short_randompc.txt");
}
static vguiWindow winClassSelection;
static vguiPic imgClassPreview;
static vguiLabel lblClassTitle;
static vguiLabel lblClassDescription;
static vguiLabel lblClassCounter;
class VGUIChangeClassButton:vguiButton
{
void VGUIChangeClassButton(void);
virtual void OnMouseUp(void);
virtual void OnMouseEntered(void);
};
void
VGUIChangeClassButton::VGUIChangeClassButton(void)
{
}
void
VGUIChangeClassButton::OnMouseUp(void)
{
int classSelection = GetTag();
int teamID = player.GetTeam();
string classType = teams.ClassForIndex(teamID, classSelection);
localcmd(sprintf("cmd %s\n", classType));
winClassSelection.Hide();
}
void
VGUIChangeClassButton::OnMouseEntered(void)
{
int classSelection = GetTag();
int teamID = player.GetTeam();
string teamName = teams.Name(teamID);
string baseName = teams.ClassForIndex(teamID, classSelection);
lblClassTitle.SetTitle(baseName);
imgClassPreview.SetImage(strcat("gfx/classes/", baseName, "_", teamName));
lblClassDescription.SetTitle(g_classDescrRandomPC);
}
void
VGUI_ChooseClass(int wishTeam)
{
static int initialized;
static VGUIChangeClassButton *btns;
static vguiLabel lblSelectClass;
static vguiFrame frmClassInfo;
if (!initialized) {
vector btnpos = [40,80];
initialized = TRUE;
TFCClass_Init();
winClassSelection = spawn(vguiWindow);
winClassSelection.SetSize([640, 480]);
winClassSelection.SetStyleMask(vguiWindowBorderless | vguiWindowFullscreen);
lblSelectClass = spawn(vguiLabel);
lblSelectClass.SetTitle(Titles_GetTextBody("Title_SelectYourClass"));
lblSelectClass.SetTextSize(19);
lblSelectClass.SetPos([40, 38]);
lblSelectClass.SetSize([400, 24]);
frmClassInfo = spawn(vguiFrame);
frmClassInfo.SetPos([176, 80]);
frmClassInfo.SetSize([424, 312]);
imgClassPreview = spawn(vguiPic);
imgClassPreview.SetPos([190, 90]);
lblClassTitle = spawn(vguiLabel);
lblClassTitle.SetPos([338, 90]);
lblClassTitle.SetTextSize(19);
lblClassTitle.SetSize([320, 24]);
lblClassCounter = spawn(vguiLabel);
lblClassCounter.SetPos([338, 90 + 32]);
lblClassCounter.SetSize([320, 18]);
lblClassDescription = spawn(vguiLabel);
lblClassDescription.SetPos([338, 90 + 32 + 32]);
lblClassDescription.SetSize([250, 240]);
g_uiDesktop.Add(winClassSelection);
winClassSelection.Add(lblSelectClass);
winClassSelection.Add(frmClassInfo);
winClassSelection.Add(imgClassPreview);
winClassSelection.Add(lblClassTitle);
winClassSelection.Add(lblClassCounter);
winClassSelection.Add(lblClassDescription);
int classCount = teams.TotalClasses(wishTeam);
btns = memalloc(sizeof(VGUIChangeClassButton) * classCount);
for (int i = 0; i < classCount; i++) {
btns[i] = spawn(VGUIChangeClassButton);
btns[i].SetTitle(Titles_GetTextBody(teams.ClassForIndex(wishTeam, i)));
btns[i].SetSize([124, 24]);
btns[i].SetPos(btnpos);
btns[i].SetTag(i);
if (i == 9) {
btns[i].SetKeyEquivalent("0");
} else {
btns[i].SetKeyEquivalent(ftos((float)i+1));
}
winClassSelection.Add(btns[i]);
btnpos[1] += 32;
}
}
winClassSelection.Show();
winClassSelection.SetPos((g_vidsize / 2) - (winClassSelection.GetSize() / 2));
}

View file

@ -0,0 +1,154 @@
/*
* 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.
*/
static vguiWindow winChooseTeam;
class VGUITeamSelectButton:vguiButton
{
void VGUITeamSelectButton(void);
virtual void OnMouseUp(void);
};
void
VGUITeamSelectButton::VGUITeamSelectButton(void)
{
}
void
VGUITeamSelectButton::OnMouseUp(void)
{
int tag = GetTag();
if (tag == 0) {
tag = teams.BestAutoJoinTeam();
}
localcmd(sprintf("cmd joinTeam %i\n", tag));
if (teams.TotalClasses(tag) > 0i) {
VGUI_ChooseClass(tag);
}
winChooseTeam.Hide();
}
string
VGUI_ChooseTeam_MapInfo(void)
{
static string mapinfo = __NULL__;
if (mapinfo != __NULL__)
return mapinfo;
filestream fileMap = fopen(strcat("maps/", mapname, ".txt"), FILE_READ);
string temp;
if (fileMap != -1) {
while ((temp = fgets(fileMap))) {
mapinfo = strcat(mapinfo, temp, "\n");
}
} else {
mapinfo = Titles_GetTextBody("Map_Description_not_available");
}
return mapinfo;
}
void
VGUI_ChooseTeam(void)
{
static int initialized;
static vguiButton btnAutoAssign;
static vguiButton btnGoSpectator;
static vguiFrame frmMapInfo;
static vguiLabel lblSelectTeam;
static vguiLabel lblMapName;
static vguiLabel lblMapInfo;
if (!initialized) {
vector btnpos = [40,80];
initialized = TRUE;
winChooseTeam = spawn(vguiWindow);
winChooseTeam.SetSize('640 480');
winChooseTeam.SetStyleMask(vguiWindowBorderless | vguiWindowFullscreen);
lblSelectTeam = spawn(vguiLabel);
lblSelectTeam.SetTitle(Titles_GetTextBody("Title_SelectYourTeam"));
lblSelectTeam.SetTextSize(19);
lblSelectTeam.SetPos([40, 38]);
lblSelectTeam.SetSize('400 24');
frmMapInfo = spawn(vguiFrame);
frmMapInfo.SetPos('176 80');
frmMapInfo.SetSize('424 312');
lblMapName = spawn(vguiLabel);
lblMapName.SetTitle(mapname);
lblMapName.SetTextSize(19);
lblMapName.SetPos('194 105');
lblMapName.SetSize('250 312');
lblMapInfo = spawn(vguiLabel);
lblMapInfo.SetTitle(VGUI_ChooseTeam_MapInfo());
lblMapInfo.SetPos('194 129');
lblMapInfo.SetSize('375 250');
for (int t = 1; t <= teams.TeamCount() ; t++) {
VGUITeamSelectButton btnForTeam;
string team_name = teams.Name(t);
btnForTeam = spawn(VGUITeamSelectButton);
btnForTeam.SetTitle(strtoupper(team_name));
btnForTeam.SetPos(btnpos);
btnForTeam.SetKeyEquivalent(ftos((float)t+1));
btnForTeam.SetSize('124 24');
btnForTeam.SetTag(t);
winChooseTeam.Add(btnForTeam);
btnpos[1] += 32;
}
btnAutoAssign = spawn(VGUITeamSelectButton);
btnAutoAssign.SetTitle(Titles_GetTextBody("Team_AutoAssign"));
btnAutoAssign.SetPos(btnpos);
btnAutoAssign.SetSize('124 24');
btnAutoAssign.SetKeyEquivalent("5");
btnAutoAssign.SetTag(0);
//btnAutoAssign.SetFunc(VGUI_AutoAssign);
btnpos[1] += 32;
btnGoSpectator = spawn(VGUITeamSelectButton);
btnGoSpectator.SetTitle(Titles_GetTextBody("Menu_Spectate"));
btnGoSpectator.SetPos(btnpos);
btnGoSpectator.SetSize('124 24');
btnGoSpectator.SetKeyEquivalent("6");
btnGoSpectator.SetTag(TEAM_SPECTATOR);
//btnGoSpectator.SetFunc(VGUI_GoSpectator);
g_uiDesktop.Add(winChooseTeam);
winChooseTeam.Add(frmMapInfo);
winChooseTeam.Add(lblSelectTeam);
winChooseTeam.Add(lblMapName);
winChooseTeam.Add(lblMapInfo);
winChooseTeam.Add(btnAutoAssign);
winChooseTeam.Add(btnGoSpectator);
}
winChooseTeam.Show();
winChooseTeam.SetPos((g_vidsize / 2) - (winChooseTeam.GetSize() / 2));
}

View file

@ -18,13 +18,26 @@ void
VGUI_ShowMOTD(void)
{
static int initialized;
static VGUIButton winMotdClose;
static VGUIWindow winMotd;
static VGUILabel winMotdHostname;
static VGUILabel winMotdBody;
static vguiButton winMotdClose;
static vguiWindow winMotd;
static vguiLabel winMotdHostname;
static vguiLabel winMotdBody;
static void VGUI_ShowMOTD_Close(void)
{
int playerTeam = player.GetTeam();
bool teamSelect = ((playerTeam == TEAM_UNASSIGNED) || (playerTeam == TEAM_SPECTATOR)) ? (true) : (false);
if (playerTeam == 0) {
teamSelect = true;
}
// printf("MOTD opening team? %i %d open teams: %i\n", playerTeam, teamSelect, teams.OpenTeamCount());
if (teams.OpenTeamCount() > 0i && teamSelect) {
VGUI_ChooseTeam();
}
winMotd.Hide();
}
@ -33,23 +46,24 @@ VGUI_ShowMOTD(void)
if (!initialized) {
initialized = TRUE;
winMotd = spawn(VGUIWindow);
winMotd = spawn(vguiWindow);
winMotd.SetTitle("Message Of The Day");
winMotd.SetStyleMask(vguiWindowBorderless | vguiWindowFullscreen);
winMotd.SetSize('424 312');
winMotd.SetStyleMask(0);
winMotdClose = spawn(VGUIButton);
winMotdClose = spawn(vguiButton);
winMotdClose.SetTitle("OK");
winMotdClose.SetPos([16, 266]);
winMotdClose.SetSize([160, 30]);
winMotdClose.SetFunc(VGUI_ShowMOTD_Close);
winMotdHostname = spawn(VGUILabel);
winMotdHostname = spawn(vguiLabel);
winMotdHostname.SetTitle(serverkey("hostname"));
winMotdHostname.SetTextSize(19);
winMotdHostname.SetPos([16, 20]);
winMotdBody = spawn(VGUILabel);
winMotdBody = spawn(vguiLabel);
winMotdBody.SetTitle(MOTD_GetTextBody());
winMotdBody.SetPos([16, 48]);
winMotdBody.SetSize([392, 210]);

View file

@ -1,11 +1,10 @@
#pragma target fte_5768_5768
//#pragma flag enable assumeint
#pragma progs_dat "../../zpak001.pk3dir/menu.dat"
#define MENU
#define GAME_DIR "valve"
#define MODEL_PREVIEW
#includelist
../../../src/menu-fn/includes.src
../../../src/menu-vgui/includes.src
#endlist

View file

@ -64,7 +64,7 @@ CodeCallback_StartGameType(void)
}
void
CodeCallback_PlayerSpawn(entity playerEntity)
HLDM_PlayerSpawn(entity playerEntity)
{
string playerModel;
@ -102,6 +102,18 @@ CodeCallback_PlayerSpawn(entity playerEntity)
game.TeleportToSpawn(playerEntity);
}
void
CodeCallback_PlayerSpawn(entity playerEntity)
{
if (IsTeamplay() == false) {
HLDM_PlayerSpawn(playerEntity);
} else {
ents.ChangeToClass(playerEntity, "spectator");
game.TeleportToSpawn(playerEntity);
}
}
void
CodeCallback_PlayerDisconnect(entity playerEntity)
{
@ -121,17 +133,25 @@ CodeCallback_PlayerDamage(entity playerEntity, entity inflictor, entity attacker
}
bool
CodeCallback_CallRequestTeam(entity playerEntity, int teamNum)
{
ents.Input(playerEntity, "SetTeam", itos(teamNum), playerEntity);
ents.Input(playerEntity, "Damage", "1000", playerEntity);
return (true);
}
void
CodeCallback_PlayerKilled(entity playerEntity, entity inflictor, entity attacker, string weapon)
{
combat.Obituary(self.netname, attacker.netname, weapon, "");
combat.Obituary(playerEntity.netname, attacker.netname, weapon, "");
/* death-counter */
self.deaths++;
playerEntity.deaths++;
/* update score-counter */
if (ents.isPlayer(attacker)) {
if (self == attacker) {
if (playerEntity == attacker) {
attacker.frags--;
} else {
attacker.frags++;
@ -163,8 +183,8 @@ CodeCallback_ClientCommand(entity playerEntity, string command)
for (float i = 0; i < c; i++) {
if (argv(i) == teamName) {
string newTeam = ftos(i + 1);
ents.Input(self, "SetTeam", newTeam, self);
ents.Input(self, "Damage", "1000", self);
ents.Input(playerEntity, "SetTeam", newTeam, playerEntity);
ents.Input(playerEntity, "Damage", "1000", playerEntity);
break;
}
}
@ -182,7 +202,7 @@ CodeCallback_ImpulseCommand(entity playerEntity, float impulseNum)
switch (impulseNum) {
case 100:
if (AllowFlashlight() == true) {
ents.Input(self, "UseItem", "item_suit", self);
ents.Input(playerEntity, "UseItem", "item_suit", playerEntity);
}
break;
default:

View file

@ -22,7 +22,7 @@ void
CodeCallback_PlayerSpawn(entity playerEntity)
{
ents.ChangeToClass(playerEntity, "player");
game.TeleportToSpawn(self);
game.TeleportToSpawn(playerEntity);
}
bool

View file

@ -15,7 +15,7 @@
*/
class
HLScientist:NSTalkMonster
HLScientist:ncTalkMonster
{
void HLScientist(void);

View file

@ -1,5 +1,5 @@
class
HLSuit:NSItem
HLSuit:ncItem
{
void HLSuit(void);

View file

@ -15,7 +15,7 @@
*/
class
XenDecore:NSSurfacePropEntity
XenDecore:ncSurfacePropEntity
{
public:
void XenDecore(void);
@ -27,7 +27,7 @@ public:
private:
float m_flDamageTime;
float m_flDamageTest;
NSDict m_damageDecl;
ncDict m_damageDecl;
};
void
@ -66,7 +66,7 @@ XenDecore::Respawn(void)
SetFrame(GetSpawnFloat("frame"));
if (!m_damageDecl) {
m_damageDecl = spawn(NSDict);
m_damageDecl = spawn(ncDict);
m_damageDecl.AddKey("damage", GetSpawnString("damage"));
}

View file

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
class item_weaponbox:NSRenderableEntity
class item_weaponbox:ncRenderableEntity
{
int ammo_9mm;
int ammo_357;

View file

@ -1,6 +1,7 @@
#pragma target fte_5768
//#pragma flag enable assumeint
#pragma progs_dat "../../zpak001.pk3dir/progs.dat"
#pragma forcecrc 54730
#define QWSSQC
#define SERVER

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2016-2025 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
@ -14,24 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void
Game_InitRules(void)
{
string gameType = cvar_string("g_gametype");
FX_Corpse_Init();
if (STRING_SET(gameType)) {
g_grMode = NSGameRules::InitFromProgs(strcat("progs/", gameType, ".dat"));
} else {
if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) {
g_grMode = NSGameRules::InitFromProgs("progs/singleplayer.dat");
} else {
g_grMode = NSGameRules::InitFromProgs("progs/deathmatch.dat");
}
}
}
void
Game_Worldspawn(void)
{

View file

@ -15,7 +15,7 @@
*/
/* This is one of those leftovers from trying to get a game out in time */
class world_items:NSRenderableEntity
class world_items:ncRenderableEntity
{
void(void) world_items;
};

View file

@ -1,6 +1,6 @@
#ifdef SERVER
class
HLGaussBeam:NSProjectile
HLGaussBeam:ncProjectile
{
void HLGaussBeam(void);
@ -29,7 +29,7 @@ HLGaussBeam::Launch(vector startPos, vector launchDir, float fuseOffset, float p
void
HLGaussBeam::GaussAttack(float fuseOffset)
{
NSClientPlayer ourOwner = (NSClientPlayer)owner;
ncPlayer ourOwner = (ncPlayer)owner;
int iLoop = 6i;
vector vecCurPlane;
vector vecCurPos;

View file

@ -17,7 +17,7 @@
/*! \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.
Half-Life specific weapon based on ncWeapon.
# NEW KEYS
- "ammoIcon" - Which sprites/ image to use. See notes.
@ -32,7 +32,7 @@ Since the weapon specific files only contain short names like `ammo` and `crossh
For example, `ammoIcon` being set to `weapon_foobar.ammo` will look up `ammo` inside `sprites/weapon_foobar.txt`.
*/
class
HLWeapon:NSWeapon
HLWeapon:ncWeapon
{
public:
void HLWeapon(void);
@ -57,7 +57,7 @@ private:
string m_crossHair;
string m_icon;
string m_iconSel;
NSWeapon m_nextWeapon;
ncWeapon m_nextWeapon;
#endif
bool m_bAltModeLaser;
};

View file

@ -107,14 +107,14 @@ HLWeapon::AddedToInventory(void)
void
HLWeapon::UpdateGUI(void)
{
NSClientPlayer ourOwner = __NULL__;
ncPlayer ourOwner = __NULL__;
vector ammoPos;
/* draw crosshair */
HLSprite_DrawCrosshair(m_crossHair);
/* draw ammo icon */
if (m_ammoIcon) {
if (STRING_SET(m_ammoIcon)) {
ammoPos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42];
HLSprite_Draw_RGBA(m_ammoIcon, ammoPos, g_hud_color, pSeatLocal->m_flAmmo2Alpha, true);
}
@ -150,10 +150,11 @@ HLWeapon::UpdateGUI(void)
}
#endif
if (m_bAmmoRequired == false)
if (m_bAmmoRequired == false) {
return;
}
ourOwner = (NSClientPlayer)GetOwner();
ourOwner = (ncPlayer)GetOwner();
if (m_iClipSize > 0i) {
ourOwner.a_ammo1 = m_iClip;
@ -163,12 +164,12 @@ HLWeapon::UpdateGUI(void)
ourOwner.a_ammo2 = ourOwner.GetReserveAmmo(m_primaryAmmoType);
HUD_DrawAmmo2();
if (m_secondaryAmmoType && m_primaryAmmoType != m_secondaryAmmoType) {
if (UsesSecondaryAmmo() && m_primaryAmmoType != m_secondaryAmmoType) {
ourOwner.a_ammo3 = ourOwner.GetReserveAmmo(m_secondaryAmmoType);
HUD_DrawAmmo3();
/* draw ammo icon */
if (m_ammo2Icon) {
if (STRING_SET(m_ammo2Icon)) {
ammoPos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 74];
HLSprite_Draw_RGBA(m_ammo2Icon, ammoPos, g_hud_color, pSeatLocal->m_flAmmo2Alpha, true);
}
@ -178,7 +179,7 @@ HLWeapon::UpdateGUI(void)
void
HLWeapon::DrawLaser(void)
{
NSClientPlayer ourOwner = (NSClientPlayer)GetOwner();
ncPlayer ourOwner = (ncPlayer)GetOwner();
float lerpValue;
vector laser_pos = g_vec_null;
vector jitter = [0.0f, 0.0f, 0.0f];

View file

@ -45,7 +45,7 @@ FX_Blood(vector pos, vector color)
#else
static void Blood_Touch(void)
{
if (self.think != NSEntity::Destroy) {
if (self.think != ncEntity::Destroy) {
if (serverkeyfloat("*bspversion") == BSPVER_HL)
Decals_Place(self.origin, sprintf("{blood%d", floor(random(1,9))));
else {
@ -54,12 +54,12 @@ FX_Blood(vector pos, vector color)
}
}
self.think = NSEntity::Destroy;
self.think = ncEntity::Destroy;
self.nextthink = time + 5.0f;
}
static void ABlood_Touch(void)
{
if (self.think != NSEntity::Destroy) {
if (self.think != ncEntity::Destroy) {
if (serverkeyfloat("*bspversion") == BSPVER_HL)
Decals_Place(self.origin, sprintf("{yblood%d", floor(random(1,9))));
else {
@ -68,7 +68,7 @@ FX_Blood(vector pos, vector color)
}
}
self.think = NSEntity::Destroy;
self.think = ncEntity::Destroy;
self.nextthink = time + 5.0f;
}
@ -89,7 +89,7 @@ FX_Blood(vector pos, vector color)
eBlood.nextthink = time + 0.05f;
for (int i = 0; i < 3; i++) {
NSRenderableEntity ePart = spawn(NSRenderableEntity);
ncRenderableEntity ePart = spawn(ncRenderableEntity);
ePart.SetOrigin(pos);
ePart.SetModel("sprites/blood.spr");
ePart.SetMovetype(MOVETYPE_BOUNCE);

View file

@ -1,101 +0,0 @@
/*
* Copyright (c) 2016-2022 Vera Visions LLC.
*
* 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.
*/
#ifdef SERVER
#define CORPSES_MAX 16
entity g_bodies;
var bool autocvar_corpse_ragdolls = true;
void
FX_Corpse_Init(void)
{
entity next;
if (autocvar_corpse_ragdolls)
next = spawn(NSRagdoll);
else
next = spawn(NSRenderableEntity);
g_bodies = next;
for ( int i = 0; i <= CORPSES_MAX; i++ ) {
next.classname = "corpse";
if (autocvar_corpse_ragdolls)
next.owner = spawn(NSRagdoll);
else
next.owner = spawn(NSRenderableEntity);
if ( i == CORPSES_MAX ) {
next.owner = g_bodies;
} else {
next = next.owner;
}
}
}
entity
FX_Corpse_Next(void)
{
entity r = g_bodies;
g_bodies = g_bodies.owner;
return r;
}
void
FX_Corpse_Update(void)
{
NSEntity meSelf = (NSEntity)self;
meSelf.frame1time += frametime;
if (meSelf.frame1time < 10.0)
meSelf.ScheduleThink(FX_Corpse_Update, 0.0f);
}
entity
FX_Corpse_Spawn(NSClientPlayer pl, float anim)
{
NSRagdoll body_next = (NSRagdoll)FX_Corpse_Next();
if (autocvar_corpse_ragdolls) {
body_next.SetMovetype(MOVETYPE_PHYSICS);
body_next.SetSolid(SOLID_NOT);
} else {
body_next.SetMovetype(MOVETYPE_BOUNCE);
body_next.SetSolid(SOLID_CORPSE);
}
body_next.SetModelindex(pl.GetModelindex());
if (pl.IsCrouching()) {
body_next.SetOrigin(pl.GetOrigin() + [0,0,32]);
} else {
body_next.SetOrigin(pl.GetOrigin());
}
body_next.SetSize(pl.GetMins(), pl.GetMaxs());
body_next.SetAngles(pl.GetAngles());
body_next.SetVelocity(pl.GetVelocity() + [0,0,120]);
body_next.SetFrame(anim);
body_next.m_iBody = pl.m_iBody;
body_next.ScheduleThink(FX_Corpse_Update, 0.0f);
body_next.colormap = pl.colormap;
body_next.frame1time = 0.0f;
return (entity)body_next;
}
#endif

View file

@ -3,7 +3,6 @@
../../../valve/src/shared/events.h
../../../valve/src/shared/flags.h
../../../valve/src/shared/skeleton.h
../../../valve/src/shared/fx_corpse.qc
../../../valve/src/shared/player.qc
../../../valve/src/shared/animations.qc
../../../valve/src/shared/fx_blood.qc

View file

@ -23,7 +23,7 @@ enumflags
PLAYER_BOTTOMFRAME
};
class HLPlayer:NSClientPlayer
class HLPlayer:ncPlayer
{
void(void) HLPlayer;
@ -45,7 +45,7 @@ class HLPlayer:NSClientPlayer
virtual void UpdateAliveCam(void);
virtual void ClientInputFrame(void);
#else
virtual void Death(entity, entity, int, vector, int);
virtual void Death(entity, entity, int, vector, vector, int);
virtual void EvaluateEntity(void);
virtual float SendEntity(entity, float);
virtual void Save(float);
@ -97,7 +97,7 @@ HLPlayer::ClientInputFrame(void)
void Camera_RunPosBob(vector angles, __inout vector camera_pos);
void Camera_StrafeRoll(__inout vector camera_angle);
void Shake_Update(NSClientPlayer);
void Shake_Update(ncPlayer);
void
HLPlayer::UpdateAliveCam(void)
@ -110,7 +110,7 @@ HLPlayer::UpdateAliveCam(void)
g_view.SetCameraAngle(view_angles);
if (vehicle) {
NSVehicle veh = (NSVehicle)vehicle;
ncVehicle veh = (ncVehicle)vehicle;
if (veh.UpdateView)
veh.UpdateView();
@ -129,7 +129,7 @@ HLPlayer::UpdateAliveCam(void)
}
.string oldmodel;
//string Weapons_GetPlayermodel(NSClientPlayer, int);
//string Weapons_GetPlayermodel(ncPlayer, int);
var bool autocvar_cg_flashlightClassic = true;
var float autocvar_r_shadow_realtime_dlight;
@ -161,7 +161,7 @@ HLPlayer::UpdatePlayerAttachments(bool visible)
p = dynamiclight_add(trace_endpos + (trace_plane_normal * 48.0f), 96, [1,1,1]);
}
} else {
p = dynamiclight_add(src + (v_forward * 16), 512, [1,1,1], 0, "textures/flashlight");
p = dynamiclight_add(src + (v_forward * 16), 512, [1,1,1], 0, "lights/flashlight");
dynamiclight_set(p, LFIELD_ANGLES, ang);
dynamiclight_set(p, LFIELD_FLAGS, 3);
}
@ -190,7 +190,7 @@ HLPlayer::UpdatePlayerAttachments(bool visible)
p_model.skeletonindex = skel_create(p_model.modelindex);
/* hack this thing in here FIXME: this should be done when popping in/out of a pvs */
if (autocvar(cl_himodels, 1, "Use high-quality thisayer models over lower-definition ones"))
if (autocvar(cl_himodels, 1, "Use high-quality player models over lower-definition ones"))
setcustomskin(this, "", "geomset 0 2\n");
else
setcustomskin(this, "", "geomset 0 1\n");
@ -219,8 +219,8 @@ HLPlayer::UpdatePlayerAttachments(bool visible)
}
}
void HUD_AmmoNotify_Check(NSClientPlayer pl);
void HUD_ItemNotify_Check(NSClientPlayer pl);
void HUD_AmmoNotify_Check(ncPlayer pl);
void HUD_ItemNotify_Check(ncPlayer pl);
/*
=================
HLPlayer::ReceiveEntity
@ -340,7 +340,7 @@ void
HLPlayer::EvaluateEntity(void)
{
/* the generic client attributes */
NSClientPlayer::EvaluateEntity();
ncPlayer::EvaluateEntity();
EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME)
EVALUATE_FIELD(anim_top_time, PLAYER_TOPFRAME)
@ -350,19 +350,17 @@ HLPlayer::EvaluateEntity(void)
}
entity FX_Corpse_Spawn(NSClientPlayer pl, float anim);
void
HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir, int location)
HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir, vector absImpactPos, int hitBody)
{
/* either gib, or make a corpse */
if (GetHealth()< -50) {
vector gibDir = vectoangles(GetOrigin() - attacker.origin);
float gibStrength = damagePoints * 2.0f;
BreakModel_Entity(this, gibDir, gibStrength);
BreakModel_Entity(this, dir, gibStrength);
} else {
float deathAnimation = ANIM_DIESIMPLE;
switch (location) {
switch (hitBody) {
case BODY_HEAD:
deathAnimation = ANIM_DIEHEADSHOT;
break;
@ -373,7 +371,7 @@ HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir,
deathAnimation = ANIM_DIEGUTSHOT;
break;
default:
bool isFacing = IsFacingPosition(GetOrigin() + (dir * 128));
bool isFacing = IsFacingPosition(absImpactPos);
/* we still want a change to play ANIM_DIESIMPLE */
if (random() < 0.5)
@ -386,7 +384,7 @@ HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir,
break;
}
NSEntity newCorpse = (NSEntity)FX_Corpse_Spawn(this, deathAnimation);
ncEntity newCorpse = (ncEntity)BodyQue_Spawn(this, deathAnimation);
/* if we were crouching, adjust the bbox (thx 2 lack of crouch death animation) */
if (IsCrouching()) {
@ -394,7 +392,7 @@ HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir,
}
}
super::Death(inflictor, attacker, damagePoints, dir, location);
super::Death(inflictor, attacker, damagePoints, dir, absImpactPos, hitBody);
}
/*
@ -418,7 +416,7 @@ HLPlayer::SendEntity(entity ePEnt, float flChanged)
flChanged = OptimiseChangedFlags(ePEnt, flChanged);
/* the generic client attributes */
NSClientPlayer::SendEntity(ePEnt, flChanged);
ncPlayer::SendEntity(ePEnt, flChanged);
SENDENTITY_BYTE(anim_top, PLAYER_TOPFRAME)
SENDENTITY_FLOAT(anim_top_time, PLAYER_TOPFRAME)

View file

@ -32,7 +32,7 @@ enum
* Because not being able to place it around levels would be boring.
* Some maps, such as subtransit and a few singleplayer chapters have this. */
class HLTripmine:NSSurfacePropEntity
class HLTripmine:ncSurfacePropEntity
{
void HLTripmine(void);
@ -40,8 +40,8 @@ class HLTripmine:NSSurfacePropEntity
virtual void Respawn(void);
virtual void Spawned(void);
virtual void Ready(void);
virtual void Pain(entity, entity, int, vector, int);
virtual void Death(entity, entity, int, vector, int);
virtual void Pain(entity, entity, int, vector, vector, int);
virtual void Death(entity, entity, int, vector, vector, int);
virtual float SendEntity(entity, float);
#endif
@ -99,7 +99,7 @@ HLTripmine::Spawned(void)
}
void
HLTripmine::Death(entity inflictor, entity attacker, int damage, vector dir, int location)
HLTripmine::Death(entity inflictor, entity attacker, int damage, vector dir, vector absImpactPos, int hitBody)
{
vector explosionPos = GetOrigin();
float explosionDamage = Skill_GetValue("plr_tripmine", 150);
@ -116,9 +116,9 @@ HLTripmine::Death(entity inflictor, entity attacker, int damage, vector dir, int
}
void
HLTripmine::Pain(entity inflictor, entity attacker, int damage, vector dir, int location)
HLTripmine::Pain(entity inflictor, entity attacker, int damage, vector dir, vector absImpactPos, int hitBody)
{
Death(trace_ent, attacker, 0, g_vec_null, 0);
Death(inflictor, attacker, damage, dir, absImpactPos, hitBody);
}
void
@ -139,7 +139,7 @@ HLTripmine::Ready(void)
/* laser shorter than when calibrated, explode! */
if (trace_endpos != m_vecEndPos) {
Death(trace_ent, real_owner, 0, g_vec_null, 0);
Death(trace_ent, real_owner, 0, g_vec_null, origin, 0);
return;
}

View file

@ -1 +1 @@
exec "skill.cfg"
exec "skill_valve.cfg"

View file

@ -0,0 +1,7 @@
g_gametype singleplayer
fraglimit 0
timelimit 20
coop 1
sv_playerslots 16
sv_pure 1
map c1a0

View file

@ -0,0 +1,6 @@
g_gametype deathmatch
fraglimit 0
timelimit 20
sv_playerslots 16
sv_pure 1
map_restart 0

View file

@ -1,6 +1,6 @@
entityDef ammo_base
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"snd_acquire" "ammo.pickup"
"snd_respawn" "ammo.respawn"
"mins" "-16 -16 0"

View file

@ -1,6 +1,6 @@
entityDef item_airtank
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_oxygen.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef item_antidote
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_antidote.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef item_battery
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_battery.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef item_healthkit
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_medkit.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef item_longjump
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_longjump.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef item_security
{
"spawnclass" "NSItem"
"spawnclass" "ncItem"
"model" "models/w_security.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef monster_alien_controller
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/controller.mdl"
"netname" "Alien Controller"
"health" "skill:controller_health"
@ -31,7 +31,7 @@ entityDef monster_alien_controller
entityDef ranged_controller_ball
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "sprites/xspark4.spr"
"mins" "-16 -16 -16"
"mins" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef monster_alien_grunt
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/agrunt.mdl"
"netname" "Alien Grunt"
"health" "skill:agrunt_health"
@ -55,7 +55,7 @@ entityDef melee_agrunt_punch
entityDef ranged_agrunt_shot_red
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"
@ -74,7 +74,7 @@ entityDef ranged_agrunt_shot_red
entityDef ranged_agrunt_shot_orange
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"

View file

@ -1,6 +1,6 @@
entityDef monster_alien_slave
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/islave.mdl"
"netname" "Vortigaunt"
"health" "skill:islave_health"
@ -84,7 +84,7 @@ entityDef damage_islave_zap
entityDef ranged_islave_zap
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"mins" "-16 -16 -32"
"maxs" "16 16 32"
"def_damage" "damage_islave_zap"

View file

@ -1,6 +1,6 @@
entityDef monster_apache
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/apache.mdl"
"netname" "Apache"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_archerfish
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/archer.mdl"
"netname" "Archer Fish"
"health" "10"

View file

@ -1,6 +1,6 @@
entityDef monster_babycrab
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"inherit" "monster_headcrab"
"model" "models/baby_headcrab.mdl"
"health" "skill:babycrab_health"

View file

@ -1,6 +1,6 @@
entityDef monster_barnacle
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/barnacle.mdl"
"netname" "Barnacle"
"health" "skill:barnacle_health"

View file

@ -1,6 +1,6 @@
entityDef monster_barney
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/barney.mdl"
"netname" "Barney"
"health" "skill:barney_health"

View file

@ -1,6 +1,6 @@
entityDef monster_barney_dead
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/barney.mdl"
"netname" "Barney"
"health" "skill:barney_heath"

View file

@ -1,6 +1,6 @@
entityDef monster_bigmomma
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/big_mom.mdl"
"netname" "Big Momma"
"health" "100"
@ -78,7 +78,7 @@ entityDef melee_bigmomma
entityDef ranged_bigmomma_spit
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "sprites/mommaspit.spr"
"mins" "-16 -16 -16"
"mins" "16 16 16"

View file

@ -1,6 +1,6 @@
entityDef monster_bloater
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/floater.mdl"
"netname" "Flocking Floater" // wonder if it's the Floater from Cosmos
"health" "25"

View file

@ -1,6 +1,6 @@
entityDef monster_bullchicken
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/bullsquid.mdl"
"netname" "Bullsquid"
"health" "skill:bullsquid_health"
@ -55,7 +55,7 @@ entityDef melee_bullchicken_tailwhip
entityDef ranged_bullchicken_spit
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "sprites/bigspit.spr"
"def_damage" "damage_spitDirect"

View file

@ -1,6 +1,6 @@
entityDef monster_charger
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/charger.mdl"
"netname" "Charger"
"health" "skill:charger_health"

View file

@ -1,6 +1,6 @@
entityDef monster_chumtoad
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/chumtoad.mdl"
"netname" "Chumtoad"
"health" "10"

View file

@ -1,6 +1,6 @@
entityDef monster_cockroach
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/roach.mdl"
"netname" "Cockroach"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_flyer
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/aflock.mdl"
"netname" "Flyer Flock"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_flyer_flock
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/aflock.mdl"
"netname" "Flyer Flock"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_gargantua
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/garg.mdl"
"netname" "Gargantua"
"health" "skill:gargantua_health"

View file

@ -1,6 +1,6 @@
entityDef monster_gman
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/gman.mdl"
"netname" "G-Man"
"health" "" // he can't die, he's the G-Man!

View file

@ -1,6 +1,6 @@
entityDef monster_headcrab
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/headcrab.mdl"
"netname" "Headcrab"
"health" "skill:headcrab_health"

View file

@ -1,6 +1,6 @@
entityDef monster_hevsuit_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/player.mdl"
"body1" "1"
"netname" "Dead H.E.V. Scientist"

View file

@ -1,6 +1,6 @@
entityDef monster_hgrunt_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/hgrunt.mdl"
"netname" "Dead Human Grunt"
"health" "skill:hgrunt_health"

View file

@ -1,6 +1,6 @@
entityDef monster_houndeye
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/houndeye.mdl"
"netname" "Houndeye"
"health" "skill:houndeye_health"

View file

@ -1,6 +1,6 @@
entityDef monster_human_assassin
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/hassassin.mdl"
"netname" "Human Assassin"
"health" "skill:hassassin_health"

View file

@ -1,6 +1,6 @@
entityDef monster_human_assault
{
"spawnclass" "NSSquadMonster"
"spawnclass" "ncSquadMonster"
"model" "models/hassault.mdl"
"netname" "Human Assault"
"health" "skill:hgrunt_health"
@ -33,7 +33,7 @@ entityDef monster_human_assault
entityDef melee_hassault_kick
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"is_bullet" "1"
"damage" "skill:hgrunt_kick"
"delay" "0.25"

View file

@ -1,6 +1,6 @@
entityDef monster_human_grunt
{
"spawnclass" "NSSquadMonster"
"spawnclass" "ncSquadMonster"
"model" "models/hgrunt.mdl"
"netname" "Grunt"
"health" "skill:hgrunt_health"
@ -68,7 +68,7 @@ entityDef monster_human_grunt
entityDef melee_hgrunt_kick
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"is_bullet" "1"
"damage" "skill:hgrunt_kick"
"delay" "0.25"
@ -93,7 +93,7 @@ entityDef ranged_hgrunt_shot
entityDef projectile_hgrunt_ARgrenade
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/grenade.mdl"
"def_splash_damage" "damage_grenadeSplash"
@ -122,7 +122,7 @@ entityDef projectile_hgrunt_ARgrenade
entityDef projectile_hgrunt_grenade
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/w_grenade.mdl"
"def_splash_damage" "damage_grenadeSplash"

View file

@ -1,6 +1,6 @@
entityDef monster_ichthyosaur
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/icky.mdl"
"netname" "Ichthyosaur"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_kingpin
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/kingpin.mdl"
"netname" "Kingpin"
"health" "200"

View file

@ -1,6 +1,6 @@
entityDef monster_leech
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/leech.mdl"
"netname" "Leech"
"health" "skill:leech_health"

View file

@ -1,6 +1,6 @@
entityDef monster_miniturret
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/miniturret.mdl"
"netname" "Mini-Turret"
"health" "skill:miniturret_health"

View file

@ -1,6 +1,6 @@
entityDef monster_mrfriendly
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/friendly.mdl"
"netname" "Mr. Friendly"
"health" "100"

View file

@ -1,6 +1,6 @@
entityDef monster_nihilanth
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/nihilanth.mdl"
"netname" "Nihilanth"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_osprey
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/osprey.mdl"
"netname" "Osprey"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_panther
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/panther.mdl"
"netname" "Panther Eye"
"health" "skill:panther_health"

View file

@ -1,6 +1,6 @@
entityDef monster_rat
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/bigrat.mdl"
"netname" "Rat"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_scientist_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/scientist.mdl"
"netname" "Dead Scientist"
"health" "skill:scientist_health"

View file

@ -1,12 +1,12 @@
entityDef monster_sentry
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/sentry.mdl"
"netname" "Sentry"
"health" "skill:sentry_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"eye_height" "60"
"team" "1"
"propdata" "actor_robot"
@ -29,6 +29,10 @@ entityDef monster_sentry
"speed_walk" "0"
"speed_run" "0"
"turn_rate" "0"
"use_nav" "0"
"bleed" "0"
"fireFromHead" "1"
}
entityDef ranged_sentry_shot

View file

@ -1,6 +1,6 @@
entityDef monster_sitting_scientist
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/scientist.mdl"
"netname" "Seated Scientist"
"health" "skill:scientist_health"

View file

@ -1,6 +1,6 @@
entityDef monster_skeleton_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/skeleton.mdl"
"netname" "Skeleton"
"health" "50"

View file

@ -1,6 +1,6 @@
entityDef monster_snapbug
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/snapbug.mdl"
"netname" "Snapbug"
"health" "25"

View file

@ -1,6 +1,6 @@
entityDef monster_snark
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/w_squeak.mdl"
"netname" "Snark"
"health" "skill:snark_health"

View file

@ -1,6 +1,6 @@
entityDef monster_sphere
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/sphere.mdl"
"netname" "Vortigaunt Control Sphere"
"health" "10"

View file

@ -1,6 +1,6 @@
entityDef monster_stukabat
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/stukabat.mdl"
"netname" "Stukabat"
"health" "25"

View file

@ -1,6 +1,6 @@
entityDef monster_tentacle
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/tentacle2.mdl"
"netname" "Tentacle"
"health" "25"

View file

@ -1,6 +1,6 @@
entityDef monster_turret
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/turret.mdl"
"netname" "Turret"
"health" "skill:turret_health"

View file

@ -1,6 +1,6 @@
entityDef xen_hair
{
"spawnclass" "NSSurfacePropEntity"
"spawnclass" "ncSurfacePropEntity"
"model" "models/hair.mdl"
"netname" "Xen Hair"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef xen_plantlight
{
"spawnclass" "NSSurfacePropEntity"
"spawnclass" "ncSurfacePropEntity"
"model" "models/light.mdl"
"netname" "Xen Plant Light"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef xen_spore_large
{
"spawnclass" "NSSurfacePropEntity"
"spawnclass" "ncSurfacePropEntity"
"model" "models/fungus(large).mdl"
"netname" "Xen Spore (Large)"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef xen_spore_medium
{
"spawnclass" "NSSurfacePropEntity"
"spawnclass" "ncSurfacePropEntity"
"model" "models/fungus.mdl"
"netname" "Xen Spore (Medium)"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef xen_spore_small
{
"spawnclass" "NSSurfacePropEntity"
"spawnclass" "ncSurfacePropEntity"
"model" "models/fungus(small).mdl"
"netname" "Xen Spore (Small)"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef xen_tree
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/tree.mdl"
"netname" "Xen Tree"
"health" "0"

View file

@ -1,6 +1,6 @@
entityDef monster_zombie
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/zombie.mdl"
"netname" "Zombie"
"health" "skill:zombie_health"

View file

@ -1,6 +1,6 @@
entityDef projectile_bullet_base
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"is_bullet" "1"
"decal_impact" "Impact.BigShot"
"detonate_on_world" "1"
@ -8,7 +8,7 @@ entityDef projectile_bullet_base
entityDef projectile_egonbeam
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"is_bullet" "1"
"damage" "skill:plr_egon"
"detonate_on_world" "0"

View file

@ -1,6 +1,6 @@
entityDef info_player_start
{
"spawnclass" "NSSpawnPoint"
"spawnclass" "ncSpawnPoint"
"editor_mins" "-16 -16 -36"
"editor_maxs" "16 16 36"
"editor_description" "Singleplayer Spawn Point"
@ -9,7 +9,7 @@ entityDef info_player_start
entityDef info_player_deathmatch
{
"spawnclass" "NSSpawnPoint"
"spawnclass" "ncSpawnPoint"
"editor_mins" "-16 -16 -36"
"editor_maxs" "16 16 36"
"editor_description" "Deathmatch Spawn Point"
@ -18,7 +18,7 @@ entityDef info_player_deathmatch
entityDef info_player_coop
{
"spawnclass" "NSSpawnPoint"
"spawnclass" "ncSpawnPoint"
"editor_mins" "-16 -16 -36"
"editor_maxs" "16 16 36"
"editor_description" "Cooperative Spawn Point"
@ -27,7 +27,7 @@ entityDef info_player_coop
entityDef info_spectator_start
{
"spawnclass" "NSSpawnPoint"
"spawnclass" "ncSpawnPoint"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_description" "Spectator Spawn Point"

View file

@ -12,7 +12,7 @@ entityDef weapon_9mmAR
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
// NSWeapon specific
// ncWeapon specific
"def_fireInfo" "fireInfo_9mmAR"
"def_altFireInfo" "fireInfo_ARGrenade"
"inv_name" "9mm AR"
@ -72,7 +72,7 @@ entityDef fireInfo_ARGrenade
entityDef projectile_ARgrenade
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/grenade.mdl"
"offset" "16 0 0"
"velocity" "800 0 0"

View file

@ -1,3 +1,13 @@
#define 9MMHANDGUN_IDLE1 0
#define 9MMHANDGUN_IDLE2 1
#define 9MMHANDGUN_IDLE3 2
#define 9MMHANDGUN_FIRE 3
#define 9MMHANDGUN_FIRELAST 4
#define 9MMHANDGUN_RELOADEMPTY 5
#define 9MMHANDGUN_RELOAD 6
#define 9MMHANDGUN_DRAW 7
#define 9MMHANDGUN_HOLSTER 8
entityDef weapon_9mmhandgun
{
"editor_color" ".3 .3 1"
@ -22,13 +32,13 @@ entityDef weapon_9mmhandgun
"ammoPerShot" "1"
"punchAngle" "-2 0 0"
"act_fire" "3"
"act_fireLast" "4"
"act_holster" "8"
"act_reload" "6"
"act_reloadEmpty" "5"
"act_draw" "7"
"act_idle" "0,1,2"
"act_fire" "$9MMHANDGUN_FIRE"
"act_fireLast" "$9MMHANDGUN_FIRELAST"
"act_holster" "$9MMHANDGUN_HOLSTER"
"act_reload" "$9MMHANDGUN_RELOAD"
"act_reloadEmpty" "$9MMHANDGUN_RELOADEMPTY"
"act_draw" "$9MMHANDGUN_DRAW"
"act_idle" "$9MMHANDGUN_IDLE1,$9MMHANDGUN_IDLE2,$9MMHANDGUN_IDLE3"
"snd_fire" "Weapon_Glock.Single"
"snd_altfire" "Weapon_Glock.Single"

View file

@ -68,13 +68,13 @@ entityDef fireInfo_crossbowMP
entityDef debris_arrow
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/crossbow_bolt.mdl"
}
entityDef projectile_arrow
{
"spawnclass" "NSProjectile"
"spawnclass" "ncProjectile"
"model" "models/crossbow_bolt.mdl"
"velocity" "2000 0 0"
"angular_velocity" "0 0 20"

Some files were not shown because too many files have changed in this diff Show more