- Fixed: In the past, ZDoom worked like Doom and used integral values for
monster speeds. Now it uses fixed point so that an actor's speed property can always be considered is always fixed point. So DoSetActorProperty() should scale very slow speeds, just like dehacked's PatchThing() has done for some time now. SVN r187 (trunk)
This commit is contained in:
parent
37ab80b566
commit
2a0216cf6f
3 changed files with 75 additions and 16 deletions
|
|
@ -1988,21 +1988,73 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
|
|||
actor->player->health = value;
|
||||
}
|
||||
break;
|
||||
case APROP_Speed: actor->Speed = value; break;
|
||||
case APROP_Damage: actor->damage = value; break;
|
||||
case APROP_Alpha: actor->alpha = value; break;
|
||||
case APROP_RenderStyle: actor->RenderStyle = value; break;
|
||||
case APROP_Ambush: if (value) actor->flags |= MF_AMBUSH; else actor->flags &= ~MF_AMBUSH; break;
|
||||
case APROP_Invulnerable:if (value) actor->flags2 |= MF2_INVULNERABLE; else actor->flags2 &= ~MF2_INVULNERABLE; break;
|
||||
case APROP_JumpZ: if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
|
||||
static_cast<APlayerPawn *>(actor)->JumpZ = value; break; // [GRB]
|
||||
case APROP_ChaseGoal: if (value) actor->flags5 |= MF5_CHASEGOAL; else actor->flags5 &= ~MF5_CHASEGOAL; break;
|
||||
case APROP_Frightened: if (value) actor->flags4 |= MF4_FRIGHTENED; else actor->flags4 &= ~MF4_FRIGHTENED; break;
|
||||
case APROP_SeeSound: actor->SeeSound = S_FindSound (FBehavior::StaticLookupString (value)); break;
|
||||
case APROP_AttackSound: actor->AttackSound = S_FindSound (FBehavior::StaticLookupString (value)); break;
|
||||
case APROP_PainSound: actor->PainSound = S_FindSound (FBehavior::StaticLookupString (value)); break;
|
||||
case APROP_DeathSound: actor->DeathSound = S_FindSound (FBehavior::StaticLookupString (value)); break;
|
||||
case APROP_ActiveSound: actor->ActiveSound = S_FindSound (FBehavior::StaticLookupString (value)); break;
|
||||
|
||||
case APROP_Speed:
|
||||
if (abs(value) < 128)
|
||||
{ // Backwards compatibility: Older ZDooms didn't use fixed point in A_Chase.
|
||||
value <<= FRACBITS;
|
||||
}
|
||||
actor->Speed = value;
|
||||
break;
|
||||
|
||||
case APROP_Damage:
|
||||
actor->damage = value;
|
||||
break;
|
||||
|
||||
case APROP_Alpha:
|
||||
actor->alpha = value;
|
||||
break;
|
||||
|
||||
case APROP_RenderStyle:
|
||||
actor->RenderStyle = value;
|
||||
break;
|
||||
|
||||
case APROP_Ambush:
|
||||
if (value) actor->flags |= MF_AMBUSH; else actor->flags &= ~MF_AMBUSH;
|
||||
break;
|
||||
|
||||
case APROP_Invulnerable:
|
||||
if (value) actor->flags2 |= MF2_INVULNERABLE; else actor->flags2 &= ~MF2_INVULNERABLE;
|
||||
break;
|
||||
|
||||
case APROP_JumpZ:
|
||||
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
|
||||
static_cast<APlayerPawn *>(actor)->JumpZ = value;
|
||||
break; // [GRB]
|
||||
|
||||
case APROP_ChaseGoal:
|
||||
if (value)
|
||||
actor->flags5 |= MF5_CHASEGOAL;
|
||||
else
|
||||
actor->flags5 &= ~MF5_CHASEGOAL;
|
||||
break;
|
||||
|
||||
case APROP_Frightened:
|
||||
if (value)
|
||||
actor->flags4 |= MF4_FRIGHTENED;
|
||||
else
|
||||
actor->flags4 &= ~MF4_FRIGHTENED;
|
||||
break;
|
||||
|
||||
case APROP_SeeSound:
|
||||
actor->SeeSound = S_FindSound (FBehavior::StaticLookupString (value));
|
||||
break;
|
||||
|
||||
case APROP_AttackSound:
|
||||
actor->AttackSound = S_FindSound (FBehavior::StaticLookupString (value));
|
||||
break;
|
||||
|
||||
case APROP_PainSound:
|
||||
actor->PainSound = S_FindSound (FBehavior::StaticLookupString (value));
|
||||
break;
|
||||
|
||||
case APROP_DeathSound:
|
||||
actor->DeathSound = S_FindSound (FBehavior::StaticLookupString (value));
|
||||
break;
|
||||
|
||||
case APROP_ActiveSound:
|
||||
actor->ActiveSound = S_FindSound (FBehavior::StaticLookupString (value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue