mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-02-16 17:11:03 +00:00
game: Add support of target_gravity, target_soundfx
This commit is contained in:
parent
660412a525
commit
d443fdc092
7 changed files with 97 additions and 3 deletions
|
@ -438,7 +438,7 @@ use_target_explosion(edict_t *self, edict_t *other /* unused */, edict_t *activa
|
|||
{
|
||||
if (!self)
|
||||
{
|
||||
return;
|
||||
return;
|
||||
}
|
||||
self->activator = activator;
|
||||
|
||||
|
@ -1474,6 +1474,90 @@ SP_target_earthquake(edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* QUAKED target_gravity (1 0 0) (-8 -8 -8) (8 8 8) NOTRAIL NOEFFECTS
|
||||
* [Sam-KEX] Changes gravity, as seen in the N64 version
|
||||
*/
|
||||
void
|
||||
use_target_gravity(edict_t *self, edict_t *other, edict_t *activator)
|
||||
{
|
||||
gi.cvar_set("sv_gravity", va("%f", self->gravity));
|
||||
}
|
||||
|
||||
void
|
||||
SP_target_gravity(edict_t* self)
|
||||
{
|
||||
self->use = use_target_gravity;
|
||||
self->gravity = atof(st.gravity);
|
||||
}
|
||||
|
||||
/*
|
||||
* QUAKED target_soundfx (1 0 0) (-8 -8 -8) (8 8 8) NOTRAIL NOEFFECTS
|
||||
* [Sam-KEX] Plays a sound fx, as seen in the N64 version
|
||||
*/
|
||||
void
|
||||
update_target_soundfx(edict_t *self)
|
||||
{
|
||||
gi.positioned_sound(self->s.origin, self, CHAN_VOICE, self->noise_index,
|
||||
self->volume, self->attenuation, 0);
|
||||
}
|
||||
|
||||
void
|
||||
use_target_soundfx(edict_t *self, edict_t *other, edict_t *activator)
|
||||
{
|
||||
self->think = update_target_soundfx;
|
||||
self->nextthink = level.time + self->delay;
|
||||
}
|
||||
|
||||
void
|
||||
SP_target_soundfx(edict_t* self)
|
||||
{
|
||||
if (!self->volume)
|
||||
{
|
||||
self->volume = 1.0;
|
||||
}
|
||||
|
||||
if (!self->attenuation)
|
||||
{
|
||||
self->attenuation = 1.0;
|
||||
}
|
||||
else if (self->attenuation == -1)
|
||||
{
|
||||
/* use -1 so 0 defaults to 1 */
|
||||
self->attenuation = 0;
|
||||
}
|
||||
|
||||
self->noise_index = atoi(st.noise);
|
||||
|
||||
switch(self->noise_index)
|
||||
{
|
||||
case 1:
|
||||
self->noise_index = gi.soundindex("world/x_alarm.wav");
|
||||
break;
|
||||
case 2:
|
||||
self->noise_index = gi.soundindex("world/flyby1.wav");
|
||||
break;
|
||||
case 4:
|
||||
self->noise_index = gi.soundindex("world/amb12.wav");
|
||||
break;
|
||||
case 5:
|
||||
self->noise_index = gi.soundindex("world/amb17.wav");
|
||||
break;
|
||||
case 7:
|
||||
self->noise_index = gi.soundindex("world/bigpump2.wav");
|
||||
break;
|
||||
default:
|
||||
gi.dprintf("%s: unknown noise %d\n", self->classname, self->noise_index);
|
||||
return;
|
||||
}
|
||||
|
||||
self->use = use_target_soundfx;
|
||||
}
|
||||
|
||||
/*
|
||||
* QUAKED target_music (1 0 0) (-8 -8 -8) (8 8 8)
|
||||
* Change music when used
|
||||
*/
|
||||
void
|
||||
target_music_use(edict_t *self, edict_t *other, edict_t *activator)
|
||||
{
|
||||
|
|
|
@ -717,7 +717,7 @@ typedef enum
|
|||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
const char *name;
|
||||
int ofs;
|
||||
fieldtype_t type;
|
||||
int flags;
|
||||
|
|
|
@ -519,7 +519,7 @@ WriteField1(FILE *f, field_t *field, byte *base)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
WriteField2(FILE *f, field_t *field, byte *base)
|
||||
{
|
||||
int len;
|
||||
|
|
|
@ -1439,6 +1439,9 @@ extern void use_target_secret ( edict_t * ent , edict_t * other , edict_t * acti
|
|||
extern void use_target_spawner ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_splash ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_steam ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_soundfx ( edict_t *self, edict_t *other, edict_t *activator ) ;
|
||||
extern void use_target_gravity ( edict_t *self, edict_t *other, edict_t *activator ) ;
|
||||
extern void update_target_soundfx ( edict_t *self);
|
||||
extern void vengeance_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void vengeance_think ( edict_t * self ) ;
|
||||
extern void vengeance_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
|
|
|
@ -1435,6 +1435,9 @@
|
|||
{"use_target_spawner", (byte *)use_target_spawner},
|
||||
{"use_target_splash", (byte *)use_target_splash},
|
||||
{"use_target_steam", (byte *)use_target_steam},
|
||||
{"use_target_gravity", (byte *)use_target_gravity},
|
||||
{"update_target_soundfx", (byte *)update_target_soundfx},
|
||||
{"use_target_soundfx", (byte *)use_target_soundfx},
|
||||
{"vengeance_pain", (byte *)vengeance_pain},
|
||||
{"vengeance_think", (byte *)vengeance_think},
|
||||
{"vengeance_touch", (byte *)vengeance_touch},
|
||||
|
|
|
@ -167,6 +167,7 @@ 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);
|
||||
|
@ -176,6 +177,7 @@ 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);
|
||||
|
|
|
@ -173,6 +173,7 @@
|
|||
{"target_earthquake", SP_target_earthquake},
|
||||
{"target_explosion", SP_target_explosion},
|
||||
{"target_goal", SP_target_goal},
|
||||
{"target_gravity", SP_target_gravity},
|
||||
{"target_help", SP_target_help},
|
||||
{"target_killplayers", SP_target_killplayers},
|
||||
{"target_laser", SP_target_laser},
|
||||
|
@ -180,6 +181,7 @@
|
|||
{"target_mal_laser", SP_target_mal_laser},
|
||||
{"target_music", SP_target_music},
|
||||
{"target_orb", SP_target_orb},
|
||||
{"target_soundfx", SP_target_soundfx},
|
||||
{"target_secret", SP_target_secret},
|
||||
{"target_sky", SP_target_sky},
|
||||
{"target_spawner", SP_target_spawner},
|
||||
|
|
Loading…
Reference in a new issue