mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-15 08:41:59 +00:00
- Fixed: "give health" without an amount would set your health to IDDQD health
instead of the player class's maximum. - Fixed: A_CStaffCheck() assumed the player's max health was 100 instead of getting checking for the true maximum. SVN r1876 (trunk)
This commit is contained in:
parent
2ad438d696
commit
d816747c7e
4 changed files with 19 additions and 12 deletions
|
@ -1,4 +1,8 @@
|
|||
September 24, 2009
|
||||
- Fixed: "give health" without an amount would set your health to IDDQD health
|
||||
instead of the player class's maximum.
|
||||
- Fixed: A_CStaffCheck() assumed the player's max health was 100 instead
|
||||
of getting checking for the true maximum.
|
||||
- Changed P_XYMovement() to not call P_SlideMove() if the act of being
|
||||
blocked changed the actor's velocity. I'm not entirely happy with this,
|
||||
but it gets push-activated force fields to work.
|
||||
|
|
|
@ -46,9 +46,9 @@ int ACStaffMissile::DoSpecialDamage (AActor *target, int damage)
|
|||
|
||||
DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheck)
|
||||
{
|
||||
AActor *pmo;
|
||||
APlayerPawn *pmo;
|
||||
int damage;
|
||||
int newLife;
|
||||
int newLife, max;
|
||||
angle_t angle;
|
||||
int slope;
|
||||
int i;
|
||||
|
@ -63,6 +63,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheck)
|
|||
|
||||
pmo = player->mo;
|
||||
damage = 20+(pr_staffcheck()&15);
|
||||
max = pmo->GetMaxHealth();
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
angle = pmo->angle+i*(ANG45/16);
|
||||
|
@ -76,7 +77,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheck)
|
|||
&& (!(linetarget->flags2&(MF2_DORMANT+MF2_INVULNERABLE))))
|
||||
{
|
||||
newLife = player->health+(damage>>3);
|
||||
newLife = newLife > 100 ? 100 : newLife;
|
||||
newLife = newLife > max ? max : newLife;
|
||||
if (newLife > player->health)
|
||||
{
|
||||
pmo->health = player->health = newLife;
|
||||
|
@ -99,7 +100,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheck)
|
|||
if ((linetarget->player && (!linetarget->IsTeammate (pmo) || level.teamdamage != 0)) || linetarget->flags3&MF3_ISMONSTER)
|
||||
{
|
||||
newLife = player->health+(damage>>4);
|
||||
newLife = newLife > 100 ? 100 : newLife;
|
||||
newLife = newLife > max ? max : newLife;
|
||||
pmo->health = player->health = newLife;
|
||||
P_SetPsprite (player, ps_weapon, weapon->FindState ("Drain"));
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
void cht_DoCheat (player_t *player, int cheat)
|
||||
{
|
||||
static const PClass *BeholdPowers[9] =
|
||||
static const PClass * const BeholdPowers[9] =
|
||||
{
|
||||
RUNTIME_CLASS(APowerInvulnerable),
|
||||
RUNTIME_CLASS(APowerStrength),
|
||||
|
@ -631,10 +631,14 @@ void cht_Give (player_t *player, const char *name, int amount)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (player->mo)
|
||||
player->mo->health = deh.GodHealth;
|
||||
|
||||
player->health = deh.GodHealth;
|
||||
if (player->mo != NULL)
|
||||
{
|
||||
player->health = player->mo->health = player->mo->GetMaxHealth();
|
||||
}
|
||||
else
|
||||
{
|
||||
player->health = deh.GodHealth;
|
||||
}
|
||||
}
|
||||
|
||||
if (!giveall)
|
||||
|
|
|
@ -2796,9 +2796,7 @@ FUNC(LS_ForceField)
|
|||
if (it != NULL)
|
||||
{
|
||||
P_DamageMobj (it, NULL, NULL, 16, NAME_None);
|
||||
angle_t an = (it->angle + ANGLE_180) >> ANGLETOFINESHIFT;
|
||||
it->velx = FixedMul(0x7D000, finecosine[an]);
|
||||
it->vely = FixedMul(0x7D000, finesine[an]);
|
||||
P_ThrustMobj (it, it->angle + ANGLE_180, 0x7D000);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue