diff --git a/CMakeLists.txt b/CMakeLists.txt index 04f0c9e95..eef143b8b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ option(CURL_SUPPORT "cURL support" ON) option(OPENAL_SUPPORT "OpenAL support" ON) option(SYSTEMWIDE_SUPPORT "Enable systemwide installation of game assets" OFF) option(SDL3_SUPPORT "Build against SDL 3 instead of SDL2" OFF) -option(GL1_RENDERER "Build the GL3 renderer" ON) +option(GL1_RENDERER "Build the GL1 renderer" ON) option(GL3_RENDERER "Build the GL3 renderer" ON) option(GLES1_RENDERER "Build the GLES1 renderer" OFF) option(GLES3_RENDERER "Build the GLES3 renderer" ON) @@ -169,10 +169,10 @@ unset(cpu) # Systemwide installation of game assets. if(${SYSTEMWIDE_SUPPORT}) - add_definitions(-DSYSTEMWIDE) - if(NOT ${SYSTEMDIR} STREQUAL "") - add_definitions(-DSYSTEMDIR="${SYSTEMDIR}") - endif() + add_definitions(-DSYSTEMWIDE) + if(NOT ${SYSTEMDIR} STREQUAL "") + add_definitions(-DSYSTEMDIR="${SYSTEMDIR}") + endif() endif() # We need to pass some options to minizip / unzip. @@ -195,11 +195,11 @@ else() endif() if(GL1_RENDERER) - # We need an OpenGL implementation. - set(OpenGL_GL_PREFERENCE GLVND) - find_package(OpenGL REQUIRED) - list(APPEND yquake2IncludeDirectories ${OPENGL_INCLUDE_DIR}) - list(APPEND yquake2OpenGLLinkerFlags ${OPENGL_LIBRARIES}) + # We need an OpenGL implementation. + set(OpenGL_GL_PREFERENCE GLVND) + find_package(OpenGL REQUIRED) + list(APPEND yquake2IncludeDirectories ${OPENGL_INCLUDE_DIR}) + list(APPEND yquake2OpenGLLinkerFlags ${OPENGL_LIBRARIES}) endif() # backtrace lookup @@ -260,7 +260,7 @@ else() list(APPEND yquake2LinkerFlags "-rdynamic") else() list(APPEND yquake2LinkerFlags "-lnetwork") - set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") list(APPEND yquake2LinkerFlags "-lsocket -lnsl") diff --git a/README.md b/README.md index eca8feafd..5eb20edbd 100644 --- a/README.md +++ b/README.md @@ -231,6 +231,7 @@ Goals: * [ ] Rearange surfaces in vulkan render before render, * [ ] Fully implement `target_camera`, * [ ] Fully implement `misc_flare`, +* [x] Fix player height with enabled flashlight, * [ ] Single player ReRelease support, * [ ] Support effects and additional flags for ReRelease when possible. * [ ] Use shared model cache in client code insted reimplemnet in each render, diff --git a/doc/040_cvarlist.md b/doc/040_cvarlist.md index 4fb735c50..884eb5a37 100644 --- a/doc/040_cvarlist.md +++ b/doc/040_cvarlist.md @@ -253,6 +253,8 @@ it's `+set busywait 0` (setting the `busywait` cvar) and `-portable` or other source of `localization/loc_english.txt` like file. Defaults to `english`. +* **g_itemsbobeffect**: Bob effect of items like in ReRelease. Defaults to `0`. + * **g_swap_speed**: Sets the speed of the "changing weapon" animation. Default is `1`. If set to `2`, it will be double the speed, `3` is the triple... up until the max of `8`, since there are at least 2 diff --git a/src/client/cl_entities.c b/src/client/cl_entities.c index c34c4f2bf..18bde2dff 100644 --- a/src/client/cl_entities.c +++ b/src/client/cl_entities.c @@ -35,13 +35,12 @@ CL_AddPacketEntities(frame_t *frame) { entity_t ent = {0}; entity_state_t *s1; - float autorotate; + float autorotate, autobob; int i; int pnum; centity_t *cent; int autoanim; clientinfo_t *ci; - unsigned int effects, renderfx; /* To distinguish baseq2, xatrix and rogue. */ cvar_t *gametype = Cvar_Get("gametype", "", CVAR_LATCH | CVAR_SERVERINFO); @@ -57,15 +56,19 @@ CL_AddPacketEntities(frame_t *frame) /* brush models can auto animate their frames */ autoanim = 2 * cl.time / 1000; + autobob = 5 * sinf(cl.time / 400.0f); for (pnum = 0; pnum < frame->num_entities; pnum++) { + unsigned int effects, renderfx, rr_effects; + s1 = &cl_parse_entities[(frame->parse_entities + pnum) & (MAX_PARSE_ENTITIES - 1)]; cent = &cl_entities[s1->number]; effects = s1->effects; + rr_effects = s1->rr_effects; renderfx = s1->renderfx; /* set frame */ @@ -139,10 +142,15 @@ CL_AddPacketEntities(frame_t *frame) for (i = 0; i < 3; i++) { ent.origin[i] = ent.oldorigin[i] = cent->prev.origin[i] + cl.lerpfrac * - (cent->current.origin[i] - cent->prev.origin[i]); + (cent->current.origin[i] - cent->prev.origin[i]); } } + if (effects & EF_BOB) { + ent.origin[2] += autobob; + ent.oldorigin[2] += autobob; + } + /* tweak the color of beams */ if (renderfx & RF_BEAM) { @@ -261,6 +269,20 @@ CL_AddPacketEntities(frame_t *frame) } } + if (rr_effects & EF_FLASHLIGHT) { + vec3_t forward, start, end; + trace_t trace; + int mask = CONTENTS_SOLID | CONTENTS_MONSTER; + + AngleVectors(ent.angles, forward, NULL, NULL); + VectorMA(ent.origin, 1024, forward, end); + VectorCopy(ent.origin, start); + + trace = CM_BoxTrace(start, end, vec3_origin, vec3_origin, 0, mask); + + V_AddLight(trace.endpos, 128, 1, 1, 1); + } + if (s1->number == cl.playernum + 1) { ent.flags |= RF_VIEWERMODEL; diff --git a/src/client/cl_parse.c b/src/client/cl_parse.c index 1f5ce93b8..458a1b41c 100644 --- a/src/client/cl_parse.c +++ b/src/client/cl_parse.c @@ -268,6 +268,27 @@ CL_ParseDelta(entity_state_t *from, entity_state_t *to, int number, int bits) to->effects = MSG_ReadShort(&net_message); } + /* ReRelease effects */ + if (cls.serverProtocol != PROTOCOL_VERSION) + { + to->rr_effects = 0; + } + else + { + if ((bits & (U_EFFECTS8 | U_EFFECTS16)) == (U_EFFECTS8 | U_EFFECTS16)) + { + to->rr_effects = MSG_ReadLong(&net_message); + } + else if (bits & U_EFFECTS8) + { + to->rr_effects = MSG_ReadByte(&net_message); + } + else if (bits & U_EFFECTS16) + { + to->rr_effects = MSG_ReadShort(&net_message); + } + } + if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16)) { to->renderfx = MSG_ReadLong(&net_message); diff --git a/src/client/refresh/soft/sw_main.c b/src/client/refresh/soft/sw_main.c index ea4e8c773..2240830bf 100644 --- a/src/client/refresh/soft/sw_main.c +++ b/src/client/refresh/soft/sw_main.c @@ -1854,9 +1854,9 @@ GetRefAPI(refimport_t imp) refexport.EndWorldRenderpass = RE_EndWorldRenderpass; refexport.EndFrame = RE_EndFrame; - // Tell the client that we're unsing the + // Tell the client that we're unsing the // new renderer restart API. - ri.Vid_RequestRestart(RESTART_NO); + ri.Vid_RequestRestart(RESTART_NO); Swap_Init (); @@ -1909,10 +1909,10 @@ RE_InitContext(void *win) SDL_SetRenderVSync(renderer, 1); #else renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); - if(!renderer) - { - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE | SDL_RENDERER_PRESENTVSYNC); - } + if(!renderer) + { + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE | SDL_RENDERER_PRESENTVSYNC); + } #endif } else @@ -1921,10 +1921,10 @@ RE_InitContext(void *win) renderer = SDL_CreateRenderer(window, NULL); #else renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); - if(!renderer) - { - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE); - } + if(!renderer) + { + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE); + } #endif } if(!renderer) { diff --git a/src/client/vid/glimp_sdl2.c b/src/client/vid/glimp_sdl2.c index 80b05938e..2edfb8316 100644 --- a/src/client/vid/glimp_sdl2.c +++ b/src/client/vid/glimp_sdl2.c @@ -376,7 +376,7 @@ ShutdownGraphics(void) } else { SDL_GetWindowPosition(window, - &last_position_x, &last_position_y); + &last_position_x, &last_position_y); } /* cleanly ungrab input (needs window) */ @@ -640,8 +640,7 @@ GLimp_InitGraphics(int fullscreen, int *pwidth, int *pheight) Com_Printf("Real display mode: %ix%i@%i\n", mode.w, mode.h, mode.refresh_rate); } - - /* Initialize rendering context. */ + /* Initialize rendering context. */ if (!re.InitContext(window)) { /* InitContext() should have logged an error. */ diff --git a/src/common/header/shared.h b/src/common/header/shared.h index 941774872..7b61af9e4 100644 --- a/src/common/header/shared.h +++ b/src/common/header/shared.h @@ -749,6 +749,7 @@ typedef struct * it has a zero index model. */ #define EF_ROTATE 0x00000001 /* rotate (bonus items) */ #define EF_GIB 0x00000002 /* leave a trail */ +#define EF_BOB 0x00000004 /* ReRelease BoB effect */ #define EF_BLASTER 0x00000008 /* redlight + trail */ #define EF_ROCKET 0x00000010 /* redlight + trail */ #define EF_GRENADE 0x00000020 @@ -817,6 +818,10 @@ typedef struct #define EF_CHICKEN 0x00400000 // The flag that tells the system that the player is // a chicken, and not corvus. +/* entity_state_t->rr_effects + * ReRelease flags, values are diffeent to quake 2 RR code */ +#define EF_FLASHLIGHT 0x00000001 /* project flashlight, only for players */ + /* entity_state_t->renderfx flags */ #define RF_MINLIGHT 1 /* allways have some light (viewmodel) */ #define RF_VIEWERMODEL 2 /* don't draw through eyes, only mirrors */ @@ -1437,7 +1442,8 @@ typedef struct entity_state_s /* events only go out for a single frame, they */ /* are automatically cleared each frame */ /* New protocol fields */ - vec3_t scale; + vec3_t scale; /* model scale */ + unsigned int rr_effects; short clientnum; // In Quake 2, the client num was passed in skinnum. We need this value, however. diff --git a/src/common/movemsg.c b/src/common/movemsg.c index 322724349..c8aaa83dc 100644 --- a/src/common/movemsg.c +++ b/src/common/movemsg.c @@ -540,14 +540,14 @@ MSG_WriteDeltaEntity(entity_state_t *from, } } - if (to->effects != from->effects) + if ((to->effects != from->effects) || (to->rr_effects != from->rr_effects)) { - if (to->effects < 256) + if ((to->effects < 256) && (to->rr_effects < 256)) { bits |= U_EFFECTS8; } - else if (to->effects < 0x8000) + else if ((to->effects < 0x8000) && (to->rr_effects < 0x8000)) { bits |= U_EFFECTS16; } @@ -770,6 +770,25 @@ MSG_WriteDeltaEntity(entity_state_t *from, MSG_WriteShort(msg, to->effects); } + /* ReRelease effects */ + if (protocol == PROTOCOL_VERSION) + { + if ((bits & (U_EFFECTS8 | U_EFFECTS16)) == (U_EFFECTS8 | U_EFFECTS16)) + { + MSG_WriteLong(msg, to->rr_effects); + } + + else if (bits & U_EFFECTS8) + { + MSG_WriteByte(msg, to->rr_effects); + } + + else if (bits & U_EFFECTS16) + { + MSG_WriteShort(msg, to->rr_effects); + } + } + if ((bits & (U_RENDERFX8 | U_RENDERFX16)) == (U_RENDERFX8 | U_RENDERFX16)) { MSG_WriteLong(msg, to->renderfx); diff --git a/src/game/g_items.c b/src/game/g_items.c index d84c02150..192f41613 100644 --- a/src/game/g_items.c +++ b/src/game/g_items.c @@ -110,7 +110,8 @@ void DoRespawn(edict_t *ent) // --------------- // ************************************************************************************************ -void PreRespawnThink(edict_t *ent) +void +PreRespawnThink(edict_t *ent) { int delay; float clients; @@ -149,7 +150,8 @@ void PreRespawnThink(edict_t *ent) // ---------- // ************************************************************************************************ -void SetRespawn(edict_t *ent) +void +SetRespawn(edict_t *ent) { // So it'll get sent to the client again. @@ -192,7 +194,8 @@ void SetRespawn(edict_t *ent) // ------------- // ************************************************************************************************ -qboolean Pickup_Puzzle(edict_t *ent, edict_t *other) +qboolean +Pickup_Puzzle(edict_t *ent, edict_t *other) { gitem_t *item; @@ -331,7 +334,8 @@ qboolean AddWeaponToInventory(gitem_t *item,edict_t *player) // ------------- // ************************************************************************************************ -qboolean Pickup_Weapon(edict_t *ent,edict_t *other) +qboolean +Pickup_Weapon(edict_t *ent,edict_t *other) { if (other->flags & FL_CHICKEN) { @@ -427,19 +431,23 @@ qboolean Add_AmmoToInventory (edict_t *ent, gitem_t *item, int count,int max) return true; } -/* -=============== -Add_Ammo -=============== -*/ +/* ====================================================================== */ -qboolean Add_Ammo (edict_t *ent, gitem_t *item, int count) +qboolean +Add_Ammo(edict_t *ent, gitem_t *item, int count) { int bo; - int max; + int max; + + if (!ent || !item) + { + return false; + } if (!ent->client) + { return false; + } if ((item->tag == ITEM_AMMO_MANA_OFFENSIVE_HALF) || (item->tag == ITEM_AMMO_MANA_OFFENSIVE_FULL)) { @@ -482,15 +490,12 @@ qboolean Add_Ammo (edict_t *ent, gitem_t *item, int count) return(Add_AmmoToInventory (ent,item,count,max)); } else + { + gi.dprintf("undefined ammo type\n"); return false; + } } -/* -=============== -Pickup_Ammo -=============== -*/ - qboolean Pickup_Ammo(edict_t *ent, edict_t *other) { @@ -571,6 +576,11 @@ Pickup_Health qboolean Pickup_Health(edict_t *ent, edict_t *other) { + if (!ent || !other) + { + return false; + } + if (other->flags & FL_CHICKEN) { return false; @@ -702,7 +712,7 @@ Touch_Item(edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) /* ====================================================================== */ -static void +void drop_temp_touch(edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) { if (!ent || !other) @@ -772,9 +782,10 @@ Drop_Item(edict_t *ent, gitem_t *item) AngleVectors(ent->client->v_angle, forward, right, NULL); VectorSet(offset, 24, 0, -16); - G_ProjectSource (ent->s.origin, offset, forward, right, dropped->s.origin); + G_ProjectSource(ent->s.origin, offset, forward, right, + dropped->s.origin); trace = gi.trace(ent->s.origin, dropped->mins, dropped->maxs, - dropped->s.origin, ent, CONTENTS_SOLID); + dropped->s.origin, ent, CONTENTS_SOLID); VectorCopy(trace.endpos, dropped->s.origin); } else @@ -783,7 +794,7 @@ Drop_Item(edict_t *ent, gitem_t *item) VectorCopy(ent->s.origin, dropped->s.origin); } - VectorScale (forward, 100, dropped->velocity); + VectorScale(forward, 100, dropped->velocity); dropped->velocity[2] = 300; dropped->think = drop_make_touchable; @@ -1144,6 +1155,7 @@ SpawnItem(edict_t *ent, gitem_t *item) ent->flags |= FL_RESPAWN; } } + // ************************************************************************************************ // IsItem // ------ @@ -1177,6 +1189,31 @@ gitem_t *IsItem(edict_t *ent) return NULL; } +void +P_ToggleFlashlight(edict_t *ent, qboolean state) +{ + if (!!(ent->flags & FL_FLASHLIGHT) == state) + { + return; + } + + ent->flags ^= FL_FLASHLIGHT; + + gi.sound(ent, CHAN_AUTO, + gi.soundindex(ent->flags & FL_FLASHLIGHT ? + "items/flashlight_on.wav" : "items/flashlight_off.wav"), + 1.f, ATTN_STATIC, 0); +} + +void +Use_Flashlight(edict_t *ent, gitem_t *inv) +{ + P_ToggleFlashlight(ent, !(ent->flags & FL_FLASHLIGHT)); +} + +/* ====================================================================== */ + + // ************************************************************************************************ // InitItems // ----------- diff --git a/src/game/g_main.c b/src/game/g_main.c index 1b1b5e8a6..a0b082ca4 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -113,6 +113,7 @@ cvar_t *g_machinegun_norecoil; cvar_t *g_quick_weap; cvar_t *g_swap_speed; cvar_t *g_language; +cvar_t *g_itemsbobeffect; cvar_t *advancedstaff; cvar_t *sv_friction; diff --git a/src/game/g_trigger.c b/src/game/g_trigger.c index 3f9ec96c6..6d678a0ff 100644 --- a/src/game/g_trigger.c +++ b/src/game/g_trigger.c @@ -226,7 +226,7 @@ sounds - sound made when activating 2) none 3) large switch */ -void SP_trigger_Multiple(edict_t *self) +void SP_trigger_multiple(edict_t *self) { InitTrigger(self); @@ -270,7 +270,7 @@ sounds "message" string to be displayed when triggered */ -void SP_trigger_Once(edict_t *self) +void SP_trigger_once(edict_t *self) { InitTrigger(self); @@ -436,7 +436,7 @@ If NOMESSAGE is not set, t will print "1 more.. " etc when triggered and "sequen After the counter has been triggered "count" times (default 2), it will fire all of it's targets and remove itself. */ -void SP_trigger_Counter(edict_t *self) +void SP_trigger_counter(edict_t *self) { self->classID = CID_TRIGGER; @@ -489,7 +489,7 @@ void trigger_counter_use(edict_t *self, edict_t *other, edict_t *activator) /*QUAKED trigger_always (.5 .5 .5) (-8 -8 -8) (8 8 8) This trigger will always fire. It is activated by the world. */ -void SP_trigger_Always(edict_t *self) +void SP_trigger_always(edict_t *self) { self->classID = CID_TRIGGER; @@ -1561,6 +1561,56 @@ SP_trigger_monsterjump(edict_t *self) self->touch = trigger_monsterjump_touch; } +/* QUAKED trigger_flashlight (.5 .5 .5) ? + * Players moving against this trigger will have their flashlight turned on or off. + * "style" default to 0, set to 1 to always turn flashlight on, 2 to always turn off, + * otherwise "angles" are used to control on/off state + */ + +#define SPAWNFLAG_FLASHLIGHT_CLIPPED 1 + +void +trigger_flashlight_touch(edict_t *self, edict_t *other, cplane_t *plane /* unused */, + csurface_t *surf /* unused */) +{ + if (!other->client) + { + return; + } + + if (self->style == 1) + { + P_ToggleFlashlight(other, true); + } + else if (self->style == 2) + { + P_ToggleFlashlight(other, false); + } + else if (VectorLength(other->velocity) > 6) + { + vec3_t forward; + + VectorNormalize2(other->velocity, forward); + + P_ToggleFlashlight(other, _DotProduct(forward, self->movedir) > 0); + } +} + +void +SP_trigger_flashlight(edict_t *self) +{ + if (self->s.angles[YAW] == 0) + { + self->s.angles[YAW] = 360; + } + + InitTrigger(self); + self->touch = trigger_flashlight_touch; + self->movedir[2] = (float) st.height; + + gi.linkentity(self); +} + /* * QUAKED choose_cdtrack (.5 .5 .5) ? NO_LOOP * Heretic 2: Sets CD track diff --git a/src/game/header/local.h b/src/game/header/local.h index 89d0db353..1ba034ced 100644 --- a/src/game/header/local.h +++ b/src/game/header/local.h @@ -78,13 +78,14 @@ #define FL_TEAMSLAVE 0x00000400 /* not the first on the team */ #define FL_NO_KNOCKBACK 0x00000800 #define FL_POWER_ARMOR 0x00001000 /* power armor (if any) is active */ -#define FL_COOP_TAKEN 0x00002000 /* Another client has already taken it */ +#define FL_COOP_TAKEN 0x00002000 /* Another client has already taken it */ #define FL_RESPAWN 0x80000000 /* used for item respawning */ #define FL_MECHANICAL 0x00002000 /* entity is mechanical, use sparks not blood */ #define FL_SAM_RAIMI 0x00004000 /* entity is in sam raimi cam mode */ #define FL_DISGUISED 0x00008000 /* entity is in disguise, monsters will not recognize. */ #define FL_NOGIB 0x00010000 /* player has been vaporized by a nuke, drop no gibs */ +#define FL_FLASHLIGHT 0x00020000 /* enable flashlight */ #define FRAMETIME 0.1 @@ -1009,6 +1010,7 @@ extern cvar_t *g_machinegun_norecoil; extern cvar_t *g_quick_weap; extern cvar_t *g_swap_speed; extern cvar_t *g_language; +extern cvar_t *g_itemsbobeffect; extern cvar_t *autorotate; extern cvar_t *blood; @@ -1517,6 +1519,7 @@ void ObjectInit(edict_t *self,int health,int mass, int materialtype,int solid); void ED_CallSpawn(edict_t *ent); char *ED_NewString(const char *string, qboolean raw); void SpawnInit(void); +void P_ToggleFlashlight(edict_t *ent, qboolean state); edict_t *CreateFlyMonster(vec3_t origin, vec3_t angles, vec3_t mins, vec3_t maxs, char *classname); edict_t *CreateGroundMonster(vec3_t origin, vec3_t angles, vec3_t mins, diff --git a/src/game/savegame/savegame.c b/src/game/savegame/savegame.c index ab30e4fa6..48b53fa60 100644 --- a/src/game/savegame/savegame.c +++ b/src/game/savegame/savegame.c @@ -420,6 +420,7 @@ InitGame(void) g_quick_weap = gi.cvar("g_quick_weap", "1", CVAR_ARCHIVE); g_swap_speed = gi.cvar("g_swap_speed", "1", CVAR_ARCHIVE); g_language = gi.cvar("g_language", "english", CVAR_ARCHIVE); + g_itemsbobeffect = gi.cvar("g_itemsbobeffect", "0", CVAR_ARCHIVE); sv_cinematicfreeze = gi.cvar("sv_cinematicfreeze", "0", 0); sv_jumpcinematic = gi.cvar("sv_jumpcinematic", "0", 0); diff --git a/src/game/savegame/tables/gamefunc_decs.h b/src/game/savegame/tables/gamefunc_decs.h index c76a3fa5b..e9feaa231 100644 --- a/src/game/savegame/tables/gamefunc_decs.h +++ b/src/game/savegame/tables/gamefunc_decs.h @@ -305,6 +305,7 @@ extern void Use_Defender ( edict_t * ent , gitem_t * item ) ; extern void Use_Doppleganger ( edict_t * ent , gitem_t * item ) ; extern void Use_Double ( edict_t * ent , gitem_t * item ) ; extern void Use_Envirosuit ( edict_t * ent , gitem_t * item ) ; +extern void Use_Flashlight ( edict_t * ent , gitem_t * item ) ; extern void Use_Hunter ( edict_t * ent , gitem_t * item ) ; extern void Use_IR ( edict_t * ent , gitem_t * item ) ; extern void Use_Invulnerability ( edict_t * ent , gitem_t * item ) ; @@ -1399,6 +1400,7 @@ extern void trigger_effect ( edict_t * self ) ; extern void trigger_elevator_init ( edict_t * self ) ; extern void trigger_elevator_use ( edict_t * self , edict_t * other , edict_t * activator ) ; extern void trigger_enable ( edict_t * self , edict_t * other , edict_t * activator ) ; +extern void trigger_flashlight_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ; extern void trigger_gravity_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ; extern void trigger_gravity_use ( edict_t * self , edict_t * other , edict_t * activator ) ; extern void trigger_key_use ( edict_t * self , edict_t * other , edict_t * activator ) ; diff --git a/src/game/savegame/tables/spawnfunc_decs.h b/src/game/savegame/tables/spawnfunc_decs.h index 52d05ade0..4ae70b76e 100644 --- a/src/game/savegame/tables/spawnfunc_decs.h +++ b/src/game/savegame/tables/spawnfunc_decs.h @@ -26,99 +26,23 @@ * ======================================================================= */ -extern void SP_info_player_start (edict_t *ent); -extern void SP_info_player_deathmatch (edict_t *ent); -extern void SP_info_player_coop (edict_t *ent); -extern void SP_info_player_intermission (edict_t *ent); -extern void SP_info_buoy (edict_t *ent); -extern void SP_func_plat (edict_t *ent); -extern void SP_func_rotating (edict_t *ent); -extern void SP_func_button (edict_t *ent); -extern void SP_func_door (edict_t *ent); -extern void SP_func_door_secret (edict_t *ent); -extern void SP_func_door_rotating (edict_t *ent); -extern void SP_func_water (edict_t *ent); -extern void SP_func_train (edict_t *ent); -extern void SP_func_wall (edict_t *self); -extern void SP_func_object (edict_t *self); -extern void SP_func_timer (edict_t *self); -extern void SP_func_areaportal (edict_t *ent); -extern void SP_func_monsterspawner (edict_t *ent); -extern void SP_trigger_Activate(edict_t *self); -extern void SP_trigger_Always (edict_t *ent); -extern void SP_trigger_Counter (edict_t *ent); -extern void SP_trigger_Damage(edict_t *self); -extern void SP_trigger_Deactivate(edict_t *self); -extern void SP_trigger_elevator (edict_t *ent); -//void SP_trigger_flamethrower (edict_t *ent); -extern void SP_trigger_fogdensity(edict_t *self); -extern void SP_trigger_gravity(edict_t *self); -extern void SP_trigger_mappercentage(edict_t *self); -extern void SP_trigger_quit_to_menu(edict_t *self); -extern void SP_trigger_mission_give(edict_t *self); -extern void SP_trigger_mission_take(edict_t *self); -extern void SP_trigger_monsterjump(edict_t *self); -extern void SP_trigger_goto_buoy(edict_t *self); -extern void SP_trigger_Multiple (edict_t *ent); -extern void SP_trigger_Once (edict_t *ent); -extern void SP_trigger_PlayerPushButton (edict_t *ent); -extern void SP_trigger_PlayerPushLever (edict_t *ent); -extern void SP_trigger_PlayerUsePuzzle (edict_t *ent); -extern void SP_trigger_push(edict_t *self); -extern void SP_trigger_puzzle (edict_t *ent); -extern void SP_trigger_quake (edict_t *ent); -extern void SP_trigger_Relay (edict_t *ent); -extern void SP_trigger_lightning (edict_t *ent); -extern void SP_trigger_farclip (edict_t *ent); -extern void SP_trigger_endgame(edict_t *self); -extern void SP_choose_cdtrack(edict_t *self); -extern void SP_target_explosion (edict_t *ent); -extern void SP_target_changelevel (edict_t *ent); -extern void SP_target_crosslevel_trigger (edict_t *ent); -extern void SP_target_crosslevel_target (edict_t *ent); -extern void SP_target_lightramp (edict_t *self); -extern void SP_target_earthquake (edict_t *ent); -extern void SP_worldspawn (edict_t *ent); -extern void SP_light (edict_t *self); -extern void SP_info_null (edict_t *self); -extern void SP_info_notnull (edict_t *self); -extern void SP_path_corner (edict_t *self); -extern void SP_point_combat (edict_t *self); -extern void SP_misc_teleporter (edict_t *self); -extern void SP_misc_teleporter_dest (edict_t *self); +extern void SP_CreateCoopSpots(edict_t * self); +extern void SP_CreateUnnamedSpawn(edict_t * self); +extern void SP_FixCoopSpots(edict_t * self); extern void misc_update_spawner (edict_t *self); -extern void SP_misc_remote_camera (edict_t *self); -extern void SP_misc_magic_portal (edict_t *self); -extern void SP_misc_fire_sparker (edict_t *ent); -extern void SP_Monster_Gkrokon(edict_t *Self); -extern void SP_misc_flag (edict_t *ent); -extern void SP_monster_gorgon (edict_t *self); -extern void SP_monster_gorgon_leader (edict_t *self); -extern void SP_monster_rat (edict_t *self); -extern void SP_monster_rat_giant (edict_t *self); -extern void SP_monster_chicken (edict_t *self); -extern void SP_monster_plagueElf(edict_t *self); -extern void SP_monster_palace_plague_guard(edict_t *self); -extern void SP_monster_palace_plague_guard_invisible(edict_t *self); -extern void SP_monster_fish (edict_t *self); -extern void SP_monster_harpy (edict_t *self); -extern void SP_monster_spreader (edict_t *self); -extern void SP_monster_elflord (edict_t *self); -extern void SP_monster_ssithra (edict_t *self); -extern void SP_monster_mssithra (edict_t *self); -extern void SP_monster_chkroktk (edict_t *self); -extern void SP_monster_tcheckrik_male (edict_t *self); -extern void SP_monster_tcheckrik_female (edict_t *self); -extern void SP_monster_tcheckrik_mothers (edict_t *self); -extern void SP_monster_high_priestess (edict_t *self); -extern void SP_monster_ogle (edict_t *self); -extern void SP_monster_seraph_overlord (edict_t *self); -extern void SP_monster_seraph_guard (edict_t *self); -extern void SP_monster_assassin (edict_t *self); -extern void SP_monster_morcalavin (edict_t *self); -extern void SP_monster_trial_beast (edict_t *self); -extern void SP_monster_imp (edict_t *self); -extern void SP_monster_bee (edict_t *self); +extern void shrine_armor (edict_t *ent); +extern void shrine_armor_gold (edict_t *ent); +extern void shrine_ghost (edict_t *ent); +extern void shrine_heal (edict_t *ent); +extern void shrine_light (edict_t *ent); +extern void shrine_lung (edict_t *ent); +extern void shrine_mana (edict_t *ent); +extern void shrine_powerup (edict_t *ent); +extern void shrine_random (edict_t *ent); +extern void shrine_reflect (edict_t *ent); +extern void shrine_speed (edict_t *ent); +extern void shrine_staff (edict_t *ent); +extern void SP_breakable_brush (edict_t *ent); extern void SP_character_corvus1 (edict_t *self); extern void SP_character_corvus2 (edict_t *self); extern void SP_character_corvus3 (edict_t *self); @@ -130,8 +54,8 @@ extern void SP_character_corvus8 (edict_t *self); extern void SP_character_corvus9 (edict_t *self); extern void SP_character_dranor (edict_t *self); extern void SP_character_elflord (edict_t *self); -extern void SP_character_highpriestess (edict_t *self); extern void SP_character_highpriestess2 (edict_t *self); +extern void SP_character_highpriestess (edict_t *self); extern void SP_character_morcalavin (edict_t *self); extern void SP_character_sidhe_guard (edict_t *self); extern void SP_character_siernan1 (edict_t *self); @@ -139,38 +63,192 @@ extern void SP_character_siernan2 (edict_t *self); extern void SP_character_ssithra_scout (edict_t *self); extern void SP_character_ssithra_victim (edict_t *self); extern void SP_character_tome (edict_t *self); -extern void SP_breakable_brush (edict_t *ent); -extern void SP_light_walltorch (edict_t *ent); -//void SP_light_flame (edict_t *ent); -extern void SP_light_floortorch (edict_t *ent); -extern void SP_light_torch1(edict_t *ent); -extern void SP_light_gem2(edict_t *ent); +extern void SP_choose_cdtrack(edict_t *self); +extern void SP_dm_dball_ball(edict_t * self); +extern void SP_dm_dball_ball_start(edict_t * self); +extern void SP_dm_dball_goal(edict_t * self); +extern void SP_dm_dball_speed_change(edict_t * self); +extern void SP_dm_dball_team1_start(edict_t * self); +extern void SP_dm_dball_team2_start(edict_t * self); +extern void SP_dm_tag_token(edict_t * self); +extern void SP_env_bubbler(edict_t *self); +extern void SP_env_dust (edict_t *self); +extern void SP_env_fire ( edict_t * ent ) ; +extern void SP_env_mist(edict_t *self); +extern void SP_env_muck(edict_t *ent); +extern void SP_env_smoke (edict_t *self); +extern void SP_env_sun1(edict_t *ent); +extern void SP_env_water_drip(edict_t *self); +extern void SP_env_waterfall_base(edict_t *self); +extern void SP_env_water_fountain(edict_t *self); +extern void SP_flamethrower(edict_t *ent); +extern void SP_func_areaportal ( edict_t * ent ) ; +extern void SP_func_button ( edict_t * ent ) ; +extern void SP_func_clock(edict_t * self); +extern void SP_func_conveyor(edict_t * self); +extern void SP_func_door ( edict_t * ent ) ; +extern void SP_func_door_rotating ( edict_t * ent ) ; +extern void SP_func_door_secret ( edict_t * ent ) ; +extern void SP_func_door_secret2 ( edict_t * ent ) ; +extern void SP_func_explosive(edict_t * self); +extern void SP_func_force_wall ( edict_t * ent ) ; +extern void SP_func_killbox ( edict_t * ent ) ; +extern void SP_func_monsterspawner (edict_t *ent); +extern void SP_func_object(edict_t * self); +extern void SP_func_plat ( edict_t * ent ) ; +extern void SP_func_plat2 ( edict_t * ent ) ; +extern void SP_func_rotating ( edict_t * ent ) ; +extern void SP_func_timer(edict_t * self); +extern void SP_func_train(edict_t * self); +extern void SP_func_wall(edict_t * self); +extern void SP_func_water(edict_t * self); +extern void SP_hint_path(edict_t * self); +extern void SP_info_buoy (edict_t *ent); +extern void SP_info_notnull(edict_t * self); +extern void SP_info_null(edict_t * self); +extern void SP_info_player_coop(edict_t * self); +extern void SP_info_player_coop_lava(edict_t * self); +extern void SP_info_player_deathmatch(edict_t * self); +extern void SP_info_player_intermission ( edict_t * ent ) ; +extern void SP_info_player_start(edict_t * self); +extern void SP_info_teleport_destination(edict_t * self); +extern void SP_item_foodcube(edict_t * self); +extern void SP_item_health(edict_t * self); +extern void SP_item_health_large(edict_t * self); +extern void SP_item_health_mega(edict_t * self); +extern void SP_item_health_small(edict_t * self); +extern void SP_item_spitter(edict_t *ent); +extern void SP_light_buglight (edict_t *ent); extern void SP_light_chandelier1 (edict_t *ent); extern void SP_light_chandelier2 (edict_t *ent); extern void SP_light_chandelier3 (edict_t *ent); +extern void SP_light(edict_t * self); +extern void SP_light_floortorch (edict_t *ent); +extern void SP_light_gem2(edict_t *ent); extern void SP_light_lantern1 (edict_t *ent); extern void SP_light_lantern2 (edict_t *ent); extern void SP_light_lantern3 (edict_t *ent); extern void SP_light_lantern4 (edict_t *ent); extern void SP_light_lantern5 (edict_t *ent); -extern void SP_light_buglight (edict_t *ent); -extern void SP_env_fire (edict_t *self); -extern void SP_env_dust (edict_t *self); -extern void SP_env_smoke (edict_t *self); -extern void SP_env_mist(edict_t *self); -extern void SP_env_bubbler(edict_t *self); -extern void SP_env_water_drip(edict_t *self); -extern void SP_env_water_fountain(edict_t *self); -extern void SP_env_waterfall_base(edict_t *self); -extern void SP_env_sun1(edict_t *ent); -extern void SP_env_muck(edict_t *ent); -extern void SP_sound_ambient_silverspring (edict_t *ent); -extern void SP_sound_ambient_swampcanyon (edict_t *ent); -extern void SP_sound_ambient_andoria (edict_t *ent); -extern void SP_sound_ambient_hive (edict_t *ent); -extern void SP_sound_ambient_mine (edict_t *ent); -extern void SP_sound_ambient_cloudfortress (edict_t *ent); -// Object stuff +extern void SP_light_mine1 ( edict_t * ent ) ; +extern void SP_light_mine2 ( edict_t * ent ) ; +extern void SP_light_torch1(edict_t *ent); +extern void SP_light_walltorch (edict_t *ent); +extern void SP_misc_actor(edict_t * self); +extern void SP_misc_amb4 ( edict_t * ent ) ; +extern void SP_misc_banner ( edict_t * ent ) ; +extern void SP_misc_bigviper ( edict_t * ent ) ; +extern void SP_misc_blackhole ( edict_t * ent ) ; +extern void SP_misc_crashviper ( edict_t * ent ) ; +extern void SP_misc_deadsoldier ( edict_t * ent ) ; +extern void SP_misc_easterchick ( edict_t * ent ) ; +extern void SP_misc_easterchick2 ( edict_t * ent ) ; +extern void SP_misc_eastertank ( edict_t * ent ) ; +extern void SP_misc_explobox(edict_t * self); +extern void SP_misc_fire_sparker (edict_t *ent); +extern void SP_misc_flag (edict_t *ent); +extern void SP_misc_gib_arm ( edict_t * ent ) ; +extern void SP_misc_gib_head ( edict_t * ent ) ; +extern void SP_misc_gib_leg ( edict_t * ent ) ; +extern void SP_misc_insane(edict_t * self); +extern void SP_misc_nuke ( edict_t * ent ) ; +extern void SP_misc_nuke_core ( edict_t * ent ) ; +extern void SP_misc_flare ( edict_t * ent ) ; +extern void SP_misc_magic_portal (edict_t *self); +extern void SP_misc_model ( edict_t * ent ) ; +extern void SP_misc_remote_camera (edict_t *self); +extern void SP_misc_satellite_dish ( edict_t * ent ) ; +extern void SP_misc_strogg_ship ( edict_t * ent ) ; +extern void SP_misc_teleporter ( edict_t * ent ) ; +extern void SP_misc_teleporter_dest ( edict_t * ent ) ; +extern void SP_misc_transport ( edict_t * ent ) ; +extern void SP_misc_viper ( edict_t * ent ) ; +extern void SP_misc_viper_bomb(edict_t * self); +extern void SP_misc_viper_missile(edict_t * self); +extern void SP_monster_arachnid(edict_t * self); +extern void SP_monster_army(edict_t * self); +extern void SP_monster_assassin (edict_t *self); +extern void SP_monster_bee (edict_t *self); +extern void SP_monster_berserk(edict_t * self); +extern void SP_monster_boss2(edict_t * self); +extern void SP_monster_boss3_stand(edict_t * self); +extern void SP_monster_boss5(edict_t * self); +extern void SP_monster_brain(edict_t * self); +extern void SP_monster_carrier(edict_t * self); +extern void SP_monster_chick(edict_t * self); +extern void SP_monster_chicken (edict_t *self); +extern void SP_monster_chick_heat(edict_t * self); +extern void SP_monster_chkroktk (edict_t *self); +extern void SP_monster_commander_body(edict_t * self); +extern void SP_monster_demon(edict_t * self); +extern void SP_monster_dog(edict_t * self); +extern void SP_monster_elflord (edict_t *self); +extern void SP_monster_enforcer(edict_t * self); +extern void SP_monster_rotfish(edict_t * self); +extern void SP_monster_fish (edict_t *self); +extern void SP_monster_fixbot(edict_t * self); +extern void SP_monster_flipper(edict_t * self); +extern void SP_monster_floater(edict_t * self); +extern void SP_monster_flyer(edict_t * self); +extern void SP_monster_gekk(edict_t * self); +extern void SP_Monster_Gkrokon(edict_t *Self); +extern void SP_monster_gladb(edict_t * self); +extern void SP_monster_gladiator(edict_t * self); +extern void SP_monster_gorgon (edict_t *self); +extern void SP_monster_gorgon_leader (edict_t *self); +extern void SP_monster_guardian(edict_t * self); +extern void SP_monster_guncmdr(edict_t * self); +extern void SP_monster_gunner(edict_t * self); +extern void SP_monster_harpy (edict_t *self); +extern void SP_monster_high_priestess (edict_t *self); +extern void SP_monster_hknight(edict_t * self); +extern void SP_monster_hover(edict_t * self); +extern void SP_monster_imp (edict_t *self); +extern void SP_monster_infantry(edict_t * self); +extern void SP_monster_jorg(edict_t * self); +extern void SP_monster_kamikaze(edict_t * self); +extern void SP_monster_knight(edict_t * self); +extern void SP_monster_makron(edict_t * self); +extern void SP_monster_medic(edict_t * self); +extern void SP_monster_morcalavin (edict_t *self); +extern void SP_monster_mssithra (edict_t *self); +extern void SP_monster_mutant(edict_t * self); +extern void SP_monster_ogle (edict_t *self); +extern void SP_monster_ogre(edict_t * self); +extern void SP_monster_palace_plague_guard(edict_t *self); +extern void SP_monster_palace_plague_guard_invisible(edict_t *self); +extern void SP_monster_parasite(edict_t * self); +extern void SP_monster_plagueElf(edict_t *self); +extern void SP_monster_rat (edict_t *self); +extern void SP_monster_rat_giant (edict_t *self); +extern void SP_monster_rotfish(edict_t * self); +extern void SP_monster_seraph_guard (edict_t *self); +extern void SP_monster_seraph_overlord (edict_t *self); +extern void SP_monster_shalrath(edict_t * self); +extern void SP_monster_shambler(edict_t* self); +extern void SP_monster_soldier(edict_t * self); +extern void SP_monster_soldier_h(edict_t * self); +extern void SP_monster_soldier_hypergun(edict_t * self); +extern void SP_monster_soldier_lasergun(edict_t * self); +extern void SP_monster_soldier_light(edict_t * self); +extern void SP_monster_soldier_ripper(edict_t * self); +extern void SP_monster_soldier_ss(edict_t * self); +extern void SP_monster_soldier_x(edict_t * self); +extern void SP_monster_spreader (edict_t *self); +extern void SP_monster_ssithra (edict_t *self); +extern void SP_monster_stalker(edict_t * self); +extern void SP_monster_supertank(edict_t * self); +extern void SP_monster_tank(edict_t * self); +extern void SP_monster_tarbaby(edict_t * self); +extern void SP_monster_tcheckrik_female (edict_t *self); +extern void SP_monster_tcheckrik_male (edict_t *self); +extern void SP_monster_tcheckrik_mothers (edict_t *self); +extern void SP_monster_trial_beast (edict_t *self); +extern void SP_monster_turret(edict_t * self); +extern void SP_monster_widow(edict_t * self); +extern void SP_monster_widow2(edict_t * self); +extern void SP_monster_wizard(edict_t * self); +extern void SP_monster_zombie(edict_t * self); extern void SP_obj_andwallhanging(edict_t *ent); extern void SP_obj_banner(edict_t *ent); extern void SP_obj_banneronpole(edict_t *ent); @@ -210,6 +288,10 @@ extern void SP_obj_corpse2(edict_t *self); extern void SP_obj_corpse_ogle(edict_t *self); extern void SP_obj_corpse_ssithra(edict_t *self); extern void SP_obj_dying_elf(edict_t *self); +extern void SP_object_big_fire ( edict_t * ent ) ; +extern void SP_object_campfire ( edict_t * ent ) ; +extern void SP_object_flame1 ( edict_t * ent ) ; +extern void SP_object_repair ( edict_t * ent ) ; extern void SP_obj_eggpan(edict_t *ent); extern void SP_obj_eyeball_jar(edict_t *ent); extern void SP_obj_firepot(edict_t *ent); @@ -231,8 +313,8 @@ extern void SP_obj_jug1(edict_t *ent); extern void SP_obj_kettle(edict_t *ent); extern void SP_obj_lab_parts_container(edict_t *ent); extern void SP_obj_lab_tray(edict_t *ent); -extern void SP_obj_larva(edict_t *ent); extern void SP_obj_larvabrokenegg(edict_t *ent); +extern void SP_obj_larva(edict_t *ent); extern void SP_obj_larvaegg(edict_t *ent); extern void SP_obj_lever1 (edict_t *ent); extern void SP_obj_lever2 (edict_t *ent); @@ -240,9 +322,10 @@ extern void SP_obj_lever3 (edict_t *ent); extern void SP_obj_metalchunk1(edict_t *ent); extern void SP_obj_metalchunk2(edict_t *ent); extern void SP_obj_metalchunk3(edict_t *ent); -extern void SP_obj_minecart(edict_t *ent); extern void SP_obj_minecart2(edict_t *ent); extern void SP_obj_minecart3(edict_t *ent); +extern void SP_obj_minecart(edict_t *ent); +extern void SP_obj_morcalavin_barrier(edict_t *ent); extern void SP_obj_moss1(edict_t *self); extern void SP_obj_moss2(edict_t *self); extern void SP_obj_moss3(edict_t *self); @@ -265,8 +348,8 @@ extern void SP_obj_queenthrone(edict_t *ent); extern void SP_obj_ring_plaque2 (edict_t *ent); extern void SP_obj_rocks1(edict_t *ent); extern void SP_obj_rocks2(edict_t *ent); -extern void SP_obj_rope(edict_t *ent); extern void SP_obj_ropechain (edict_t *ent); +extern void SP_obj_rope(edict_t *ent); extern void SP_obj_scroll(edict_t *ent); extern void SP_obj_seasonglobe(edict_t *ent); extern void SP_obj_shovel(edict_t *ent); @@ -281,8 +364,8 @@ extern void SP_obj_stalactite3(edict_t *ent); extern void SP_obj_stalagmite1(edict_t *ent); extern void SP_obj_stalagmite2(edict_t *ent); extern void SP_obj_stalagmite3(edict_t *ent); -extern void SP_obj_statue_corvus (edict_t *ent); extern void SP_obj_statue_boulderfish (edict_t *ent); +extern void SP_obj_statue_corvus (edict_t *ent); extern void SP_obj_statue_dolphin1(edict_t *ent); extern void SP_obj_statue_dolphin2(edict_t *ent); extern void SP_obj_statue_dolphin3(edict_t *ent); @@ -300,8 +383,8 @@ extern void SP_obj_statue_techeckrikleft (edict_t *self); extern void SP_obj_statue_techeckrikright (edict_t *self); extern void SP_obj_statue_techeckriktomb (edict_t *self); extern void SP_obj_stein(edict_t *ent); -extern void SP_obj_swampflat_top(edict_t *ent); extern void SP_obj_swampflat_bottom(edict_t *ent); +extern void SP_obj_swampflat_top(edict_t *ent); extern void SP_obj_table1(edict_t *ent); extern void SP_obj_table2(edict_t *ent); extern void SP_obj_tapper(edict_t *ent); @@ -311,9 +394,9 @@ extern void SP_obj_torture_ironmaiden (edict_t *ent); extern void SP_obj_torture_rack (edict_t *ent); extern void SP_obj_torture_table (edict_t *ent); extern void SP_obj_torture_wallring (edict_t *ent); -extern void SP_obj_tree(edict_t *ent); extern void SP_obj_tree2(edict_t *ent); extern void SP_obj_tree3(edict_t *ent); +extern void SP_obj_tree(edict_t *ent); extern void SP_obj_treefallen(edict_t *ent); extern void SP_obj_treestump(edict_t *ent); extern void SP_obj_treetall(edict_t *ent); @@ -322,23 +405,84 @@ extern void SP_obj_urn (edict_t *ent); extern void SP_obj_venusflytrap(edict_t *ent); extern void SP_obj_wallringplaque(edict_t *ent); extern void SP_obj_web(edict_t *ent); -extern void SP_obj_wheelbarrow(edict_t *ent); extern void SP_obj_wheelbarrowdamaged(edict_t *ent); +extern void SP_obj_wheelbarrow(edict_t *ent); extern void SP_obj_woodpile(edict_t *ent); -extern void SP_obj_morcalavin_barrier(edict_t *ent); -extern void SP_flamethrower(edict_t *ent); -extern void SP_item_spitter(edict_t *ent); -// shrine stuff -extern void shrine_heal (edict_t *ent); -extern void shrine_armor (edict_t *ent); -extern void shrine_armor_gold (edict_t *ent); -extern void shrine_staff (edict_t *ent); -extern void shrine_lung (edict_t *ent); -extern void shrine_light (edict_t *ent); -extern void shrine_mana (edict_t *ent); -extern void shrine_ghost (edict_t *ent); -extern void shrine_reflect (edict_t *ent); -extern void shrine_powerup (edict_t *ent); -extern void shrine_random (edict_t *ent); -extern void shrine_speed (edict_t *ent); +extern void SP_path_corner(edict_t * self); +extern void SP_point_combat(edict_t * self); +extern void SP_rotating_light(edict_t * self); extern void SP_script_runner (edict_t *ent); +extern void SP_sound_ambient_andoria (edict_t *ent); +extern void SP_sound_ambient_cloudfortress (edict_t *ent); +extern void SP_sound_ambient_hive (edict_t *ent); +extern void SP_sound_ambient_mine (edict_t *ent); +extern void SP_sound_ambient_silverspring (edict_t *ent); +extern void SP_sound_ambient_swampcanyon (edict_t *ent); +extern void SP_target_actor(edict_t * self); +extern void SP_target_anger(edict_t * self); +extern void SP_target_blacklight ( edict_t * ent ) ; +extern void SP_target_blaster(edict_t * self); +extern void SP_target_camera(edict_t* self); +extern void SP_target_changelevel ( edict_t * ent ) ; +extern void SP_target_character(edict_t * self); +extern void SP_target_crosslevel_target(edict_t * self); +extern void SP_target_crosslevel_trigger(edict_t * self); +extern void SP_target_earthquake(edict_t * self); +extern void SP_target_explosion ( edict_t * ent ) ; +extern void SP_target_goal ( edict_t * ent ) ; +extern void SP_target_gravity (edict_t * self); +extern void SP_target_help ( edict_t * ent ) ; +extern void SP_target_killplayers(edict_t * self); +extern void SP_target_laser(edict_t * self); +extern void SP_target_lightramp(edict_t * self); +extern void SP_target_mal_laser(edict_t * self); +extern void SP_target_music(edict_t * self); +extern void SP_target_orb ( edict_t * ent ) ; +extern void SP_target_secret ( edict_t * ent ) ; +extern void SP_target_sky(edict_t * self); +extern void SP_target_soundfx(edict_t * self); +extern void SP_target_spawner(edict_t * self); +extern void SP_target_speaker ( edict_t * ent ) ; +extern void SP_target_splash(edict_t * self); +extern void SP_target_steam(edict_t * self); +extern void SP_target_string(edict_t * self); +extern void SP_target_temp_entity ( edict_t * ent ) ; +extern void SP_trigger_Activate(edict_t *self); +extern void SP_trigger_always ( edict_t * ent ) ; +extern void SP_trigger_counter(edict_t * self); +extern void SP_trigger_Damage(edict_t *self); +extern void SP_trigger_Deactivate(edict_t *self); +extern void SP_trigger_disguise(edict_t * self); +extern void SP_trigger_elevator(edict_t * self); +extern void SP_trigger_endgame(edict_t *self); +extern void SP_trigger_farclip (edict_t *ent); +extern void SP_trigger_flashlight(edict_t * self); +extern void SP_trigger_fogdensity(edict_t *self); +extern void SP_trigger_goto_buoy(edict_t *self); +extern void SP_trigger_gravity(edict_t * self); +extern void SP_trigger_hurt(edict_t * self); +extern void SP_trigger_key(edict_t * self); +extern void SP_trigger_lightning (edict_t *ent); +extern void SP_trigger_mappercentage(edict_t *self); +extern void SP_trigger_mission_give(edict_t *self); +extern void SP_trigger_mission_take(edict_t *self); +extern void SP_trigger_monsterjump(edict_t * self); +extern void SP_trigger_multiple ( edict_t * ent ) ; +extern void SP_trigger_once ( edict_t * ent ) ; +extern void SP_trigger_PlayerPushButton (edict_t *ent); +extern void SP_trigger_PlayerPushLever (edict_t *ent); +extern void SP_trigger_PlayerUsePuzzle (edict_t *ent); +extern void SP_trigger_push(edict_t * self); +extern void SP_trigger_puzzle (edict_t *ent); +extern void SP_trigger_quake (edict_t *ent); +extern void SP_trigger_quit_to_menu(edict_t *self); +extern void SP_trigger_Relay (edict_t *ent); +extern void SP_trigger_relay(edict_t * self); +extern void SP_trigger_teleport(edict_t * self); +extern void SP_turret_base(edict_t * self); +extern void SP_turret_breach(edict_t * self); +extern void SP_turret_driver(edict_t * self); +extern void SP_turret_invisible_brain(edict_t * self); +extern void SP_viewthing ( edict_t * ent ) ; +extern void SP_worldspawn ( edict_t * ent ) ; +extern void SP_xatrix_item(edict_t * self); diff --git a/src/game/savegame/tables/spawnfunc_list.h b/src/game/savegame/tables/spawnfunc_list.h index 147f1feb9..295a23a4b 100644 --- a/src/game/savegame/tables/spawnfunc_list.h +++ b/src/game/savegame/tables/spawnfunc_list.h @@ -44,10 +44,10 @@ {"func_object", SP_func_object,-1}, {"func_timer", SP_func_timer,-1}, {"trigger_Activate", SP_trigger_Activate,CID_TRIGGER}, -{"trigger_always", SP_trigger_Always,CID_TRIGGER}, +{"trigger_always", SP_trigger_always,CID_TRIGGER}, {"trigger_Damage", SP_trigger_Damage,CID_TRIG_DAMAGE}, {"trigger_Deactivate", SP_trigger_Deactivate,CID_TRIGGER}, -{"trigger_counter", SP_trigger_Counter,CID_TRIGGER}, +{"trigger_counter", SP_trigger_counter,CID_TRIGGER}, {"trigger_elevator", SP_trigger_elevator,CID_TRIGGER}, // {"trigger_flamethrower", SP_trigger_flamethrower,CID_TRIGGER}, {"trigger_fogdensity", SP_trigger_fogdensity,CID_TRIGGER}, @@ -59,13 +59,13 @@ {"trigger_mission_take", SP_trigger_mission_take,CID_TRIGGER}, {"trigger_monsterjump", SP_trigger_monsterjump,-1}, {"trigger_goto_buoy", SP_trigger_goto_buoy,-1}, -{"trigger_multiple", SP_trigger_Multiple,CID_TRIGGER}, +{"trigger_multiple", SP_trigger_multiple,CID_TRIGGER}, {"trigger_playerpushbutton", SP_trigger_PlayerPushButton,CID_TRIGGER}, {"trigger_playerpushlever", SP_trigger_PlayerPushLever,CID_TRIGGER}, {"trigger_playerusepuzzle", SP_trigger_PlayerUsePuzzle,CID_TRIGGER}, {"trigger_push", SP_trigger_push,CID_TRIG_PUSH}, {"trigger_puzzle", SP_trigger_puzzle,CID_TRIGGER}, -{"trigger_once", SP_trigger_Once,CID_TRIGGER}, +{"trigger_once", SP_trigger_once,CID_TRIGGER}, {"trigger_quake", SP_trigger_quake,CID_TRIGGER}, {"trigger_relay", SP_trigger_Relay,CID_TRIGGER}, {"trigger_farclip", SP_trigger_farclip,CID_TRIGGER}, diff --git a/stuff/models/entity.dat b/stuff/models/entity.dat index b66411f8f..e1b47a645 100644 --- a/stuff/models/entity.dat +++ b/stuff/models/entity.dat @@ -372,7 +372,7 @@ item_cashbaglarge|models/pu_icon/money/money_lg.md2|1.0|1.0|1.0|general|-16.0|-1 item_cashbagsmall|models/pu_icon/money/money_sm.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Cash the player can pick up.|0.3|0.3|1.0 item_cashroll|models/pu_icon/cash/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Cash the player can pick up.|0.3|0.3|1.0 item_coil|models/pu_icon/coil/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Pickup item: coil ('Coil').|0.3|0.3|1.0 -item_flashlight|models/items/silencer/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Flashlight|0.3|1.0|1.0 +item_flashlight|models/items/flashlight/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Flashlight|0.3|1.0|1.0 item_health_lg|models/pu_icon/health/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Health : large medicine bag.|0.3|0.3|1.0 item_health_sm|models/pu_icon/health_s/tris.md2|1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Health : small medkit.|0.3|0.3|1.0 item_jetpack||1.0|1.0|1.0|general|-16.0|-16.0|-16.0|16.0|16.0|16.0|shadow|0|0.0|0.0|0|0|0|0:0|0|0|none|Pickup item: jetpack ('Jetpack'). No model and broken code.|0.3|0.3|1.0