diff --git a/src/actor.h b/src/actor.h index b81b726ce..16f979c96 100644 --- a/src/actor.h +++ b/src/actor.h @@ -590,7 +590,7 @@ public: DDropItem *GetDropItems() const; // Return true if the monster should use a missile attack, false for melee - bool SuggestMissileAttack (fixed_t dist); + bool SuggestMissileAttack (double dist); // Adjusts the angle for deflection/reflection of incoming missiles // Returns true if the missile should be allowed to explode anyway @@ -1236,10 +1236,10 @@ public: ActorBounceFlags BounceFlags; // which bouncing type? DWORD SpawnFlags; // Increased to DWORD because of Doom 64 fixed_t meleerange; // specifies how far a melee attack reaches. - fixed_t meleethreshold; // Distance below which a monster doesn't try to shoot missiles anynore + double meleethreshold; // Distance below which a monster doesn't try to shoot missiles anynore // but instead tries to come closer for a melee attack. // This is not the same as meleerange - fixed_t maxtargetrange; // any target farther away cannot be attacked + double maxtargetrange; // any target farther away cannot be attacked double bouncefactor; // Strife's grenades use 50%, Hexen's Flechettes 70. double wallbouncefactor; // The bounce factor for walls can be different. int bouncecount; // Strife's grenades only bounce twice before exploding diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp index e9e0e66d4..4a99b7f6c 100644 --- a/src/p_enemy.cpp +++ b/src/p_enemy.cpp @@ -348,7 +348,7 @@ bool P_CheckMeleeRange2 (AActor *actor) //============================================================================= bool P_CheckMissileRange (AActor *actor) { - fixed_t dist; + double dist; if (!P_CheckSight (actor, actor->target, SF_SEEPASTBLOCKEVERYTHING)) return false; @@ -387,15 +387,15 @@ bool P_CheckMissileRange (AActor *actor) // OPTIMIZE: get this from a global checksight // [RH] What? - dist = actor->AproxDistance (actor->target) - 64*FRACUNIT; + dist = actor->Distance2D (actor->target) - 64; if (actor->MeleeState == NULL) - dist -= 128*FRACUNIT; // no melee attack, so fire more + dist -= 128; // no melee attack, so fire more return actor->SuggestMissileAttack (dist); } -bool AActor::SuggestMissileAttack (fixed_t dist) +bool AActor::SuggestMissileAttack (double dist) { // new version encapsulates the different behavior in flags instead of virtual functions // The advantage is that this allows inheriting the missile attack attributes from the @@ -407,11 +407,11 @@ bool AActor::SuggestMissileAttack (fixed_t dist) if (MeleeState != NULL && dist < meleethreshold) return false; // From the Revenant: close enough for fist attack - if (flags4 & MF4_MISSILEMORE) dist >>= 1; - if (flags4 & MF4_MISSILEEVENMORE) dist >>= 3; + if (flags4 & MF4_MISSILEMORE) dist *= 0.5; + if (flags4 & MF4_MISSILEEVENMORE) dist *= 0.125; int mmc = int(MinMissileChance * G_SkillProperty(SKILLP_Aggressiveness)); - return pr_checkmissilerange() >= MIN (dist >> FRACBITS, mmc); + return pr_checkmissilerange() >= MIN (int(dist), mmc); } //============================================================================= diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 136f60fe6..197575aaa 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6144,7 +6144,7 @@ AActor *P_SpawnPlayerMissile (AActor *source, double x, double y, double z, // [XA] If MaxTargetRange is defined in the spawned projectile, use this as the // maximum range for the P_AimLineAttack call later; this allows MaxTargetRange // to function as a "maximum tracer-acquisition range" for seeker missiles. - double linetargetrange = defaultobject->maxtargetrange > 0 ? FIXED2DBL(defaultobject->maxtargetrange*64) : 16*64.; + double linetargetrange = defaultobject->maxtargetrange > 0 ? defaultobject->maxtargetrange*64 : 16*64.; int i = 2; do diff --git a/src/textures/textures.h b/src/textures/textures.h index 0057214d6..82fdac9bf 100644 --- a/src/textures/textures.h +++ b/src/textures/textures.h @@ -205,7 +205,7 @@ public: int GetScaledWidth () { int foo = (Width << 17) / xScale; return (foo >> 1) + (foo & 1); } int GetScaledHeight () { int foo = (Height << 17) / yScale; return (foo >> 1) + (foo & 1); } - int GetScaledHeight(double scale) { return GetScaledHeight(FLOAT2FIXED(scale)); } + int GetScaledHeight(double scale) { int foo = (Height << 17) / FLOAT2FIXED(scale); return (foo >> 1) + (foo & 1); } double GetScaledWidthDouble () { return (Width * 65536.) / xScale; } double GetScaledHeightDouble () { return (Height * 65536.) / yScale; } double GetScaleY() const { return FIXED2DBL(yScale); } diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index 3fd4ee28d..e43d18493 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -1,7 +1,7 @@ /* ** thingdef-properties.cpp ** -** Actor definitions - properties and flags handling +** Actor denitions - properties and flags handling ** **--------------------------------------------------------------------------- ** Copyright 2002-2007 Christoph Oelckers @@ -245,10 +245,10 @@ void HandleDeprecatedFlags(AActor *defaults, PClassActor *info, bool set, int in defaults->Gravity = set ? 1. / 8 : 1.; break; case DEPF_SHORTMISSILERANGE: - defaults->maxtargetrange = set? 896*FRACUNIT : 0; + defaults->maxtargetrange = set? 896. : 0.; break; case DEPF_LONGMELEERANGE: - defaults->meleethreshold = set? 196*FRACUNIT : 0; + defaults->meleethreshold = set? 196. : 0.; break; case DEPF_QUARTERGRAVITY: defaults->Gravity = set ? 1. / 4 : 1.; @@ -314,9 +314,9 @@ bool CheckDeprecatedFlags(const AActor *actor, PClassActor *info, int index) case DEPF_LOWGRAVITY: return actor->Gravity == 1./8; case DEPF_SHORTMISSILERANGE: - return actor->maxtargetrange == 896*FRACUNIT; + return actor->maxtargetrange == 896.; case DEPF_LONGMELEERANGE: - return actor->meleethreshold == 196*FRACUNIT; + return actor->meleethreshold == 196.; case DEPF_QUARTERGRAVITY: return actor->Gravity == 1./4; case DEPF_FIRERESIST: @@ -936,7 +936,7 @@ DEFINE_PROPERTY(burnheight, F, Actor) //========================================================================== DEFINE_PROPERTY(maxtargetrange, F, Actor) { - PROP_FIXED_PARM(id, 0); + PROP_DOUBLE_PARM(id, 0); defaults->maxtargetrange = id; } @@ -945,7 +945,7 @@ DEFINE_PROPERTY(maxtargetrange, F, Actor) //========================================================================== DEFINE_PROPERTY(meleethreshold, F, Actor) { - PROP_FIXED_PARM(id, 0); + PROP_DOUBLE_PARM(id, 0); defaults->meleethreshold = id; }