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

View file

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

View file

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

View file

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

View file

@ -138,7 +138,7 @@ void
HUD_DrawHealth(void) HUD_DrawHealth(void)
{ {
vector pos; vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
if (pl.health != pSeatLocal->m_iHealthOld) { if (pl.health != pSeatLocal->m_iHealthOld) {
pSeatLocal->m_flHealthAlpha = 1.0; pSeatLocal->m_flHealthAlpha = 1.0;
@ -185,7 +185,7 @@ void
HUD_DrawArmor(void) HUD_DrawArmor(void)
{ {
vector pos; vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
pos = g_hudmins + [198, g_hudres[1] - 42]; pos = g_hudmins + [198, g_hudres[1] - 42];
@ -232,7 +232,7 @@ HUD_DrawArmor(void)
void void
HUD_DrawAmmo1(void) HUD_DrawAmmo1(void)
{ {
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos; vector pos;
if (pl.a_ammo1 != pSeatLocal->m_iAmmo1Old) { if (pl.a_ammo1 != pSeatLocal->m_iAmmo1Old) {
@ -255,7 +255,7 @@ HUD_DrawAmmo1(void)
void void
HUD_DrawAmmo2(void) HUD_DrawAmmo2(void)
{ {
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos; vector pos;
if (pl.a_ammo2 != pSeatLocal->m_iAmmo2Old) { if (pl.a_ammo2 != pSeatLocal->m_iAmmo2Old) {
@ -277,7 +277,7 @@ HUD_DrawAmmo2(void)
void void
HUD_DrawAmmo3(void) HUD_DrawAmmo3(void)
{ {
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
vector pos; vector pos;
if (pl.a_ammo3 != pSeatLocal->m_iAmmo3Old) { if (pl.a_ammo3 != pSeatLocal->m_iAmmo3Old) {
@ -314,7 +314,7 @@ void
HUD_DrawFlashlight(void) HUD_DrawFlashlight(void)
{ {
vector pos; vector pos;
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
pos = g_hudmins + [g_hudres[0] - 48, 16]; pos = g_hudmins + [g_hudres[0] - 48, 16];
/* both on, draw both sprites at full intensity */ /* both on, draw both sprites at full intensity */
@ -390,7 +390,7 @@ HUD_DrawLogo(void)
void void
HUD_DrawNotify(void) HUD_DrawNotify(void)
{ {
NSClientPlayer pl = (NSClientPlayer)self; ncPlayer pl = (ncPlayer)self;
vector pos; vector pos;
float a; float a;
@ -473,7 +473,7 @@ HUD_TimeRemaining(void)
void void
HUD_Draw(void) HUD_Draw(void)
{ {
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
#ifndef TFC #ifndef TFC
#ifndef GEARBOX #ifndef GEARBOX
@ -519,7 +519,7 @@ HUD_DrawSpectator(void)
{ {
Textmenu_Draw(); Textmenu_Draw();
NSClientSpectator spec = (NSClientSpectator)pSeat->m_ePlayer; ncSpectator spec = (ncSpectator)pSeat->m_ePlayer;
drawfont = Font_GetID(FONT_20); drawfont = Font_GetID(FONT_20);
vector vecPos = [0.0f, 0.0f, 0.0f]; 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 */ /* called whenever we should check for pickup updates */
void 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(0, pl.m_iAmmoTypes[1] - pl.m_iAmmoTypes_net[1]);
HUD_AmmoNotify_Insert(1, pl.m_iAmmoTypes[2] - pl.m_iAmmoTypes_net[2]); 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 */ /* called whenever we should check for pickup updates */
void void
HUD_ItemNotify_Check(NSClientPlayer pl) HUD_ItemNotify_Check(ncPlayer pl)
{ {
#if 0 #if 0
int healthdiff = (int)bound(0, pl.health - pSeatLocal->m_iHealthOld, 100); 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. * 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] = vector g_vecHUDNums[6] =
@ -28,7 +28,7 @@ vector g_vecHUDNums[6] =
}; };
void void
HUD_SelectWeapon(NSWeapon nextWeapon) HUD_SelectWeapon(ncWeapon nextWeapon)
{ {
if (!nextWeapon) { if (!nextWeapon) {
pSeat->m_iHUDWeaponSelected = 0i; pSeat->m_iHUDWeaponSelected = 0i;
@ -78,12 +78,12 @@ void
HUD_SlotSelect(int slot) HUD_SlotSelect(int slot)
{ {
#if 0 #if 0
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot; int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i; int i;
#endif #endif
if (g_textmenu != "") { if (Textmenu_IsActive() == true) {
Textmenu_Input(slot); Textmenu_Input(slot);
return; return;
} }
@ -136,7 +136,7 @@ void
HUD_DrawWeaponSelect(void) HUD_DrawWeaponSelect(void)
{ {
#if 0 #if 0
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; ncPlayer pl = (ncPlayer)pSeat->m_ePlayer;
if (!pl.activeweapon) { if (!pl.activeweapon) {
return; return;
} }

View file

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

View file

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

View file

@ -29,7 +29,7 @@ Scores_Init(void)
} }
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); drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
@ -135,7 +135,7 @@ Scores_DrawTeam(NSClientPlayer pl, vector pos)
} }
void void
Scores_DrawNormal(NSClientPlayer pl, vector pos) Scores_DrawNormal(ncPlayer pl, vector pos)
{ {
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE); drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
@ -192,9 +192,9 @@ void
Scores_Draw(void) Scores_Draw(void)
{ {
vector pos; vector pos;
NSClientPlayer pl; ncPlayer pl;
pl = (NSClientPlayer)pSeat->m_ePlayer; pl = (ncPlayer)pSeat->m_ePlayer;
if (autocvar_cl_centerscores) { if (autocvar_cl_centerscores) {
int c = 10; 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) VGUI_ShowMOTD(void)
{ {
static int initialized; static int initialized;
static VGUIButton winMotdClose; static vguiButton winMotdClose;
static VGUIWindow winMotd; static vguiWindow winMotd;
static VGUILabel winMotdHostname; static vguiLabel winMotdHostname;
static VGUILabel winMotdBody; static vguiLabel winMotdBody;
static void VGUI_ShowMOTD_Close(void) 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(); winMotd.Hide();
} }
@ -33,23 +46,24 @@ VGUI_ShowMOTD(void)
if (!initialized) { if (!initialized) {
initialized = TRUE; initialized = TRUE;
winMotd = spawn(VGUIWindow); winMotd = spawn(vguiWindow);
winMotd.SetTitle("Message Of The Day"); winMotd.SetTitle("Message Of The Day");
winMotd.SetStyleMask(vguiWindowBorderless | vguiWindowFullscreen);
winMotd.SetSize('424 312'); winMotd.SetSize('424 312');
winMotd.SetStyleMask(0); winMotd.SetStyleMask(0);
winMotdClose = spawn(VGUIButton); winMotdClose = spawn(vguiButton);
winMotdClose.SetTitle("OK"); winMotdClose.SetTitle("OK");
winMotdClose.SetPos([16, 266]); winMotdClose.SetPos([16, 266]);
winMotdClose.SetSize([160, 30]); winMotdClose.SetSize([160, 30]);
winMotdClose.SetFunc(VGUI_ShowMOTD_Close); winMotdClose.SetFunc(VGUI_ShowMOTD_Close);
winMotdHostname = spawn(VGUILabel); winMotdHostname = spawn(vguiLabel);
winMotdHostname.SetTitle(serverkey("hostname")); winMotdHostname.SetTitle(serverkey("hostname"));
winMotdHostname.SetTextSize(19); winMotdHostname.SetTextSize(19);
winMotdHostname.SetPos([16, 20]); winMotdHostname.SetPos([16, 20]);
winMotdBody = spawn(VGUILabel); winMotdBody = spawn(vguiLabel);
winMotdBody.SetTitle(MOTD_GetTextBody()); winMotdBody.SetTitle(MOTD_GetTextBody());
winMotdBody.SetPos([16, 48]); winMotdBody.SetPos([16, 48]);
winMotdBody.SetSize([392, 210]); winMotdBody.SetSize([392, 210]);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,7 @@
#pragma target fte_5768 #pragma target fte_5768
//#pragma flag enable assumeint //#pragma flag enable assumeint
#pragma progs_dat "../../zpak001.pk3dir/progs.dat" #pragma progs_dat "../../zpak001.pk3dir/progs.dat"
#pragma forcecrc 54730
#define QWSSQC #define QWSSQC
#define SERVER #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 * Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * 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. * 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 void
Game_Worldspawn(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 */ /* 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; void(void) world_items;
}; };

View file

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

View file

@ -17,7 +17,7 @@
/*! \brief Half-Life weapon base class. */ /*! \brief Half-Life weapon base class. */
/*!QUAKED HLWeapon (0 0.8 0.8) (-16 -16 0) (16 16 72) /*!QUAKED HLWeapon (0 0.8 0.8) (-16 -16 0) (16 16 72)
# OVERVIEW # OVERVIEW
Half-Life specific weapon based on NSWeapon. Half-Life specific weapon based on ncWeapon.
# NEW KEYS # NEW KEYS
- "ammoIcon" - Which sprites/ image to use. See notes. - "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`. For example, `ammoIcon` being set to `weapon_foobar.ammo` will look up `ammo` inside `sprites/weapon_foobar.txt`.
*/ */
class class
HLWeapon:NSWeapon HLWeapon:ncWeapon
{ {
public: public:
void HLWeapon(void); void HLWeapon(void);
@ -57,7 +57,7 @@ private:
string m_crossHair; string m_crossHair;
string m_icon; string m_icon;
string m_iconSel; string m_iconSel;
NSWeapon m_nextWeapon; ncWeapon m_nextWeapon;
#endif #endif
bool m_bAltModeLaser; bool m_bAltModeLaser;
}; };

View file

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

View file

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

View file

@ -23,7 +23,7 @@ enumflags
PLAYER_BOTTOMFRAME PLAYER_BOTTOMFRAME
}; };
class HLPlayer:NSClientPlayer class HLPlayer:ncPlayer
{ {
void(void) HLPlayer; void(void) HLPlayer;
@ -45,7 +45,7 @@ class HLPlayer:NSClientPlayer
virtual void UpdateAliveCam(void); virtual void UpdateAliveCam(void);
virtual void ClientInputFrame(void); virtual void ClientInputFrame(void);
#else #else
virtual void Death(entity, entity, int, vector, int); virtual void Death(entity, entity, int, vector, vector, int);
virtual void EvaluateEntity(void); virtual void EvaluateEntity(void);
virtual float SendEntity(entity, float); virtual float SendEntity(entity, float);
virtual void Save(float); virtual void Save(float);
@ -97,7 +97,7 @@ HLPlayer::ClientInputFrame(void)
void Camera_RunPosBob(vector angles, __inout vector camera_pos); void Camera_RunPosBob(vector angles, __inout vector camera_pos);
void Camera_StrafeRoll(__inout vector camera_angle); void Camera_StrafeRoll(__inout vector camera_angle);
void Shake_Update(NSClientPlayer); void Shake_Update(ncPlayer);
void void
HLPlayer::UpdateAliveCam(void) HLPlayer::UpdateAliveCam(void)
@ -110,7 +110,7 @@ HLPlayer::UpdateAliveCam(void)
g_view.SetCameraAngle(view_angles); g_view.SetCameraAngle(view_angles);
if (vehicle) { if (vehicle) {
NSVehicle veh = (NSVehicle)vehicle; ncVehicle veh = (ncVehicle)vehicle;
if (veh.UpdateView) if (veh.UpdateView)
veh.UpdateView(); veh.UpdateView();
@ -129,7 +129,7 @@ HLPlayer::UpdateAliveCam(void)
} }
.string oldmodel; .string oldmodel;
//string Weapons_GetPlayermodel(NSClientPlayer, int); //string Weapons_GetPlayermodel(ncPlayer, int);
var bool autocvar_cg_flashlightClassic = true; var bool autocvar_cg_flashlightClassic = true;
var float autocvar_r_shadow_realtime_dlight; 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]); p = dynamiclight_add(trace_endpos + (trace_plane_normal * 48.0f), 96, [1,1,1]);
} }
} else { } 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_ANGLES, ang);
dynamiclight_set(p, LFIELD_FLAGS, 3); dynamiclight_set(p, LFIELD_FLAGS, 3);
} }
@ -190,7 +190,7 @@ HLPlayer::UpdatePlayerAttachments(bool visible)
p_model.skeletonindex = skel_create(p_model.modelindex); 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 */ /* 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"); setcustomskin(this, "", "geomset 0 2\n");
else else
setcustomskin(this, "", "geomset 0 1\n"); setcustomskin(this, "", "geomset 0 1\n");
@ -219,8 +219,8 @@ HLPlayer::UpdatePlayerAttachments(bool visible)
} }
} }
void HUD_AmmoNotify_Check(NSClientPlayer pl); void HUD_AmmoNotify_Check(ncPlayer pl);
void HUD_ItemNotify_Check(NSClientPlayer pl); void HUD_ItemNotify_Check(ncPlayer pl);
/* /*
================= =================
HLPlayer::ReceiveEntity HLPlayer::ReceiveEntity
@ -340,7 +340,7 @@ void
HLPlayer::EvaluateEntity(void) HLPlayer::EvaluateEntity(void)
{ {
/* the generic client attributes */ /* the generic client attributes */
NSClientPlayer::EvaluateEntity(); ncPlayer::EvaluateEntity();
EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME) EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME)
EVALUATE_FIELD(anim_top_time, 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 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 */ /* either gib, or make a corpse */
if (GetHealth()< -50) { if (GetHealth()< -50) {
vector gibDir = vectoangles(GetOrigin() - attacker.origin);
float gibStrength = damagePoints * 2.0f; float gibStrength = damagePoints * 2.0f;
BreakModel_Entity(this, gibDir, gibStrength); BreakModel_Entity(this, dir, gibStrength);
} else { } else {
float deathAnimation = ANIM_DIESIMPLE; float deathAnimation = ANIM_DIESIMPLE;
switch (location) { switch (hitBody) {
case BODY_HEAD: case BODY_HEAD:
deathAnimation = ANIM_DIEHEADSHOT; deathAnimation = ANIM_DIEHEADSHOT;
break; break;
@ -373,7 +371,7 @@ HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir,
deathAnimation = ANIM_DIEGUTSHOT; deathAnimation = ANIM_DIEGUTSHOT;
break; break;
default: default:
bool isFacing = IsFacingPosition(GetOrigin() + (dir * 128)); bool isFacing = IsFacingPosition(absImpactPos);
/* we still want a change to play ANIM_DIESIMPLE */ /* we still want a change to play ANIM_DIESIMPLE */
if (random() < 0.5) if (random() < 0.5)
@ -386,7 +384,7 @@ HLPlayer::Death(entity inflictor, entity attacker, int damagePoints, vector dir,
break; 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 we were crouching, adjust the bbox (thx 2 lack of crouch death animation) */
if (IsCrouching()) { 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); flChanged = OptimiseChangedFlags(ePEnt, flChanged);
/* the generic client attributes */ /* the generic client attributes */
NSClientPlayer::SendEntity(ePEnt, flChanged); ncPlayer::SendEntity(ePEnt, flChanged);
SENDENTITY_BYTE(anim_top, PLAYER_TOPFRAME) SENDENTITY_BYTE(anim_top, PLAYER_TOPFRAME)
SENDENTITY_FLOAT(anim_top_time, 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. * Because not being able to place it around levels would be boring.
* Some maps, such as subtransit and a few singleplayer chapters have this. */ * Some maps, such as subtransit and a few singleplayer chapters have this. */
class HLTripmine:NSSurfacePropEntity class HLTripmine:ncSurfacePropEntity
{ {
void HLTripmine(void); void HLTripmine(void);
@ -40,8 +40,8 @@ class HLTripmine:NSSurfacePropEntity
virtual void Respawn(void); virtual void Respawn(void);
virtual void Spawned(void); virtual void Spawned(void);
virtual void Ready(void); virtual void Ready(void);
virtual void Pain(entity, entity, int, vector, int); virtual void Pain(entity, entity, int, vector, vector, int);
virtual void Death(entity, entity, int, vector, int); virtual void Death(entity, entity, int, vector, vector, int);
virtual float SendEntity(entity, float); virtual float SendEntity(entity, float);
#endif #endif
@ -99,7 +99,7 @@ HLTripmine::Spawned(void)
} }
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(); vector explosionPos = GetOrigin();
float explosionDamage = Skill_GetValue("plr_tripmine", 150); float explosionDamage = Skill_GetValue("plr_tripmine", 150);
@ -116,9 +116,9 @@ HLTripmine::Death(entity inflictor, entity attacker, int damage, vector dir, int
} }
void 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 void
@ -139,7 +139,7 @@ HLTripmine::Ready(void)
/* laser shorter than when calibrated, explode! */ /* laser shorter than when calibrated, explode! */
if (trace_endpos != m_vecEndPos) { 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; 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 entityDef ammo_base
{ {
"spawnclass" "NSItem" "spawnclass" "ncItem"
"snd_acquire" "ammo.pickup" "snd_acquire" "ammo.pickup"
"snd_respawn" "ammo.respawn" "snd_respawn" "ammo.respawn"
"mins" "-16 -16 0" "mins" "-16 -16 0"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -12,7 +12,7 @@ entityDef weapon_9mmAR
"snd_acquire" "weapon.pickup" "snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn" "snd_respawn" "item.respawn"
// NSWeapon specific // ncWeapon specific
"def_fireInfo" "fireInfo_9mmAR" "def_fireInfo" "fireInfo_9mmAR"
"def_altFireInfo" "fireInfo_ARGrenade" "def_altFireInfo" "fireInfo_ARGrenade"
"inv_name" "9mm AR" "inv_name" "9mm AR"
@ -72,7 +72,7 @@ entityDef fireInfo_ARGrenade
entityDef projectile_ARgrenade entityDef projectile_ARgrenade
{ {
"spawnclass" "NSProjectile" "spawnclass" "ncProjectile"
"model" "models/grenade.mdl" "model" "models/grenade.mdl"
"offset" "16 0 0" "offset" "16 0 0"
"velocity" "800 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 entityDef weapon_9mmhandgun
{ {
"editor_color" ".3 .3 1" "editor_color" ".3 .3 1"
@ -22,13 +32,13 @@ entityDef weapon_9mmhandgun
"ammoPerShot" "1" "ammoPerShot" "1"
"punchAngle" "-2 0 0" "punchAngle" "-2 0 0"
"act_fire" "3" "act_fire" "$9MMHANDGUN_FIRE"
"act_fireLast" "4" "act_fireLast" "$9MMHANDGUN_FIRELAST"
"act_holster" "8" "act_holster" "$9MMHANDGUN_HOLSTER"
"act_reload" "6" "act_reload" "$9MMHANDGUN_RELOAD"
"act_reloadEmpty" "5" "act_reloadEmpty" "$9MMHANDGUN_RELOADEMPTY"
"act_draw" "7" "act_draw" "$9MMHANDGUN_DRAW"
"act_idle" "0,1,2" "act_idle" "$9MMHANDGUN_IDLE1,$9MMHANDGUN_IDLE2,$9MMHANDGUN_IDLE3"
"snd_fire" "Weapon_Glock.Single" "snd_fire" "Weapon_Glock.Single"
"snd_altfire" "Weapon_Glock.Single" "snd_altfire" "Weapon_Glock.Single"

View file

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

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