12 Aug 2007
This commit is contained in:
parent
4ae8e99b83
commit
571c2d208c
|
@ -1,10 +1,3 @@
|
|||
|
||||
|
||||
//==================================================
|
||||
// DELETE
|
||||
//==================================================
|
||||
1. убить формат md2
|
||||
|
||||
//==================================================
|
||||
// FIXME
|
||||
//==================================================
|
||||
|
@ -13,39 +6,23 @@ render.dll
|
|||
2. Избавиться от pcx совсем
|
||||
3. упорядочить типы загрузки
|
||||
4. избавиться от LightImageScale
|
||||
5. пофиксить баг с высвобождением моделей OK
|
||||
6. переписать refexport\refimport OK
|
||||
7. погасить рендер при фатальной ошибке OK
|
||||
8. наладить установку прозрачности
|
||||
|
||||
engine.dll
|
||||
1. избавиться от Com_Sprintf
|
||||
2. заменить в Net_msg код на BuffBigShort
|
||||
3. полный дебуг MSG_Read\MSG_Write OK
|
||||
4. пофиксить проблему с qport OK
|
||||
5. разобраться с SZ Overflow
|
||||
1. избавиться от Com_Sprintf OK
|
||||
2. убить все ссылки на .md2(заменить на mdl)
|
||||
|
||||
launcher.dll
|
||||
1. Сделать read-only консоли OK
|
||||
2. Пофиксить утечки win консоли OK
|
||||
3. Оставить только одну консоль win32 OK
|
||||
4. Сделать HOOK для определения типа вывода OK
|
||||
5. подключить кастомный хандлер для ошибок
|
||||
|
||||
1. подключить кастомный хандлер для ошибок
|
||||
|
||||
platform.dll
|
||||
1. разобраться наконец с записью файлов
|
||||
2. переписать LoadJPG чтобы он читал из буффера OK
|
||||
3. переписать загрузчик, чтобы он грузил кубемапы в один буффер OK
|
||||
4. Довести до ума виртуальную файловую систему OK
|
||||
5. Сделать валидатор game-директорий
|
||||
6. Переписать SC_ParseToken
|
||||
2. Сделать валидатор game-директорий
|
||||
3. Переписать SC_ParseToken
|
||||
4. пофиксить странный вылет c компилом в релизе
|
||||
|
||||
{
|
||||
studiomdl - апгрейд до версии 0.2
|
||||
1. тщательный тест всех возможностей OK
|
||||
2. заменить идиоцкие пути на Add_GameHierarchy OK
|
||||
3. Окончательно настроить все лимиты
|
||||
1. Окончательно настроить все лимиты
|
||||
|
||||
bsplib
|
||||
1. сделать парсинг "ambient" из карты
|
||||
|
@ -64,6 +41,7 @@ platform.dll
|
|||
//==================================================
|
||||
// то, что уже готово
|
||||
//==================================================
|
||||
+пофикшен баг с автоматическим рассчетом хулла для первой энтити на карте
|
||||
+существенное уменьшение размера сейвов
|
||||
+новая организация сейвов
|
||||
+добавлен новый интерфейс - виртуальная файловая система
|
||||
|
|
|
@ -6,6 +6,41 @@
|
|||
--------------------Configuration: editor - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating command line "rc.exe /l 0x409 /fo"..\temp\editor\!debug/editor.res" /d "_DEBUG" "D:\XASH3D\src_main\!source\editor\editor.rc""
|
||||
Creating temporary file "C:\Temp\RSP5CC.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /W3 /Gm /Gi /GX /ZI /Od /I "../public" /I "../platform/formats" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\editor\!debug/" /Fo"..\temp\editor\!debug/" /Fd"..\temp\editor\!debug/" /FD /GZ /c
|
||||
"D:\XASH3D\src_main\!source\editor\editor.c"
|
||||
"D:\XASH3D\src_main\!source\editor\guiutils.c"
|
||||
"D:\XASH3D\src_main\!source\editor\guiforms.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\Temp\RSP5CC.tmp"
|
||||
Creating temporary file "C:\Temp\RSP5CD.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib /nologo /dll /incremental:yes /pdb:"..\temp\editor\!debug/editor.pdb" /debug /machine:I386 /out:"..\temp\editor\!debug/editor.dll" /implib:"..\temp\editor\!debug/editor.lib" /pdbtype:sept
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\editor.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\guiutils.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\guiforms.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\editor.res"
|
||||
]
|
||||
Creating command line "link.exe @C:\Temp\RSP5CD.tmp"
|
||||
Creating temporary file "C:\Temp\RSP5CE.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \XASH3D\src_main\!source\temp\editor\!debug\editor.dll "D:\Xash3D\bin\editor.dll"
|
||||
]
|
||||
Creating command line "C:\Temp\RSP5CE.bat"
|
||||
Compiling resources...
|
||||
Compiling...
|
||||
editor.c
|
||||
guiutils.c
|
||||
guiforms.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\editor\!debug/editor.lib and object ..\temp\editor\!debug/editor.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \XASH3D\src_main\!source\temp\editor\!debug\editor.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -579,7 +579,7 @@ void SCR_PlayCinematic (char *arg)
|
|||
dot = strstr (arg, ".");
|
||||
if (dot && !strcmp (dot, ".pcx"))
|
||||
{ // static pcx image
|
||||
Com_sprintf (name, sizeof(name), "pics/%s", arg);
|
||||
sprintf (name, "pics/%s", arg);
|
||||
SCR_LoadPCX (name, &cin.pic, &palette, &cin.width, &cin.height);
|
||||
cl.cinematicframe = -1;
|
||||
cl.cinematictime = 1;
|
||||
|
@ -598,7 +598,7 @@ void SCR_PlayCinematic (char *arg)
|
|||
return;
|
||||
}
|
||||
|
||||
Com_sprintf (name, sizeof(name), "video/%s", arg);
|
||||
sprintf (name, "video/%s", arg);
|
||||
cl.cinematic_file = FS_Open(name, "rb" );
|
||||
if (!cl.cinematic_file)
|
||||
{
|
||||
|
|
|
@ -206,7 +206,7 @@ Returns the entity number and the header bits
|
|||
=================
|
||||
*/
|
||||
int bitcounts[32]; /// just for protocol profiling
|
||||
int CL_ParseEntityBits (unsigned *bits)
|
||||
int CL_ParseEntityBits (uint *bits)
|
||||
{
|
||||
unsigned b, total;
|
||||
int i;
|
||||
|
@ -230,14 +230,11 @@ int CL_ParseEntityBits (unsigned *bits)
|
|||
}
|
||||
|
||||
// count the bits for net profiling
|
||||
for (i=0 ; i<32 ; i++)
|
||||
if (total&(1<<i))
|
||||
bitcounts[i]++;
|
||||
for (i = 0; i < 32; i++)
|
||||
if (total&(1<<i)) bitcounts[i]++;
|
||||
|
||||
if (total & U_NUMBER16)
|
||||
number = MSG_ReadShort (&net_message);
|
||||
else
|
||||
number = MSG_ReadByte (&net_message);
|
||||
if (total & U_NUMBER16) number = MSG_ReadShort (&net_message);
|
||||
else number = MSG_ReadByte (&net_message);
|
||||
|
||||
*bits = total;
|
||||
|
||||
|
@ -259,71 +256,44 @@ void CL_ParseDelta (entity_state_t *from, entity_state_t *to, int number, int bi
|
|||
VectorCopy (from->origin, to->old_origin);
|
||||
to->number = number;
|
||||
|
||||
if (bits & U_MODEL)
|
||||
to->modelindex = MSG_ReadByte (&net_message);
|
||||
if (bits & U_WEAPONMODEL)
|
||||
to->weaponmodel = MSG_ReadByte (&net_message);
|
||||
if (bits & U_BODY)
|
||||
to->body = MSG_ReadByte (&net_message);
|
||||
if (bits & U_SEQUENCE)
|
||||
to->sequence = MSG_ReadByte (&net_message);
|
||||
if (bits & U_MODEL) to->modelindex = MSG_ReadByte (&net_message);
|
||||
if (bits & U_WEAPONMODEL) to->weaponmodel = MSG_ReadByte (&net_message);
|
||||
|
||||
if (bits & U_FRAME8)
|
||||
to->frame = MSG_ReadByte (&net_message);
|
||||
if (bits & U_FRAME16)
|
||||
to->frame = MSG_ReadShort (&net_message);
|
||||
if (bits & U_FRAME8 ) to->frame = MSG_ReadByte (&net_message);
|
||||
if (bits & U_FRAME16) to->frame = MSG_ReadShort (&net_message);
|
||||
|
||||
if ((bits & U_SKIN8) && (bits & U_SKIN16)) //used for laser colors
|
||||
to->skinnum = MSG_ReadLong(&net_message);
|
||||
else if (bits & U_SKIN8)
|
||||
to->skinnum = MSG_ReadByte(&net_message);
|
||||
else if (bits & U_SKIN16)
|
||||
to->skinnum = MSG_ReadShort(&net_message);
|
||||
if (bits & U_SKIN8 ) to->skin = MSG_ReadByte(&net_message);
|
||||
if (bits & U_SKIN16) to->skin = MSG_ReadShort(&net_message);
|
||||
|
||||
if ( (bits & (U_EFFECTS8|U_EFFECTS16)) == (U_EFFECTS8|U_EFFECTS16) )
|
||||
to->effects = MSG_ReadLong(&net_message);
|
||||
else if (bits & U_EFFECTS8)
|
||||
to->effects = MSG_ReadByte(&net_message);
|
||||
else if (bits & U_EFFECTS16)
|
||||
to->effects = MSG_ReadShort(&net_message);
|
||||
else if (bits & U_EFFECTS8 ) to->effects = MSG_ReadByte(&net_message);
|
||||
else if (bits & U_EFFECTS16) to->effects = MSG_ReadShort(&net_message);
|
||||
|
||||
if ( (bits & (U_RENDERFX8|U_RENDERFX16)) == (U_RENDERFX8|U_RENDERFX16) )
|
||||
to->renderfx = MSG_ReadLong(&net_message);
|
||||
else if (bits & U_RENDERFX8)
|
||||
to->renderfx = MSG_ReadByte(&net_message);
|
||||
else if (bits & U_RENDERFX16)
|
||||
to->renderfx = MSG_ReadShort(&net_message);
|
||||
else if (bits & U_RENDERFX8 ) to->renderfx = MSG_ReadByte(&net_message);
|
||||
else if (bits & U_RENDERFX16) to->renderfx = MSG_ReadShort(&net_message);
|
||||
|
||||
if (bits & U_ORIGIN1)
|
||||
to->origin[0] = MSG_ReadCoord (&net_message);
|
||||
if (bits & U_ORIGIN2)
|
||||
to->origin[1] = MSG_ReadCoord (&net_message);
|
||||
if (bits & U_ORIGIN3)
|
||||
to->origin[2] = MSG_ReadCoord (&net_message);
|
||||
if (bits & U_ORIGIN1) to->origin[0] = MSG_ReadCoord (&net_message);
|
||||
if (bits & U_ORIGIN2) to->origin[1] = MSG_ReadCoord (&net_message);
|
||||
if (bits & U_ORIGIN3) to->origin[2] = MSG_ReadCoord (&net_message);
|
||||
|
||||
if (bits & U_ANGLE1)
|
||||
to->angles[0] = MSG_ReadAngle(&net_message);
|
||||
if (bits & U_ANGLE2)
|
||||
to->angles[1] = MSG_ReadAngle(&net_message);
|
||||
if (bits & U_ANGLE3)
|
||||
to->angles[2] = MSG_ReadAngle(&net_message);
|
||||
if (bits & U_ANGLE1) to->angles[0] = MSG_ReadAngle(&net_message);
|
||||
if (bits & U_ANGLE2) to->angles[1] = MSG_ReadAngle(&net_message);
|
||||
if (bits & U_ANGLE3) to->angles[2] = MSG_ReadAngle(&net_message);
|
||||
|
||||
if (bits & U_OLDORIGIN)
|
||||
MSG_ReadPos (&net_message, to->old_origin);
|
||||
if (bits & U_OLDORIGIN) MSG_ReadPos (&net_message, to->old_origin);
|
||||
|
||||
if (bits & U_SOUND)
|
||||
to->sound = MSG_ReadByte (&net_message);
|
||||
if (bits & U_SEQUENCE) to->sequence = MSG_ReadByte (&net_message);
|
||||
if (bits & U_SOLID) to->solid = MSG_ReadShort (&net_message);
|
||||
if (bits & U_ALPHA) to->alpha = MSG_ReadFloat (&net_message);
|
||||
|
||||
if (bits & U_SOUND) to->sound = MSG_ReadByte (&net_message);
|
||||
if (bits & U_EVENT) to->event = MSG_ReadByte (&net_message);
|
||||
else to->event = 0;
|
||||
|
||||
if (bits & U_EVENT)
|
||||
to->event = MSG_ReadByte (&net_message);
|
||||
else
|
||||
to->event = 0;
|
||||
|
||||
if (bits & U_SOLID)
|
||||
to->solid = MSG_ReadShort (&net_message);
|
||||
|
||||
if (bits & U_ALPHA)
|
||||
to->alpha = MSG_ReadFloat (&net_message);
|
||||
if (bits & U_BODY) to->body = MSG_ReadByte (&net_message);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -825,19 +795,20 @@ struct model_s *S_RegisterSexedModel (entity_state_t *ent, char *base)
|
|||
if (!model[0])
|
||||
strcpy(model, "male");
|
||||
|
||||
Com_sprintf (buffer, sizeof(buffer), "players/%s/%s", model, base+1);
|
||||
sprintf (buffer, "players/%s/%s", model, base+1);
|
||||
mdl = re.RegisterModel(buffer);
|
||||
if (!mdl) {
|
||||
// not found, try default weapon model
|
||||
Com_sprintf (buffer, sizeof(buffer), "players/%s/weapon.md2", model);
|
||||
sprintf (buffer, "players/%s/weapon.md2", model);
|
||||
mdl = re.RegisterModel(buffer);
|
||||
if (!mdl) {
|
||||
if (!mdl)
|
||||
{
|
||||
// no, revert to the male model
|
||||
Com_sprintf (buffer, sizeof(buffer), "players/%s/%s", "male", base+1);
|
||||
sprintf (buffer, "players/%s/%s", "male", base+1);
|
||||
mdl = re.RegisterModel(buffer);
|
||||
if (!mdl) {
|
||||
// last try, default male weapon.md2
|
||||
Com_sprintf (buffer, sizeof(buffer), "players/male/weapon.md2");
|
||||
sprintf (buffer, "players/male/weapon.md2");
|
||||
mdl = re.RegisterModel(buffer);
|
||||
}
|
||||
}
|
||||
|
@ -951,9 +922,9 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
|
||||
// tweak the color of beams
|
||||
if ( renderfx & RF_BEAM )
|
||||
{ // the four beam colors are encoded in 32 bits of skinnum (hack)
|
||||
{ // the four beam colors are encoded in 32 bits of skin (hack)
|
||||
ent.alpha = 0.30;
|
||||
ent.skinnum = (s1->skinnum >> ((rand() % 4)*8)) & 0xff;
|
||||
ent.skin = (s1->skin >> ((rand() % 4)*8)) & 0xff;
|
||||
ent.model = NULL;
|
||||
}
|
||||
else
|
||||
|
@ -961,8 +932,8 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
// set skin
|
||||
if (s1->modelindex == 255)
|
||||
{ // use custom player skin
|
||||
ent.skinnum = 0;
|
||||
ci = &cl.clientinfo[s1->skinnum & 0xff];
|
||||
ent.skin = 0;
|
||||
ci = &cl.clientinfo[s1->skin & 0xff];
|
||||
ent.image = ci->skin;
|
||||
ent.model = ci->model;
|
||||
if (!ent.image || !ent.model)
|
||||
|
@ -996,7 +967,7 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
}
|
||||
else
|
||||
{
|
||||
ent.skinnum = s1->skinnum;
|
||||
ent.skin = s1->skin;
|
||||
ent.image = NULL;
|
||||
ent.model = cl.model_draw[s1->modelindex];
|
||||
}
|
||||
|
@ -1105,7 +1076,7 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
}
|
||||
|
||||
ent.image = NULL; // never use a custom skin on others
|
||||
ent.skinnum = 0;
|
||||
ent.skin = 0;
|
||||
ent.flags = 0;
|
||||
ent.alpha = 0;
|
||||
|
||||
|
@ -1115,8 +1086,8 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
if (s1->weaponmodel == 255)
|
||||
{
|
||||
// custom weapon
|
||||
ci = &cl.clientinfo[s1->skinnum & 0xff];
|
||||
i = (s1->skinnum >> 8); // 0 is default weapon model
|
||||
ci = &cl.clientinfo[s1->skin & 0xff];
|
||||
i = (s1->skin >> 8); // 0 is default weapon model
|
||||
if (!cl_vwep->value || i > MAX_CLIENTWEAPONMODELS - 1)
|
||||
i = 0;
|
||||
ent.model = ci->weaponmodel[i];
|
||||
|
|
|
@ -288,7 +288,7 @@ void CL_ParseMuzzleFlash (void)
|
|||
break;
|
||||
case MZ_MACHINEGUN:
|
||||
dl->color[0] = 1;dl->color[1] = 1;dl->color[2] = 0;
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0);
|
||||
break;
|
||||
case MZ_SHOTGUN:
|
||||
|
@ -303,27 +303,27 @@ void CL_ParseMuzzleFlash (void)
|
|||
case MZ_CHAINGUN1:
|
||||
dl->radius = 200 + (rand()&31);
|
||||
dl->color[0] = 1;dl->color[1] = 0.25;dl->color[2] = 0;
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0);
|
||||
break;
|
||||
case MZ_CHAINGUN2:
|
||||
dl->radius = 225 + (rand()&31);
|
||||
dl->color[0] = 1;dl->color[1] = 0.5;dl->color[2] = 0;
|
||||
dl->die = cl.time + 0.1; // long delay
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0);
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0.05);
|
||||
break;
|
||||
case MZ_CHAINGUN3:
|
||||
dl->radius = 250 + (rand()&31);
|
||||
dl->color[0] = 1;dl->color[1] = 1;dl->color[2] = 0;
|
||||
dl->die = cl.time + 0.1; // long delay
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0);
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0.033);
|
||||
Com_sprintf(soundname, sizeof(soundname), "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
sprintf(soundname, "weapons/machgf%ib.wav", (rand() % 5) + 1);
|
||||
S_StartSound (NULL, i, CHAN_WEAPON, S_RegisterSound(soundname), volume, ATTN_NORM, 0.066);
|
||||
break;
|
||||
case MZ_RAILGUN:
|
||||
|
@ -607,7 +607,7 @@ void CL_ParseMuzzleFlash2 (void)
|
|||
dl->color[0] = 1;dl->color[1] = 1;dl->color[2] = 0;
|
||||
CL_ParticleEffect (origin, vec3_origin, 0, 40);
|
||||
CL_SmokeAndFlash(origin);
|
||||
Com_sprintf(soundname, sizeof(soundname), "tank/tnkatk2%c.wav", 'a' + rand() % 5);
|
||||
sprintf(soundname, "tank/tnkatk2%c.wav", 'a' + rand() % 5);
|
||||
S_StartSound (NULL, ent, CHAN_WEAPON, S_RegisterSound(soundname), 1, ATTN_NORM, 0);
|
||||
break;
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ void CL_DrawInventory (void)
|
|||
{
|
||||
item = index[i];
|
||||
// search for a binding
|
||||
Com_sprintf (binding, sizeof(binding), "use %s", cl.configstrings[CS_ITEMS+item]);
|
||||
sprintf (binding, "use %s", cl.configstrings[CS_ITEMS+item]);
|
||||
bind = "";
|
||||
for (j=0 ; j<256 ; j++)
|
||||
if (keybindings[j] && !strcasecmp (keybindings[j], binding))
|
||||
|
@ -123,7 +123,7 @@ void CL_DrawInventory (void)
|
|||
break;
|
||||
}
|
||||
|
||||
Com_sprintf (string, sizeof(string), "%6s %3i %s", bind, cl.inventory[item],
|
||||
sprintf (string, "%6s %3i %s", bind, cl.inventory[item],
|
||||
cl.configstrings[CS_ITEMS+item] );
|
||||
if (item != selected)
|
||||
SetStringHighBit (string);
|
||||
|
|
|
@ -185,10 +185,8 @@ void CL_Record_f (void)
|
|||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// open the demo file
|
||||
//
|
||||
Com_sprintf (name, sizeof(name), "demos/%s.dm2", Cmd_Argv(1));
|
||||
sprintf (name, "demos/%s.dm2", Cmd_Argv(1));
|
||||
|
||||
Msg ("recording to %s.\n", name);
|
||||
cls.demofile = FS_Open (name, "wb");
|
||||
|
@ -827,9 +825,9 @@ void CL_PingServers_f (void)
|
|||
}
|
||||
|
||||
// send a packet to each address book entry
|
||||
for (i=0 ; i<16 ; i++)
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
Com_sprintf (name, sizeof(name), "adr%i", i);
|
||||
sprintf (name, "adr%i", i);
|
||||
adrstring = Cvar_VariableString (name);
|
||||
if (!adrstring || !adrstring[0])
|
||||
continue;
|
||||
|
@ -1194,40 +1192,43 @@ void CL_RequestNextDownload (void)
|
|||
}
|
||||
precache_check = CS_SOUNDS;
|
||||
}
|
||||
if (precache_check >= CS_SOUNDS && precache_check < CS_SOUNDS+MAX_SOUNDS) {
|
||||
if (allow_download_sounds->value) {
|
||||
if (precache_check == CS_SOUNDS)
|
||||
precache_check++; // zero is blank
|
||||
while (precache_check < CS_SOUNDS+MAX_SOUNDS &&
|
||||
cl.configstrings[precache_check][0]) {
|
||||
if (cl.configstrings[precache_check][0] == '*') {
|
||||
if (precache_check >= CS_SOUNDS && precache_check < CS_SOUNDS+MAX_SOUNDS)
|
||||
{
|
||||
if (allow_download_sounds->value)
|
||||
{
|
||||
if (precache_check == CS_SOUNDS) precache_check++; // zero is blank
|
||||
while (precache_check < CS_SOUNDS+MAX_SOUNDS && cl.configstrings[precache_check][0])
|
||||
{
|
||||
if (cl.configstrings[precache_check][0] == '*')
|
||||
{
|
||||
precache_check++;
|
||||
continue;
|
||||
}
|
||||
Com_sprintf(fn, sizeof(fn), "sound/%s", cl.configstrings[precache_check++]);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
return; // started a download
|
||||
sprintf(fn, "sound/%s", cl.configstrings[precache_check++]);
|
||||
if (!CL_CheckOrDownloadFile(fn)) return; // started a download
|
||||
}
|
||||
}
|
||||
precache_check = CS_IMAGES;
|
||||
}
|
||||
if (precache_check >= CS_IMAGES && precache_check < CS_IMAGES+MAX_IMAGES) {
|
||||
if (precache_check == CS_IMAGES)
|
||||
precache_check++; // zero is blank
|
||||
while (precache_check < CS_IMAGES+MAX_IMAGES &&
|
||||
cl.configstrings[precache_check][0]) {
|
||||
Com_sprintf(fn, sizeof(fn), "pics/%s.pcx", cl.configstrings[precache_check++]);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
return; // started a download
|
||||
if (precache_check >= CS_IMAGES && precache_check < CS_IMAGES+MAX_IMAGES)
|
||||
{
|
||||
if (precache_check == CS_IMAGES) precache_check++; // zero is blank
|
||||
while (precache_check < CS_IMAGES+MAX_IMAGES && cl.configstrings[precache_check][0])
|
||||
{
|
||||
sprintf(fn, "pics/%s.pcx", cl.configstrings[precache_check++]);
|
||||
if (!CL_CheckOrDownloadFile(fn)) return; // started a download
|
||||
}
|
||||
precache_check = CS_PLAYERSKINS;
|
||||
}
|
||||
// skins are special, since a player has three things to download:
|
||||
// model, weapon model and skin
|
||||
// so precache_check is now *3
|
||||
if (precache_check >= CS_PLAYERSKINS && precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT) {
|
||||
if (allow_download_players->value) {
|
||||
while (precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT) {
|
||||
if (precache_check >= CS_PLAYERSKINS && precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT)
|
||||
{
|
||||
if (allow_download_players->value)
|
||||
{
|
||||
while (precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT)
|
||||
{
|
||||
int i, n;
|
||||
char model[MAX_QPATH], skin[MAX_QPATH], *p;
|
||||
|
||||
|
@ -1241,22 +1242,24 @@ void CL_RequestNextDownload (void)
|
|||
|
||||
if ((p = strchr(cl.configstrings[CS_PLAYERSKINS+i], '\\')) != NULL)
|
||||
p++;
|
||||
else
|
||||
p = cl.configstrings[CS_PLAYERSKINS+i];
|
||||
else p = cl.configstrings[CS_PLAYERSKINS+i];
|
||||
strcpy(model, p);
|
||||
p = strchr(model, '/');
|
||||
if (!p)
|
||||
p = strchr(model, '\\');
|
||||
if (p) {
|
||||
if (p)
|
||||
{
|
||||
*p++ = 0;
|
||||
strcpy(skin, p);
|
||||
} else
|
||||
*skin = 0;
|
||||
}
|
||||
else *skin = 0;
|
||||
|
||||
switch (n) {
|
||||
switch (n)
|
||||
{
|
||||
case 0: // model
|
||||
Com_sprintf(fn, sizeof(fn), "players/%s/tris.md2", model);
|
||||
if (!CL_CheckOrDownloadFile(fn)) {
|
||||
sprintf(fn, "players/%s/tris.md2", model);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
{
|
||||
precache_check = CS_PLAYERSKINS + i * PLAYER_MULT + 1;
|
||||
return; // started a download
|
||||
}
|
||||
|
@ -1264,8 +1267,9 @@ void CL_RequestNextDownload (void)
|
|||
/*FALL THROUGH*/
|
||||
|
||||
case 1: // weapon model
|
||||
Com_sprintf(fn, sizeof(fn), "players/%s/weapon.md2", model);
|
||||
if (!CL_CheckOrDownloadFile(fn)) {
|
||||
sprintf(fn, "players/%s/weapon.md2", model);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
{
|
||||
precache_check = CS_PLAYERSKINS + i * PLAYER_MULT + 2;
|
||||
return; // started a download
|
||||
}
|
||||
|
@ -1273,8 +1277,9 @@ void CL_RequestNextDownload (void)
|
|||
/*FALL THROUGH*/
|
||||
|
||||
case 2: // weapon skin
|
||||
Com_sprintf(fn, sizeof(fn), "players/%s/weapon.pcx", model);
|
||||
if (!CL_CheckOrDownloadFile(fn)) {
|
||||
sprintf(fn, "players/%s/weapon.pcx", model);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
{
|
||||
precache_check = CS_PLAYERSKINS + i * PLAYER_MULT + 3;
|
||||
return; // started a download
|
||||
}
|
||||
|
@ -1282,8 +1287,9 @@ void CL_RequestNextDownload (void)
|
|||
/*FALL THROUGH*/
|
||||
|
||||
case 3: // skin
|
||||
Com_sprintf(fn, sizeof(fn), "players/%s/%s.pcx", model, skin);
|
||||
if (!CL_CheckOrDownloadFile(fn)) {
|
||||
sprintf(fn, "players/%s/%s.pcx", model, skin);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
{
|
||||
precache_check = CS_PLAYERSKINS + i * PLAYER_MULT + 4;
|
||||
return; // started a download
|
||||
}
|
||||
|
@ -1291,8 +1297,9 @@ void CL_RequestNextDownload (void)
|
|||
/*FALL THROUGH*/
|
||||
|
||||
case 4: // skin_i
|
||||
Com_sprintf(fn, sizeof(fn), "players/%s/%s_i.pcx", model, skin);
|
||||
if (!CL_CheckOrDownloadFile(fn)) {
|
||||
sprintf(fn, "players/%s/%s_i.pcx", model, skin);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
{
|
||||
precache_check = CS_PLAYERSKINS + i * PLAYER_MULT + 5;
|
||||
return; // started a download
|
||||
}
|
||||
|
@ -1305,54 +1312,56 @@ void CL_RequestNextDownload (void)
|
|||
precache_check = ENV_CNT;
|
||||
}
|
||||
|
||||
if (precache_check == ENV_CNT) {
|
||||
if (precache_check == ENV_CNT)
|
||||
{
|
||||
precache_check = ENV_CNT + 1;
|
||||
|
||||
CM_LoadMap (cl.configstrings[CS_MODELS+1], true, &map_checksum);
|
||||
|
||||
if (map_checksum != atoi(cl.configstrings[CS_MAPCHECKSUM])) {
|
||||
Com_Error (ERR_DROP, "Local map version differs from server: %i != '%s'\n",
|
||||
map_checksum, cl.configstrings[CS_MAPCHECKSUM]);
|
||||
if (map_checksum != atoi(cl.configstrings[CS_MAPCHECKSUM]))
|
||||
{
|
||||
Com_Error (ERR_DROP, "Local map version differs from server: %i != '%s'\n", map_checksum, cl.configstrings[CS_MAPCHECKSUM]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (precache_check > ENV_CNT && precache_check < TEXTURE_CNT) {
|
||||
if (allow_download->value && allow_download_maps->value) {
|
||||
while (precache_check < TEXTURE_CNT) {
|
||||
if (precache_check > ENV_CNT && precache_check < TEXTURE_CNT)
|
||||
{
|
||||
if (allow_download->value && allow_download_maps->value)
|
||||
{
|
||||
while (precache_check < TEXTURE_CNT)
|
||||
{
|
||||
int n = precache_check++ - ENV_CNT - 1;
|
||||
|
||||
if (n & 1)
|
||||
Com_sprintf(fn, sizeof(fn), "env/%s%s.pcx",
|
||||
cl.configstrings[CS_SKY], env_suf[n/2]);
|
||||
else
|
||||
Com_sprintf(fn, sizeof(fn), "env/%s%s.tga",
|
||||
cl.configstrings[CS_SKY], env_suf[n/2]);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
return; // started a download
|
||||
if (n & 1) sprintf(fn, "env/%s%s.pcx", cl.configstrings[CS_SKY], env_suf[n/2]);
|
||||
else sprintf(fn, "env/%s%s.tga", cl.configstrings[CS_SKY], env_suf[n/2]);
|
||||
if (!CL_CheckOrDownloadFile(fn)) return; // started a download
|
||||
}
|
||||
}
|
||||
precache_check = TEXTURE_CNT;
|
||||
}
|
||||
|
||||
if (precache_check == TEXTURE_CNT) {
|
||||
if (precache_check == TEXTURE_CNT)
|
||||
{
|
||||
precache_check = TEXTURE_CNT+1;
|
||||
precache_tex = 0;
|
||||
}
|
||||
|
||||
// confirm existance of textures, download any that don't exist
|
||||
if (precache_check == TEXTURE_CNT+1) {
|
||||
if (precache_check == TEXTURE_CNT+1)
|
||||
{
|
||||
// from common/cmodel.c
|
||||
extern int numtexinfo;
|
||||
extern int numtexinfo;
|
||||
extern mapsurface_t map_surfaces[];
|
||||
|
||||
if (allow_download->value && allow_download_maps->value) {
|
||||
while (precache_tex < numtexinfo) {
|
||||
if (allow_download->value && allow_download_maps->value)
|
||||
{
|
||||
while (precache_tex < numtexinfo)
|
||||
{
|
||||
char fn[MAX_OSPATH];
|
||||
|
||||
sprintf(fn, "textures/%s.jpg", map_surfaces[precache_tex++].rname);
|
||||
if (!CL_CheckOrDownloadFile(fn))
|
||||
return; // started a download
|
||||
if (!CL_CheckOrDownloadFile(fn)) return; // started a download
|
||||
}
|
||||
}
|
||||
precache_check = TEXTURE_CNT+999;
|
||||
|
|
|
@ -139,7 +139,7 @@ void CL_Download_f (void)
|
|||
return;
|
||||
}
|
||||
|
||||
Com_sprintf(filename, sizeof(filename), "%s", Cmd_Argv(1));
|
||||
sprintf(filename, "%s", Cmd_Argv(1));
|
||||
|
||||
if (strstr (filename, ".."))
|
||||
{
|
||||
|
@ -393,10 +393,10 @@ void CL_LoadClientinfo (clientinfo_t *ci, char *s)
|
|||
|
||||
if (cl_noskins->value || *s == 0)
|
||||
{
|
||||
Com_sprintf (model_filename, sizeof(model_filename), "players/male/tris.md2");
|
||||
Com_sprintf (weapon_filename, sizeof(weapon_filename), "players/male/weapon.md2");
|
||||
Com_sprintf (skin_filename, sizeof(skin_filename), "players/male/grunt.pcx");
|
||||
Com_sprintf (ci->iconname, sizeof(ci->iconname), "/players/male/grunt_i.pcx");
|
||||
sprintf (model_filename, "players/male/tris.md2");
|
||||
sprintf (weapon_filename, "players/male/weapon.md2");
|
||||
sprintf (skin_filename, "players/male/grunt.pcx");
|
||||
sprintf (ci->iconname, "/players/male/grunt_i.pcx");
|
||||
ci->model = re.RegisterModel (model_filename);
|
||||
memset(ci->weaponmodel, 0, sizeof(ci->weaponmodel));
|
||||
ci->weaponmodel[0] = re.RegisterModel (weapon_filename);
|
||||
|
@ -418,17 +418,17 @@ void CL_LoadClientinfo (clientinfo_t *ci, char *s)
|
|||
strcpy (skin_name, s + strlen(model_name) + 1);
|
||||
|
||||
// model file
|
||||
Com_sprintf (model_filename, sizeof(model_filename), "players/%s/tris.md2", model_name);
|
||||
sprintf (model_filename, "players/%s/tris.md2", model_name);
|
||||
ci->model = re.RegisterModel (model_filename);
|
||||
if (!ci->model)
|
||||
{
|
||||
strcpy(model_name, "male");
|
||||
Com_sprintf (model_filename, sizeof(model_filename), "players/male/tris.md2");
|
||||
sprintf (model_filename, "players/male/tris.md2");
|
||||
ci->model = re.RegisterModel (model_filename);
|
||||
}
|
||||
|
||||
// skin file
|
||||
Com_sprintf (skin_filename, sizeof(skin_filename), "players/%s/%s.pcx", model_name, skin_name);
|
||||
sprintf (skin_filename, "players/%s/%s.pcx", model_name, skin_name);
|
||||
ci->skin = re.RegisterSkin (skin_filename);
|
||||
|
||||
// if we don't have the skin and the model wasn't male,
|
||||
|
@ -437,11 +437,11 @@ void CL_LoadClientinfo (clientinfo_t *ci, char *s)
|
|||
{
|
||||
// change model to male
|
||||
strcpy(model_name, "male");
|
||||
Com_sprintf (model_filename, sizeof(model_filename), "players/male/tris.md2");
|
||||
sprintf (model_filename, "players/male/tris.md2");
|
||||
ci->model = re.RegisterModel (model_filename);
|
||||
|
||||
// see if the skin exists for the male model
|
||||
Com_sprintf (skin_filename, sizeof(skin_filename), "players/%s/%s.pcx", model_name, skin_name);
|
||||
sprintf (skin_filename, "players/%s/%s.pcx", model_name, skin_name);
|
||||
ci->skin = re.RegisterSkin (skin_filename);
|
||||
}
|
||||
|
||||
|
@ -449,17 +449,17 @@ void CL_LoadClientinfo (clientinfo_t *ci, char *s)
|
|||
// it, so default to grunt
|
||||
if (!ci->skin) {
|
||||
// see if the skin exists for the male model
|
||||
Com_sprintf (skin_filename, sizeof(skin_filename), "players/%s/grunt.pcx", model_name, skin_name);
|
||||
sprintf (skin_filename, "players/%s/grunt.pcx", model_name, skin_name);
|
||||
ci->skin = re.RegisterSkin (skin_filename);
|
||||
}
|
||||
|
||||
// weapon file
|
||||
for (i = 0; i < num_cl_weaponmodels; i++) {
|
||||
Com_sprintf (weapon_filename, sizeof(weapon_filename), "players/%s/%s", model_name, cl_weaponmodels[i]);
|
||||
sprintf (weapon_filename, "players/%s/%s", model_name, cl_weaponmodels[i]);
|
||||
ci->weaponmodel[i] = re.RegisterModel(weapon_filename);
|
||||
if (!ci->weaponmodel[i] && strcmp(model_name, "cyborg") == 0) {
|
||||
// try male
|
||||
Com_sprintf (weapon_filename, sizeof(weapon_filename), "players/male/%s", cl_weaponmodels[i]);
|
||||
sprintf (weapon_filename, "players/male/%s", cl_weaponmodels[i]);
|
||||
ci->weaponmodel[i] = re.RegisterModel(weapon_filename);
|
||||
}
|
||||
if (!cl_vwep->value)
|
||||
|
@ -467,7 +467,7 @@ void CL_LoadClientinfo (clientinfo_t *ci, char *s)
|
|||
}
|
||||
|
||||
// icon file
|
||||
Com_sprintf (ci->iconname, sizeof(ci->iconname), "/players/%s/%s_i.pcx", model_name, skin_name);
|
||||
sprintf (ci->iconname, "/players/%s/%s_i.pcx", model_name, skin_name);
|
||||
ci->icon = re.RegisterPic (ci->iconname);
|
||||
}
|
||||
|
||||
|
|
|
@ -890,7 +890,7 @@ void SCR_DrawField (int x, int y, int color, int width, int value)
|
|||
SCR_AddDirtyPoint (x, y);
|
||||
SCR_AddDirtyPoint (x+width*CHAR_WIDTH+2, y+23);
|
||||
|
||||
Com_sprintf (num, sizeof(num), "%i", value);
|
||||
sprintf (num, "%i", value);
|
||||
l = strlen(num);
|
||||
if (l > width)
|
||||
l = width;
|
||||
|
@ -932,7 +932,7 @@ void SCR_TouchPics (void)
|
|||
if (crosshair->value > 3 || crosshair->value < 0)
|
||||
crosshair->value = 3;
|
||||
|
||||
Com_sprintf (crosshair_pic, sizeof(crosshair_pic), "ch%i", (int)(crosshair->value));
|
||||
sprintf (crosshair_pic, "ch%i", (int)(crosshair->value));
|
||||
re.DrawGetPicSize (&crosshair_width, &crosshair_height, crosshair_pic);
|
||||
if (!crosshair_width)
|
||||
crosshair_pic[0] = 0;
|
||||
|
|
|
@ -151,7 +151,7 @@ void CL_RegisterTEntSounds (void)
|
|||
|
||||
for (i=0 ; i<4 ; i++)
|
||||
{
|
||||
Com_sprintf (name, sizeof(name), "player/step%i.wav", i+1);
|
||||
sprintf (name, "player/step%i.wav", i+1);
|
||||
cl_sfx_footsteps[i] = S_RegisterSound (name);
|
||||
}
|
||||
|
||||
|
|
|
@ -403,7 +403,7 @@ void V_Gun_Model_f (void)
|
|||
gun_model = NULL;
|
||||
return;
|
||||
}
|
||||
Com_sprintf (name, sizeof(name), "models/%s/tris.md2", Cmd_Argv(1));
|
||||
sprintf (name, "models/%s/tris.md2", Cmd_Argv(1));
|
||||
gun_model = re.RegisterModel (name);
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,6 @@ size_t strlcat(char *dst, const char *src, size_t siz);
|
|||
|
||||
typedef struct sizebuf_s
|
||||
{
|
||||
bool allowoverflow; // if false, do a Com_Error
|
||||
bool overflowed; // set to true if the buffer size failed
|
||||
byte *data;
|
||||
int maxsize;
|
||||
|
@ -299,7 +298,7 @@ enum clc_ops_e
|
|||
#define U_ANGLE2 (1<<2)
|
||||
#define U_ANGLE3 (1<<3)
|
||||
#define U_FRAME8 (1<<4) // frame is a byte
|
||||
#define U_EVENT (1<<5)
|
||||
#define U_SKIN8 (1<<5)
|
||||
#define U_REMOVE (1<<6) // REMOVE this entity, don't add it
|
||||
#define U_MOREBITS1 (1<<7) // read one additional byte
|
||||
|
||||
|
@ -313,7 +312,7 @@ enum clc_ops_e
|
|||
#define U_MOREBITS2 (1<<15) // read one additional byte
|
||||
|
||||
// third byte
|
||||
#define U_SKIN8 (1<<16)
|
||||
#define U_SKIN16 (1<<16)
|
||||
#define U_FRAME16 (1<<17) // frame is a short
|
||||
#define U_RENDERFX16 (1<<18) // 8 + 16 = 32
|
||||
#define U_EFFECTS16 (1<<19) // 8 + 16 = 32
|
||||
|
@ -324,10 +323,11 @@ enum clc_ops_e
|
|||
|
||||
// fourth byte
|
||||
#define U_OLDORIGIN (1<<24) // FIXME: get rid of this
|
||||
#define U_SKIN16 (1<<25)
|
||||
#define U_SOUND (1<<26)
|
||||
#define U_SOLID (1<<27)
|
||||
#define U_ALPHA (1<<28) //alpha value
|
||||
#define U_SOUND (1<<25)
|
||||
#define U_SOLID (1<<26)
|
||||
#define U_ALPHA (1<<27) // alpha value
|
||||
#define U_EVENT (1<<28) // remove this
|
||||
#define U_MOREBITS4 (1<<31) // read one additional byte
|
||||
|
||||
/*
|
||||
==============================================================
|
||||
|
@ -449,8 +449,8 @@ NET
|
|||
|
||||
#define PORT_ANY -1
|
||||
|
||||
#define MAX_MSGLEN 1400 // max length of a message
|
||||
#define PACKET_HEADER 10 // two ints and a short
|
||||
#define MAX_MSGLEN 1600 // max length of a message
|
||||
#define PACKET_HEADER 10 // two ints and a short
|
||||
|
||||
typedef enum {NA_LOOPBACK, NA_BROADCAST, NA_IP, NA_IPX, NA_BROADCAST_IPX} netadrtype_t;
|
||||
|
||||
|
@ -548,8 +548,7 @@ CMODEL
|
|||
|
||||
cmodel_t *CM_LoadMap (char *name, bool clientload, unsigned *checksum);
|
||||
cmodel_t *CM_InlineModel (char *name); // *1, *2, etc
|
||||
stmodel_t *CM_StudioModel (char *name); //studio models server copy
|
||||
stmodel_t *CM_SpriteModel (char *name); //sprite models some info (minmaxs, numframes e.t.c)
|
||||
cmodel_t *CM_LoadModel (char *name);
|
||||
|
||||
extern byte portalopen[MAX_MAP_AREAPORTALS];
|
||||
|
||||
|
|
|
@ -69,26 +69,24 @@ cbrushside_t map_brushsides[MAX_MAP_BRUSHSIDES];
|
|||
int numtexinfo;
|
||||
mapsurface_t map_surfaces[MAX_MAP_TEXINFO];
|
||||
|
||||
int numplanes;
|
||||
int numplanes;
|
||||
cplane_t map_planes[MAX_MAP_PLANES+6]; // extra for box hull
|
||||
|
||||
int numnodes;
|
||||
cnode_t map_nodes[MAX_MAP_NODES+6]; // extra for box hull
|
||||
int numnodes;
|
||||
cnode_t map_nodes[MAX_MAP_NODES+6]; // extra for box hull
|
||||
|
||||
int numleafs = 1; // allow leaf funcs to be called without a map
|
||||
cleaf_t map_leafs[MAX_MAP_LEAFS];
|
||||
int emptyleaf, solidleaf;
|
||||
int numleafs = 1; // allow leaf funcs to be called without a map
|
||||
cleaf_t map_leafs[MAX_MAP_LEAFS];
|
||||
int emptyleaf, solidleaf;
|
||||
|
||||
int numleafbrushes;
|
||||
int numleafbrushes;
|
||||
word map_leafbrushes[MAX_MAP_LEAFBRUSHES];
|
||||
|
||||
int numcmodels;
|
||||
int numcmodels;
|
||||
int numsmodels; //numcmodels+numsmodels
|
||||
cmodel_t map_cmodels[MAX_MAP_MODELS];
|
||||
|
||||
int numsmodels;
|
||||
stmodel_t studio_models[MAX_MAP_MODELS];
|
||||
|
||||
int numbrushes;
|
||||
int numbrushes;
|
||||
cbrush_t map_brushes[MAX_MAP_BRUSHES];
|
||||
|
||||
int numvisibility;
|
||||
|
@ -138,17 +136,15 @@ void CMod_LoadSubmodels (lump_t *l)
|
|||
{
|
||||
dmodel_t *in;
|
||||
cmodel_t *out;
|
||||
int i, j, count;
|
||||
int i, j, count;
|
||||
|
||||
in = (void *)(cmod_base + l->fileofs);
|
||||
if (l->filelen % sizeof(*in))
|
||||
Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size");
|
||||
count = l->filelen / sizeof(*in);
|
||||
|
||||
if (count < 1)
|
||||
Com_Error (ERR_DROP, "Map with no models");
|
||||
if (count > MAX_MAP_MODELS)
|
||||
Com_Error (ERR_DROP, "Map has too many models");
|
||||
if (count < 1) Com_Error (ERR_DROP, "Map with no models");
|
||||
if (count > MAX_MAP_MODELS) Com_Error (ERR_DROP, "Map has too many models");
|
||||
|
||||
numcmodels = count;
|
||||
|
||||
|
@ -156,8 +152,9 @@ void CMod_LoadSubmodels (lump_t *l)
|
|||
{
|
||||
out = &map_cmodels[i];
|
||||
|
||||
for (j=0 ; j<3 ; j++)
|
||||
{ // spread the mins / maxs by a pixel
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
// spread the mins / maxs by a pixel
|
||||
out->mins[j] = LittleFloat (in->mins[j]) - 1;
|
||||
out->maxs[j] = LittleFloat (in->maxs[j]) + 1;
|
||||
out->origin[j] = LittleFloat (in->origin[j]);
|
||||
|
@ -634,28 +631,28 @@ CM_InlineModel
|
|||
*/
|
||||
cmodel_t *CM_InlineModel (char *name)
|
||||
{
|
||||
int num;
|
||||
int num = atoi (name + 1);
|
||||
|
||||
if (!name || name[0] != '*')
|
||||
Com_Error (ERR_DROP, "CM_InlineModel: bad name");
|
||||
num = atoi (name+1);
|
||||
if (num < 1 || num >= numcmodels)
|
||||
Com_Error (ERR_DROP, "CM_InlineModel: bad number");
|
||||
{
|
||||
Msg("CM_InlineModel: bad number %d\n", num );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &map_cmodels[num];
|
||||
}
|
||||
|
||||
int CM_NumClusters (void)
|
||||
int CM_NumClusters (void)
|
||||
{
|
||||
return numclusters;
|
||||
}
|
||||
|
||||
int CM_NumInlineModels (void)
|
||||
int CM_NumInlineModels (void)
|
||||
{
|
||||
return numcmodels;
|
||||
}
|
||||
|
||||
char *CM_EntityString (void)
|
||||
char *CM_EntityString (void)
|
||||
{
|
||||
return map_entitystring;
|
||||
}
|
||||
|
@ -896,7 +893,7 @@ int CM_BoxLeafnums_headnode (vec3_t mins, vec3_t maxs, int *list, int listsize,
|
|||
return leaf_count;
|
||||
}
|
||||
|
||||
int CM_BoxLeafnums (vec3_t mins, vec3_t maxs, int *list, int listsize, int *topnode)
|
||||
int CM_BoxLeafnums (vec3_t mins, vec3_t maxs, int *list, int listsize, int *topnode)
|
||||
{
|
||||
return CM_BoxLeafnums_headnode (mins, maxs, list,
|
||||
listsize, map_cmodels[0].headnode, topnode);
|
||||
|
@ -1777,52 +1774,28 @@ void CM_LookUpHullSize(vec3_t size, bool down)
|
|||
}
|
||||
}
|
||||
|
||||
stmodel_t *CM_StudioModel (char *name)
|
||||
cmodel_t *CM_StudioModel (char *name, byte *buffer)
|
||||
{
|
||||
int i;
|
||||
byte *buffer;
|
||||
stmodel_t *out;
|
||||
int i = numcmodels; // studiomodels starting after bmodels
|
||||
int max_models = numcmodels + numsmodels;
|
||||
cmodel_t *out;
|
||||
studiohdr_t *phdr;
|
||||
char modname[64]; //probaly this is not better way...
|
||||
char modname[64]; // probaly this is not better way...
|
||||
|
||||
if (!name[0])
|
||||
{
|
||||
Msg ("CM_StudioModel: NULL name, ignored\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(!FS_FileExists( name ))
|
||||
{
|
||||
Msg ("CM_StudioModel: %s not found\n", name );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(numsmodels > MAX_MAP_MODELS)
|
||||
{
|
||||
Msg ("CM_StudioModel: MAX_MAP_MODELS limit exceeded\n" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer = FS_LoadFile (name, NULL );
|
||||
phdr = (studiohdr_t *)buffer;
|
||||
|
||||
if(phdr->id != IDSTUDIOHEADER)
|
||||
{
|
||||
Msg("CM_StudioModel: %s have invalid header\n", name );
|
||||
return NULL;
|
||||
}
|
||||
if (phdr->version != STUDIO_VERSION)
|
||||
{
|
||||
Msg("CM_StudioModel: %s has wrong version number (%i should be %i)", phdr->name, phdr->version, STUDIO_VERSION);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
memset( modname, 0, sizeof(modname));
|
||||
FS_FileBase( name, modname );
|
||||
|
||||
for(i = 0; i < numsmodels; i++ )
|
||||
for(i = 0; i < max_models; i++ )
|
||||
{
|
||||
out = studio_models + i;
|
||||
out = map_cmodels + i;
|
||||
|
||||
//probably is sprite model
|
||||
if(!out->extradata) continue;
|
||||
|
@ -1830,9 +1803,9 @@ stmodel_t *CM_StudioModel (char *name)
|
|||
return out;
|
||||
}
|
||||
|
||||
out = &studio_models[numsmodels];
|
||||
out = &map_cmodels[max_models];
|
||||
out->extradata = buffer;
|
||||
out->numframes = 0;//sprite info
|
||||
out->numframes = 0;//reset sprite info
|
||||
strlcpy(out->name, modname, sizeof(out->name));
|
||||
|
||||
if(SV_StudioExtractBbox( phdr, 0, out->mins, out->maxs ))
|
||||
|
@ -1843,6 +1816,7 @@ stmodel_t *CM_StudioModel (char *name)
|
|||
}
|
||||
else
|
||||
{
|
||||
// default size
|
||||
VectorSet(out->mins, -32, -32, -32 );
|
||||
VectorSet(out->maxs, 32, 32, 32 );
|
||||
}
|
||||
|
@ -1850,41 +1824,19 @@ stmodel_t *CM_StudioModel (char *name)
|
|||
Msg("register new model %s\n", out->name );
|
||||
numsmodels++;
|
||||
|
||||
return &studio_models[numsmodels];
|
||||
return out;
|
||||
}
|
||||
|
||||
stmodel_t *CM_SpriteModel (char *name)
|
||||
cmodel_t *CM_SpriteModel (char *name, byte *buffer)
|
||||
{
|
||||
int i;
|
||||
byte *buffer;
|
||||
stmodel_t *out;
|
||||
int i = numcmodels;
|
||||
int max_models = numcmodels + numsmodels;
|
||||
cmodel_t *out;
|
||||
dsprite_t *phdr;
|
||||
char modname[64]; //probaly this is not better way...
|
||||
|
||||
if (!name[0])
|
||||
{
|
||||
Msg ("CM_SpriteModel: NULL name, ignored\n");
|
||||
return NULL;
|
||||
}
|
||||
if(!FS_FileExists( name ))
|
||||
{
|
||||
Msg ("CM_SpriteModel: %s not found\n", name );
|
||||
return NULL;
|
||||
}
|
||||
if(numsmodels > MAX_MAP_MODELS)
|
||||
{
|
||||
Msg ("CM_SpriteModel: MAX_MAP_MODELS limit exceeded\n" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer = FS_LoadFile (name, NULL );
|
||||
phdr = (dsprite_t *)buffer;
|
||||
|
||||
if(phdr->ident != IDSPRITEHEADER)
|
||||
{
|
||||
Msg("CM_SpriteModel: %s have invalid header\n", name );
|
||||
return NULL;
|
||||
}
|
||||
if(phdr->version != SPRITE_VERSION_HALF || phdr->version != SPRITE_VERSION_XASH)
|
||||
{
|
||||
Msg("CM_SpriteModel: %s has wrong version number (%i should be %i or %i)\n", name, phdr->version, SPRITE_VERSION_HALF, SPRITE_VERSION_XASH);
|
||||
|
@ -1894,9 +1846,9 @@ stmodel_t *CM_SpriteModel (char *name)
|
|||
memset( modname, 0, sizeof(modname));
|
||||
FS_FileBase( name, modname );
|
||||
|
||||
for(i = 0; i < numsmodels; i++ )
|
||||
for(i = 0; i < max_models; i++ )
|
||||
{
|
||||
out = studio_models + i;
|
||||
out = map_cmodels + i;
|
||||
|
||||
//probably is studio model
|
||||
if(!out->numframes) continue;
|
||||
|
@ -1904,7 +1856,7 @@ stmodel_t *CM_SpriteModel (char *name)
|
|||
return out;
|
||||
}
|
||||
|
||||
out = &studio_models[numsmodels];
|
||||
out = &map_cmodels[max_models];
|
||||
out->numframes = phdr->numframes;
|
||||
strlcpy(out->name, modname, sizeof(out->name));
|
||||
|
||||
|
@ -1912,10 +1864,48 @@ stmodel_t *CM_SpriteModel (char *name)
|
|||
out->maxs[0] = out->maxs[1] = phdr->width / 2;
|
||||
out->mins[2] = -phdr->height / 2;
|
||||
out->maxs[2] = phdr->height / 2;
|
||||
Z_Free( &buffer );//no need to keep this data
|
||||
|
||||
Msg("register new sprite %s\n", out->name );
|
||||
numsmodels++;
|
||||
|
||||
return &studio_models[numsmodels];
|
||||
return out;
|
||||
}
|
||||
|
||||
cmodel_t *CM_LoadModel (char *name)
|
||||
{
|
||||
byte *buffer;
|
||||
cmodel_t *mod = NULL;
|
||||
|
||||
if (!name[0])
|
||||
{
|
||||
Msg ("CM_LoadModel: NULL name, ignored\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(name[0] == '*') return CM_InlineModel (name);
|
||||
if(!FS_FileExists( name ))
|
||||
{
|
||||
Msg ("CM_LoadModel: %s not found\n", name );
|
||||
return NULL;
|
||||
}
|
||||
if(numcmodels + numsmodels > MAX_MAP_MODELS)
|
||||
{
|
||||
Msg ("CM_LoadModel: MAX_MAP_MODELS limit exceeded\n" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer = FS_LoadFile (name, NULL );
|
||||
|
||||
// call the apropriate loader
|
||||
switch (LittleLong(*(uint *)buffer))
|
||||
{
|
||||
case IDSTUDIOHEADER:
|
||||
mod = CM_StudioModel( name, buffer );
|
||||
break;
|
||||
case IDSPRITEHEADER:
|
||||
mod = CM_SpriteModel( name, buffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return mod;
|
||||
}
|
|
@ -153,7 +153,7 @@ void Con_Dump_f (void)
|
|||
return;
|
||||
}
|
||||
|
||||
Com_sprintf (name, sizeof(name), "%s.txt", Cmd_Argv(1));
|
||||
sprintf (name, "%s.txt", Cmd_Argv(1));
|
||||
|
||||
Msg ("Dumped console text to %s.\n", name);
|
||||
f = FS_Open (name, "w");
|
||||
|
@ -583,12 +583,12 @@ void Con_DrawConsole (float frac)
|
|||
if (lines > viddef.height)
|
||||
lines = viddef.height;
|
||||
|
||||
// draw the background
|
||||
// draw the background
|
||||
re.DrawStretchPic (0, -viddef.height+lines, viddef.width, viddef.height, "conback");
|
||||
SCR_AddDirtyPoint (0,0);
|
||||
SCR_AddDirtyPoint (viddef.width-1,lines-1);
|
||||
|
||||
Com_sprintf (version, sizeof(version), "v%4.2f", VERSION);
|
||||
sprintf (version, "v%4.2f", VERSION);
|
||||
for (x=0 ; x<5 ; x++)
|
||||
re.DrawChar (viddef.width-44+x*8, lines-12, 128 + version[x] );
|
||||
|
||||
|
|
|
@ -314,9 +314,9 @@ void Cvar_SetValue (char *var_name, float value)
|
|||
char val[32];
|
||||
|
||||
if (value == (int)value)
|
||||
Com_sprintf (val, sizeof(val), "%i",(int)value);
|
||||
sprintf (val, "%i",(int)value);
|
||||
else
|
||||
Com_sprintf (val, sizeof(val), "%f",value);
|
||||
sprintf (val, "%f",value);
|
||||
Cvar_Set (var_name, val);
|
||||
}
|
||||
|
||||
|
@ -427,7 +427,7 @@ void Cvar_WriteVariables (char *path)
|
|||
{
|
||||
if (var->flags & CVAR_ARCHIVE)
|
||||
{
|
||||
Com_sprintf (buffer, sizeof(buffer), "set %s \"%s\"\n", var->name, var->string);
|
||||
sprintf (buffer, "set %s \"%s\"\n", var->name, var->string);
|
||||
FS_Printf(f, "%s", buffer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -843,7 +843,7 @@ void Key_Event (int key, bool down, unsigned time)
|
|||
kb = keybindings[key];
|
||||
if (kb && kb[0] == '+')
|
||||
{
|
||||
Com_sprintf (cmd, sizeof(cmd), "-%s %i %i\n", kb+1, key, time);
|
||||
sprintf (cmd, "-%s %i %i\n", kb+1, key, time);
|
||||
Cbuf_AddText (cmd);
|
||||
}
|
||||
if (keyshift[key] != key)
|
||||
|
@ -851,7 +851,7 @@ void Key_Event (int key, bool down, unsigned time)
|
|||
kb = keybindings[keyshift[key]];
|
||||
if (kb && kb[0] == '+')
|
||||
{
|
||||
Com_sprintf (cmd, sizeof(cmd), "-%s %i %i\n", kb+1, key, time);
|
||||
sprintf (cmd, "-%s %i %i\n", kb+1, key, time);
|
||||
Cbuf_AddText (cmd);
|
||||
}
|
||||
}
|
||||
|
@ -870,7 +870,7 @@ void Key_Event (int key, bool down, unsigned time)
|
|||
{
|
||||
if (kb[0] == '+')
|
||||
{ // button commands add keynum and time as a parm
|
||||
Com_sprintf (cmd, sizeof(cmd), "%s %i %i\n", kb, key, time);
|
||||
sprintf (cmd, "%s %i %i\n", kb, key, time);
|
||||
Cbuf_AddText (cmd);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -317,14 +317,14 @@ void M_DrawCursor( int x, int y, int f )
|
|||
|
||||
for ( i = 0; i < NUM_CURSOR_FRAMES; i++ )
|
||||
{
|
||||
Com_sprintf( cursorname, sizeof( cursorname ), "m_cursor%d", i );
|
||||
sprintf( cursorname, "m_cursor%d", i );
|
||||
|
||||
re.RegisterPic( cursorname );
|
||||
}
|
||||
cached = true;
|
||||
}
|
||||
|
||||
Com_sprintf( cursorname, sizeof(cursorname), "m_cursor%d", f );
|
||||
sprintf( cursorname, "m_cursor%d", f );
|
||||
re.DrawPic( x, y, cursorname );
|
||||
}
|
||||
|
||||
|
@ -973,7 +973,7 @@ static const char *Keys_MenuKey( int key )
|
|||
{
|
||||
char cmd[1024];
|
||||
|
||||
Com_sprintf (cmd, sizeof(cmd), "bind \"%s\" \"%s\"\n", Key_KeynumToString(key), bindnames[item->generic.localdata[0]][0]);
|
||||
sprintf (cmd, "bind \"%s\" \"%s\"\n", Key_KeynumToString(key), bindnames[item->generic.localdata[0]][0]);
|
||||
Cbuf_InsertText (cmd);
|
||||
}
|
||||
|
||||
|
@ -2220,7 +2220,7 @@ void JoinServerFunc( void *self )
|
|||
if (index >= m_num_servers)
|
||||
return;
|
||||
|
||||
Com_sprintf (buffer, sizeof(buffer), "connect %s\n", NET_AdrToString (local_server_netadr[index]));
|
||||
sprintf (buffer, "connect %s\n", NET_AdrToString (local_server_netadr[index]));
|
||||
Cbuf_AddText (buffer);
|
||||
M_ForceMenuOff ();
|
||||
}
|
||||
|
@ -2606,7 +2606,7 @@ void StartServer_MenuInit( void )
|
|||
for (j=0 ; j<l ; j++)
|
||||
shortname[j] = toupper(shortname[j]);
|
||||
strcpy( longname, COM_Parse( &s ) );
|
||||
Com_sprintf( scratch, sizeof( scratch ), "%s\n%s", longname, shortname );
|
||||
sprintf( scratch, "%s\n%s", longname, shortname );
|
||||
|
||||
mapnames[i] = Z_Malloc( strlen( scratch ) + 1 );
|
||||
strcpy( mapnames[i], scratch );
|
||||
|
@ -2902,7 +2902,7 @@ static void DMFlagCallback( void *self )
|
|||
setvalue:
|
||||
Cvar_SetValue ("dmflags", flags);
|
||||
|
||||
Com_sprintf( dmoptions_statusbar, sizeof( dmoptions_statusbar ), "dmflags = %d", flags );
|
||||
sprintf( dmoptions_statusbar, "dmflags = %d", flags );
|
||||
|
||||
}
|
||||
|
||||
|
@ -3236,7 +3236,7 @@ void AddressBook_MenuInit( void )
|
|||
cvar_t *adr;
|
||||
char buffer[20];
|
||||
|
||||
Com_sprintf( buffer, sizeof( buffer ), "adr%d", i );
|
||||
sprintf( buffer, "adr%d", i );
|
||||
|
||||
adr = Cvar_Get( buffer, "", CVAR_ARCHIVE );
|
||||
|
||||
|
@ -3265,7 +3265,7 @@ const char *AddressBook_MenuKey( int key )
|
|||
|
||||
for ( index = 0; index < NUM_ADDRESSBOOK_ENTRIES; index++ )
|
||||
{
|
||||
Com_sprintf( buffer, sizeof( buffer ), "adr%d", index );
|
||||
sprintf( buffer, "adr%d", index );
|
||||
Cvar_Set( buffer, s_addressbook_fields[index].buffer );
|
||||
}
|
||||
}
|
||||
|
@ -3688,9 +3688,9 @@ void PlayerConfig_MenuDraw( void )
|
|||
|
||||
memset( &entity, 0, sizeof( entity ) );
|
||||
|
||||
Com_sprintf( scratch, sizeof( scratch ), "players/%s/tris.md2", s_pmi[s_player_model_box.curvalue].directory );
|
||||
sprintf( scratch, "players/%s/tris.md2", s_pmi[s_player_model_box.curvalue].directory );
|
||||
entity.model = re.RegisterModel( scratch );
|
||||
Com_sprintf( scratch, sizeof( scratch ), "players/%s/%s.pcx", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
sprintf( scratch, "players/%s/%s.pcx", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
entity.image = re.RegisterSkin( scratch );
|
||||
entity.flags = RF_FULLBRIGHT;
|
||||
entity.origin[0] = 80;
|
||||
|
@ -3717,9 +3717,7 @@ void PlayerConfig_MenuDraw( void )
|
|||
|
||||
re.RenderFrame( &refdef );
|
||||
|
||||
Com_sprintf( scratch, sizeof( scratch ), "/players/%s/%s_i.pcx",
|
||||
s_pmi[s_player_model_box.curvalue].directory,
|
||||
s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
sprintf( scratch, "/players/%s/%s_i.pcx", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
re.DrawPic( s_player_config_menu.x - 40, refdef.y, scratch );
|
||||
}
|
||||
}
|
||||
|
@ -3734,9 +3732,7 @@ const char *PlayerConfig_MenuKey (int key)
|
|||
|
||||
Cvar_Set( "name", s_player_name_field.buffer );
|
||||
|
||||
Com_sprintf( scratch, sizeof( scratch ), "%s/%s",
|
||||
s_pmi[s_player_model_box.curvalue].directory,
|
||||
s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
sprintf( scratch, "%s/%s", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] );
|
||||
|
||||
Cvar_Set( "skin", scratch );
|
||||
|
||||
|
|
|
@ -163,7 +163,6 @@ void Netchan_Setup (netsrc_t sock, netchan_t *chan, netadr_t adr, int qport)
|
|||
chan->outgoing_sequence = 1;
|
||||
|
||||
SZ_Init (&chan->message, chan->message_buf, sizeof(chan->message_buf));
|
||||
chan->message.allowoverflow = true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -254,20 +253,19 @@ void Netchan_Transmit (netchan_t *chan, int length, byte *data)
|
|||
// send the qport if we are a client
|
||||
if (chan->sock == NS_CLIENT) MSG_WriteWord (&send, qport->value);
|
||||
|
||||
// copy the reliable message to the packet first
|
||||
// copy the reliable message to the packet first
|
||||
if (send_reliable)
|
||||
{
|
||||
SZ_Write (&send, chan->reliable_buf, chan->reliable_length);
|
||||
chan->last_reliable_sequence = chan->outgoing_sequence;
|
||||
}
|
||||
|
||||
// add the unreliable part if space is available
|
||||
// add the unreliable part if space is available
|
||||
if (send.maxsize - send.cursize >= length)
|
||||
SZ_Write (&send, data, length);
|
||||
else
|
||||
Msg ("Netchan_Transmit: dumped unreliable\n");
|
||||
else MsgDev ("Netchan_Transmit: dumped unreliable\n");
|
||||
|
||||
// send the datagram
|
||||
// send the datagram
|
||||
NET_SendPacket (chan->sock, send.cursize, send.data, chan->remote_address);
|
||||
|
||||
if (showpackets->value)
|
||||
|
|
|
@ -216,26 +216,22 @@ void _MSG_WriteDeltaEntity (entity_state_t *from, entity_state_t *to, sizebuf_t
|
|||
if ( to->angles[1] != from->angles[1] ) bits |= U_ANGLE2;
|
||||
if ( to->angles[2] != from->angles[2] ) bits |= U_ANGLE3;
|
||||
|
||||
if ( to->skinnum != from->skinnum )
|
||||
if ( to->skin != from->skin )
|
||||
{
|
||||
if ((uint)to->skinnum < 256) bits |= U_SKIN8;
|
||||
else if ((uint)to->skinnum < 65536) bits |= U_SKIN16;
|
||||
else bits |= (U_SKIN8 | U_SKIN16);
|
||||
}
|
||||
|
||||
if (to->skin < 256) bits |= U_SKIN8;
|
||||
else bits |= U_SKIN16;
|
||||
}
|
||||
if ( to->frame != from->frame )
|
||||
{
|
||||
if (to->frame < 256) bits |= U_FRAME8;
|
||||
else bits |= U_FRAME16;
|
||||
}
|
||||
|
||||
if ( to->effects != from->effects )
|
||||
{
|
||||
if (to->effects < 256) bits |= U_EFFECTS8;
|
||||
else if (to->effects < 32768) bits |= U_EFFECTS16;
|
||||
else bits |= U_EFFECTS8 | U_EFFECTS16;
|
||||
}
|
||||
|
||||
if ( to->renderfx != from->renderfx )
|
||||
{
|
||||
if (to->renderfx < 256) bits |= U_RENDERFX8;
|
||||
|
@ -244,7 +240,7 @@ void _MSG_WriteDeltaEntity (entity_state_t *from, entity_state_t *to, sizebuf_t
|
|||
}
|
||||
|
||||
if ( to->solid != from->solid ) bits |= U_SOLID;
|
||||
if ( to->event ) bits |= U_EVENT; // event is not delta compressed, just 0 compressed
|
||||
if ( to->event ) bits |= U_EVENT; // event is not delta compressed, just 0 compressed
|
||||
|
||||
if ( to->modelindex != from->modelindex ) bits |= U_MODEL;
|
||||
if ( to->weaponmodel != from->weaponmodel ) bits |= U_WEAPONMODEL;
|
||||
|
@ -288,16 +284,12 @@ void _MSG_WriteDeltaEntity (entity_state_t *from, entity_state_t *to, sizebuf_t
|
|||
|
||||
if (bits & U_MODEL) _MSG_WriteByte (msg, to->modelindex, filename, fileline);
|
||||
if (bits & U_WEAPONMODEL) _MSG_WriteByte (msg, to->weaponmodel, filename, fileline);
|
||||
if (bits & U_BODY) _MSG_WriteByte (msg, to->body, filename, fileline);
|
||||
if (bits & U_SEQUENCE) _MSG_WriteByte (msg, to->sequence, filename, fileline);
|
||||
|
||||
if (bits & U_FRAME8) _MSG_WriteByte (msg, to->frame, filename, fileline);
|
||||
if (bits & U_FRAME16) _MSG_WriteShort (msg, to->frame, filename, fileline);
|
||||
|
||||
if ((bits & U_SKIN8) && (bits & U_SKIN16))
|
||||
_MSG_WriteLong (msg, to->skinnum, filename, fileline); // used for laser colors
|
||||
else if (bits & U_SKIN8) _MSG_WriteByte (msg, to->skinnum, filename, fileline);
|
||||
else if (bits & U_SKIN16) _MSG_WriteShort (msg, to->skinnum, filename, fileline);
|
||||
if (bits & U_SKIN8 ) _MSG_WriteByte (msg, to->skin, filename, fileline);
|
||||
if (bits & U_SKIN16) _MSG_WriteShort (msg, to->skin, filename, fileline);
|
||||
|
||||
if ( (bits & (U_EFFECTS8|U_EFFECTS16)) == (U_EFFECTS8|U_EFFECTS16))
|
||||
_MSG_WriteLong (msg, to->effects, filename, fileline);
|
||||
|
@ -324,10 +316,12 @@ void _MSG_WriteDeltaEntity (entity_state_t *from, entity_state_t *to, sizebuf_t
|
|||
_MSG_WriteCoord (msg, to->old_origin[2], filename, fileline);
|
||||
}
|
||||
|
||||
if (bits & U_SOUND) _MSG_WriteByte (msg, to->sound, filename, fileline);
|
||||
if (bits & U_EVENT) _MSG_WriteByte (msg, to->event, filename, fileline);
|
||||
if (bits & U_SEQUENCE) _MSG_WriteByte (msg, to->sequence, filename, fileline);
|
||||
if (bits & U_SOLID) _MSG_WriteShort (msg, to->solid, filename, fileline);
|
||||
if (bits & U_ALPHA) _MSG_WriteFloat (msg, to->alpha, filename, fileline);
|
||||
if (bits & U_SOUND) _MSG_WriteByte (msg, to->sound, filename, fileline);
|
||||
if (bits & U_EVENT) _MSG_WriteByte (msg, to->event, filename, fileline);
|
||||
if (bits & U_BODY) _MSG_WriteByte (msg, to->body, filename, fileline);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -562,13 +556,10 @@ void *SZ_GetSpace (sizebuf_t *buf, int length)
|
|||
|
||||
if (buf->cursize + length > buf->maxsize)
|
||||
{
|
||||
if (!buf->allowoverflow)
|
||||
Com_Error (ERR_DROP, "SZ_GetSpace: overflow without allowoverflow set");
|
||||
|
||||
if (length > buf->maxsize)
|
||||
Com_Error (ERR_DROP, "SZ_GetSpace: %i is > full buffer size", length);
|
||||
|
||||
Msg ("SZ_GetSpace: overflow\n");
|
||||
Msg ("SZ_GetSpace: overflow [cursize %d maxsize %d]\n", buf->cursize + length, buf->maxsize );
|
||||
SZ_Clear (buf);
|
||||
buf->overflowed = true;
|
||||
}
|
||||
|
|
|
@ -155,16 +155,13 @@ bool NET_CompareBaseAdr (netadr_t a, netadr_t b)
|
|||
return false;
|
||||
}
|
||||
|
||||
char *NET_AdrToString (netadr_t a)
|
||||
char *NET_AdrToString (netadr_t a)
|
||||
{
|
||||
static char s[64];
|
||||
static char s[64];
|
||||
|
||||
if (a.type == NA_LOOPBACK)
|
||||
Com_sprintf (s, sizeof(s), "loopback");
|
||||
else if (a.type == NA_IP)
|
||||
Com_sprintf (s, sizeof(s), "%i.%i.%i.%i:%i", a.ip[0], a.ip[1], a.ip[2], a.ip[3], ntohs(a.port));
|
||||
else
|
||||
Com_sprintf (s, sizeof(s), "%02x%02x%02x%02x:%02x%02x%02x%02x%02x%02x:%i", a.ipx[0], a.ipx[1], a.ipx[2], a.ipx[3], a.ipx[4], a.ipx[5], a.ipx[6], a.ipx[7], a.ipx[8], a.ipx[9], ntohs(a.port));
|
||||
if (a.type == NA_LOOPBACK) sprintf (s, "loopback");
|
||||
else if (a.type == NA_IP) sprintf (s, "%i.%i.%i.%i:%i", a.ip[0], a.ip[1], a.ip[2], a.ip[3], ntohs(a.port));
|
||||
else sprintf (s, "%02x%02x%02x%02x:%02x%02x%02x%02x%02x%02x:%i", a.ipx[0], a.ipx[1], a.ipx[2], a.ipx[3], a.ipx[4], a.ipx[5], a.ipx[6], a.ipx[7], a.ipx[8], a.ipx[9], ntohs(a.port));
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 1997-2001 Id Software, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include "engine.h"
|
||||
|
||||
/*
|
||||
============================================================================
|
||||
|
||||
LIBRARY REPLACEMENT FUNCTIONS
|
||||
|
||||
============================================================================
|
||||
*/
|
||||
void Com_sprintf (char *dest, int size, char *fmt, ...)
|
||||
{
|
||||
int len;
|
||||
va_list argptr;
|
||||
char bigbuffer[0x10000];
|
||||
|
||||
va_start (argptr,fmt);
|
||||
len = vsprintf (bigbuffer,fmt,argptr);
|
||||
va_end (argptr);
|
||||
if (len >= size)
|
||||
Msg ("Com_sprintf: overflow of %i in %i\n", len, size);
|
||||
strncpy (dest, bigbuffer, size-1);
|
||||
}
|
||||
|
|
@ -230,10 +230,6 @@ SOURCE=.\common\pmove.c
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\common\q_shared.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\common\qmenu.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
|
|
@ -234,7 +234,7 @@ void SV_Map_f (void)
|
|||
map = Cmd_Argv(1);
|
||||
if (!strstr (map, "."))
|
||||
{
|
||||
Com_sprintf (expanded, sizeof(expanded), "maps/%s.bsp", map);
|
||||
sprintf (expanded, "maps/%s.bsp", map);
|
||||
if (!FS_LoadFile (expanded, NULL))
|
||||
{
|
||||
Msg ("Can't find %s\n", expanded);
|
||||
|
@ -534,10 +534,8 @@ void SV_ServerRecord_f (void)
|
|||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// open the demo file
|
||||
//
|
||||
Com_sprintf (name, sizeof(name), "demos/%s.dm2", Cmd_Argv(1));
|
||||
sprintf (name, "demos/%s.dm2", Cmd_Argv(1));
|
||||
|
||||
Msg ("recording to %s.\n", name);
|
||||
svs.demofile = FS_Open (name, "wb");
|
||||
|
|
|
@ -165,7 +165,6 @@ void PF_setmodel (edict_t *ent, char *name)
|
|||
{
|
||||
int i;
|
||||
cmodel_t *mod;
|
||||
stmodel_t *stmod;
|
||||
|
||||
if (!name) Com_Error (ERR_DROP, "PF_setmodel: NULL");
|
||||
|
||||
|
@ -174,32 +173,14 @@ void PF_setmodel (edict_t *ent, char *name)
|
|||
// ent->model = name;
|
||||
ent->s.modelindex = i;
|
||||
|
||||
// if it is an inline model, get the size information for it
|
||||
if (name[0] == '*')
|
||||
mod = CM_LoadModel (name);
|
||||
|
||||
if(mod) // hull setup
|
||||
{
|
||||
mod = CM_InlineModel (name);
|
||||
VectorCopy (mod->mins, ent->mins);
|
||||
VectorCopy (mod->maxs, ent->maxs);
|
||||
SV_LinkEdict (ent);
|
||||
}
|
||||
else if(!stricmp(FS_FileExtension(name), "mdl" ))
|
||||
{
|
||||
if(stmod = CM_StudioModel(name))
|
||||
{
|
||||
VectorCopy (stmod->mins, ent->mins);
|
||||
VectorCopy (stmod->maxs, ent->maxs);
|
||||
SV_LinkEdict (ent);
|
||||
}
|
||||
}
|
||||
else if(!stricmp(FS_FileExtension(name), "spr" ))
|
||||
{
|
||||
if(stmod = CM_SpriteModel(name))
|
||||
{
|
||||
VectorCopy (stmod->mins, ent->mins);
|
||||
VectorCopy (stmod->maxs, ent->maxs);
|
||||
SV_LinkEdict (ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -219,10 +219,10 @@ void SV_SpawnServer (char *server, char *spawnpoint, char *savename, server_stat
|
|||
}
|
||||
else
|
||||
{
|
||||
Com_sprintf (sv.configstrings[CS_MODELS+1],sizeof(sv.configstrings[CS_MODELS+1]), "maps/%s.bsp", server);
|
||||
sprintf (sv.configstrings[CS_MODELS+1], "maps/%s.bsp", server);
|
||||
sv.models[1] = CM_LoadMap (sv.configstrings[CS_MODELS+1], false, &checksum);
|
||||
}
|
||||
Com_sprintf (sv.configstrings[CS_MAPCHECKSUM],sizeof(sv.configstrings[CS_MAPCHECKSUM]), "%i", checksum);
|
||||
sprintf (sv.configstrings[CS_MAPCHECKSUM],"%i", checksum);
|
||||
|
||||
// clear physics interaction links
|
||||
SV_ClearWorld ();
|
||||
|
@ -337,7 +337,7 @@ void SV_InitGame (void)
|
|||
|
||||
// heartbeats will always be sent to the id master
|
||||
svs.last_heartbeat = -99999; // send immediately
|
||||
Com_sprintf(idmaster, sizeof(idmaster), "192.246.40.37:%i", PORT_MASTER);
|
||||
sprintf(idmaster, "192.246.40.37:%i", PORT_MASTER);
|
||||
NET_StringToAdr (idmaster, &master_adr[0]);
|
||||
|
||||
// init game
|
||||
|
|
|
@ -124,8 +124,7 @@ char *SV_StatusString (void)
|
|||
cl = &svs.clients[i];
|
||||
if (cl->state == cs_connected || cl->state == cs_spawned )
|
||||
{
|
||||
Com_sprintf (player, sizeof(player), "%i %i \"%s\"\n",
|
||||
cl->edict->client->ps.stats[STAT_FRAGS], cl->ping, cl->name);
|
||||
sprintf (player, "%i %i \"%s\"\n", cl->edict->client->ps.stats[STAT_FRAGS], cl->ping, cl->name);
|
||||
playerLength = strlen(player);
|
||||
if (statusLength + playerLength >= sizeof(status) )
|
||||
break; // can't hold any more
|
||||
|
@ -185,7 +184,7 @@ void SVC_Info (void)
|
|||
version = atoi (Cmd_Argv(1));
|
||||
|
||||
if (version != PROTOCOL_VERSION)
|
||||
Com_sprintf (string, sizeof(string), "%s: wrong version\n", hostname->string, sizeof(string));
|
||||
sprintf (string, "%s: wrong version\n", hostname->string, sizeof(string));
|
||||
else
|
||||
{
|
||||
count = 0;
|
||||
|
@ -193,7 +192,7 @@ void SVC_Info (void)
|
|||
if (svs.clients[i].state >= cs_connected)
|
||||
count++;
|
||||
|
||||
Com_sprintf (string, sizeof(string), "%16s %8s %2i/%2i\n", hostname->string, sv.name, count, (int)maxclients->value);
|
||||
sprintf (string, "%16s %8s %2i/%2i\n", hostname->string, sv.name, count, (int)maxclients->value);
|
||||
}
|
||||
|
||||
Netchan_OutOfBandPrint (NS_SERVER, net_from, "info\n%s", string);
|
||||
|
@ -406,7 +405,6 @@ gotnewcl:
|
|||
newcl->state = cs_connected;
|
||||
|
||||
SZ_Init (&newcl->datagram, newcl->datagram_buf, sizeof(newcl->datagram_buf) );
|
||||
newcl->datagram.allowoverflow = true;
|
||||
newcl->lastmessage = svs.realtime; // don't timeout
|
||||
newcl->lastconnect = svs.realtime;
|
||||
}
|
||||
|
|
|
@ -395,12 +395,11 @@ SV_SendClientDatagram
|
|||
bool SV_SendClientDatagram (client_t *client)
|
||||
{
|
||||
byte msg_buf[MAX_MSGLEN];
|
||||
sizebuf_t msg;
|
||||
sizebuf_t msg;
|
||||
|
||||
SV_BuildClientFrame (client);
|
||||
|
||||
SZ_Init (&msg, msg_buf, sizeof(msg_buf));
|
||||
msg.allowoverflow = true;
|
||||
|
||||
// send over all the relevant entity_state_t
|
||||
// and the player_state_t
|
||||
|
|
|
@ -42,7 +42,7 @@ void SV_BeginDemoserver (void)
|
|||
{
|
||||
char name[MAX_OSPATH];
|
||||
|
||||
Com_sprintf (name, sizeof(name), "demos/%s", sv.name);
|
||||
sprintf (name, "demos/%s", sv.name);
|
||||
sv.demofile = FS_Open(name, "rb" );
|
||||
if (!sv.demofile)
|
||||
Com_Error (ERR_DROP, "Couldn't open %s\n", name);
|
||||
|
|
|
@ -614,7 +614,7 @@ struct sfx_s *S_RegisterSexedSound (entity_state_t *ent, char *base)
|
|||
strcpy(model, "male");
|
||||
|
||||
// see if we already know of the model specific sound
|
||||
Com_sprintf (sexedFilename, sizeof(sexedFilename), "#players/%s/%s", model, base+1);
|
||||
sprintf (sexedFilename, "#players/%s/%s", model, base+1);
|
||||
sfx = S_FindName (sexedFilename, false);
|
||||
|
||||
if (!sfx)
|
||||
|
@ -630,7 +630,7 @@ struct sfx_s *S_RegisterSexedSound (entity_state_t *ent, char *base)
|
|||
else
|
||||
{
|
||||
// no, revert to the male sound in the pak0.pak
|
||||
Com_sprintf (maleFilename, sizeof(maleFilename), "player/%s/%s", "male", base+1);
|
||||
sprintf (maleFilename, "player/%s/%s", "male", base+1);
|
||||
sfx = S_AliasName (sexedFilename, maleFilename);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,8 +114,9 @@ sfxcache_t *S_LoadSound (sfx_t *s)
|
|||
if (sc)
|
||||
return sc;
|
||||
|
||||
//Msg ("S_LoadSound: %x\n", (int)stackbuf);
|
||||
// load it in
|
||||
//Msg ("S_LoadSound: %x\n", (int)stackbuf);
|
||||
|
||||
// load it in
|
||||
if (s->truename)
|
||||
name = s->truename;
|
||||
else
|
||||
|
@ -123,10 +124,9 @@ sfxcache_t *S_LoadSound (sfx_t *s)
|
|||
|
||||
if (name[0] == '#')
|
||||
strcpy(namebuffer, &name[1]);
|
||||
else
|
||||
Com_sprintf (namebuffer, sizeof(namebuffer), "sound/%s", name);
|
||||
else sprintf (namebuffer, "sound/%s", name);
|
||||
|
||||
// Msg ("loading %s\n",namebuffer);
|
||||
//Msg ("loading %s\n",namebuffer);
|
||||
|
||||
data = FS_LoadFile (namebuffer, &size);
|
||||
|
||||
|
|
|
@ -666,7 +666,6 @@ void VID_CheckChanges (void)
|
|||
cl.refresh_prepped = false;
|
||||
cls.disable_screen = true;
|
||||
|
||||
//Com_sprintf( name, sizeof(name), "bin/render.dll", vid_ref->string );
|
||||
if ( !VID_LoadRefresh( "bin/render.dll" ) )
|
||||
{
|
||||
if ( strcmp (vid_ref->string, "soft") == 0 )
|
||||
|
|
|
@ -180,9 +180,9 @@ static void ApplyChanges( void *unused )
|
|||
vid_ref->modified = true;
|
||||
|
||||
g = 2.00 * ( 0.8 - ( vid_gamma->value - 0.5 ) ) + 1.0F;
|
||||
Com_sprintf( envbuffer, sizeof(envbuffer), "SSTV2_GAMMA=%f", g );
|
||||
sprintf( envbuffer, "SSTV2_GAMMA=%f", g );
|
||||
putenv( envbuffer );
|
||||
Com_sprintf( envbuffer, sizeof(envbuffer), "SST_GAMMA=%f", g );
|
||||
sprintf( envbuffer, "SST_GAMMA=%f", g );
|
||||
putenv( envbuffer );
|
||||
|
||||
vid_gamma->modified = false;
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: platform - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\Temp\RSP60C.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \XASH3D\src_main\!source\temp\platform\!debug\platform.dll "D:\Xash3D\bin\platform.dll"
|
||||
]
|
||||
Creating command line "C:\Temp\RSP60C.bat"
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \XASH3D\src_main\!source\temp\platform\!debug\platform.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
platform.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -20,7 +20,7 @@ BRUSH MODELS
|
|||
#define MAX_KEY 32
|
||||
#define MAX_MAP_AREAS 256
|
||||
#define MAX_VALUE 1024
|
||||
#define MAX_MAP_MODELS 1024
|
||||
#define MAX_MAP_MODELS 2048 // mesh models and sprites too
|
||||
#define MAX_MAP_AREAPORTALS 1024
|
||||
#define MAX_MAP_ENTITIES 2048
|
||||
#define MAX_MAP_TEXINFO 8192
|
||||
|
@ -200,20 +200,17 @@ typedef struct cplane_s
|
|||
|
||||
|
||||
typedef struct cmodel_s
|
||||
{
|
||||
vec3_t mins, maxs;
|
||||
vec3_t origin; // for sounds or lights
|
||||
int headnode;
|
||||
} cmodel_t;
|
||||
|
||||
typedef struct stmodel_s
|
||||
{
|
||||
int modidx; //edict index
|
||||
char name[64]; //model name
|
||||
vec3_t mins, maxs;
|
||||
|
||||
vec3_t mins, maxs; // boundbox
|
||||
vec3_t origin; // for sounds or lights
|
||||
int headnode; // bsp info
|
||||
|
||||
int numframes; //sprite framecount
|
||||
void *extradata; //for studio models
|
||||
} stmodel_t;
|
||||
} cmodel_t;
|
||||
|
||||
typedef struct csurface_s
|
||||
{
|
||||
|
|
|
@ -225,7 +225,6 @@ void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point,
|
|||
|
||||
|
||||
|
||||
void Com_sprintf (char *dest, int size, char *fmt, ...);
|
||||
void Com_PageInMemory (byte *buffer, int size);
|
||||
|
||||
//=============================================
|
||||
|
@ -956,10 +955,10 @@ typedef struct entity_state_s
|
|||
int modelindex;
|
||||
int weaponmodel;
|
||||
|
||||
int body; // sub-model selection for studiomodels
|
||||
int sequence; // animation sequence
|
||||
int frame; // % playback position in animation sequences (0..255)
|
||||
int skinnum;
|
||||
short skin; // skin for studiomodels
|
||||
short frame; // % playback position in animation sequences (0..512)
|
||||
byte body; // sub-model selection for studiomodels
|
||||
byte sequence; // animation sequence (0 - 255)
|
||||
uint effects; // PGM - we're filling it, so it needs to be unsigned
|
||||
int renderfx;
|
||||
int solid; // for client side prediction, 8*(bits 0-4) is x/y radius
|
||||
|
|
|
@ -372,7 +372,7 @@ void GL_ScreenShot_f (void);
|
|||
void R_DrawAliasModel( int passnum );
|
||||
void R_DrawStudioModel( int passnum );
|
||||
void R_DrawBrushModel( int passnum );
|
||||
void R_SpriteDrawModel( int passnum );
|
||||
void R_DrawSpriteModel( int passnum );
|
||||
void R_StudioLoadModel (model_t *mod, void *buffer );
|
||||
void R_SpriteLoadModel( model_t *mod, void *buffer );
|
||||
char *R_ExtName( model_t *mod );
|
||||
|
|
|
@ -257,7 +257,7 @@ void R_DrawEntitiesOnList (void)
|
|||
R_DrawBrushModel( RENDERPASS_SOLID );
|
||||
break;
|
||||
case mod_sprite:
|
||||
R_SpriteDrawModel( RENDERPASS_SOLID );
|
||||
R_DrawSpriteModel( RENDERPASS_SOLID );
|
||||
break;
|
||||
case mod_studio:
|
||||
R_DrawStudioModel( RENDERPASS_SOLID );
|
||||
|
@ -298,7 +298,7 @@ void R_DrawEntitiesOnList (void)
|
|||
R_DrawBrushModel( RENDERPASS_ALPHA );
|
||||
break;
|
||||
case mod_sprite:
|
||||
R_SpriteDrawModel( RENDERPASS_ALPHA );
|
||||
R_DrawSpriteModel( RENDERPASS_ALPHA );
|
||||
break;
|
||||
case mod_studio:
|
||||
R_DrawStudioModel( RENDERPASS_ALPHA );
|
||||
|
@ -309,7 +309,7 @@ void R_DrawEntitiesOnList (void)
|
|||
}
|
||||
}
|
||||
}
|
||||
qglDepthMask (1);// back to writing
|
||||
qglDepthMask(1);// back to writing
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ mspriteframe_t *R_GetSpriteFrame (entity_t *currententity)
|
|||
}
|
||||
|
||||
|
||||
void R_SpriteDrawModel( int passnum )
|
||||
void R_DrawSpriteModel( int passnum )
|
||||
{
|
||||
float alpha = 1.0F;
|
||||
mspriteframe_t *frame;
|
||||
|
|
|
@ -1266,15 +1266,11 @@ void R_StudioDrawMeshes ( mstudiotexture_t * ptexture, short *pskinref, int pass
|
|||
if ( r_newrefdef.rdflags & RDF_IRGOGGLES && m_pCurrentEntity->flags & RF_IR_VISIBLE)
|
||||
lv = &irgoggles[0];
|
||||
|
||||
if(m_pCurrentEntity->flags & RF_TRANSLUCENT)
|
||||
{
|
||||
Msg("%s %g\n", m_pCurrentEntity->model->name, m_pCurrentEntity->alpha );
|
||||
qglColor4f( 1.0f, 1.0f, 1.0f, m_pCurrentEntity->alpha );
|
||||
}
|
||||
else qglColor4f( lv[0], lv[1], lv[2], 1.0f );//get light from floor
|
||||
|
||||
if (flags & STUDIO_NF_ADDITIVE)//additive is self-lighting texture
|
||||
qglColor4f( 1.0f, 1.0f, 1.0f, 0.8f );
|
||||
else if(m_pCurrentEntity->flags & RF_TRANSLUCENT)
|
||||
qglColor4f( 1.0f, 1.0f, 1.0f, m_pCurrentEntity->alpha );
|
||||
else qglColor4f( lv[0], lv[1], lv[2], 1.0f );//get light from floor
|
||||
|
||||
av = m_pxformverts[ptricmds[0]];
|
||||
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: render - Win32 Release--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\Temp\RSP5F7.tmp" with contents
|
||||
[
|
||||
/nologo /ML /W3 /GX /O2 /Ob0 /I "../public" /I "../platform/formats" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fo"..\temp\render\!release/" /Fd"..\temp\render\!release/" /FD /c
|
||||
"D:\XASH3D\src_main\!source\render\gl_draw.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_light.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_mesh.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_model.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_rmain.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_rmisc.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_rsurf.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_warp.c"
|
||||
"D:\XASH3D\src_main\!source\render\gl_widnt.c"
|
||||
"D:\XASH3D\src_main\!source\render\glw_imp.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_backend.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_bloom.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_bspmod.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_sprite.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_studio.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_texture.c"
|
||||
"D:\XASH3D\src_main\!source\render\r_utils.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\Temp\RSP5F7.tmp"
|
||||
Creating temporary file "C:\Temp\RSP5F8.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"..\temp\render\!release/render.dll" /implib:"..\temp\render\!release/render.lib" /libpath:"../public/libs/"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_draw.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_light.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_mesh.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_model.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_rmain.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_rmisc.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_rsurf.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_warp.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\gl_widnt.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\glw_imp.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_backend.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_bloom.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_bspmod.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_sprite.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_studio.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_texture.obj"
|
||||
"\XASH3D\src_main\!source\temp\render\!release\r_utils.obj"
|
||||
]
|
||||
Creating command line "link.exe @C:\Temp\RSP5F8.tmp"
|
||||
Creating temporary file "C:\Temp\RSP5F9.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \XASH3D\src_main\!source\temp\render\!release\render.dll "D:\Xash3D\bin\render.dll"
|
||||
]
|
||||
Creating command line "C:\Temp\RSP5F9.bat"
|
||||
Compiling...
|
||||
gl_draw.c
|
||||
gl_light.c
|
||||
gl_mesh.c
|
||||
gl_model.c
|
||||
gl_rmain.c
|
||||
gl_rmisc.c
|
||||
gl_rsurf.c
|
||||
gl_warp.c
|
||||
gl_widnt.c
|
||||
glw_imp.c
|
||||
r_backend.c
|
||||
r_bloom.c
|
||||
r_bspmod.c
|
||||
r_sprite.c
|
||||
r_studio.c
|
||||
r_texture.c
|
||||
r_utils.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\render\!release/render.lib and object ..\temp\render\!release/render.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \XASH3D\src_main\!source\temp\render\!release\render.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
render.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -706,7 +706,7 @@ void G_FindCraneParts()
|
|||
cable->s.origin[2] = hoist->absmax[2] - 2;
|
||||
cable->model = "models/cable/tris.md2";
|
||||
gi.setmodel(cable,cable->model);
|
||||
cable->s.skinnum = 0;
|
||||
cable->s.skin = 0;
|
||||
length = hoist->absmax[2]-1 - hook->absmax[2];
|
||||
frame = (int)(length/CABLE_SEGMENT);
|
||||
if((frame+1)*CABLE_SEGMENT < length) frame++;
|
||||
|
|
|
@ -1296,13 +1296,13 @@ void SpawnItem (edict_t *ent, gitem_t *item)
|
|||
ent->count = item->quantity;
|
||||
ent->style = item->tag;
|
||||
}
|
||||
if(ent->spawnflags & NO_STUPID_SPINNING) {
|
||||
if(ent->spawnflags & NO_STUPID_SPINNING)
|
||||
{
|
||||
ent->s.effects &= ~EF_ROTATE;
|
||||
ent->s.renderfx &= ~RF_GLOW;
|
||||
}
|
||||
|
||||
if (ent->model)
|
||||
gi.modelindex (ent->model);
|
||||
if (ent->model) gi.modelindex (ent->model);
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "g_local.h"
|
||||
|
||||
int gibsthisframe=0;
|
||||
int gibsthisframe=0;
|
||||
int lastgibframe=0;
|
||||
|
||||
#define GIB_METAL 1
|
||||
|
@ -10,10 +10,9 @@ int lastgibframe=0;
|
|||
#define GIB_BARREL 3
|
||||
#define GIB_CRATE 4
|
||||
#define GIB_ROCK 5
|
||||
#define GIB_CRYSTAL 6
|
||||
#define GIB_MECH 7
|
||||
#define GIB_WOOD 8
|
||||
#define GIB_TECH 9
|
||||
#define GIB_MECH 6
|
||||
#define GIB_WOOD 7
|
||||
#define GIB_TECH 8
|
||||
|
||||
void FadeThink(edict_t *ent)
|
||||
{
|
||||
|
@ -276,7 +275,7 @@ void ThrowHead (edict_t *self, char *gibname, int damage, int type)
|
|||
char modelname[256];
|
||||
char *p;
|
||||
|
||||
self->s.skinnum = 0;
|
||||
self->s.skin = 0;
|
||||
self->s.frame = 0;
|
||||
VectorClear (self->mins);
|
||||
VectorClear (self->maxs);
|
||||
|
@ -377,12 +376,12 @@ void ThrowClientHead (edict_t *self, int damage)
|
|||
if (rand()&1)
|
||||
{
|
||||
gibname = "models/objects/gibs/head2/tris.md2";
|
||||
self->s.skinnum = 1; // second skin is player
|
||||
self->s.skin = 1; // second skin is player
|
||||
}
|
||||
else
|
||||
{
|
||||
gibname = "models/objects/gibs/skull/tris.md2";
|
||||
self->s.skinnum = 0;
|
||||
self->s.skin = 0;
|
||||
}
|
||||
|
||||
self->s.origin[2] += 32;
|
||||
|
@ -426,7 +425,7 @@ void debris_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
|
|||
G_FreeEdict (self);
|
||||
}
|
||||
|
||||
void ThrowDebris (edict_t *self, char *modelname, float speed, vec3_t origin, int skin, int effects)
|
||||
void ThrowDebris (edict_t *self, char *modelname, float speed, vec3_t origin, int body, int effects)
|
||||
{
|
||||
edict_t *chunk;
|
||||
vec3_t v;
|
||||
|
@ -452,12 +451,11 @@ void ThrowDebris (edict_t *self, char *modelname, float speed, vec3_t origin, in
|
|||
chunk->die = debris_die;
|
||||
|
||||
// Lazarus: Preserve model name for level changes:
|
||||
chunk->message = TagMalloc (strlen(modelname)+1,TAG_LEVEL);
|
||||
chunk->message = TagMalloc (strlen(modelname) + 1,TAG_LEVEL);
|
||||
strcpy(chunk->message, modelname);
|
||||
|
||||
// Lazarus: skin number and effects
|
||||
chunk->s.body = skin;//FIXME
|
||||
chunk->s.skinnum = skin;
|
||||
chunk->s.body = body;
|
||||
chunk->s.effects |= effects;
|
||||
|
||||
gi.linkentity (chunk);
|
||||
|
@ -1030,8 +1028,7 @@ void func_explosive_explode (edict_t *self)
|
|||
VectorScale (size, 0.5, size);
|
||||
|
||||
mass = self->mass;
|
||||
if (!mass)
|
||||
mass = 75;
|
||||
if (!mass) mass = 75;
|
||||
|
||||
// Lazarus: Use traditional debris for gib_type=0, but non-zero gib_type gives equal
|
||||
// weight to all models.
|
||||
|
@ -1055,14 +1052,9 @@ void func_explosive_explode (edict_t *self)
|
|||
case GIB_BARREL: ThrowDebris (self, "models/gibs/barrelgib.mdl", 2, chunkorigin, r, 0); break;
|
||||
case GIB_CRATE: ThrowDebris (self, "models/gibs/wood.mdl", 2, chunkorigin, r, 0); break;
|
||||
case GIB_ROCK: ThrowDebris (self, "models/gibs/rock.mdl", 2, chunkorigin, r, 0); break;
|
||||
case GIB_CRYSTAL:
|
||||
ThrowDebris (self, va("models/objects/crystal_gibs/gib%i.md2",r), 2, chunkorigin, self->s.skinnum, 0); break;
|
||||
case GIB_MECH:
|
||||
ThrowDebris (self, va("models/objects/mech_gibs/gib%i.md2",r), 2, chunkorigin, self->s.skinnum, 0); break;
|
||||
case GIB_WOOD:
|
||||
ThrowDebris (self, va("models/objects/wood_gibs/gib%i.md2",r), 2, chunkorigin, self->s.skinnum, 0); break;
|
||||
case GIB_TECH:
|
||||
ThrowDebris (self, va("models/objects/tech_gibs/gib%i.md2",r), 2, chunkorigin, self->s.skinnum, 0); break;
|
||||
case GIB_MECH: ThrowDebris (self, "models/gibs/flesh.mdl", 2, chunkorigin, r, 0); break;
|
||||
case GIB_WOOD: ThrowDebris (self, "models/gibs/wood.mdl", 2, chunkorigin, r, 0); break;
|
||||
case GIB_TECH: ThrowDebris (self, "models/gibs/computer.mdl", 2, chunkorigin, r, 0); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1275,77 +1267,81 @@ void barrel_explode (edict_t *self)
|
|||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris1/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 6, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris1/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 7, 0);
|
||||
|
||||
// bottom corners
|
||||
spd = 1.75 * (float)self->dmg / 200.0;
|
||||
VectorCopy (self->absmin, org);
|
||||
org[2] += 2;
|
||||
ThrowDebris (self, "models/objects/debris3/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 8, 0);
|
||||
VectorCopy (self->absmin, org);
|
||||
org[0] += self->size[0];
|
||||
org[2] += 2;
|
||||
ThrowDebris (self, "models/objects/debris3/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 5, 0);
|
||||
VectorCopy (self->absmin, org);
|
||||
org[1] += self->size[1];
|
||||
org[2] += 2;
|
||||
ThrowDebris (self, "models/objects/debris3/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 8, 0);
|
||||
VectorCopy (self->absmin, org);
|
||||
org[0] += self->size[0];
|
||||
org[1] += self->size[1];
|
||||
org[2] += 2;
|
||||
ThrowDebris (self, "models/objects/debris3/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 5, 0);
|
||||
|
||||
// a bunch of little chunks
|
||||
spd = 2 * self->dmg / 200;
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 0, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 1, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 2, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 3, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 2, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 1, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 3, 0);
|
||||
org[0] = self->s.origin[0] + crandom() * size[0];
|
||||
org[1] = self->s.origin[1] + crandom() * size[1];
|
||||
org[2] = self->s.origin[2] + crandom() * size[2];
|
||||
ThrowDebris (self, "models/objects/debris2/tris.md2", spd, org, 0, 0);
|
||||
ThrowDebris (self, "models/gibs/cinder.mdl", spd, org, 0, 0);
|
||||
|
||||
// Lazarus: use targets
|
||||
G_UseTargets (self, self->activator);
|
||||
|
||||
// Lazarus: added case for no damage
|
||||
if(self->dmg) {
|
||||
if (self->groundentity) {
|
||||
if(self->dmg)
|
||||
{
|
||||
if (self->groundentity)
|
||||
{
|
||||
self->s.origin[2] = self->absmin[2] + 2;
|
||||
BecomeExplosion2 (self);
|
||||
} else
|
||||
BecomeExplosion1 (self);
|
||||
} else {
|
||||
}
|
||||
else BecomeExplosion1 (self);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("tank/thud.wav"), 1, ATTN_NORM, 0);
|
||||
G_FreeEdict (self);
|
||||
}
|
||||
|
@ -1369,18 +1365,10 @@ void SP_misc_explobox (edict_t *self)
|
|||
|
||||
self->class_id = ENTITY_MISC_EXPLOBOX;
|
||||
// Lazarus: can use actual barrel parts for debris:
|
||||
if(self->spawnflags & 1)
|
||||
{
|
||||
self->gib_type = GIB_GLASS;//GIB_BARREL;
|
||||
PrecacheDebris(self->gib_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.modelindex ("models/objects/debris1/tris.md2");
|
||||
gi.modelindex ("models/objects/debris2/tris.md2");
|
||||
gi.modelindex ("models/objects/debris3/tris.md2");
|
||||
}
|
||||
|
||||
|
||||
self->gib_type = GIB_BARREL;
|
||||
|
||||
PrecacheDebris(self->gib_type);
|
||||
self->solid = SOLID_BBOX;
|
||||
self->clipmask = MASK_MONSTERSOLID | MASK_PLAYERSOLID;
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
|
@ -1730,7 +1718,7 @@ void SP_misc_deadsoldier (edict_t *ent)
|
|||
if(ent->style)
|
||||
{
|
||||
PatchDeadSoldier();
|
||||
ent->s.skinnum = ent->style;
|
||||
ent->s.skin = ent->style;
|
||||
}
|
||||
ent->common_name = "Dead Marine";
|
||||
gi.linkentity (ent);
|
||||
|
@ -2781,7 +2769,7 @@ void SP_misc_teleporter (edict_t *ent)
|
|||
|
||||
if(!(ent->spawnflags & 4)) {
|
||||
gi.setmodel (ent, "models/objects/dmspot/tris.md2");
|
||||
ent->s.skinnum = 1;
|
||||
ent->s.skin = 1;
|
||||
if(!(ent->spawnflags & 1)) {
|
||||
ent->s.effects = EF_TELEPORTER;
|
||||
ent->s.sound = gi.soundindex ("world/amb10.wav");
|
||||
|
@ -2873,7 +2861,7 @@ void SP_misc_teleporter_dest (edict_t *ent)
|
|||
{
|
||||
ent->class_id = ENTITY_MISC_TELEPORTER_DEST;
|
||||
gi.setmodel (ent, "models/objects/dmspot/tris.md2");
|
||||
ent->s.skinnum = 0;
|
||||
ent->s.skin = 0;
|
||||
ent->solid = SOLID_BBOX;
|
||||
VectorSet (ent->mins, -32, -32, -24);
|
||||
VectorSet (ent->maxs, 32, 32, -16);
|
||||
|
@ -3593,41 +3581,16 @@ int PatchDeadSoldier ()
|
|||
|
||||
void PrecacheDebris(int type)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case 0:
|
||||
gi.modelindex ("models/objects/debris1/tris.md2");
|
||||
gi.modelindex ("models/objects/debris2/tris.md2");
|
||||
gi.modelindex ("models/objects/debris3/tris.md2");
|
||||
break;
|
||||
case GIB_METAL:
|
||||
for(i = 1; i <=5; i++)
|
||||
gi.modelindex(va("models/objects/metal_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_GLASS: gi.modelindex("models/gibs/glass.mdl"); break;
|
||||
case GIB_BARREL: gi.modelindex("models/gibs/barrelgib.mdl"); break;
|
||||
case GIB_ROCK: gi.modelindex("models/gibs/rock.mdl"); break;
|
||||
case GIB_CRATE: gi.modelindex("models/gibs/wood.mdl"); break;
|
||||
case GIB_ROCK:
|
||||
for(i=1;i<=5;i++)
|
||||
gi.modelindex(va("models/objects/rock_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_CRYSTAL:
|
||||
for(i=1;i<=5;i++)
|
||||
gi.modelindex(va("models/objects/crystal_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_MECH:
|
||||
for(i=1;i<=5;i++)
|
||||
gi.modelindex(va("models/objects/mech_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_WOOD:
|
||||
for(i=1;i<=5;i++)
|
||||
gi.modelindex(va("models/objects/wood_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_TECH:
|
||||
for(i=1;i<=5;i++)
|
||||
gi.modelindex(va("models/objects/tech_gibs/gib%i.md2",i));
|
||||
break;
|
||||
case GIB_GLASS: gi.modelindex("models/gibs/glass.mdl"); break;
|
||||
case GIB_METAL: gi.modelindex("models/gibs/metal.mdl"); break;
|
||||
case GIB_BARREL: gi.modelindex("models/gibs/barrelgib.mdl"); break;
|
||||
case GIB_MECH: gi.modelindex("models/gibs/flesh.mdl"); break;
|
||||
case GIB_WOOD: gi.modelindex("models/gibs/wood.mdl"); break;
|
||||
case GIB_TECH: gi.modelindex("models/gibs/computer.mdl"); break;
|
||||
default: gi.modelindex("models/gibs/cinder.mdl"); break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -384,7 +384,7 @@ void AddReflection (edict_t *ent)
|
|||
ent->reflection[i]->s.weaponmodel = ent->s.weaponmodel;
|
||||
ent->reflection[i]->s.body = ent->s.body;
|
||||
ent->reflection[i]->s.sequence = ent->s.sequence;
|
||||
ent->reflection[i]->s.skinnum = ent->s.skinnum;
|
||||
ent->reflection[i]->s.skin = ent->s.skin;
|
||||
ent->reflection[i]->s.frame = ent->s.frame;
|
||||
ent->reflection[i]->s.renderfx = ent->s.renderfx;
|
||||
ent->reflection[i]->s.effects = ent->s.effects;
|
||||
|
|
|
@ -1090,7 +1090,7 @@ void target_laser_ps_think (edict_t *self)
|
|||
gi.WriteByte (count);
|
||||
gi.WritePosition (tr.endpos);
|
||||
gi.WriteDir (tr.plane.normal);
|
||||
gi.WriteByte (self->s.skinnum);
|
||||
gi.WriteByte (self->s.skin);
|
||||
gi.multicast (tr.endpos, MSG_PVS);
|
||||
}
|
||||
break;
|
||||
|
@ -1211,7 +1211,7 @@ void target_laser_think (edict_t *self)
|
|||
gi.WriteByte (count);
|
||||
gi.WritePosition (tr.endpos);
|
||||
gi.WriteDir (tr.plane.normal);
|
||||
gi.WriteByte (self->s.skinnum);
|
||||
gi.WriteByte (self->s.skin);
|
||||
gi.multicast (tr.endpos, MSG_PVS);
|
||||
}
|
||||
break;
|
||||
|
@ -1268,31 +1268,18 @@ void target_laser_start (edict_t *self)
|
|||
self->movetype = MOVETYPE_NONE;
|
||||
self->solid = SOLID_NOT;
|
||||
self->s.renderfx |= RF_BEAM|RF_TRANSLUCENT;
|
||||
self->s.modelindex = 1; // must be non-zero
|
||||
self->s.modelindex = 1; // must be non-zero
|
||||
|
||||
// set the beam diameter
|
||||
if (self->mass > 1)
|
||||
self->s.frame = self->mass;
|
||||
else if(self->spawnflags & 64)
|
||||
self->s.frame = 16;
|
||||
else
|
||||
self->s.frame = 4;
|
||||
else self->s.frame = 4;
|
||||
|
||||
// set the color
|
||||
if (self->spawnflags & 2)
|
||||
self->s.skinnum = 0xf2f2f0f0;
|
||||
else if (self->spawnflags & 4)
|
||||
self->s.skinnum = 0xd0d1d2d3;
|
||||
else if (self->spawnflags & 8)
|
||||
self->s.skinnum = 0xf3f3f1f1;
|
||||
else if (self->spawnflags & 16)
|
||||
self->s.skinnum = 0xdcdddedf;
|
||||
else if (self->spawnflags & 32)
|
||||
self->s.skinnum = 0xe0e1e2e3;
|
||||
// color will be loaded from xash sprite info
|
||||
|
||||
|
||||
if (!self->dmg)
|
||||
self->dmg = 1;
|
||||
if (!self->dmg) self->dmg = 1;
|
||||
VectorSet (self->mins, -8, -8, -8);
|
||||
VectorSet (self->maxs, 8, 8, 8);
|
||||
|
||||
|
@ -4024,7 +4011,7 @@ void clone (edict_t *self, edict_t *other, edict_t *activator)
|
|||
child->pain = parent->pain;
|
||||
child->die = parent->die;
|
||||
child->s.effects = parent->s.effects;
|
||||
child->s.skinnum = parent->s.skinnum;
|
||||
child->s.skin = parent->s.skin;
|
||||
child->item = parent->item;
|
||||
child->moveinfo.sound_start = parent->moveinfo.sound_start;
|
||||
child->moveinfo.sound_middle = parent->moveinfo.sound_middle;
|
||||
|
|
|
@ -1396,7 +1396,7 @@ void bfg_think (edict_t *self)
|
|||
gi.WriteByte (4);
|
||||
gi.WritePosition (tr.endpos);
|
||||
gi.WriteDir (tr.plane.normal);
|
||||
gi.WriteByte (self->s.skinnum);
|
||||
gi.WriteByte (self->s.skin);
|
||||
gi.multicast (tr.endpos, MSG_PVS);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ void SaveEntProps(edict_t *e, file_t *f)
|
|||
" body = %d\n"
|
||||
" sequence = %d\n"
|
||||
" frame = %d\n"
|
||||
" skinnum = %d\n"
|
||||
" skin = %d\n"
|
||||
" effects = 0x%08x\n"
|
||||
" solid = 0x%08x\n"
|
||||
" sound = %d\n"
|
||||
|
@ -169,7 +169,7 @@ void SaveEntProps(edict_t *e, file_t *f)
|
|||
e->s.number,vtos(e->s.origin),vtos(e->s.angles),
|
||||
vtos(e->s.old_origin),e->s.modelindex,e->s.weaponmodel,
|
||||
e->s.body,e->s.sequence,e->s.frame,
|
||||
e->s.skinnum,e->s.effects,e->s.solid,e->s.sound,
|
||||
e->s.skin,e->s.effects,e->s.solid,e->s.sound,
|
||||
e->s.event);
|
||||
gi.Fs.Printf(f,"inuse = %d\n"
|
||||
"linkcount = %d\n"
|
||||
|
@ -2782,19 +2782,19 @@ void ClientCommand (edict_t *ent)
|
|||
}
|
||||
else if (!strcasecmp(cmd,"sk")) {
|
||||
edict_t *viewing;
|
||||
int skinnum;
|
||||
int skin;
|
||||
|
||||
viewing = LookingAt(ent,0,NULL,NULL);
|
||||
if(!viewing)
|
||||
return;
|
||||
|
||||
if(parm) {
|
||||
skinnum = atoi(parm);
|
||||
viewing->s.skinnum = skinnum;
|
||||
skin = atoi(parm);
|
||||
viewing->s.skin = skin;
|
||||
gi.linkentity(viewing);
|
||||
}
|
||||
else
|
||||
gi.dprintf("Currently using skin #%i\n",viewing->s.skinnum);
|
||||
gi.dprintf("Currently using skin #%i\n",viewing->s.skin);
|
||||
|
||||
}
|
||||
else if(!strcasecmp(cmd,"spawn"))
|
||||
|
|
|
@ -182,7 +182,8 @@ field_t fields[] =
|
|||
{"renderfx", FOFS(renderfx), F_INT},
|
||||
{"roll", FOFS(roll), F_FLOAT},
|
||||
{"roll_speed", FOFS(roll_speed), F_FLOAT},
|
||||
{"skinnum", FOFS(s.skinnum), F_INT},
|
||||
{"skin", FOFS(s.skin), F_INT},
|
||||
{"body", FOFS(s.body), F_INT},
|
||||
{"speaker", FOFS(speaker), F_EDICT, FFL_NOSPAWN},
|
||||
{"smooth_movement", FOFS(smooth_movement), F_INT},
|
||||
{"solidstate", FOFS(solidstate), F_INT},
|
||||
|
|
|
@ -61,7 +61,7 @@ bool M_SetDeath(edict_t *self, mmove_t **deathmoves)
|
|||
if(self->monsterinfo.currentmove->endfunc)
|
||||
self->monsterinfo.currentmove->endfunc(self);
|
||||
self->s.frame = move->lastframe;
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -700,9 +700,9 @@ bool monster_start (edict_t *self)
|
|||
if(!self->max_health)
|
||||
self->max_health = self->health;
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
else
|
||||
self->s.skinnum &= ~1;
|
||||
self->s.skin &= ~1;
|
||||
self->clipmask = MASK_MONSTERSOLID;
|
||||
|
||||
if(self->monsterinfo.flies > 1.0)
|
||||
|
|
|
@ -525,7 +525,7 @@ void actor_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
|
||||
// DWH: Players don't have pain skins!
|
||||
// if (self->health < (self->max_health / 2))
|
||||
// self->s.skinnum = 1;
|
||||
// self->s.skin = 1;
|
||||
|
||||
// Stop weapon sound, if any
|
||||
self->s.sound = 0;
|
||||
|
@ -1526,7 +1526,7 @@ void SP_misc_actor (edict_t *self)
|
|||
|
||||
// We've built the misc_actor model to include the standard
|
||||
// Q2 male skins, specified with the style key. Default=grunt
|
||||
self->s.skinnum = self->style;
|
||||
self->s.skin = self->style;
|
||||
|
||||
// actors always start in a dormant state, they *must* be used to get going
|
||||
self->use = actor_use;
|
||||
|
@ -1543,7 +1543,7 @@ void SP_misc_actor (edict_t *self)
|
|||
self->flash->model = "models/objects/flash/tris.md2";
|
||||
gi.setmodel(self->flash,self->flash->model);
|
||||
self->flash->solid = SOLID_NOT;
|
||||
self->flash->s.skinnum = 0;
|
||||
self->flash->s.skin = 0;
|
||||
self->flash->s.effects = EF_PLASMA;
|
||||
self->flash->s.renderfx = RF_FULLBRIGHT;
|
||||
self->flash->svflags |= SVF_NOCLIENT;
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
BERSERK
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_berserk.h"
|
||||
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
BERSERK
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_berserk.h"
|
||||
|
||||
|
||||
static int sound_pain;
|
||||
static int sound_die;
|
||||
static int sound_idle;
|
||||
static int sound_die;
|
||||
static int sound_idle;
|
||||
static int sound_punch;
|
||||
static int sound_sight;
|
||||
static int sound_search;
|
||||
|
@ -26,304 +26,304 @@ void berserk_search (edict_t *self)
|
|||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
|
||||
void berserk_fidget (edict_t *self);
|
||||
mframe_t berserk_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, berserk_fidget,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_stand = {FRAME_stand1, FRAME_stand5, berserk_frames_stand, NULL};
|
||||
|
||||
void berserk_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
}
|
||||
|
||||
mframe_t berserk_frames_stand_fidget [] =
|
||||
{
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_stand_fidget = {FRAME_standb1, FRAME_standb20, berserk_frames_stand_fidget, berserk_stand};
|
||||
|
||||
void berserk_fidget (edict_t *self)
|
||||
{
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
return;
|
||||
if (random() > 0.15)
|
||||
return;
|
||||
|
||||
|
||||
|
||||
void berserk_fidget (edict_t *self);
|
||||
mframe_t berserk_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, berserk_fidget,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_stand = {FRAME_stand1, FRAME_stand5, berserk_frames_stand, NULL};
|
||||
|
||||
void berserk_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
}
|
||||
|
||||
mframe_t berserk_frames_stand_fidget [] =
|
||||
{
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_stand_fidget = {FRAME_standb1, FRAME_standb20, berserk_frames_stand_fidget, berserk_stand};
|
||||
|
||||
void berserk_fidget (edict_t *self)
|
||||
{
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
return;
|
||||
if (random() > 0.15)
|
||||
return;
|
||||
|
||||
self->monsterinfo.currentmove = &berserk_move_stand_fidget;
|
||||
|
||||
if(!(self->spawnflags & SF_MONSTER_AMBUSH))
|
||||
gi.sound (self, CHAN_WEAPON, sound_idle, 1, ATTN_IDLE, 0);
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_walk [] =
|
||||
{
|
||||
ai_walk, 9.1, NULL,
|
||||
ai_walk, 6.3, NULL,
|
||||
ai_walk, 4.9, NULL,
|
||||
ai_walk, 6.7, NULL,
|
||||
ai_walk, 6.0, NULL,
|
||||
ai_walk, 8.2, NULL,
|
||||
ai_walk, 7.2, NULL,
|
||||
ai_walk, 6.1, NULL,
|
||||
ai_walk, 4.9, NULL,
|
||||
ai_walk, 4.7, NULL,
|
||||
ai_walk, 4.7, NULL,
|
||||
ai_walk, 4.8, NULL
|
||||
};
|
||||
mmove_t berserk_move_walk = {FRAME_walkc1, FRAME_walkc11, berserk_frames_walk, NULL};
|
||||
|
||||
void berserk_walk (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &berserk_move_walk;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
*****************************
|
||||
SKIPPED THIS FOR NOW!
|
||||
*****************************
|
||||
|
||||
Running -> Arm raised in air
|
||||
|
||||
void() berserk_runb1 =[ $r_att1 , berserk_runb2 ] {ai_run(21);};
|
||||
void() berserk_runb2 =[ $r_att2 , berserk_runb3 ] {ai_run(11);};
|
||||
void() berserk_runb3 =[ $r_att3 , berserk_runb4 ] {ai_run(21);};
|
||||
void() berserk_runb4 =[ $r_att4 , berserk_runb5 ] {ai_run(25);};
|
||||
void() berserk_runb5 =[ $r_att5 , berserk_runb6 ] {ai_run(18);};
|
||||
void() berserk_runb6 =[ $r_att6 , berserk_runb7 ] {ai_run(19);};
|
||||
// running with arm in air : start loop
|
||||
void() berserk_runb7 =[ $r_att7 , berserk_runb8 ] {ai_run(21);};
|
||||
void() berserk_runb8 =[ $r_att8 , berserk_runb9 ] {ai_run(11);};
|
||||
void() berserk_runb9 =[ $r_att9 , berserk_runb10 ] {ai_run(21);};
|
||||
void() berserk_runb10 =[ $r_att10 , berserk_runb11 ] {ai_run(25);};
|
||||
void() berserk_runb11 =[ $r_att11 , berserk_runb12 ] {ai_run(18);};
|
||||
void() berserk_runb12 =[ $r_att12 , berserk_runb7 ] {ai_run(19);};
|
||||
// running with arm in air : end loop
|
||||
*/
|
||||
|
||||
|
||||
mframe_t berserk_frames_run1 [] =
|
||||
{
|
||||
ai_run, 21, NULL,
|
||||
ai_run, 11, NULL,
|
||||
ai_run, 21, NULL,
|
||||
ai_run, 25, NULL,
|
||||
ai_run, 18, NULL,
|
||||
ai_run, 19, NULL
|
||||
};
|
||||
mmove_t berserk_move_run1 = {FRAME_run1, FRAME_run6, berserk_frames_run1, NULL};
|
||||
|
||||
void berserk_run (edict_t *self)
|
||||
{
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_run1;
|
||||
}
|
||||
|
||||
|
||||
void berserk_attack_spike (edict_t *self)
|
||||
{
|
||||
static vec3_t aim = {MELEE_DISTANCE, 0, -24};
|
||||
fire_hit (self, aim, (15 + (rand() % 6)), 400); // Faster attack -- upwards and backwards
|
||||
}
|
||||
if(!(self->spawnflags & SF_MONSTER_AMBUSH))
|
||||
gi.sound (self, CHAN_WEAPON, sound_idle, 1, ATTN_IDLE, 0);
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_walk [] =
|
||||
{
|
||||
ai_walk, 9.1, NULL,
|
||||
ai_walk, 6.3, NULL,
|
||||
ai_walk, 4.9, NULL,
|
||||
ai_walk, 6.7, NULL,
|
||||
ai_walk, 6.0, NULL,
|
||||
ai_walk, 8.2, NULL,
|
||||
ai_walk, 7.2, NULL,
|
||||
ai_walk, 6.1, NULL,
|
||||
ai_walk, 4.9, NULL,
|
||||
ai_walk, 4.7, NULL,
|
||||
ai_walk, 4.7, NULL,
|
||||
ai_walk, 4.8, NULL
|
||||
};
|
||||
mmove_t berserk_move_walk = {FRAME_walkc1, FRAME_walkc11, berserk_frames_walk, NULL};
|
||||
|
||||
void berserk_walk (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &berserk_move_walk;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
*****************************
|
||||
SKIPPED THIS FOR NOW!
|
||||
*****************************
|
||||
|
||||
Running -> Arm raised in air
|
||||
|
||||
void() berserk_runb1 =[ $r_att1 , berserk_runb2 ] {ai_run(21);};
|
||||
void() berserk_runb2 =[ $r_att2 , berserk_runb3 ] {ai_run(11);};
|
||||
void() berserk_runb3 =[ $r_att3 , berserk_runb4 ] {ai_run(21);};
|
||||
void() berserk_runb4 =[ $r_att4 , berserk_runb5 ] {ai_run(25);};
|
||||
void() berserk_runb5 =[ $r_att5 , berserk_runb6 ] {ai_run(18);};
|
||||
void() berserk_runb6 =[ $r_att6 , berserk_runb7 ] {ai_run(19);};
|
||||
// running with arm in air : start loop
|
||||
void() berserk_runb7 =[ $r_att7 , berserk_runb8 ] {ai_run(21);};
|
||||
void() berserk_runb8 =[ $r_att8 , berserk_runb9 ] {ai_run(11);};
|
||||
void() berserk_runb9 =[ $r_att9 , berserk_runb10 ] {ai_run(21);};
|
||||
void() berserk_runb10 =[ $r_att10 , berserk_runb11 ] {ai_run(25);};
|
||||
void() berserk_runb11 =[ $r_att11 , berserk_runb12 ] {ai_run(18);};
|
||||
void() berserk_runb12 =[ $r_att12 , berserk_runb7 ] {ai_run(19);};
|
||||
// running with arm in air : end loop
|
||||
*/
|
||||
|
||||
|
||||
mframe_t berserk_frames_run1 [] =
|
||||
{
|
||||
ai_run, 21, NULL,
|
||||
ai_run, 11, NULL,
|
||||
ai_run, 21, NULL,
|
||||
ai_run, 25, NULL,
|
||||
ai_run, 18, NULL,
|
||||
ai_run, 19, NULL
|
||||
};
|
||||
mmove_t berserk_move_run1 = {FRAME_run1, FRAME_run6, berserk_frames_run1, NULL};
|
||||
|
||||
void berserk_run (edict_t *self)
|
||||
{
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_run1;
|
||||
}
|
||||
|
||||
|
||||
void berserk_attack_spike (edict_t *self)
|
||||
{
|
||||
static vec3_t aim = {MELEE_DISTANCE, 0, -24};
|
||||
fire_hit (self, aim, (15 + (rand() % 6)), 400); // Faster attack -- upwards and backwards
|
||||
}
|
||||
|
||||
|
||||
void berserk_swing (edict_t *self)
|
||||
{
|
||||
gi.sound (self, CHAN_WEAPON, sound_punch, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
mframe_t berserk_frames_attack_spike [] =
|
||||
{
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_swing,
|
||||
ai_charge, 0, berserk_attack_spike,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_attack_spike = {FRAME_att_c1, FRAME_att_c8, berserk_frames_attack_spike, berserk_run};
|
||||
|
||||
|
||||
void berserk_attack_club (edict_t *self)
|
||||
{
|
||||
vec3_t aim;
|
||||
|
||||
VectorSet (aim, MELEE_DISTANCE, self->mins[0], -4);
|
||||
fire_hit (self, aim, (5 + (rand() % 6)), 400); // Slower attack
|
||||
}
|
||||
|
||||
mframe_t berserk_frames_attack_club [] =
|
||||
{
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_swing,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_attack_club,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_attack_club = {FRAME_att_c9, FRAME_att_c20, berserk_frames_attack_club, berserk_run};
|
||||
|
||||
|
||||
void berserk_strike (edict_t *self)
|
||||
|
||||
mframe_t berserk_frames_attack_spike [] =
|
||||
{
|
||||
//FIXME play impact sound
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_attack_strike [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, berserk_swing,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, berserk_strike,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 9.7, NULL,
|
||||
ai_move, 13.6, NULL
|
||||
};
|
||||
|
||||
mmove_t berserk_move_attack_strike = {FRAME_att_c21, FRAME_att_c34, berserk_frames_attack_strike, berserk_run};
|
||||
|
||||
|
||||
void berserk_melee (edict_t *self)
|
||||
{
|
||||
if ((rand() % 2) == 0)
|
||||
self->monsterinfo.currentmove = &berserk_move_attack_spike;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_attack_club;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void() berserk_atke1 =[ $r_attb1, berserk_atke2 ] {ai_run(9);};
|
||||
void() berserk_atke2 =[ $r_attb2, berserk_atke3 ] {ai_run(6);};
|
||||
void() berserk_atke3 =[ $r_attb3, berserk_atke4 ] {ai_run(18.4);};
|
||||
void() berserk_atke4 =[ $r_attb4, berserk_atke5 ] {ai_run(25);};
|
||||
void() berserk_atke5 =[ $r_attb5, berserk_atke6 ] {ai_run(14);};
|
||||
void() berserk_atke6 =[ $r_attb6, berserk_atke7 ] {ai_run(20);};
|
||||
void() berserk_atke7 =[ $r_attb7, berserk_atke8 ] {ai_run(8.5);};
|
||||
void() berserk_atke8 =[ $r_attb8, berserk_atke9 ] {ai_run(3);};
|
||||
void() berserk_atke9 =[ $r_attb9, berserk_atke10 ] {ai_run(17.5);};
|
||||
void() berserk_atke10 =[ $r_attb10, berserk_atke11 ] {ai_run(17);};
|
||||
void() berserk_atke11 =[ $r_attb11, berserk_atke12 ] {ai_run(9);};
|
||||
void() berserk_atke12 =[ $r_attb12, berserk_atke13 ] {ai_run(25);};
|
||||
void() berserk_atke13 =[ $r_attb13, berserk_atke14 ] {ai_run(3.7);};
|
||||
void() berserk_atke14 =[ $r_attb14, berserk_atke15 ] {ai_run(2.6);};
|
||||
void() berserk_atke15 =[ $r_attb15, berserk_atke16 ] {ai_run(19);};
|
||||
void() berserk_atke16 =[ $r_attb16, berserk_atke17 ] {ai_run(25);};
|
||||
void() berserk_atke17 =[ $r_attb17, berserk_atke18 ] {ai_run(19.6);};
|
||||
void() berserk_atke18 =[ $r_attb18, berserk_run1 ] {ai_run(7.8);};
|
||||
*/
|
||||
|
||||
|
||||
mframe_t berserk_frames_pain1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_pain1 = {FRAME_painc1, FRAME_painc4, berserk_frames_pain1, berserk_run};
|
||||
|
||||
|
||||
mframe_t berserk_frames_pain2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_pain2 = {FRAME_painb1, FRAME_painb20, berserk_frames_pain2, berserk_run};
|
||||
|
||||
void berserk_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_swing,
|
||||
ai_charge, 0, berserk_attack_spike,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_attack_spike = {FRAME_att_c1, FRAME_att_c8, berserk_frames_attack_spike, berserk_run};
|
||||
|
||||
|
||||
void berserk_attack_club (edict_t *self)
|
||||
{
|
||||
vec3_t aim;
|
||||
|
||||
VectorSet (aim, MELEE_DISTANCE, self->mins[0], -4);
|
||||
fire_hit (self, aim, (5 + (rand() % 6)), 400); // Slower attack
|
||||
}
|
||||
|
||||
mframe_t berserk_frames_attack_club [] =
|
||||
{
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_swing,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, berserk_attack_club,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_attack_club = {FRAME_att_c9, FRAME_att_c20, berserk_frames_attack_club, berserk_run};
|
||||
|
||||
|
||||
void berserk_strike (edict_t *self)
|
||||
{
|
||||
//FIXME play impact sound
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_attack_strike [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, berserk_swing,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, berserk_strike,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 9.7, NULL,
|
||||
ai_move, 13.6, NULL
|
||||
};
|
||||
|
||||
mmove_t berserk_move_attack_strike = {FRAME_att_c21, FRAME_att_c34, berserk_frames_attack_strike, berserk_run};
|
||||
|
||||
|
||||
void berserk_melee (edict_t *self)
|
||||
{
|
||||
if ((rand() % 2) == 0)
|
||||
self->monsterinfo.currentmove = &berserk_move_attack_spike;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_attack_club;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void() berserk_atke1 =[ $r_attb1, berserk_atke2 ] {ai_run(9);};
|
||||
void() berserk_atke2 =[ $r_attb2, berserk_atke3 ] {ai_run(6);};
|
||||
void() berserk_atke3 =[ $r_attb3, berserk_atke4 ] {ai_run(18.4);};
|
||||
void() berserk_atke4 =[ $r_attb4, berserk_atke5 ] {ai_run(25);};
|
||||
void() berserk_atke5 =[ $r_attb5, berserk_atke6 ] {ai_run(14);};
|
||||
void() berserk_atke6 =[ $r_attb6, berserk_atke7 ] {ai_run(20);};
|
||||
void() berserk_atke7 =[ $r_attb7, berserk_atke8 ] {ai_run(8.5);};
|
||||
void() berserk_atke8 =[ $r_attb8, berserk_atke9 ] {ai_run(3);};
|
||||
void() berserk_atke9 =[ $r_attb9, berserk_atke10 ] {ai_run(17.5);};
|
||||
void() berserk_atke10 =[ $r_attb10, berserk_atke11 ] {ai_run(17);};
|
||||
void() berserk_atke11 =[ $r_attb11, berserk_atke12 ] {ai_run(9);};
|
||||
void() berserk_atke12 =[ $r_attb12, berserk_atke13 ] {ai_run(25);};
|
||||
void() berserk_atke13 =[ $r_attb13, berserk_atke14 ] {ai_run(3.7);};
|
||||
void() berserk_atke14 =[ $r_attb14, berserk_atke15 ] {ai_run(2.6);};
|
||||
void() berserk_atke15 =[ $r_attb15, berserk_atke16 ] {ai_run(19);};
|
||||
void() berserk_atke16 =[ $r_attb16, berserk_atke17 ] {ai_run(25);};
|
||||
void() berserk_atke17 =[ $r_attb17, berserk_atke18 ] {ai_run(19.6);};
|
||||
void() berserk_atke18 =[ $r_attb18, berserk_run1 ] {ai_run(7.8);};
|
||||
*/
|
||||
|
||||
|
||||
mframe_t berserk_frames_pain1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_pain1 = {FRAME_painc1, FRAME_painc4, berserk_frames_pain1, berserk_run};
|
||||
|
||||
|
||||
mframe_t berserk_frames_pain2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_pain2 = {FRAME_painb1, FRAME_painb20, berserk_frames_pain2, berserk_run};
|
||||
|
||||
void berserk_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
gi.sound (self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
|
||||
|
||||
if (skill->value == 3)
|
||||
return; // no pain anims in nightmare
|
||||
|
||||
|
||||
if ((damage < 20) || (random() < 0.5))
|
||||
self->monsterinfo.currentmove = &berserk_move_pain1;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_pain2;
|
||||
}
|
||||
|
||||
|
||||
void berserk_dead (edict_t *self)
|
||||
{
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, -8);
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
}
|
||||
|
||||
|
||||
void berserk_dead (edict_t *self)
|
||||
{
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, -8);
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
self->svflags |= SVF_DEADMONSTER;
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
M_FlyCheck (self);
|
||||
|
||||
// Lazarus monster fade
|
||||
|
@ -332,73 +332,73 @@ void berserk_dead (edict_t *self)
|
|||
self->think=FadeDieSink;
|
||||
self->nextthink=level.time+corpse_fadetime->value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_death1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
|
||||
};
|
||||
mmove_t berserk_move_death1 = {FRAME_death1, FRAME_death13, berserk_frames_death1, berserk_dead};
|
||||
|
||||
|
||||
mframe_t berserk_frames_death2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_death2 = {FRAME_deathc1, FRAME_deathc8, berserk_frames_death2, berserk_dead};
|
||||
|
||||
|
||||
void berserk_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
}
|
||||
|
||||
|
||||
mframe_t berserk_frames_death1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
|
||||
};
|
||||
mmove_t berserk_move_death1 = {FRAME_death1, FRAME_death13, berserk_frames_death1, berserk_dead};
|
||||
|
||||
|
||||
mframe_t berserk_frames_death2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t berserk_move_death2 = {FRAME_deathc1, FRAME_deathc8, berserk_frames_death2, berserk_dead};
|
||||
|
||||
|
||||
void berserk_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
self->monsterinfo.power_armor_type = POWER_ARMOR_NONE;
|
||||
if (self->health <= self->gib_health && !(self->spawnflags & SF_MONSTER_NOGIB))
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 4; n++)
|
||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 4; n++)
|
||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
||||
gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
|
||||
if (damage >= 50)
|
||||
self->monsterinfo.currentmove = &berserk_move_death1;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_death2;
|
||||
}
|
||||
|
||||
gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
|
||||
if (damage >= 50)
|
||||
self->monsterinfo.currentmove = &berserk_move_death1;
|
||||
else
|
||||
self->monsterinfo.currentmove = &berserk_move_death2;
|
||||
}
|
||||
|
||||
//===========
|
||||
//Jump
|
||||
mframe_t berserk_frames_jump [] =
|
||||
|
@ -417,23 +417,23 @@ void berserk_jump (edict_t *self)
|
|||
self->monsterinfo.currentmove = &berserk_move_jump;
|
||||
}
|
||||
|
||||
|
||||
/*QUAKED monster_berserk (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_berserk (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*QUAKED monster_berserk (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_berserk (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
|
||||
self->class_id = ENTITY_MONSTER_BERSERK;
|
||||
self->spawnflags |= SF_MONSTER_KNOWS_MIRRORS;
|
||||
// pre-caches
|
||||
// pre-caches
|
||||
sound_pain = gi.soundindex ("berserk/berpain2.wav");
|
||||
sound_die = gi.soundindex ("berserk/berdeth2.wav");
|
||||
sound_idle = gi.soundindex ("berserk/beridle1.wav");
|
||||
sound_die = gi.soundindex ("berserk/berdeth2.wav");
|
||||
sound_idle = gi.soundindex ("berserk/beridle1.wav");
|
||||
sound_punch = gi.soundindex ("berserk/attack.wav");
|
||||
sound_search = gi.soundindex ("berserk/bersrch1.wav");
|
||||
sound_sight = gi.soundindex ("berserk/sight.wav");
|
||||
|
@ -442,32 +442,32 @@ void SP_monster_berserk (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/berserk/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex("models/monsters/berserk/tris.md2");
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
|
||||
self->s.modelindex = gi.modelindex("models/monsters/berserk/tris.md2");
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
// Lazarus: mapper-configurable health
|
||||
if(!self->health)
|
||||
self->health = 240;
|
||||
if(!self->gib_health)
|
||||
self->gib_health = -60;
|
||||
if(!self->mass)
|
||||
self->mass = 250;
|
||||
|
||||
self->pain = berserk_pain;
|
||||
self->die = berserk_die;
|
||||
|
||||
self->monsterinfo.stand = berserk_stand;
|
||||
self->monsterinfo.walk = berserk_walk;
|
||||
self->monsterinfo.run = berserk_run;
|
||||
self->monsterinfo.dodge = NULL;
|
||||
self->monsterinfo.attack = NULL;
|
||||
self->monsterinfo.melee = berserk_melee;
|
||||
if(!self->mass)
|
||||
self->mass = 250;
|
||||
|
||||
self->pain = berserk_pain;
|
||||
self->die = berserk_die;
|
||||
|
||||
self->monsterinfo.stand = berserk_stand;
|
||||
self->monsterinfo.walk = berserk_walk;
|
||||
self->monsterinfo.run = berserk_run;
|
||||
self->monsterinfo.dodge = NULL;
|
||||
self->monsterinfo.attack = NULL;
|
||||
self->monsterinfo.melee = berserk_melee;
|
||||
self->monsterinfo.sight = berserk_sight;
|
||||
self->monsterinfo.search = berserk_search;
|
||||
if(monsterjump->value)
|
||||
|
@ -477,7 +477,7 @@ void SP_monster_berserk (edict_t *self)
|
|||
self->monsterinfo.jumpdn = 160;
|
||||
}
|
||||
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
self->monsterinfo.currentmove = &berserk_move_stand;
|
||||
if(self->health < 0)
|
||||
{
|
||||
mmove_t *deathmoves[] = {&berserk_move_death1,
|
||||
|
@ -485,7 +485,7 @@ void SP_monster_berserk (edict_t *self)
|
|||
NULL};
|
||||
M_SetDeath(self,(mmove_t **)&deathmoves);
|
||||
}
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
||||
// Lazarus
|
||||
if(self->powerarmor) {
|
||||
|
@ -495,8 +495,8 @@ void SP_monster_berserk (edict_t *self)
|
|||
if(!self->monsterinfo.flies)
|
||||
self->monsterinfo.flies = 0.20;
|
||||
self->common_name = "Berserker";
|
||||
|
||||
gi.linkentity (self);
|
||||
|
||||
walkmonster_start (self);
|
||||
}
|
||||
|
||||
gi.linkentity (self);
|
||||
|
||||
walkmonster_start (self);
|
||||
}
|
||||
|
|
|
@ -461,7 +461,7 @@ void boss2_reattack_mg (edict_t *self)
|
|||
void boss2_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -638,7 +638,7 @@ void SP_monster_boss2 (edict_t *self)
|
|||
if ( (self->spawnflags & SF_MONSTER_SPECIAL) && self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/boss2/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
sound_pain1 = gi.soundindex ("bosshovr/bhvpain1.wav");
|
||||
|
@ -656,7 +656,7 @@ void SP_monster_boss2 (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/boss2/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/boss2/tris.md2");
|
||||
|
|
|
@ -399,7 +399,7 @@ void jorg_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
{
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
self->s.sound = 0;
|
||||
|
||||
|
|
|
@ -537,7 +537,7 @@ void makron_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
{
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
brain
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_brain.h"
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
brain
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_brain.h"
|
||||
|
||||
|
||||
static int sound_chest_open;
|
||||
static int sound_tentacles_extend;
|
||||
|
@ -37,24 +37,24 @@ void brain_search (edict_t *self)
|
|||
}
|
||||
|
||||
|
||||
void brain_run (edict_t *self);
|
||||
void brain_dead (edict_t *self);
|
||||
|
||||
void brain_run (edict_t *self);
|
||||
void brain_dead (edict_t *self);
|
||||
|
||||
|
||||
//
|
||||
// STAND
|
||||
//
|
||||
|
||||
mframe_t brain_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
|
||||
mframe_t brain_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
|
||||
|
@ -79,19 +79,19 @@ mframe_t brain_frames_stand [] =
|
|||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL,
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_stand = {FRAME_stand01, FRAME_stand30, brain_frames_stand, NULL};
|
||||
|
||||
void brain_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
}
|
||||
|
||||
};
|
||||
mmove_t brain_move_stand = {FRAME_stand01, FRAME_stand30, brain_frames_stand, NULL};
|
||||
|
||||
void brain_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// IDLE
|
||||
//
|
||||
|
||||
|
||||
mframe_t brain_frames_idle [] =
|
||||
{
|
||||
ai_stand, 0, NULL,
|
||||
|
@ -140,79 +140,79 @@ void brain_idle (edict_t *self)
|
|||
//
|
||||
// WALK
|
||||
//
|
||||
mframe_t brain_frames_walk1 [] =
|
||||
{
|
||||
ai_walk, 7, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 9, NULL,
|
||||
ai_walk, -4, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, 2, NULL
|
||||
};
|
||||
mmove_t brain_move_walk1 = {FRAME_walk101, FRAME_walk111, brain_frames_walk1, NULL};
|
||||
mframe_t brain_frames_walk1 [] =
|
||||
{
|
||||
ai_walk, 7, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 9, NULL,
|
||||
ai_walk, -4, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, 2, NULL
|
||||
};
|
||||
mmove_t brain_move_walk1 = {FRAME_walk101, FRAME_walk111, brain_frames_walk1, NULL};
|
||||
|
||||
// walk2 is FUBAR, do not use
|
||||
#if 0
|
||||
#if 0
|
||||
void brain_walk2_cycle (edict_t *self)
|
||||
{
|
||||
if (random() > 0.1)
|
||||
self->monsterinfo.nextframe = FRAME_walk220;
|
||||
}
|
||||
|
||||
mframe_t brain_frames_walk2 [] =
|
||||
{
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, -2, NULL,
|
||||
ai_walk, -4, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 12, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
mframe_t brain_frames_walk2 [] =
|
||||
{
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, -2, NULL,
|
||||
ai_walk, -4, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 12, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
|
||||
ai_walk, -2, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
|
||||
ai_walk, -2, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 10, NULL, // Cycle Start
|
||||
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, 7, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, 7, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
|
||||
ai_walk, 4, brain_walk2_cycle,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -8, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 5, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -5, NULL
|
||||
};
|
||||
mmove_t brain_move_walk2 = {FRAME_walk201, FRAME_walk240, brain_frames_walk2, NULL};
|
||||
ai_walk, 3, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, -3, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
|
||||
ai_walk, 4, brain_walk2_cycle,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -8, NULL,
|
||||
ai_walk, 0, NULL,
|
||||
ai_walk, 1, NULL,
|
||||
ai_walk, 5, NULL,
|
||||
ai_walk, 2, NULL,
|
||||
ai_walk, -1, NULL,
|
||||
ai_walk, -5, NULL
|
||||
};
|
||||
mmove_t brain_move_walk2 = {FRAME_walk201, FRAME_walk240, brain_frames_walk2, NULL};
|
||||
#endif
|
||||
|
||||
|
||||
void brain_walk (edict_t *self)
|
||||
{
|
||||
// if (random() <= 0.5)
|
||||
|
@ -223,75 +223,75 @@ void brain_walk (edict_t *self)
|
|||
|
||||
|
||||
|
||||
mframe_t brain_frames_defense [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_defense = {FRAME_defens01, FRAME_defens08, brain_frames_defense, NULL};
|
||||
|
||||
mframe_t brain_frames_pain3 [] =
|
||||
{
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -4, NULL
|
||||
};
|
||||
mmove_t brain_move_pain3 = {FRAME_pain301, FRAME_pain306, brain_frames_pain3, brain_run};
|
||||
|
||||
mframe_t brain_frames_pain2 [] =
|
||||
{
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, -2, NULL
|
||||
};
|
||||
mmove_t brain_move_pain2 = {FRAME_pain201, FRAME_pain208, brain_frames_pain2, brain_run};
|
||||
|
||||
mframe_t brain_frames_pain1 [] =
|
||||
{
|
||||
ai_move, -6, NULL,
|
||||
ai_move, -2, NULL,
|
||||
ai_move, -6, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, 7, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, -1, NULL
|
||||
};
|
||||
mmove_t brain_move_pain1 = {FRAME_pain101, FRAME_pain121, brain_frames_pain1, brain_run};
|
||||
mframe_t brain_frames_defense [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_defense = {FRAME_defens01, FRAME_defens08, brain_frames_defense, NULL};
|
||||
|
||||
mframe_t brain_frames_pain3 [] =
|
||||
{
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -4, NULL
|
||||
};
|
||||
mmove_t brain_move_pain3 = {FRAME_pain301, FRAME_pain306, brain_frames_pain3, brain_run};
|
||||
|
||||
mframe_t brain_frames_pain2 [] =
|
||||
{
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, -2, NULL
|
||||
};
|
||||
mmove_t brain_move_pain2 = {FRAME_pain201, FRAME_pain208, brain_frames_pain2, brain_run};
|
||||
|
||||
mframe_t brain_frames_pain1 [] =
|
||||
{
|
||||
ai_move, -6, NULL,
|
||||
ai_move, -2, NULL,
|
||||
ai_move, -6, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 2, NULL,
|
||||
ai_move, 1, NULL,
|
||||
ai_move, 7, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 3, NULL,
|
||||
ai_move, -1, NULL
|
||||
};
|
||||
mmove_t brain_move_pain1 = {FRAME_pain101, FRAME_pain121, brain_frames_pain1, brain_run};
|
||||
|
||||
|
||||
//
|
||||
// DUCK
|
||||
//
|
||||
|
||||
|
||||
void brain_duck_down (edict_t *self)
|
||||
{
|
||||
if (self->monsterinfo.aiflags & AI_DUCKED)
|
||||
|
@ -318,18 +318,18 @@ void brain_duck_up (edict_t *self)
|
|||
gi.linkentity (self);
|
||||
}
|
||||
|
||||
mframe_t brain_frames_duck [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -2, brain_duck_down,
|
||||
ai_move, 17, brain_duck_hold,
|
||||
ai_move, -3, NULL,
|
||||
ai_move, -1, brain_duck_up,
|
||||
ai_move, -5, NULL,
|
||||
ai_move, -6, NULL,
|
||||
ai_move, -6, NULL
|
||||
};
|
||||
mmove_t brain_move_duck = {FRAME_duck01, FRAME_duck08, brain_frames_duck, brain_run};
|
||||
mframe_t brain_frames_duck [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -2, brain_duck_down,
|
||||
ai_move, 17, brain_duck_hold,
|
||||
ai_move, -3, NULL,
|
||||
ai_move, -1, brain_duck_up,
|
||||
ai_move, -5, NULL,
|
||||
ai_move, -6, NULL,
|
||||
ai_move, -6, NULL
|
||||
};
|
||||
mmove_t brain_move_duck = {FRAME_duck01, FRAME_duck08, brain_frames_duck, brain_run};
|
||||
|
||||
void brain_dodge (edict_t *self, edict_t *attacker, float eta)
|
||||
{
|
||||
|
@ -343,44 +343,44 @@ void brain_dodge (edict_t *self, edict_t *attacker, float eta)
|
|||
self->monsterinfo.currentmove = &brain_move_duck;
|
||||
}
|
||||
|
||||
mframe_t brain_frames_death2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 9, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_death2 = {FRAME_death201, FRAME_death205, brain_frames_death2, brain_dead};
|
||||
|
||||
mframe_t brain_frames_death1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 9, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_death1 = {FRAME_death101, FRAME_death118, brain_frames_death1, brain_dead};
|
||||
mframe_t brain_frames_death2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 9, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_death2 = {FRAME_death201, FRAME_death205, brain_frames_death2, brain_dead};
|
||||
|
||||
mframe_t brain_frames_death1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, -2, NULL,
|
||||
ai_move, 9, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t brain_move_death1 = {FRAME_death101, FRAME_death118, brain_frames_death1, brain_dead};
|
||||
|
||||
|
||||
//
|
||||
// MELEE
|
||||
//
|
||||
|
||||
|
||||
void brain_swing_right (edict_t *self)
|
||||
{
|
||||
gi.sound (self, CHAN_BODY, sound_melee1, 1, ATTN_NORM, 0);
|
||||
|
@ -409,29 +409,29 @@ void brain_hit_left (edict_t *self)
|
|||
gi.sound (self, CHAN_WEAPON, sound_melee3, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
mframe_t brain_frames_attack1 [] =
|
||||
{
|
||||
ai_charge, 8, NULL,
|
||||
ai_charge, 3, NULL,
|
||||
ai_charge, 5, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -3, brain_swing_right,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -5, NULL,
|
||||
ai_charge, -7, brain_hit_right,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 6, brain_swing_left,
|
||||
ai_charge, 1, NULL,
|
||||
ai_charge, 2, brain_hit_left,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 6, NULL,
|
||||
ai_charge, -1, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, -11,NULL
|
||||
};
|
||||
mmove_t brain_move_attack1 = {FRAME_attak101, FRAME_attak118, brain_frames_attack1, brain_run};
|
||||
|
||||
mframe_t brain_frames_attack1 [] =
|
||||
{
|
||||
ai_charge, 8, NULL,
|
||||
ai_charge, 3, NULL,
|
||||
ai_charge, 5, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -3, brain_swing_right,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -5, NULL,
|
||||
ai_charge, -7, brain_hit_right,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 6, brain_swing_left,
|
||||
ai_charge, 1, NULL,
|
||||
ai_charge, 2, brain_hit_left,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 6, NULL,
|
||||
ai_charge, -1, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, -11,NULL
|
||||
};
|
||||
mmove_t brain_move_attack1 = {FRAME_attak101, FRAME_attak118, brain_frames_attack1, brain_run};
|
||||
|
||||
void brain_chest_open (edict_t *self)
|
||||
{
|
||||
self->spawnflags &= ~65536;
|
||||
|
@ -459,27 +459,27 @@ void brain_chest_closed (edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
mframe_t brain_frames_attack2 [] =
|
||||
{
|
||||
ai_charge, 5, NULL,
|
||||
ai_charge, -4, NULL,
|
||||
ai_charge, -4, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 0, brain_chest_open,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 13, brain_tentacle_attack,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -9, brain_chest_closed,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 4, NULL,
|
||||
ai_charge, 3, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, -6, NULL
|
||||
};
|
||||
mmove_t brain_move_attack2 = {FRAME_attak201, FRAME_attak217, brain_frames_attack2, brain_run};
|
||||
mframe_t brain_frames_attack2 [] =
|
||||
{
|
||||
ai_charge, 5, NULL,
|
||||
ai_charge, -4, NULL,
|
||||
ai_charge, -4, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, 0, brain_chest_open,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 13, brain_tentacle_attack,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, -9, brain_chest_closed,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 4, NULL,
|
||||
ai_charge, 3, NULL,
|
||||
ai_charge, 2, NULL,
|
||||
ai_charge, -3, NULL,
|
||||
ai_charge, -6, NULL
|
||||
};
|
||||
mmove_t brain_move_attack2 = {FRAME_attak201, FRAME_attak217, brain_frames_attack2, brain_run};
|
||||
|
||||
void brain_melee(edict_t *self)
|
||||
{
|
||||
|
@ -493,73 +493,73 @@ void brain_melee(edict_t *self)
|
|||
//
|
||||
// RUN
|
||||
//
|
||||
|
||||
mframe_t brain_frames_run [] =
|
||||
{
|
||||
ai_run, 9, NULL,
|
||||
ai_run, 2, NULL,
|
||||
ai_run, 3, NULL,
|
||||
ai_run, 3, NULL,
|
||||
ai_run, 1, NULL,
|
||||
ai_run, 0, NULL,
|
||||
ai_run, 0, NULL,
|
||||
ai_run, 10, NULL,
|
||||
ai_run, -4, NULL,
|
||||
ai_run, -1, NULL,
|
||||
ai_run, 2, NULL
|
||||
};
|
||||
mmove_t brain_move_run = {FRAME_walk101, FRAME_walk111, brain_frames_run, NULL};
|
||||
|
||||
void brain_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
else
|
||||
self->monsterinfo.currentmove = &brain_move_run;
|
||||
}
|
||||
|
||||
|
||||
void brain_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
mframe_t brain_frames_run [] =
|
||||
{
|
||||
ai_run, 9, NULL,
|
||||
ai_run, 2, NULL,
|
||||
ai_run, 3, NULL,
|
||||
ai_run, 3, NULL,
|
||||
ai_run, 1, NULL,
|
||||
ai_run, 0, NULL,
|
||||
ai_run, 0, NULL,
|
||||
ai_run, 10, NULL,
|
||||
ai_run, -4, NULL,
|
||||
ai_run, -1, NULL,
|
||||
ai_run, 2, NULL
|
||||
};
|
||||
mmove_t brain_move_run = {FRAME_walk101, FRAME_walk111, brain_frames_run, NULL};
|
||||
|
||||
void brain_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;
|
||||
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
else
|
||||
self->monsterinfo.currentmove = &brain_move_run;
|
||||
}
|
||||
|
||||
|
||||
void brain_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
float r;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
if (skill->value == 3)
|
||||
return; // no pain anims in nightmare
|
||||
|
||||
|
||||
r = random();
|
||||
if (r < 0.33)
|
||||
{
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &brain_move_pain1;
|
||||
}
|
||||
else if (r < 0.66)
|
||||
}
|
||||
else if (r < 0.66)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &brain_move_pain2;
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &brain_move_pain3;
|
||||
}
|
||||
}
|
||||
|
||||
void brain_dead (edict_t *self)
|
||||
{
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, -8);
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
}
|
||||
}
|
||||
|
||||
void brain_dead (edict_t *self)
|
||||
{
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, -8);
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
self->svflags |= SVF_DEADMONSTER;
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
M_FlyCheck (self);
|
||||
|
||||
// Lazarus monster fade
|
||||
|
@ -568,54 +568,54 @@ void brain_dead (edict_t *self)
|
|||
self->think=FadeDieSink;
|
||||
self->nextthink=level.time+corpse_fadetime->value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void brain_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
}
|
||||
|
||||
self->s.effects = 0;
|
||||
|
||||
|
||||
void brain_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
self->s.effects = 0;
|
||||
self->monsterinfo.power_armor_type = POWER_ARMOR_NONE;
|
||||
|
||||
// check for gib
|
||||
// check for gib
|
||||
if (self->health <= self->gib_health && !(self->spawnflags & SF_MONSTER_NOGIB))
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 4; n++)
|
||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
||||
// regular death
|
||||
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
if (random() <= 0.5)
|
||||
self->monsterinfo.currentmove = &brain_move_death1;
|
||||
else
|
||||
self->monsterinfo.currentmove = &brain_move_death2;
|
||||
}
|
||||
|
||||
/*QUAKED monster_brain (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_brain (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 4; n++)
|
||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
||||
// regular death
|
||||
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
if (random() <= 0.5)
|
||||
self->monsterinfo.currentmove = &brain_move_death1;
|
||||
else
|
||||
self->monsterinfo.currentmove = &brain_move_death2;
|
||||
}
|
||||
|
||||
/*QUAKED monster_brain (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_brain (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
self->class_id = ENTITY_MONSTER_BRAIN;
|
||||
|
||||
|
||||
sound_chest_open = gi.soundindex ("brain/brnatck1.wav");
|
||||
sound_tentacles_extend = gi.soundindex ("brain/brnatck2.wav");
|
||||
sound_tentacles_retract = gi.soundindex ("brain/brnatck3.wav");
|
||||
|
@ -630,38 +630,38 @@ void SP_monster_brain (edict_t *self)
|
|||
sound_melee1 = gi.soundindex ("brain/melee1.wav");
|
||||
sound_melee2 = gi.soundindex ("brain/melee2.wav");
|
||||
sound_melee3 = gi.soundindex ("brain/melee3.wav");
|
||||
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
// Lazarus: special purpose skins
|
||||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/brain/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/brain/tris.md2");
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
|
||||
VectorSet (self->mins, -16, -16, -24);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
|
||||
// Lazarus: mapper-configurable health
|
||||
if(!self->health)
|
||||
self->health = 300;
|
||||
if(!self->gib_health)
|
||||
self->gib_health = -150;
|
||||
if(!self->mass)
|
||||
self->mass = 400;
|
||||
|
||||
self->pain = brain_pain;
|
||||
self->die = brain_die;
|
||||
|
||||
self->monsterinfo.stand = brain_stand;
|
||||
self->monsterinfo.walk = brain_walk;
|
||||
self->monsterinfo.run = brain_run;
|
||||
self->monsterinfo.dodge = brain_dodge;
|
||||
// self->monsterinfo.attack = brain_attack;
|
||||
self->monsterinfo.melee = brain_melee;
|
||||
if(!self->mass)
|
||||
self->mass = 400;
|
||||
|
||||
self->pain = brain_pain;
|
||||
self->die = brain_die;
|
||||
|
||||
self->monsterinfo.stand = brain_stand;
|
||||
self->monsterinfo.walk = brain_walk;
|
||||
self->monsterinfo.run = brain_run;
|
||||
self->monsterinfo.dodge = brain_dodge;
|
||||
// self->monsterinfo.attack = brain_attack;
|
||||
self->monsterinfo.melee = brain_melee;
|
||||
self->monsterinfo.sight = brain_sight;
|
||||
self->monsterinfo.search = brain_search;
|
||||
self->monsterinfo.idle = brain_idle;
|
||||
|
@ -671,11 +671,11 @@ void SP_monster_brain (edict_t *self)
|
|||
|
||||
if(!self->monsterinfo.flies)
|
||||
self->monsterinfo.flies = 0.10;
|
||||
self->common_name = "Brains";
|
||||
self->common_name = "Brains";
|
||||
|
||||
gi.linkentity (self);
|
||||
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
gi.linkentity (self);
|
||||
|
||||
self->monsterinfo.currentmove = &brain_move_stand;
|
||||
if(self->health < 0)
|
||||
{
|
||||
mmove_t *deathmoves[] = {&brain_move_death1,
|
||||
|
@ -683,7 +683,7 @@ void SP_monster_brain (edict_t *self)
|
|||
NULL};
|
||||
M_SetDeath(self,(mmove_t **)&deathmoves);
|
||||
}
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
||||
walkmonster_start (self);
|
||||
}
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
||||
walkmonster_start (self);
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@ void chick_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
float r;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -731,7 +731,7 @@ void SP_monster_chick (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/bitch/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/bitch/tris.md2");
|
||||
|
|
|
@ -1,242 +1,242 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
FLIPPER
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_flipper.h"
|
||||
|
||||
|
||||
static int sound_chomp;
|
||||
static int sound_attack;
|
||||
static int sound_pain1;
|
||||
static int sound_pain2;
|
||||
static int sound_death;
|
||||
static int sound_idle;
|
||||
static int sound_search;
|
||||
static int sound_sight;
|
||||
|
||||
|
||||
void flipper_stand (edict_t *self);
|
||||
|
||||
mframe_t flipper_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
|
||||
mmove_t flipper_move_stand = {FRAME_flphor01, FRAME_flphor01, flipper_frames_stand, NULL};
|
||||
|
||||
void flipper_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_stand;
|
||||
}
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FLIPPER
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "m_flipper.h"
|
||||
|
||||
|
||||
static int sound_chomp;
|
||||
static int sound_attack;
|
||||
static int sound_pain1;
|
||||
static int sound_pain2;
|
||||
static int sound_death;
|
||||
static int sound_idle;
|
||||
static int sound_search;
|
||||
static int sound_sight;
|
||||
|
||||
|
||||
void flipper_stand (edict_t *self);
|
||||
|
||||
mframe_t flipper_frames_stand [] =
|
||||
{
|
||||
ai_stand, 0, NULL
|
||||
};
|
||||
|
||||
mmove_t flipper_move_stand = {FRAME_flphor01, FRAME_flphor01, flipper_frames_stand, NULL};
|
||||
|
||||
void flipper_stand (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_stand;
|
||||
}
|
||||
|
||||
#define FLIPPER_RUN_SPEED 24
|
||||
|
||||
mframe_t flipper_frames_run [] =
|
||||
{
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 6
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 10
|
||||
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 20
|
||||
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL // 29
|
||||
};
|
||||
mmove_t flipper_move_run_loop = {FRAME_flpver06, FRAME_flpver29, flipper_frames_run, NULL};
|
||||
|
||||
void flipper_run_loop (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_run_loop;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_run_start [] =
|
||||
{
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL
|
||||
};
|
||||
mmove_t flipper_move_run_start = {FRAME_flpver01, FRAME_flpver06, flipper_frames_run_start, flipper_run_loop};
|
||||
|
||||
void flipper_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_run_start;
|
||||
}
|
||||
|
||||
/* Standard Swimming */
|
||||
mframe_t flipper_frames_walk [] =
|
||||
{
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL
|
||||
};
|
||||
mmove_t flipper_move_walk = {FRAME_flphor01, FRAME_flphor24, flipper_frames_walk, NULL};
|
||||
|
||||
void flipper_walk (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_walk;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_start_run [] =
|
||||
{
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, flipper_run
|
||||
};
|
||||
mmove_t flipper_move_start_run = {FRAME_flphor01, FRAME_flphor05, flipper_frames_start_run, NULL};
|
||||
|
||||
void flipper_start_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_start_run;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_pain2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_pain2 = {FRAME_flppn101, FRAME_flppn105, flipper_frames_pain2, flipper_run};
|
||||
|
||||
mframe_t flipper_frames_pain1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_pain1 = {FRAME_flppn201, FRAME_flppn205, flipper_frames_pain1, flipper_run};
|
||||
|
||||
void flipper_bite (edict_t *self)
|
||||
{
|
||||
|
||||
mframe_t flipper_frames_run [] =
|
||||
{
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 6
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 10
|
||||
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL, // 20
|
||||
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL,
|
||||
ai_run, FLIPPER_RUN_SPEED, NULL // 29
|
||||
};
|
||||
mmove_t flipper_move_run_loop = {FRAME_flpver06, FRAME_flpver29, flipper_frames_run, NULL};
|
||||
|
||||
void flipper_run_loop (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_run_loop;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_run_start [] =
|
||||
{
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL
|
||||
};
|
||||
mmove_t flipper_move_run_start = {FRAME_flpver01, FRAME_flpver06, flipper_frames_run_start, flipper_run_loop};
|
||||
|
||||
void flipper_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_run_start;
|
||||
}
|
||||
|
||||
/* Standard Swimming */
|
||||
mframe_t flipper_frames_walk [] =
|
||||
{
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL,
|
||||
ai_walk, 4, NULL
|
||||
};
|
||||
mmove_t flipper_move_walk = {FRAME_flphor01, FRAME_flphor24, flipper_frames_walk, NULL};
|
||||
|
||||
void flipper_walk (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_walk;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_start_run [] =
|
||||
{
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, NULL,
|
||||
ai_run, 8, flipper_run
|
||||
};
|
||||
mmove_t flipper_move_start_run = {FRAME_flphor01, FRAME_flphor05, flipper_frames_start_run, NULL};
|
||||
|
||||
void flipper_start_run (edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_start_run;
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_pain2 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_pain2 = {FRAME_flppn101, FRAME_flppn105, flipper_frames_pain2, flipper_run};
|
||||
|
||||
mframe_t flipper_frames_pain1 [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_pain1 = {FRAME_flppn201, FRAME_flppn205, flipper_frames_pain1, flipper_run};
|
||||
|
||||
void flipper_bite (edict_t *self)
|
||||
{
|
||||
vec3_t aim;
|
||||
|
||||
VectorSet (aim, MELEE_DISTANCE, 0, 0);
|
||||
fire_hit (self, aim, 5, 0);
|
||||
}
|
||||
|
||||
void flipper_preattack (edict_t *self)
|
||||
{
|
||||
gi.sound (self, CHAN_WEAPON, sound_chomp, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_attack [] =
|
||||
{
|
||||
ai_charge, 0, flipper_preattack,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
}
|
||||
|
||||
void flipper_preattack (edict_t *self)
|
||||
{
|
||||
gi.sound (self, CHAN_WEAPON, sound_chomp, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_attack [] =
|
||||
{
|
||||
ai_charge, 0, flipper_preattack,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, flipper_bite,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, flipper_bite,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_attack = {FRAME_flpbit01, FRAME_flpbit20, flipper_frames_attack, flipper_run};
|
||||
|
||||
void flipper_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_attack;
|
||||
}
|
||||
|
||||
void flipper_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
int n;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, flipper_bite,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, NULL,
|
||||
ai_charge, 0, flipper_bite,
|
||||
ai_charge, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_attack = {FRAME_flpbit01, FRAME_flpbit20, flipper_frames_attack, flipper_run};
|
||||
|
||||
void flipper_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &flipper_move_attack;
|
||||
}
|
||||
|
||||
void flipper_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
int n;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
||||
self->pain_debounce_time = level.time + 3;
|
||||
|
||||
if (skill->value == 3)
|
||||
return; // no pain anims in nightmare
|
||||
|
||||
n = (rand() + 1) % 2;
|
||||
if (n == 0)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &flipper_move_pain1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &flipper_move_pain2;
|
||||
}
|
||||
}
|
||||
|
||||
void flipper_dead (edict_t *self)
|
||||
{
|
||||
// VectorSet (self->mins, -16, -16, -24);
|
||||
|
||||
n = (rand() + 1) % 2;
|
||||
if (n == 0)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &flipper_move_pain1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
|
||||
self->monsterinfo.currentmove = &flipper_move_pain2;
|
||||
}
|
||||
}
|
||||
|
||||
void flipper_dead (edict_t *self)
|
||||
{
|
||||
// VectorSet (self->mins, -16, -16, -24);
|
||||
// VectorSet (self->maxs, 16, 16, -8);
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
self->movetype = MOVETYPE_TOSS;
|
||||
self->svflags |= SVF_DEADMONSTER;
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
self->nextthink = 0;
|
||||
gi.linkentity (self);
|
||||
M_FlyCheck (self);
|
||||
|
||||
// Lazarus monster fade
|
||||
|
@ -245,161 +245,161 @@ void flipper_dead (edict_t *self)
|
|||
self->think=FadeDieSink;
|
||||
self->nextthink=level.time+corpse_fadetime->value;
|
||||
}
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_death [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_death = {FRAME_flpdth01, FRAME_flpdth56, flipper_frames_death, flipper_dead};
|
||||
|
||||
void flipper_sight (edict_t *self, edict_t *other)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void flipper_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
// check for gib
|
||||
}
|
||||
|
||||
mframe_t flipper_frames_death [] =
|
||||
{
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL,
|
||||
ai_move, 0, NULL
|
||||
};
|
||||
mmove_t flipper_move_death = {FRAME_flpdth01, FRAME_flpdth56, flipper_frames_death, flipper_dead};
|
||||
|
||||
void flipper_sight (edict_t *self, edict_t *other)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void flipper_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
// check for gib
|
||||
if (self->health <= self->gib_health && !(self->spawnflags & SF_MONSTER_NOGIB))
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 2; n++)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||
for (n= 0; n < 2; n++)
|
||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
ThrowHead (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
||||
// regular death
|
||||
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
self->monsterinfo.currentmove = &flipper_move_death;
|
||||
}
|
||||
|
||||
/*QUAKED monster_flipper (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_flipper (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
self->deadflag = DEAD_DEAD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
||||
// regular death
|
||||
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
self->monsterinfo.currentmove = &flipper_move_death;
|
||||
}
|
||||
|
||||
/*QUAKED monster_flipper (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
|
||||
*/
|
||||
void SP_monster_flipper (edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
G_FreeEdict (self);
|
||||
return;
|
||||
}
|
||||
self->class_id = ENTITY_MONSTER_FLIPPER;
|
||||
self->spawnflags |= SF_MONSTER_KNOWS_MIRRORS;
|
||||
|
||||
sound_pain1 = gi.soundindex ("flipper/flppain1.wav");
|
||||
sound_pain2 = gi.soundindex ("flipper/flppain2.wav");
|
||||
sound_death = gi.soundindex ("flipper/flpdeth1.wav");
|
||||
sound_chomp = gi.soundindex ("flipper/flpatck1.wav");
|
||||
sound_attack = gi.soundindex ("flipper/flpatck2.wav");
|
||||
sound_idle = gi.soundindex ("flipper/flpidle1.wav");
|
||||
sound_search = gi.soundindex ("flipper/flpsrch1.wav");
|
||||
sound_sight = gi.soundindex ("flipper/flpsght1.wav");
|
||||
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
sound_pain1 = gi.soundindex ("flipper/flppain1.wav");
|
||||
sound_pain2 = gi.soundindex ("flipper/flppain2.wav");
|
||||
sound_death = gi.soundindex ("flipper/flpdeth1.wav");
|
||||
sound_chomp = gi.soundindex ("flipper/flpatck1.wav");
|
||||
sound_attack = gi.soundindex ("flipper/flpatck2.wav");
|
||||
sound_idle = gi.soundindex ("flipper/flpidle1.wav");
|
||||
sound_search = gi.soundindex ("flipper/flpsrch1.wav");
|
||||
sound_sight = gi.soundindex ("flipper/flpsght1.wav");
|
||||
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
// Lazarus: special purpose skins
|
||||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/flipper/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/flipper/tris.md2");
|
||||
VectorSet (self->mins, -16, -16, 0);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/flipper/tris.md2");
|
||||
VectorSet (self->mins, -16, -16, 0);
|
||||
VectorSet (self->maxs, 16, 16, 32);
|
||||
|
||||
// Lazarus: mapper-configurable health
|
||||
if(!self->health)
|
||||
self->health = 50;
|
||||
if(!self->gib_health)
|
||||
self->gib_health = -30;
|
||||
if(!self->mass)
|
||||
self->mass = 100;
|
||||
|
||||
self->pain = flipper_pain;
|
||||
self->die = flipper_die;
|
||||
|
||||
self->monsterinfo.stand = flipper_stand;
|
||||
self->monsterinfo.walk = flipper_walk;
|
||||
self->monsterinfo.run = flipper_start_run;
|
||||
self->monsterinfo.melee = flipper_melee;
|
||||
self->monsterinfo.sight = flipper_sight;
|
||||
|
||||
gi.linkentity (self);
|
||||
|
||||
self->monsterinfo.currentmove = &flipper_move_stand;
|
||||
if(!self->mass)
|
||||
self->mass = 100;
|
||||
|
||||
self->pain = flipper_pain;
|
||||
self->die = flipper_die;
|
||||
|
||||
self->monsterinfo.stand = flipper_stand;
|
||||
self->monsterinfo.walk = flipper_walk;
|
||||
self->monsterinfo.run = flipper_start_run;
|
||||
self->monsterinfo.melee = flipper_melee;
|
||||
self->monsterinfo.sight = flipper_sight;
|
||||
|
||||
gi.linkentity (self);
|
||||
|
||||
self->monsterinfo.currentmove = &flipper_move_stand;
|
||||
if(!self->monsterinfo.flies)
|
||||
self->monsterinfo.flies = 0.90;
|
||||
if(self->health < 0)
|
||||
|
@ -410,7 +410,7 @@ void SP_monster_flipper (edict_t *self)
|
|||
}
|
||||
self->common_name = "Barracuda Shark";
|
||||
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
||||
swimmonster_start (self);
|
||||
}
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
||||
swimmonster_start (self);
|
||||
}
|
||||
|
|
|
@ -558,7 +558,7 @@ void floater_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
int n;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -626,7 +626,7 @@ void SP_monster_floater (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/float/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/float/tris.md2");
|
||||
|
|
|
@ -522,7 +522,7 @@ void flyer_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
int n;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -589,7 +589,7 @@ void SP_monster_flyer (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/flyer/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/flyer/tris.md2");
|
||||
|
|
|
@ -234,7 +234,7 @@ void gladiator_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
{
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
{
|
||||
|
@ -379,7 +379,7 @@ void SP_monster_gladiator (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/gladiatr/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/gladiatr/tris.md2");
|
||||
|
|
|
@ -273,7 +273,7 @@ mmove_t gunner_move_pain1 = {FRAME_pain101, FRAME_pain118, gunner_frames_pain1,
|
|||
void gunner_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -759,7 +759,7 @@ void SP_monster_gunner (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/gunner/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/gunner/tris.md2");
|
||||
|
|
|
@ -476,7 +476,7 @@ void hover_attack(edict_t *self)
|
|||
void hover_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -587,7 +587,7 @@ void SP_monster_hover (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/hover/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex("models/monsters/hover/tris.md2");
|
||||
|
|
|
@ -199,7 +199,7 @@ void infantry_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
int n;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -606,7 +606,7 @@ void SP_monster_infantry (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/infantry/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex("models/monsters/infantry/tris.md2");
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -595,7 +595,7 @@ mmove_t medic_move_pain2 = {FRAME_painb1, FRAME_painb15, medic_frames_pain2, med
|
|||
void medic_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -1209,7 +1209,7 @@ void SP_monster_medic (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/medic/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/medic/tris.md2");
|
||||
|
|
|
@ -497,7 +497,7 @@ void mutant_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
float r;
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -605,7 +605,7 @@ void mutant_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
|
|||
gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
self->deadflag = DEAD_DEAD;
|
||||
self->takedamage = DAMAGE_YES;
|
||||
self->s.skinnum = 1;
|
||||
self->s.skin = 1;
|
||||
|
||||
if (random() < 0.5)
|
||||
self->monsterinfo.currentmove = &mutant_move_death1;
|
||||
|
@ -667,7 +667,7 @@ void SP_monster_mutant (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/mutant/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/mutant/tris.md2");
|
||||
|
|
|
@ -256,7 +256,7 @@ mmove_t parasite_move_pain1 = {FRAME_pain101, FRAME_pain111, parasite_frames_pai
|
|||
void parasite_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -544,7 +544,7 @@ void SP_monster_parasite (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/parasite/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/parasite/tris.md2");
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -434,7 +434,7 @@ void supertank_pain (edict_t *self, edict_t *other, float kick, int damage)
|
|||
{
|
||||
|
||||
if (self->health < (self->max_health / 2))
|
||||
self->s.skinnum |= 1;
|
||||
self->s.skin |= 1;
|
||||
|
||||
if (level.time < self->pain_debounce_time)
|
||||
return;
|
||||
|
@ -691,7 +691,7 @@ void SP_monster_supertank (edict_t *self)
|
|||
if ( (self->spawnflags & SF_MONSTER_SPECIAL) && self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/boss1/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
sound_pain1 = gi.soundindex ("bosstank/btkpain1.wav");
|
||||
|
@ -711,7 +711,7 @@ void SP_monster_supertank (edict_t *self)
|
|||
if ( self->style )
|
||||
{
|
||||
PatchMonsterModel("models/monsters/boss1/tris.md2");
|
||||
self->s.skinnum = self->style * 2;
|
||||
self->s.skin = self->style * 2;
|
||||
}
|
||||
|
||||
self->s.modelindex = gi.modelindex ("models/monsters/boss1/tris.md2");
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1452,7 +1452,7 @@ void PutClientInServer (edict_t *ent)
|
|||
|
||||
// sknum is player num and weapon number
|
||||
// weapon number will be added in changeweapon
|
||||
ent->s.skinnum = ent - g_edicts - 1;
|
||||
ent->s.skin = ent - g_edicts - 1;
|
||||
|
||||
ent->s.frame = 0;
|
||||
VectorCopy (spawn_origin, ent->s.origin);
|
||||
|
@ -1518,7 +1518,7 @@ void PutClientInServer (edict_t *ent)
|
|||
client->newweapon = NULL;
|
||||
client->machinegun_shots = 0;
|
||||
i = ((client->pers.weapon->weapmodel & 0xff) << 8);
|
||||
ent->s.skinnum = (ent - g_edicts - 1) | i;
|
||||
ent->s.skin = (ent - g_edicts - 1) | i;
|
||||
if (client->pers.weapon->ammo)
|
||||
client->ammo_index = ITEM_INDEX(FindItem(client->pers.weapon->ammo));
|
||||
else
|
||||
|
|
|
@ -460,7 +460,6 @@ void SV_CalcBlend (edict_t *ent)
|
|||
}
|
||||
|
||||
// add for powerups
|
||||
|
||||
#ifdef JETPACK_MOD
|
||||
if ( ent->client->jetpack )
|
||||
{
|
||||
|
|
|
@ -200,7 +200,7 @@ void ChangeWeapon (edict_t *ent)
|
|||
i = ((ent->client->pers.weapon->weapmodel & 0xff) << 8);
|
||||
else
|
||||
i = 0;
|
||||
ent->s.skinnum = (ent - g_edicts - 1) | i;
|
||||
ent->s.skin = (ent - g_edicts - 1) | i;
|
||||
}
|
||||
|
||||
if (ent->client->pers.weapon && ent->client->pers.weapon->ammo)
|
||||
|
|
|
@ -0,0 +1,246 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: server - Win32 Release--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\Temp\RSP5FE.tmp" with contents
|
||||
[
|
||||
/nologo /ML /W3 /GX /O2 /I ".\\" /I ".\monsters" /I ".\ents" /I ".\global" /I "../public" /I "../public/libs" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fo"..\temp\server\!release/" /Fd"..\temp\server\!release/" /FD /c
|
||||
"D:\XASH3D\src_main\!source\server\global\g_ai.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_camera.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_chase.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_cmds.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_combat.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_crane.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_fog.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_func.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_items.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_jetpack.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_lights.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_lock.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_main.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_misc.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_model.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\g_monster.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_mtrain.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_newai.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_pendulum.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_phys.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_reflect.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_save.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_sound.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_spawn.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_svcmds.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_target.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_thing.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_tracktrain.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_trigger.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_turret.c"
|
||||
"D:\XASH3D\src_main\!source\server\global\g_utils.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_vehicle.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_weapon.c"
|
||||
"D:\XASH3D\src_main\!source\server\ents\g_wes.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_actor.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_actor_weap.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_berserk.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_boss2.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_boss3.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_boss31.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_boss32.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_brain.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_chick.c"
|
||||
"D:\XASH3D\src_main\!source\server\m_flash.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_flipper.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_float.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_flyer.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_gladiator.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_gunner.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_hover.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_infantry.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_insane.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_medic.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_move.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_mutant.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_parasite.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_soldier.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_supertank.c"
|
||||
"D:\XASH3D\src_main\!source\server\monsters\m_tank.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_chase.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_client.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_hud.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_menu.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_text.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_trail.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_view.c"
|
||||
"D:\XASH3D\src_main\!source\server\p_weapon.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\Temp\RSP5FE.tmp"
|
||||
Creating temporary file "C:\Temp\RSP5FF.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib winmm.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"..\temp\render\!release/server.dll" /implib:"..\temp\server\!release/server.lib"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_ai.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_camera.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_chase.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_cmds.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_combat.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_crane.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_fog.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_func.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_items.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_jetpack.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_lights.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_lock.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_main.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_misc.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_model.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_monster.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_mtrain.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_newai.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_pendulum.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_phys.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_reflect.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_save.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_sound.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_spawn.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_svcmds.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_target.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_thing.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_tracktrain.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_trigger.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_turret.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_utils.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_vehicle.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_weapon.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\g_wes.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_actor.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_actor_weap.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_berserk.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_boss2.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_boss3.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_boss31.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_boss32.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_brain.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_chick.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_flash.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_flipper.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_float.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_flyer.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_gladiator.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_gunner.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_hover.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_infantry.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_insane.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_medic.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_move.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_mutant.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_parasite.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_soldier.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_supertank.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\m_tank.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_chase.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_client.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_hud.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_menu.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_text.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_trail.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_view.obj"
|
||||
"\XASH3D\src_main\!source\temp\server\!release\p_weapon.obj"
|
||||
]
|
||||
Creating command line "link.exe @C:\Temp\RSP5FF.tmp"
|
||||
Creating temporary file "C:\Temp\RSP600.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \XASH3D\src_main\!source\temp\render\!release\server.dll "D:\Xash3D\xash\bin\server.dll"
|
||||
]
|
||||
Creating command line "C:\Temp\RSP600.bat"
|
||||
Compiling...
|
||||
g_ai.c
|
||||
g_camera.c
|
||||
g_chase.c
|
||||
g_cmds.c
|
||||
g_combat.c
|
||||
g_crane.c
|
||||
g_fog.c
|
||||
g_func.c
|
||||
g_items.c
|
||||
g_jetpack.c
|
||||
g_lights.c
|
||||
g_lock.c
|
||||
g_main.c
|
||||
g_misc.c
|
||||
g_model.c
|
||||
g_monster.c
|
||||
g_mtrain.c
|
||||
g_newai.c
|
||||
g_pendulum.c
|
||||
g_phys.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
g_reflect.c
|
||||
g_save.c
|
||||
g_sound.c
|
||||
g_spawn.c
|
||||
g_svcmds.c
|
||||
g_target.c
|
||||
g_thing.c
|
||||
g_tracktrain.c
|
||||
g_trigger.c
|
||||
g_turret.c
|
||||
g_utils.c
|
||||
g_vehicle.c
|
||||
g_weapon.c
|
||||
g_wes.c
|
||||
m_actor.c
|
||||
m_actor_weap.c
|
||||
m_berserk.c
|
||||
m_boss2.c
|
||||
m_boss3.c
|
||||
m_boss31.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
m_boss32.c
|
||||
m_brain.c
|
||||
m_chick.c
|
||||
m_flash.c
|
||||
m_flipper.c
|
||||
m_float.c
|
||||
m_flyer.c
|
||||
m_gladiator.c
|
||||
m_gunner.c
|
||||
m_hover.c
|
||||
m_infantry.c
|
||||
m_insane.c
|
||||
m_medic.c
|
||||
m_move.c
|
||||
m_mutant.c
|
||||
m_parasite.c
|
||||
m_soldier.c
|
||||
m_supertank.c
|
||||
m_tank.c
|
||||
p_chase.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
p_client.c
|
||||
p_hud.c
|
||||
p_menu.c
|
||||
p_text.c
|
||||
p_trail.c
|
||||
p_view.c
|
||||
p_weapon.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\server\!release/server.lib and object ..\temp\server\!release/server.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \XASH3D\src_main\!source\temp\render\!release\server.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
server.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue