Fixed EMP Nuke not working on beta class Gladiator in missionpack DLL.

Added function monster_fire_phalanx() in g_monster.c in missionpack DLL.
Renamed monster_dabeam() function to monster_fire_dabeam() in g_monster.c in missionpack DLL.
Renamed "plasma" functions for phalanx cannon to "phalanx_plasma" in g_weapon.c in missionpack DLL.
Removed unused heat_think() function in g_weapon.c in missionpack DLL.
Removed unused Q1TeleportSounds2() function in g_utils_q1.c in missionpack DLL.
This commit is contained in:
Knightmare66 2021-03-15 17:30:02 -04:00
parent d74c17da6f
commit 40571031c3
15 changed files with 127 additions and 213 deletions

View file

@ -1632,13 +1632,13 @@ extern void SP_trap ( edict_t * trap ) ;
extern void trap_delayed_start ( edict_t * trap ) ; extern void trap_delayed_start ( edict_t * trap ) ;
extern void fire_trap ( edict_t * self , vec3_t start , vec3_t aimdir , int damage , int speed , float timer , float damage_radius , qboolean held ) ; extern void fire_trap ( edict_t * self , vec3_t start , vec3_t aimdir , int damage , int speed , float timer , float damage_radius , qboolean held ) ;
extern void Trap_Think ( edict_t * ent ) ; extern void Trap_Think ( edict_t * ent ) ;
extern void SP_plasma ( edict_t * plasma ) ; extern void SP_phalanx_plasma ( edict_t * ph_plasma ) ;
extern void plasma_delayed_start ( edict_t * plasma ) ; extern void phalanx_plasma_delayed_start ( edict_t * ph_plasma ) ;
extern void fire_plasma ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , float damage_radius , int radius_damage ) ; extern void fire_phalanx_plasma ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , float damage_radius , int radius_damage ) ;
extern void plasma_touch ( edict_t * ent , edict_t * other , cplane_t * plane , csurface_t * surf ) ; extern void plasma_touch ( edict_t * ent , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
extern void phalanx_plasma_touch ( edict_t * ent , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
extern void fire_rocket_heat ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , float damage_radius , int radius_damage ) ; extern void fire_rocket_heat ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , float damage_radius , int radius_damage ) ;
extern void rocket_heat_think ( edict_t * self ) ; extern void rocket_heat_think ( edict_t * self ) ;
extern void heat_think ( edict_t * self ) ;
extern void SP_ion ( edict_t * ion ) ; extern void SP_ion ( edict_t * ion ) ;
extern void ion_delayed_start ( edict_t * ion ) ; extern void ion_delayed_start ( edict_t * ion ) ;
extern void fire_ionripper ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int effect ) ; extern void fire_ionripper ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int effect ) ;
@ -1693,7 +1693,6 @@ extern void vehicle_disengage ( edict_t * vehicle ) ;
extern void vehicle_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ; extern void vehicle_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
extern void vehicle_blocked ( edict_t * self , edict_t * other ) ; extern void vehicle_blocked ( edict_t * self , edict_t * other ) ;
extern void func_vehicle_explode ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ; extern void func_vehicle_explode ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
extern void Q1TeleportSounds2 ( edict_t * ent1 , edict_t * ent2 ) ;
extern void Q1TeleportSounds ( edict_t * ent ) ; extern void Q1TeleportSounds ( edict_t * ent ) ;
extern float PointDist ( vec3_t x , vec3_t y ) ; extern float PointDist ( vec3_t x , vec3_t y ) ;
extern qboolean UseRegularGoodGuyFlag ( edict_t * monster ) ; extern qboolean UseRegularGoodGuyFlag ( edict_t * monster ) ;
@ -2276,7 +2275,8 @@ extern void monster_fire_plasma_rifle ( edict_t * self , vec3_t start , vec3_t d
extern void monster_fire_heat ( edict_t * self , vec3_t start , vec3_t dir , vec3_t offset , int damage , int kick , int flashtype ) ; extern void monster_fire_heat ( edict_t * self , vec3_t start , vec3_t dir , vec3_t offset , int damage , int kick , int flashtype ) ;
extern void monster_fire_tracker ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , edict_t * enemy , int flashtype ) ; extern void monster_fire_tracker ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , edict_t * enemy , int flashtype ) ;
extern void monster_fire_blaster2 ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype , int effect ) ; extern void monster_fire_blaster2 ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype , int effect ) ;
extern void monster_dabeam ( edict_t * self ) ; extern void monster_fire_phalanx ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , float damage_radius , int radius_damage , int flashtype ) ;
extern void monster_fire_dabeam ( edict_t * self ) ;
extern void dabeam_hit ( edict_t * self ) ; extern void dabeam_hit ( edict_t * self ) ;
extern void monster_fire_rocket_heat ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype ) ; extern void monster_fire_rocket_heat ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype ) ;
extern void monster_fire_ionripper ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype , int effect ) ; extern void monster_fire_ionripper ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , int flashtype , int effect ) ;

View file

@ -1632,13 +1632,13 @@
{"trap_delayed_start", (byte *)trap_delayed_start}, {"trap_delayed_start", (byte *)trap_delayed_start},
{"fire_trap", (byte *)fire_trap}, {"fire_trap", (byte *)fire_trap},
{"Trap_Think", (byte *)Trap_Think}, {"Trap_Think", (byte *)Trap_Think},
{"SP_plasma", (byte *)SP_plasma}, {"SP_phalanx_plasma", (byte *)SP_phalanx_plasma},
{"plasma_delayed_start", (byte *)plasma_delayed_start}, {"phalanx_plasma_delayed_start", (byte *)phalanx_plasma_delayed_start},
{"fire_plasma", (byte *)fire_plasma}, {"fire_phalanx_plasma", (byte *)fire_phalanx_plasma},
{"plasma_touch", (byte *)plasma_touch}, {"plasma_touch", (byte *)plasma_touch},
{"phalanx_plasma_touch", (byte *)phalanx_plasma_touch},
{"fire_rocket_heat", (byte *)fire_rocket_heat}, {"fire_rocket_heat", (byte *)fire_rocket_heat},
{"rocket_heat_think", (byte *)rocket_heat_think}, {"rocket_heat_think", (byte *)rocket_heat_think},
{"heat_think", (byte *)heat_think},
{"SP_ion", (byte *)SP_ion}, {"SP_ion", (byte *)SP_ion},
{"ion_delayed_start", (byte *)ion_delayed_start}, {"ion_delayed_start", (byte *)ion_delayed_start},
{"fire_ionripper", (byte *)fire_ionripper}, {"fire_ionripper", (byte *)fire_ionripper},
@ -1693,7 +1693,6 @@
{"vehicle_touch", (byte *)vehicle_touch}, {"vehicle_touch", (byte *)vehicle_touch},
{"vehicle_blocked", (byte *)vehicle_blocked}, {"vehicle_blocked", (byte *)vehicle_blocked},
{"func_vehicle_explode", (byte *)func_vehicle_explode}, {"func_vehicle_explode", (byte *)func_vehicle_explode},
{"Q1TeleportSounds2", (byte *)Q1TeleportSounds2},
{"Q1TeleportSounds", (byte *)Q1TeleportSounds}, {"Q1TeleportSounds", (byte *)Q1TeleportSounds},
{"PointDist", (byte *)PointDist}, {"PointDist", (byte *)PointDist},
{"UseRegularGoodGuyFlag", (byte *)UseRegularGoodGuyFlag}, {"UseRegularGoodGuyFlag", (byte *)UseRegularGoodGuyFlag},
@ -2276,7 +2275,8 @@
{"monster_fire_heat", (byte *)monster_fire_heat}, {"monster_fire_heat", (byte *)monster_fire_heat},
{"monster_fire_tracker", (byte *)monster_fire_tracker}, {"monster_fire_tracker", (byte *)monster_fire_tracker},
{"monster_fire_blaster2", (byte *)monster_fire_blaster2}, {"monster_fire_blaster2", (byte *)monster_fire_blaster2},
{"monster_dabeam", (byte *)monster_dabeam}, {"monster_fire_phalanx", (byte *)monster_fire_phalanx},
{"monster_fire_dabeam", (byte *)monster_fire_dabeam},
{"dabeam_hit", (byte *)dabeam_hit}, {"dabeam_hit", (byte *)dabeam_hit},
{"monster_fire_rocket_heat", (byte *)monster_fire_rocket_heat}, {"monster_fire_rocket_heat", (byte *)monster_fire_rocket_heat},
{"monster_fire_ionripper", (byte *)monster_fire_ionripper}, {"monster_fire_ionripper", (byte *)monster_fire_ionripper},

View file

@ -1249,7 +1249,6 @@ edict_t *findradius2 (edict_t *from, vec3_t org, float rad);
// //
float PointDist (vec3_t x, vec3_t y); float PointDist (vec3_t x, vec3_t y);
void Q1TeleportSounds (edict_t *ent); void Q1TeleportSounds (edict_t *ent);
void Q1TeleportSounds2 (edict_t *ent1, edict_t *ent2);
// //
// g_combat.c // g_combat.c
@ -1371,7 +1370,9 @@ void monster_fire_bfg (edict_t *self, vec3_t start, vec3_t aimdir, int damage, i
void monster_fire_blueblaster (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect); void monster_fire_blueblaster (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect);
void monster_fire_ionripper (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect); void monster_fire_ionripper (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect);
void monster_fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype); void monster_fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype);
void monster_dabeam (edict_t *self); void monster_fire_dabeam (edict_t *self);
// Knightmare added
void monster_fire_phalanx (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, int flashtype);
// ROGUE // ROGUE
void monster_fire_blaster2 (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect); void monster_fire_blaster2 (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect);
@ -1491,7 +1492,7 @@ void fire_plasma_rifle (edict_t *ent, vec3_t start, vec3_t dir, int damage, int
void fire_ionripper (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int effect); void fire_ionripper (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int effect);
void fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage); void fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage);
void fire_blueblaster (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int effect); void fire_blueblaster (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int effect);
void fire_plasma (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage); void fire_phalanx_plasma (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage); // Knightmare- renamed this, was fire_plasma
void fire_trap (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held); void fire_trap (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held);
void Trap_Die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); void Trap_Die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point);
void Cmd_KillTrap_f (edict_t *ent); void Cmd_KillTrap_f (edict_t *ent);
@ -2463,9 +2464,9 @@ struct edict_s
float roll_speed; float roll_speed;
float ideal_yaw; float ideal_yaw;
float ideal_pitch; float ideal_pitch;
float ideal_roll; //roll value for a path_corner float ideal_roll; // roll value for a path_corner
float roll; //roll value for a path_corner float roll; // roll value for a path_corner
int turn_rider; //whether to turn rider int turn_rider; // whether to turn rider
char *common_name; char *common_name;

View file

@ -452,7 +452,7 @@ void ThrowHead (edict_t *self, char *gibname, int frame, int skinnum, int damage
if (self->blood_type == 1) if (self->blood_type == 1)
vscale = 3.0; vscale = 3.0;
else else
vscale = 1.0; //was 0.5 vscale = 1.0; // was 0.5
} }
else else
{ {

View file

@ -368,7 +368,7 @@ void dabeam_hit (edict_t *self)
} }
// RAFAEL // RAFAEL
void monster_dabeam (edict_t *self) void monster_fire_dabeam (edict_t *self)
{ {
vec3_t last_movedir; vec3_t last_movedir;
vec3_t point; vec3_t point;
@ -409,6 +409,26 @@ void monster_dabeam (edict_t *self)
self->svflags &= ~SVF_NOCLIENT; self->svflags &= ~SVF_NOCLIENT;
} }
// Knightmare- this should have been added by Xatrix!
void monster_fire_phalanx (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, int flashtype)
{
// Zaero add
if (EMPNukeCheck(self, start))
{
gi.sound (self, CHAN_AUTO, gi.soundindex("items/empnuke/emp_missfire.wav"), 1, ATTN_NORM, 0);
return;
}
// end Zaero
fire_phalanx_plasma (self, start, dir, damage, speed, damage_radius, radius_damage);
// Don't actually send a muzzleflash here because Xatrix forgot to add one!
/* gi.WriteByte (svc_muzzleflash2);
gi.WriteShort (self - g_edicts);
gi.WriteByte (flashtype);
gi.multicast (start, MULTICAST_PVS); */
}
// ROGUE // ROGUE
void monster_fire_blaster2 (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect) void monster_fire_blaster2 (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int flashtype, int effect)
{ {
@ -1070,7 +1090,7 @@ void monster_triggered_spawn (edict_t *self)
self->s.event = EV_PLAYER_TELEPORT2; self->s.event = EV_PLAYER_TELEPORT2;
#else #else
self->s.event = EV_PLAYER_TELEPORT; self->s.event = EV_PLAYER_TELEPORT;
Q1TeleportSounds(self); Q1TeleportSounds (self);
#endif #endif
} }
// end Knightmare // end Knightmare

View file

@ -125,7 +125,7 @@ field_t fields[] = {
{"prethink", FOFS(prethink), F_FUNCTION, FFL_NOSPAWN}, {"prethink", FOFS(prethink), F_FUNCTION, FFL_NOSPAWN},
{"think", FOFS(think), F_FUNCTION, FFL_NOSPAWN}, {"think", FOFS(think), F_FUNCTION, FFL_NOSPAWN},
{"postthink", FOFS(postthink), F_FUNCTION, FFL_NOSPAWN}, //Knightmare added {"postthink", FOFS(postthink), F_FUNCTION, FFL_NOSPAWN}, // Knightmare added
{"blocked", FOFS(blocked), F_FUNCTION, FFL_NOSPAWN}, {"blocked", FOFS(blocked), F_FUNCTION, FFL_NOSPAWN},
{"touch", FOFS(touch), F_FUNCTION, FFL_NOSPAWN}, {"touch", FOFS(touch), F_FUNCTION, FFL_NOSPAWN},
{"use", FOFS(use), F_FUNCTION, FFL_NOSPAWN}, {"use", FOFS(use), F_FUNCTION, FFL_NOSPAWN},

View file

@ -354,7 +354,7 @@ void SP_gekk_loogie (edict_t *self);
void SP_flechette (edict_t *self); void SP_flechette (edict_t *self);
void SP_tracker (edict_t *self); void SP_tracker (edict_t *self);
void SP_ion (edict_t *self); void SP_ion (edict_t *self);
void SP_plasma (edict_t *self); void SP_phalanx_plasma (edict_t *self);
void SP_debris (edict_t *self); void SP_debris (edict_t *self);
void SP_gib (edict_t *self); void SP_gib (edict_t *self);
void SP_gibhead (edict_t *self); void SP_gibhead (edict_t *self);
@ -749,7 +749,7 @@ spawn_t spawns[] = {
{"flechette", SP_flechette}, {"flechette", SP_flechette},
{"tracker", SP_tracker}, {"tracker", SP_tracker},
{"ion", SP_ion}, {"ion", SP_ion},
{"plasma", SP_plasma}, {"phalanx_plasma", SP_phalanx_plasma},
{"debris", SP_debris}, {"debris", SP_debris},
{"gib", SP_gib}, {"gib", SP_gib},
{"gibhead", SP_gibhead}, {"gibhead", SP_gibhead},
@ -1332,7 +1332,6 @@ qboolean ED_ParseEntityAlias (char *data, edict_t *ent)
return alias_loaded; return alias_loaded;
} }
/* /*
============================================================================== ==============================================================================
END ALIAS SCRIPT LOADING END ALIAS SCRIPT LOADING
@ -1352,7 +1351,7 @@ char *ED_ParseEdict (char *data, edict_t *ent)
qboolean init; qboolean init;
char keyname[256]; char keyname[256];
char *com_token; char *com_token;
//Knightmare added // Knightmare added
qboolean alias_loaded = false; qboolean alias_loaded = false;
init = false; init = false;
@ -1805,10 +1804,10 @@ void SpawnEntities (char *mapname, char *entities, char *spawnpoint)
#ifdef KMQUAKE2_ENGINE_MOD // use new engine function instead #ifdef KMQUAKE2_ENGINE_MOD // use new engine function instead
gi.FreeFile(alias_data); gi.FreeFile(alias_data);
#else #else
// if (alias_from_pak) // if (alias_from_pak)
gi.TagFree(alias_data); gi.TagFree(alias_data);
// else // else
// free(&alias_data); // free(&alias_data);
#endif #endif
} }

View file

@ -28,33 +28,3 @@ void Q1TeleportSounds (edict_t *ent)
gi.sound (ent, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele5.wav"), 1, ATTN_NORM, 0); gi.sound (ent, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele5.wav"), 1, ATTN_NORM, 0);
} }
void Q1TeleportSounds2 (edict_t *ent1, edict_t *ent2)
{
float sound = random();
if(sound < 0.2)
{
gi.sound (ent1, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele1.wav"), 1, ATTN_NORM, 0);
gi.sound (ent2, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele1.wav"), 1, ATTN_NORM, 0);
}
else if (sound < 0.4)
{
gi.sound (ent1, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele2.wav"), 1, ATTN_NORM, 0);
gi.sound (ent2, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele2.wav"), 1, ATTN_NORM, 0);
}
else if (sound < 0.6)
{
gi.sound (ent1, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele3.wav"), 1, ATTN_NORM, 0);
gi.sound (ent2, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele3.wav"), 1, ATTN_NORM, 0);
}
else if (sound < 0.8)
{
gi.sound (ent1, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele4.wav"), 1, ATTN_NORM, 0);
gi.sound (ent2, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele4.wav"), 1, ATTN_NORM, 0);
}
else
{
gi.sound (ent1, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele5.wav"), 1, ATTN_NORM, 0);
gi.sound (ent2, CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("q1world/teleport/r_tele5.wav"), 1, ATTN_NORM, 0);
}
}

View file

@ -2225,88 +2225,10 @@ void SP_ion (edict_t *ion)
gi.linkentity(ion); gi.linkentity(ion);
} }
// ROGUE
/*
fire_heat
*/
void heat_think (edict_t *self)
{
edict_t *target = NULL;
edict_t *aquire = NULL;
vec3_t vec;
vec3_t oldang;
int len;
int oldlen = 0;
VectorClear (vec);
// aquire new target
while (( target = findradius (target, self->s.origin, 1024)) != NULL)
{
if (self->owner == target)
continue;
if (!target->svflags & SVF_MONSTER)
continue;
if (!target->client)
continue;
if (target->health <= 0)
continue;
if (!visible (self, target))
continue;
// if we need to reduce the tracking cone
/*
{
vec3_t vec;
float dot;
vec3_t forward;
AngleVectors (self->s.angles, forward, NULL, NULL);
VectorSubtract (target->s.origin, self->s.origin, vec);
VectorNormalize (vec);
dot = DotProduct (vec, forward);
if (dot > 0.6)
continue;
}
*/
if (!infront (self, target))
continue;
VectorSubtract (self->s.origin, target->s.origin, vec);
len = VectorLength (vec);
if (aquire == NULL || len < oldlen)
{
aquire = target;
self->target_ent = aquire;
oldlen = len;
}
}
if (aquire != NULL)
{
VectorCopy (self->s.angles, oldang);
VectorSubtract (aquire->s.origin, self->s.origin, vec);
vectoangles (vec, self->s.angles);
VectorNormalize (vec);
VectorCopy (vec, self->movedir);
VectorScale (vec, 500, self->velocity);
}
self->nextthink = level.time + 0.1;
}
// NOTE: the new Rogue fire_heat is in g_newweap.c // NOTE: the new Rogue fire_heat is in g_newweap.c
/* /*
fire_rocket_heat fire_rocket_heat
*/ */
void rocket_heat_think (edict_t *self) void rocket_heat_think (edict_t *self)
{ {
edict_t *target = NULL; edict_t *target = NULL;
@ -2399,7 +2321,7 @@ void fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int
heat->s.renderfx |= RF_NOSHADOW; //Knightmare- no shadow heat->s.renderfx |= RF_NOSHADOW; //Knightmare- no shadow
VectorClear (heat->mins); VectorClear (heat->mins);
VectorClear (heat->maxs); VectorClear (heat->maxs);
//heat->s.modelindex = gi.modelindex ("models/objects/hrocket/tris.md2"); // heat->s.modelindex = gi.modelindex ("models/objects/hrocket/tris.md2");
heat->s.modelindex = gi.modelindex ("models/objects/rocket/tris.md2"); heat->s.modelindex = gi.modelindex ("models/objects/rocket/tris.md2");
heat->s.skinnum = 1; heat->s.skinnum = 1;
heat->owner = self; heat->owner = self;
@ -2420,12 +2342,10 @@ void fire_rocket_heat (edict_t *self, vec3_t start, vec3_t dir, int damage, int
} }
// RAFAEL // RAFAEL
/* /*
fire_plasma fire_phalanx_plasma
*/ */
void phalanx_plasma_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf)
void plasma_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf)
{ {
vec3_t origin; vec3_t origin;
@ -2463,88 +2383,93 @@ void plasma_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *su
G_FreeEdict (ent); G_FreeEdict (ent);
} }
// Knightmare- remove this after the next savegame version increment!
// RAFAEL void plasma_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf)
void fire_plasma (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage)
{ {
edict_t *plasma; phalanx_plasma_touch (ent, other, plane, surf);
plasma = G_Spawn();
plasma->classname = "plasma";
plasma->class_id = ENTITY_PLASMA;
VectorCopy (start, plasma->s.origin);
VectorCopy (dir, plasma->movedir);
vectoangles (dir, plasma->s.angles);
VectorScale (dir, speed, plasma->velocity);
plasma->movetype = MOVETYPE_FLYMISSILE;
plasma->clipmask = MASK_SHOT;
plasma->solid = SOLID_BBOX;
VectorClear (plasma->mins);
VectorClear (plasma->maxs);
plasma->owner = self;
plasma->touch = plasma_touch;
plasma->nextthink = level.time + 8000.0f/speed;
plasma->think = G_FreeEdict;
plasma->dmg = damage;
plasma->radius_dmg = radius_damage;
plasma->dmg_radius = damage_radius;
plasma->s.sound = gi.soundindex ("weapons/rockfly.wav");
plasma->s.modelindex = gi.modelindex ("sprites/s_photon.sp2");
plasma->s.effects |= EF_PLASMA | EF_ANIM_ALLFAST;
plasma->s.renderfx |= RF_FULLBRIGHT;
if (self->client)
check_dodge (self, plasma->s.origin, dir, speed);
gi.linkentity (plasma);
} }
// NOTE: SP_plasma should ONLY be used to spawn phalanx magslugs that change maps // RAFAEL
void fire_phalanx_plasma (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage)
{
edict_t *ph_plasma;
ph_plasma = G_Spawn();
ph_plasma->classname = "phalanx_plasma";
ph_plasma->class_id = ENTITY_PLASMA;
VectorCopy (start, ph_plasma->s.origin);
VectorCopy (dir, ph_plasma->movedir);
vectoangles (dir, ph_plasma->s.angles);
VectorScale (dir, speed, ph_plasma->velocity);
ph_plasma->movetype = MOVETYPE_FLYMISSILE;
ph_plasma->clipmask = MASK_SHOT;
ph_plasma->solid = SOLID_BBOX;
VectorClear (ph_plasma->mins);
VectorClear (ph_plasma->maxs);
ph_plasma->owner = self;
ph_plasma->touch = phalanx_plasma_touch;
ph_plasma->nextthink = level.time + 8000.0f/speed;
ph_plasma->think = G_FreeEdict;
ph_plasma->dmg = damage;
ph_plasma->radius_dmg = radius_damage;
ph_plasma->dmg_radius = damage_radius;
ph_plasma->s.sound = gi.soundindex ("weapons/rockfly.wav");
ph_plasma->s.modelindex = gi.modelindex ("sprites/s_photon.sp2");
ph_plasma->s.effects |= EF_PLASMA | EF_ANIM_ALLFAST;
ph_plasma->s.renderfx |= RF_FULLBRIGHT;
if (self->client)
check_dodge (self, ph_plasma->s.origin, dir, speed);
gi.linkentity (ph_plasma);
}
// NOTE: SP_phalanx_plasma should ONLY be used to spawn phalanx magslugs that change maps
// via a trigger_transition. It should NOT be used for map entities. // via a trigger_transition. It should NOT be used for map entities.
void plasma_delayed_start (edict_t *plasma) void phalanx_plasma_delayed_start (edict_t *ph_plasma)
{ {
if (g_edicts[1].linkcount) if (g_edicts[1].linkcount)
{ {
VectorScale(plasma->movedir, plasma->moveinfo.speed, plasma->velocity); VectorScale(ph_plasma->movedir, ph_plasma->moveinfo.speed, ph_plasma->velocity);
plasma->nextthink = level.time + 8000/plasma->moveinfo.speed; ph_plasma->nextthink = level.time + 8000.0f / ph_plasma->moveinfo.speed;
plasma->think = G_FreeEdict; ph_plasma->think = G_FreeEdict;
gi.linkentity(plasma); gi.linkentity(ph_plasma);
} }
else else
plasma->nextthink = level.time + FRAMETIME; ph_plasma->nextthink = level.time + FRAMETIME;
} }
void SP_plasma (edict_t *plasma) void SP_phalanx_plasma (edict_t *ph_plasma)
{ {
vec3_t dir; vec3_t dir;
plasma->s.modelindex = gi.modelindex ("sprites/s_photon.sp2"); ph_plasma->s.modelindex = gi.modelindex ("sprites/s_photon.sp2");
plasma->s.effects |= EF_PLASMA | EF_ANIM_ALLFAST; ph_plasma->s.effects |= EF_PLASMA | EF_ANIM_ALLFAST;
plasma->s.sound = gi.soundindex ("weapons/rockfly.wav"); ph_plasma->s.sound = gi.soundindex ("weapons/rockfly.wav");
plasma->touch = plasma_touch; ph_plasma->touch = phalanx_plasma_touch;
AngleVectors(plasma->s.angles, dir, NULL, NULL); AngleVectors(ph_plasma->s.angles, dir, NULL, NULL);
VectorCopy (dir, plasma->movedir); VectorCopy (dir, ph_plasma->movedir);
plasma->moveinfo.speed = VectorLength(plasma->velocity); ph_plasma->moveinfo.speed = VectorLength(ph_plasma->velocity);
if (plasma->moveinfo.speed <= 0) if (ph_plasma->moveinfo.speed <= 0)
plasma->moveinfo.speed = 650; ph_plasma->moveinfo.speed = 650;
// For SP, freeze plasma until player spawns in // For SP, freeze plasma until player spawns in
if (game.maxclients == 1) if (game.maxclients == 1)
{ {
VectorClear(plasma->velocity); VectorClear(ph_plasma->velocity);
plasma->think = plasma_delayed_start; ph_plasma->think = phalanx_plasma_delayed_start;
plasma->nextthink = level.time + FRAMETIME; ph_plasma->nextthink = level.time + FRAMETIME;
} }
else else
{ {
plasma->think = G_FreeEdict; ph_plasma->think = G_FreeEdict;
plasma->nextthink = level.time + 8000/plasma->moveinfo.speed; ph_plasma->nextthink = level.time + 8000.0f / ph_plasma->moveinfo.speed;
} }
gi.linkentity (plasma); gi.linkentity (ph_plasma);
} }
// RAFAEL // RAFAEL
@ -2593,7 +2518,7 @@ extern int lastgibframe;
// Knightmare- forget this, enough gibs are spawned already // Knightmare- forget this, enough gibs are spawned already
// Lazarus: Prevent gib showers from causing SZ_GetSpace: overflow // Lazarus: Prevent gib showers from causing SZ_GetSpace: overflow
/*if (level.framenum > lastgibframe) /* if (level.framenum > lastgibframe)
{ {
gibsthisframe = 0; gibsthisframe = 0;
lastgibframe = level.framenum; lastgibframe = level.framenum;
@ -2660,7 +2585,7 @@ extern int lastgibframe;
//best->think = G_FreeEdict; //best->think = G_FreeEdict;
best->think = gib_fade; best->think = gib_fade;
gi.linkentity (best); gi.linkentity (best);
}*/ } */
best = G_Spawn (); best = G_Spawn ();
VectorCopy (ent->s.origin, best->s.origin); VectorCopy (ent->s.origin, best->s.origin);

View file

@ -880,14 +880,14 @@ void actorPhalanx (edict_t *self)
forward[YAW] -= 1.5; forward[YAW] -= 1.5;
VectorNormalize (forward); VectorNormalize (forward);
fire_plasma (self, start, forward, damage, 725, damage_radius, radius_damage); fire_phalanx_plasma (self, start, forward, damage, 725, damage_radius, radius_damage);
} }
else else
{ {
forward[YAW] += 1.5; forward[YAW] += 1.5;
VectorNormalize (forward); VectorNormalize (forward);
fire_plasma (self, start, forward, damage, 725, damage_radius, radius_damage); fire_phalanx_plasma (self, start, forward, damage, 725, damage_radius, radius_damage);
gi.positioned_sound(start,self,CHAN_WEAPON,gi.soundindex("weapons/plasshot.wav"),1,ATTN_NORM,0); gi.positioned_sound(start,self,CHAN_WEAPON,gi.soundindex("weapons/plasshot.wav"),1,ATTN_NORM,0);

View file

@ -669,7 +669,7 @@ void brainbeta_laserbeam (edict_t *self)
ent->enemy = self->enemy; ent->enemy = self->enemy;
ent->owner = self; ent->owner = self;
ent->dmg = 1; ent->dmg = 1;
monster_dabeam (ent); monster_fire_dabeam (ent);
// dis is me left eye // dis is me left eye
ent = G_Spawn (); ent = G_Spawn ();
@ -685,7 +685,7 @@ void brainbeta_laserbeam (edict_t *self)
ent->enemy = self->enemy; ent->enemy = self->enemy;
ent->owner = self; ent->owner = self;
ent->dmg = 1; ent->dmg = 1;
monster_dabeam (ent); monster_fire_dabeam (ent);
} }
void brainbeta_laserbeam_reattack (edict_t *self) void brainbeta_laserbeam_reattack (edict_t *self)

View file

@ -950,7 +950,7 @@ void fixbot_fire_laser (edict_t *self)
ent->enemy = self->enemy; ent->enemy = self->enemy;
ent->owner = self; ent->owner = self;
ent->dmg = -1; ent->dmg = -1;
monster_dabeam (ent); monster_fire_dabeam (ent);
if (self->enemy->health > (self->enemy->mass/10)) if (self->enemy->health > (self->enemy->mass/10))
{ {

View file

@ -169,7 +169,7 @@ void gladbGun (edict_t *self)
VectorSubtract (self->pos1, start, dir); VectorSubtract (self->pos1, start, dir);
VectorNormalize (dir); VectorNormalize (dir);
fire_plasma (self, start, dir, 100, 725, 60, 60); monster_fire_phalanx (self, start, dir, 100, 725, 60, 60, MZ2_GLADIATOR_RAILGUN_1);
} }
void gladbGun_check (edict_t *self) void gladbGun_check (edict_t *self)

View file

@ -2078,8 +2078,7 @@ void soldierh_laserbeam (edict_t *self, int flash_index)
ent->dmg = 2; ent->dmg = 2;
monster_dabeam (ent); monster_fire_dabeam (ent);
} }

View file

@ -2661,7 +2661,7 @@ void weapon_phalanx_fire (edict_t *ent, qboolean altfire)
v[ROLL] = ent->client->v_angle[ROLL]; v[ROLL] = ent->client->v_angle[ROLL];
AngleVectors (v, forward, right, up); AngleVectors (v, forward, right, up);
fire_plasma (ent, start, forward, damage, sk_phalanx_speed->value, damage_radius, radius_damage); fire_phalanx_plasma (ent, start, forward, damage, sk_phalanx_speed->value, damage_radius, radius_damage);
if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) ) if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
ent->client->pers.inventory[ent->client->ammo_index]--; ent->client->pers.inventory[ent->client->ammo_index]--;
@ -2672,7 +2672,7 @@ void weapon_phalanx_fire (edict_t *ent, qboolean altfire)
v[YAW] = ent->client->v_angle[YAW] + 1.5; v[YAW] = ent->client->v_angle[YAW] + 1.5;
v[ROLL] = ent->client->v_angle[ROLL]; v[ROLL] = ent->client->v_angle[ROLL];
AngleVectors (v, forward, right, up); AngleVectors (v, forward, right, up);
fire_plasma (ent, start, forward, damage, sk_phalanx_speed->value, damage_radius, radius_damage); fire_phalanx_plasma (ent, start, forward, damage, sk_phalanx_speed->value, damage_radius, radius_damage);
// send muzzle flash // send muzzle flash
// Knightmare- Gen cam code // Knightmare- Gen cam code