mollymillions
12-08-2004, 11:15 PM
If your feeling adventurous, here's a hack to enable fleeing MOBs that uses the existing Fear spell code. The Z axis pathing isn't that great (probably very bad for dungeons).
Line numbers are approximate!
Source/zone/features.h
Line: 108
< //#define ENABLE_FEAR_PATHING 1
---
> #define ENABLE_FEAR_PATHING 1
Source/zone/mob.h
Line: 1874
< uint8 fear_state;
---
> uint8 fear_state;
> uint8 flee_state;
Source/zone/mob.h
Line: 219
< fearStateStuck
< };
---
> fearStateStuck
> };
> enum { //flee states
> fleeStateNotFleeing = 0,
> fleeStateFleeing
> };
Source/zone/mob.cpp
Line: 313
< fear_state = fearStateNotFeared;
---
> fear_state = fearStateNotFeared;
> flee_state = fleeStateNotFleeing;
Source/zone/attack.cpp
Line: 3515
< //unsigned char test[sizeof(Action_Struct)];
---
> //#ifdef ENABLE_FEAR_PATHING
> //flee if HP low
> if ((flee_state == fleeStateNotFleeing) && (GetHPRatio() <= 20))
> {
> SetFeared(other, 600 );
> flee_state = fleeStateFleeing;
> }
> //#endif
> //unsigned char test[sizeof(Action_Struct)];
MobAI.cpp
Line: 485
< if(fear_state != fearStateNotFeared) {
---
> if(fear_state != fearStateNotFeared) {
> //stop fleeing if HP recovered
> if (flee_state != fleeStateNotFleeing && GetHPRatio() > 20)
> {
> flee_state = fleeStateNotFleeing;
> fear_state = fearStateNotFeared;
> }
Isues:
-Some MOBs on the current DB have no regen therefore their HP will never recover and they will never stop fleeing.
-A high level MOB will flee from a low level PC.
-Assisted MOBs will flee.
-MOBs flee at full speed regardless of HP.
-Some MOBs should never flee.
-Z axis pathing is incorrect.
Line numbers are approximate!
Source/zone/features.h
Line: 108
< //#define ENABLE_FEAR_PATHING 1
---
> #define ENABLE_FEAR_PATHING 1
Source/zone/mob.h
Line: 1874
< uint8 fear_state;
---
> uint8 fear_state;
> uint8 flee_state;
Source/zone/mob.h
Line: 219
< fearStateStuck
< };
---
> fearStateStuck
> };
> enum { //flee states
> fleeStateNotFleeing = 0,
> fleeStateFleeing
> };
Source/zone/mob.cpp
Line: 313
< fear_state = fearStateNotFeared;
---
> fear_state = fearStateNotFeared;
> flee_state = fleeStateNotFleeing;
Source/zone/attack.cpp
Line: 3515
< //unsigned char test[sizeof(Action_Struct)];
---
> //#ifdef ENABLE_FEAR_PATHING
> //flee if HP low
> if ((flee_state == fleeStateNotFleeing) && (GetHPRatio() <= 20))
> {
> SetFeared(other, 600 );
> flee_state = fleeStateFleeing;
> }
> //#endif
> //unsigned char test[sizeof(Action_Struct)];
MobAI.cpp
Line: 485
< if(fear_state != fearStateNotFeared) {
---
> if(fear_state != fearStateNotFeared) {
> //stop fleeing if HP recovered
> if (flee_state != fleeStateNotFleeing && GetHPRatio() > 20)
> {
> flee_state = fleeStateNotFleeing;
> fear_state = fearStateNotFeared;
> }
Isues:
-Some MOBs on the current DB have no regen therefore their HP will never recover and they will never stop fleeing.
-A high level MOB will flee from a low level PC.
-Assisted MOBs will flee.
-MOBs flee at full speed regardless of HP.
-Some MOBs should never flee.
-Z axis pathing is incorrect.