mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-03-07 20:01:21 +00:00
Merge branch 'fix-crate-instawhip' into 'master'
Fix Metal Crate instawhip hitlag Closes #800 See merge request KartKrew/Kart!1696
This commit is contained in:
commit
8a250e3237
4 changed files with 19 additions and 14 deletions
|
|
@ -952,9 +952,11 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
|
|||
shield->extravalue1 = 1;
|
||||
}
|
||||
|
||||
P_DamageMobj(victim, shield, attacker, 1, DMG_NORMAL);
|
||||
K_AddHitLag(attacker, attackerHitlag, false);
|
||||
shield->hitlag = attacker->hitlag;
|
||||
if (P_DamageMobj(victim, shield, attacker, 1, DMG_NORMAL))
|
||||
{
|
||||
K_AddHitLag(attacker, attackerHitlag, false);
|
||||
shield->hitlag = attacker->hitlag;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ void Obj_BoxSideThink(mobj_t *mo);
|
|||
void Obj_TryCrateInit(mobj_t *mo);
|
||||
boolean Obj_TryCrateThink(mobj_t *mo);
|
||||
void Obj_TryCrateTouch(mobj_t *special, mobj_t *toucher);
|
||||
void Obj_TryCrateDamage(mobj_t *target, mobj_t *inflictor);
|
||||
boolean Obj_TryCrateDamage(mobj_t *target, mobj_t *inflictor);
|
||||
boolean Obj_SA2CrateIsMetal(mobj_t *mo);
|
||||
|
||||
/* Lavender Shrine Spears */
|
||||
|
|
|
|||
|
|
@ -197,11 +197,11 @@ struct Box : AnyBox
|
|||
|
||||
bool damage_valid(const Mobj* inflictor) const { return !fuse && Mobj::valid(inflictor); }
|
||||
|
||||
void damage(Mobj* inflictor)
|
||||
bool damage(Mobj* inflictor)
|
||||
{
|
||||
if (!damage_valid(inflictor))
|
||||
{
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
inflictor->hitlag(3);
|
||||
|
|
@ -230,6 +230,8 @@ struct Box : AnyBox
|
|||
|
||||
debris(inflictor);
|
||||
update_nearby();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -321,19 +323,19 @@ struct Crate : Box<SA2CrateConfig>
|
|||
}
|
||||
}
|
||||
|
||||
void damage(Toucher* inflictor)
|
||||
bool damage(Toucher* inflictor)
|
||||
{
|
||||
if (!Box::damage_valid(inflictor))
|
||||
{
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (metal() && !inflictor->boosting())
|
||||
{
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
Box::damage(inflictor);
|
||||
return Box::damage(inflictor);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -385,9 +387,11 @@ void Obj_TryCrateTouch(mobj_t* special, mobj_t* toucher)
|
|||
static_cast<AnyBox*>(special)->visit([&](auto box) { box->touch(static_cast<Toucher*>(toucher)); });
|
||||
}
|
||||
|
||||
void Obj_TryCrateDamage(mobj_t* target, mobj_t* inflictor)
|
||||
boolean Obj_TryCrateDamage(mobj_t* target, mobj_t* inflictor)
|
||||
{
|
||||
static_cast<AnyBox*>(target)->visit([&](auto box) { box->damage(static_cast<Toucher*>(inflictor)); });
|
||||
bool c = false;
|
||||
static_cast<AnyBox*>(target)->visit([&](auto box) { c = box->damage(static_cast<Toucher*>(inflictor)); });
|
||||
return c;
|
||||
}
|
||||
|
||||
boolean Obj_SA2CrateIsMetal(mobj_t* mobj)
|
||||
|
|
|
|||
|
|
@ -2883,8 +2883,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
|
||||
case MT_SA2_CRATE:
|
||||
case MT_ICECAPBLOCK:
|
||||
Obj_TryCrateDamage(target, inflictor);
|
||||
return true;
|
||||
return Obj_TryCrateDamage(target, inflictor);
|
||||
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue