mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-04-11 12:40:45 +00:00
game: Add support health_multiplier from ReRelaes
Based on: * https://github.com/id-Software/quake2-rerelease-dll.git
This commit is contained in:
parent
5518640473
commit
0c6c51f903
49 changed files with 72 additions and 60 deletions
|
@ -158,6 +158,7 @@ Goals:
|
|||
* [ ] Support textures/*/*_glow.png load from ReRelease,
|
||||
* [ ] Support tactile/*/*.bnvib/.wav feedback load from ReRelease,
|
||||
* [ ] Fix physics with incorrect floor height in psx/base0.bsp,
|
||||
* [ ] Fix statusbar for DoD `roarke`,
|
||||
* [x] Fix strange white flying boxes in psx/base0.bsp,
|
||||
* [x] RGB particles support instead palette based one,
|
||||
* [x] Get rid of VID_PaletteColor client internal api use,
|
||||
|
|
|
@ -303,6 +303,11 @@ ED_CallSpawn(edict_t *ent)
|
|||
ent->gravityVector[1] = 0.0;
|
||||
ent->gravityVector[2] = -1.0;
|
||||
|
||||
if (st.health_multiplier <= 0)
|
||||
{
|
||||
st.health_multiplier = 1.0;
|
||||
}
|
||||
|
||||
if (!strcmp(ent->classname, "weapon_nailgun"))
|
||||
{
|
||||
ent->classname = (FindItem("ETF Rifle"))->classname;
|
||||
|
|
|
@ -421,6 +421,7 @@ typedef struct
|
|||
|
||||
/* Addional fields for models */
|
||||
vec3_t scale;
|
||||
float health_multiplier;
|
||||
} spawn_temp_t;
|
||||
|
||||
typedef struct
|
||||
|
|
|
@ -478,10 +478,11 @@ void actor_use (edict_t *self, edict_t *other, edict_t *activator)
|
|||
}
|
||||
|
||||
|
||||
/*QUAKED misc_actor (1 .5 0) (-16 -16 -24) (16 16 32)
|
||||
*/
|
||||
|
||||
void SP_misc_actor (edict_t *self)
|
||||
/*
|
||||
* QUAKED misc_actor (1 .5 0) (-16 -16 -24) (16 16 32)
|
||||
*/
|
||||
void
|
||||
SP_misc_actor(edict_t *self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
|
@ -510,7 +511,10 @@ void SP_misc_actor (edict_t *self)
|
|||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
if (!self->health)
|
||||
self->health = 100;
|
||||
{
|
||||
self->health = 100 * st.health_multiplier;
|
||||
}
|
||||
|
||||
self->mass = 200;
|
||||
|
||||
self->pain = actor_pain;
|
||||
|
|
|
@ -554,7 +554,7 @@ SP_monster_arachnid(edict_t *self)
|
|||
sound_die = gi.soundindex("arachnid/death.wav");
|
||||
sound_sight = gi.soundindex("arachnid/sight.wav");
|
||||
|
||||
self->health = 1000;
|
||||
self->health = 1000 * st.health_multiplier;
|
||||
self->gib_health = -200;
|
||||
|
||||
self->mass = 450;
|
||||
|
|
|
@ -364,7 +364,7 @@ SP_monster_army(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/army/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 30;
|
||||
self->health = 30 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("army/death1.wav");
|
||||
sound_search = gi.soundindex("army/idle.wav");
|
||||
|
|
|
@ -819,7 +819,7 @@ SP_monster_berserk(edict_t *self)
|
|||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 240;
|
||||
self->health = 240 * st.health_multiplier;
|
||||
self->gib_health = -60;
|
||||
self->mass = 250;
|
||||
|
||||
|
|
|
@ -889,7 +889,7 @@ SP_monster_boss2(edict_t *self)
|
|||
VectorSet(self->mins, -56, -56, 0);
|
||||
VectorSet(self->maxs, 56, 56, 80);
|
||||
|
||||
self->health = 2000;
|
||||
self->health = 2000 * st.health_multiplier;
|
||||
self->gib_health = -200;
|
||||
self->mass = 1000;
|
||||
|
||||
|
|
|
@ -919,7 +919,7 @@ SP_monster_jorg(edict_t *self)
|
|||
VectorSet(self->mins, -80, -80, 0);
|
||||
VectorSet(self->maxs, 80, 80, 140);
|
||||
|
||||
self->health = 3000;
|
||||
self->health = 3000 * st.health_multiplier;
|
||||
self->gib_health = -2000;
|
||||
self->mass = 1000;
|
||||
|
||||
|
|
|
@ -1170,7 +1170,7 @@ SP_monster_makron(edict_t *self)
|
|||
VectorSet(self->mins, -30, -30, 0);
|
||||
VectorSet(self->maxs, 30, 30, 90);
|
||||
|
||||
self->health = 3000;
|
||||
self->health = 3000 * st.health_multiplier;
|
||||
self->gib_health = -2000;
|
||||
self->mass = 500;
|
||||
|
||||
|
|
|
@ -878,7 +878,7 @@ SP_monster_boss5(edict_t *self)
|
|||
VectorSet(self->mins, -64, -64, 0);
|
||||
VectorSet(self->maxs, 64, 64, 112);
|
||||
|
||||
self->health = 1500;
|
||||
self->health = 1500 * st.health_multiplier;
|
||||
self->gib_health = -500;
|
||||
self->mass = 800;
|
||||
|
||||
|
|
|
@ -1187,7 +1187,7 @@ SP_monster_brain(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 300;
|
||||
self->health = 300 * st.health_multiplier;
|
||||
self->gib_health = -150;
|
||||
self->mass = 400;
|
||||
|
||||
|
|
|
@ -1534,7 +1534,7 @@ SP_monster_carrier(edict_t *self)
|
|||
VectorSet(self->maxs, 56, 56, 44);
|
||||
|
||||
/* 2000 - 4000 health */
|
||||
self->health = Q_max(2000, 2000 + 1000 * ((skill->value) - 1));
|
||||
self->health = Q_max(2000, 2000 + 1000 * ((skill->value) - 1)) * st.health_multiplier;
|
||||
|
||||
/* add health in coop (500 * skill) */
|
||||
if (coop->value)
|
||||
|
|
|
@ -1208,7 +1208,7 @@ SP_monster_chick(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, 0);
|
||||
VectorSet(self->maxs, 16, 16, 56);
|
||||
|
||||
self->health = 175;
|
||||
self->health = 175 * st.health_multiplier;
|
||||
self->gib_health = -70;
|
||||
self->mass = 200;
|
||||
|
||||
|
|
|
@ -376,7 +376,7 @@ SP_monster_demon(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/demon/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 64);
|
||||
self->health = 300;
|
||||
self->health = 300 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("demon/ddeath.wav");
|
||||
sound_hit = gi.soundindex("demon/dhit2.wav");
|
||||
|
|
|
@ -381,7 +381,7 @@ SP_monster_dog(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/dog/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 40);
|
||||
self->health = 25;
|
||||
self->health = 25 * st.health_multiplier;
|
||||
|
||||
sound_melee = gi.soundindex("dog/dattack1.wav");
|
||||
sound_death = gi.soundindex("dog/ddeath.wav");
|
||||
|
|
|
@ -528,7 +528,7 @@ SP_monster_enforcer(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/enforcer/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 80;
|
||||
self->health = 80 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("enforcer/death1.wav");
|
||||
sound_hit = gi.soundindex("enforcer/enfstop.wav");
|
||||
|
|
|
@ -1662,7 +1662,7 @@ SP_monster_fixbot(edict_t *self)
|
|||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 150;
|
||||
self->health = 150 * st.health_multiplier;
|
||||
self->mass = 150;
|
||||
self->viewheight = 16;
|
||||
|
||||
|
|
|
@ -544,7 +544,7 @@ SP_monster_flipper(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, 0);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 50;
|
||||
self->health = 50 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
self->mass = 100;
|
||||
|
||||
|
|
|
@ -878,7 +878,7 @@ SP_monster_floater(edict_t *self)
|
|||
VectorSet(self->mins, -24, -24, -24);
|
||||
VectorSet(self->maxs, 24, 24, 32);
|
||||
|
||||
self->health = 200;
|
||||
self->health = 200 * st.health_multiplier;
|
||||
self->gib_health = -80;
|
||||
self->mass = 300;
|
||||
|
||||
|
|
|
@ -1082,7 +1082,7 @@ SP_monster_flyer(edict_t *self)
|
|||
|
||||
self->s.sound = gi.soundindex("flyer/flyidle1.wav");
|
||||
|
||||
self->health = 50;
|
||||
self->health = 50 * st.health_multiplier;
|
||||
self->mass = 50;
|
||||
|
||||
self->pain = flyer_pain;
|
||||
|
@ -1140,7 +1140,7 @@ SP_monster_kamikaze(edict_t *self)
|
|||
|
||||
self->s.effects |= EF_ROCKET;
|
||||
|
||||
self->health = 50;
|
||||
self->health = 50 * st.health_multiplier;
|
||||
self->mass = 100;
|
||||
|
||||
self->pain = flyer_pain;
|
||||
|
|
|
@ -1968,7 +1968,7 @@ SP_monster_gekk(edict_t *self)
|
|||
gi.modelindex("models/objects/gekkgib/leg/tris.md2");
|
||||
gi.modelindex("models/objects/gekkgib/head/tris.md2");
|
||||
|
||||
self->health = 125;
|
||||
self->health = 125 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
self->mass = 300;
|
||||
|
||||
|
|
|
@ -532,7 +532,7 @@ SP_monster_gladb(edict_t *self)
|
|||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 64);
|
||||
|
||||
self->health = 800;
|
||||
self->health = 800 * st.health_multiplier;
|
||||
self->gib_health = -175;
|
||||
self->mass = 350;
|
||||
|
||||
|
|
|
@ -588,7 +588,7 @@ SP_monster_gladiator(edict_t *self)
|
|||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 64);
|
||||
|
||||
self->health = 400;
|
||||
self->health = 400 * st.health_multiplier;
|
||||
self->gib_health = -175;
|
||||
self->mass = 400;
|
||||
|
||||
|
|
|
@ -764,7 +764,7 @@ SP_monster_guardian(edict_t *self)
|
|||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 2500;
|
||||
self->health = 2500 * st.health_multiplier;
|
||||
self->gib_health = -200;
|
||||
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
|
|
|
@ -1381,7 +1381,7 @@ SP_monster_gunner(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 175;
|
||||
self->health = 175 * st.health_multiplier;
|
||||
self->gib_health = -70;
|
||||
self->mass = 200;
|
||||
|
||||
|
@ -1449,7 +1449,7 @@ SP_monster_guncmdr(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 175;
|
||||
self->health = 175 * st.health_multiplier;
|
||||
self->gib_health = -70;
|
||||
self->mass = 200;
|
||||
|
||||
|
|
|
@ -528,7 +528,7 @@ SP_monster_hknight(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/hknight/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 250;
|
||||
self->health = 250 * st.health_multiplier;
|
||||
|
||||
sound_attack = gi.soundindex("hknight/attack1.wav");
|
||||
sound_melee = gi.soundindex("hknight/slash1.wav");
|
||||
|
|
|
@ -1016,7 +1016,7 @@ SP_monster_hover(edict_t *self)
|
|||
VectorSet(self->mins, -24, -24, -24);
|
||||
VectorSet(self->maxs, 24, 24, 32);
|
||||
|
||||
self->health = 240;
|
||||
self->health = 240 * st.health_multiplier;
|
||||
self->gib_health = -100;
|
||||
self->mass = 150;
|
||||
|
||||
|
@ -1033,7 +1033,7 @@ SP_monster_hover(edict_t *self)
|
|||
|
||||
if (strcmp(self->classname, "monster_daedalus") == 0)
|
||||
{
|
||||
self->health = 450;
|
||||
self->health = 450 * st.health_multiplier;
|
||||
self->mass = 225;
|
||||
self->yaw_speed = 25;
|
||||
self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;
|
||||
|
|
|
@ -1108,7 +1108,7 @@ SP_monster_infantry(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 100;
|
||||
self->health = 100 * st.health_multiplier;
|
||||
self->gib_health = -40;
|
||||
self->mass = 200;
|
||||
|
||||
|
|
|
@ -985,7 +985,7 @@ SP_misc_insane(edict_t *self)
|
|||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 32);
|
||||
|
||||
self->health = 100;
|
||||
self->health = 100 * st.health_multiplier;
|
||||
self->gib_health = -50;
|
||||
self->mass = 300;
|
||||
|
||||
|
|
|
@ -368,7 +368,7 @@ SP_monster_knight(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/knight/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 75;
|
||||
self->health = 75 * st.health_multiplier;
|
||||
|
||||
sound_melee1 = gi.soundindex("knight/sword1.wav");
|
||||
sound_melee2 = gi.soundindex("knight/sword2.wav");
|
||||
|
|
|
@ -2045,7 +2045,7 @@ SP_monster_medic(edict_t *self)
|
|||
|
||||
if (strcmp(self->classname, "monster_medic_commander") == 0)
|
||||
{
|
||||
self->health = 600;
|
||||
self->health = 600 * st.health_multiplier;
|
||||
self->gib_health = -130;
|
||||
self->mass = 600;
|
||||
self->yaw_speed = 40;
|
||||
|
@ -2053,7 +2053,7 @@ SP_monster_medic(edict_t *self)
|
|||
}
|
||||
else
|
||||
{
|
||||
self->health = 300;
|
||||
self->health = 300 * st.health_multiplier;
|
||||
self->gib_health = -130;
|
||||
self->mass = 400;
|
||||
}
|
||||
|
|
|
@ -990,7 +990,7 @@ SP_monster_mutant(edict_t *self)
|
|||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 48);
|
||||
|
||||
self->health = 300;
|
||||
self->health = 300 * st.health_multiplier;
|
||||
self->gib_health = -120;
|
||||
self->mass = 300;
|
||||
|
||||
|
|
|
@ -492,7 +492,7 @@ SP_monster_ogre(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/ogre/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 64);
|
||||
self->health = 200;
|
||||
self->health = 200 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("ogre/ogdth.wav");
|
||||
sound_attack = gi.soundindex("ogre/grenade.wav");
|
||||
|
|
|
@ -1020,7 +1020,7 @@ SP_monster_parasite(edict_t *self)
|
|||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 175;
|
||||
self->health = 175 * st.health_multiplier;
|
||||
self->gib_health = -50;
|
||||
self->mass = 250;
|
||||
self->viewheight = 16;
|
||||
|
|
|
@ -304,7 +304,7 @@ SP_monster_rotfish(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/rotfish/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 24);
|
||||
self->health = 25;
|
||||
self->health = 25 * st.health_multiplier;
|
||||
|
||||
sound_search = gi.soundindex("fish/idle.wav");
|
||||
sound_death = gi.soundindex("fish/death.wav");
|
||||
|
|
|
@ -346,7 +346,7 @@ SP_monster_shalrath(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/shalrath/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, 48);
|
||||
self->health = 400;
|
||||
self->health = 400 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("shalrath/death.wav");
|
||||
sound_search = gi.soundindex("shalrath/idle.wav");
|
||||
|
|
|
@ -726,7 +726,7 @@ SP_monster_shambler(edict_t* self)
|
|||
sound_smack = gi.soundindex("shambler/smack.wav");
|
||||
sound_boom = gi.soundindex("shambler/sboom.wav");
|
||||
|
||||
self->health = 600;
|
||||
self->health = 600 * st.health_multiplier;
|
||||
self->gib_health = -60;
|
||||
|
||||
self->mass = 500;
|
||||
|
|
|
@ -2055,7 +2055,7 @@ SP_monster_soldier_light(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 20;
|
||||
self->health = 20 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_x(self);
|
||||
|
@ -2093,7 +2093,7 @@ SP_monster_soldier(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 30;
|
||||
self->health = 30 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_x(self);
|
||||
|
@ -2128,7 +2128,7 @@ SP_monster_soldier_ss(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 40;
|
||||
self->health = 40 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_x(self);
|
||||
|
@ -3808,7 +3808,7 @@ SP_monster_soldier_ripper(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 50;
|
||||
self->health = 50 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_h(self);
|
||||
|
@ -3840,7 +3840,7 @@ SP_monster_soldier_hypergun(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 60;
|
||||
self->health = 60 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_h(self);
|
||||
|
@ -3874,7 +3874,7 @@ SP_monster_soldier_lasergun(edict_t *self)
|
|||
return;
|
||||
}
|
||||
|
||||
self->health = 70;
|
||||
self->health = 70 * st.health_multiplier;
|
||||
self->gib_health = -30;
|
||||
|
||||
SP_monster_soldier_h(self);
|
||||
|
|
|
@ -1479,7 +1479,7 @@ SP_monster_stalker(edict_t *self)
|
|||
self->movetype = MOVETYPE_STEP;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 250;
|
||||
self->health = 250 * st.health_multiplier;
|
||||
self->gib_health = -50;
|
||||
self->mass = 250;
|
||||
self->viewheight = 15;
|
||||
|
|
|
@ -918,7 +918,7 @@ SP_monster_supertank(edict_t *self)
|
|||
VectorSet(self->mins, -64, -64, 0);
|
||||
VectorSet(self->maxs, 64, 64, 112);
|
||||
|
||||
self->health = 1500;
|
||||
self->health = 1500 * st.health_multiplier;
|
||||
self->gib_health = -500;
|
||||
self->mass = 800;
|
||||
|
||||
|
|
|
@ -1279,12 +1279,12 @@ SP_monster_tank(edict_t *self)
|
|||
|
||||
if (strcmp(self->classname, "monster_tank_commander") == 0)
|
||||
{
|
||||
self->health = 1000;
|
||||
self->health = 1000 * st.health_multiplier;
|
||||
self->gib_health = -225;
|
||||
}
|
||||
else
|
||||
{
|
||||
self->health = 750;
|
||||
self->health = 750 * st.health_multiplier;
|
||||
self->gib_health = -200;
|
||||
}
|
||||
|
||||
|
|
|
@ -256,7 +256,7 @@ SP_monster_tarbaby(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/tarbaby/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 80;
|
||||
self->health = 80 * st.health_multiplier;
|
||||
|
||||
sound_death = gi.soundindex("tarbaby/death1.wav");
|
||||
sound_hit = gi.soundindex("tarbaby/hit1.wav");
|
||||
|
|
|
@ -1153,7 +1153,7 @@ SP_monster_turret(edict_t *self)
|
|||
self->movetype = MOVETYPE_NONE;
|
||||
self->solid = SOLID_BBOX;
|
||||
|
||||
self->health = 240;
|
||||
self->health = 240 * st.health_multiplier;
|
||||
self->gib_health = -100;
|
||||
self->mass = 250;
|
||||
self->yaw_speed = 45;
|
||||
|
|
|
@ -1869,7 +1869,7 @@ SP_monster_widow(edict_t *self)
|
|||
VectorSet(self->mins, -40, -40, 0);
|
||||
VectorSet(self->maxs, 40, 40, 144);
|
||||
|
||||
self->health = 2000 + 1000 * (skill->value);
|
||||
self->health = 2000 + 1000 * (skill->value) * st.health_multiplier;
|
||||
|
||||
if (coop->value)
|
||||
{
|
||||
|
|
|
@ -1496,7 +1496,7 @@ SP_monster_widow2(edict_t *self)
|
|||
VectorSet(self->mins, -70, -70, 0);
|
||||
VectorSet(self->maxs, 70, 70, 144);
|
||||
|
||||
self->health = 2000 + 800 + 1000 * (skill->value);
|
||||
self->health = 2000 + 800 + 1000 * (skill->value) * st.health_multiplier;
|
||||
|
||||
if (coop->value)
|
||||
{
|
||||
|
|
|
@ -389,7 +389,7 @@ SP_monster_wizard(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/wizard/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 80;
|
||||
self->health = 80 * st.health_multiplier;
|
||||
|
||||
sound_proj_hit = gi.soundindex("wizard/hit.wav");
|
||||
sound_attack = gi.soundindex("wizard/wattack.wav");
|
||||
|
|
|
@ -215,7 +215,7 @@ fire_zombie_gib(edict_t *self, vec3_t start, vec3_t aimdir, int damage, int spee
|
|||
gib->s.effects |= EF_GIB;
|
||||
VectorClear(gib->mins);
|
||||
VectorClear(gib->maxs);
|
||||
gib->s.modelindex = gi.modelindex("models/monsters/objects/gibs/sm_meat/tris.md2");
|
||||
gib->s.modelindex = gi.modelindex("models/objects/gibs/sm_meat/tris.md2");
|
||||
gib->owner = self;
|
||||
gib->touch = zombie_gib_touch;
|
||||
gib->nextthink = level.time + 2.5;
|
||||
|
@ -731,7 +731,7 @@ SP_monster_zombie(edict_t *self)
|
|||
self->s.modelindex = gi.modelindex("models/monsters/zombie/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, 40);
|
||||
self->health = 60;
|
||||
self->health = 60 * st.health_multiplier;
|
||||
|
||||
sound_sight = gi.soundindex("zombie/z_idle.wav");
|
||||
sound_search = gi.soundindex("zombie/z_idle.wav");
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
{"origin", FOFS(s.origin), F_VECTOR},
|
||||
{"angles", FOFS(s.angles), F_VECTOR},
|
||||
{"angle", FOFS(s.angles), F_ANGLEHACK},
|
||||
{"health_multiplier", STOFS(health_multiplier), F_FLOAT, FFL_SPAWNTEMP},
|
||||
{"rgb", STOFS(rgba), F_RGBA, FFL_SPAWNTEMP},
|
||||
{"rgba", STOFS(rgba), F_RGBA, FFL_SPAWNTEMP},
|
||||
{"scale", STOFS(scale), F_VECTOR, FFL_SPAWNTEMP},
|
||||
|
|
Loading…
Reference in a new issue