mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 00:01:28 +00:00
Changes so that blind effects like those in Flash of Light work.
This commit is contained in:
parent
1170b57fd5
commit
73a23e9f9d
@ -130,7 +130,7 @@ void Mob::ProcessFlee() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float Mob::GetFearSpeed() {
|
float Mob::GetFearSpeed() {
|
||||||
if(flee_mode) {
|
if(flee_mode || is_blind) {
|
||||||
//we know ratio < FLEE_HP_RATIO
|
//we know ratio < FLEE_HP_RATIO
|
||||||
float speed = GetBaseRunspeed();
|
float speed = GetBaseRunspeed();
|
||||||
float ratio = GetHPRatio();
|
float ratio = GetHPRatio();
|
||||||
@ -141,6 +141,12 @@ float Mob::GetFearSpeed() {
|
|||||||
|
|
||||||
speed = speed * ratio * multiplier / 100;
|
speed = speed * ratio * multiplier / 100;
|
||||||
|
|
||||||
|
// A blinded mob should be pretty slow when running amuck.
|
||||||
|
if (is_blind)
|
||||||
|
{
|
||||||
|
speed = speed/3.0;
|
||||||
|
}
|
||||||
|
|
||||||
//NPC will eventually stop. Snares speeds this up.
|
//NPC will eventually stop. Snares speeds this up.
|
||||||
if(speed < 0.09)
|
if(speed < 0.09)
|
||||||
speed = 0.0001f;
|
speed = 0.0001f;
|
||||||
|
|||||||
@ -114,6 +114,7 @@ Mob::Mob(const char* in_name,
|
|||||||
fear_walkto_y = -999999;
|
fear_walkto_y = -999999;
|
||||||
fear_walkto_z = -999999;
|
fear_walkto_z = -999999;
|
||||||
curfp = false;
|
curfp = false;
|
||||||
|
is_blind = false;
|
||||||
|
|
||||||
AI_Init();
|
AI_Init();
|
||||||
SetMoving(false);
|
SetMoving(false);
|
||||||
|
|||||||
@ -1191,6 +1191,7 @@ protected:
|
|||||||
float fear_walkto_y;
|
float fear_walkto_y;
|
||||||
float fear_walkto_z;
|
float fear_walkto_z;
|
||||||
bool curfp;
|
bool curfp;
|
||||||
|
bool is_blind;
|
||||||
|
|
||||||
// Pathing
|
// Pathing
|
||||||
//
|
//
|
||||||
|
|||||||
@ -1039,7 +1039,7 @@ void Mob::AI_Process() {
|
|||||||
// Begin: Additions for Wiz Fear Code
|
// Begin: Additions for Wiz Fear Code
|
||||||
//
|
//
|
||||||
if(RuleB(Combat, EnableFearPathing)){
|
if(RuleB(Combat, EnableFearPathing)){
|
||||||
if(curfp) {
|
if(curfp || (is_blind && !CombatRange(hate_list.GetClosest(this)))) {
|
||||||
if(IsRooted()) {
|
if(IsRooted()) {
|
||||||
//make sure everybody knows were not moving, for appearance sake
|
//make sure everybody knows were not moving, for appearance sake
|
||||||
if(IsMoving())
|
if(IsMoving())
|
||||||
@ -1087,7 +1087,7 @@ void Mob::AI_Process() {
|
|||||||
|
|
||||||
if (engaged)
|
if (engaged)
|
||||||
{
|
{
|
||||||
if (IsRooted())
|
if (IsRooted() || is_blind)
|
||||||
SetTarget(hate_list.GetClosest(this));
|
SetTarget(hate_list.GetClosest(this));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1267,8 +1267,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
|||||||
#endif
|
#endif
|
||||||
if (spells[spell_id].base[i] == 1)
|
if (spells[spell_id].base[i] == 1)
|
||||||
BuffFadeByEffect(SE_Blind);
|
BuffFadeByEffect(SE_Blind);
|
||||||
// handled by client
|
is_blind = true;
|
||||||
// TODO: blind flag?
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3976,6 +3975,10 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case SE_Blind:
|
||||||
|
is_blind = false;
|
||||||
|
break;
|
||||||
|
|
||||||
case SE_Fear:
|
case SE_Fear:
|
||||||
{
|
{
|
||||||
if(RuleB(Combat, EnableFearPathing)){
|
if(RuleB(Combat, EnableFearPathing)){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user