mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Port Aggro:UseLevelAggro from EQMacEmu
This will make level 18+ mobs braver
This commit is contained in:
parent
4c49397ef6
commit
e89fa01d89
@ -518,6 +518,7 @@ RULE_REAL(Aggro, TunnelVisionAggroMod, 0.75) //people not currently the top hate
|
|||||||
RULE_INT(Aggro, MaxScalingProcAggro, 400) // Set to -1 for no limit. Maxmimum amount of aggro that HP scaling SPA effect in a proc will add.
|
RULE_INT(Aggro, MaxScalingProcAggro, 400) // Set to -1 for no limit. Maxmimum amount of aggro that HP scaling SPA effect in a proc will add.
|
||||||
RULE_INT(Aggro, IntAggroThreshold, 75) // Int <= this will aggro regardless of level difference.
|
RULE_INT(Aggro, IntAggroThreshold, 75) // Int <= this will aggro regardless of level difference.
|
||||||
RULE_BOOL(Aggro, AllowTickPulling, false) // tick pulling is an exploit in an NPC's call for help fixed sometime in 2006 on live
|
RULE_BOOL(Aggro, AllowTickPulling, false) // tick pulling is an exploit in an NPC's call for help fixed sometime in 2006 on live
|
||||||
|
RULE_BOOL(Aggro, UseLevelAggro, true) // Level 18+ and Undead will aggro regardless of level difference. (this will disabled Rule:IntAggroThreshold if set to true)
|
||||||
RULE_CATEGORY_END()
|
RULE_CATEGORY_END()
|
||||||
|
|
||||||
RULE_CATEGORY(TaskSystem)
|
RULE_CATEGORY(TaskSystem)
|
||||||
|
|||||||
@ -156,11 +156,22 @@ void NPC::DescribeAggro(Client *towho, Mob *mob, bool verbose) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RuleB(Aggro, UseLevelAggro))
|
||||||
|
{
|
||||||
|
if (GetLevel() < 18 && mob->GetLevelCon(GetLevel()) == CON_GREEN && GetBodyType() != 3)
|
||||||
|
{
|
||||||
|
towho->Message(0, "...%s is red to me (basically)", mob->GetName(), dist2, iAggroRange2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if(GetINT() > RuleI(Aggro, IntAggroThreshold) && mob->GetLevelCon(GetLevel()) == CON_GREEN ) {
|
if(GetINT() > RuleI(Aggro, IntAggroThreshold) && mob->GetLevelCon(GetLevel()) == CON_GREEN ) {
|
||||||
towho->Message(0, "...%s is red to me (basically)", mob->GetName(),
|
towho->Message(0, "...%s is red to me (basically)", mob->GetName(),
|
||||||
dist2, iAggroRange2);
|
dist2, iAggroRange2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(verbose) {
|
if(verbose) {
|
||||||
int my_primary = GetPrimaryFaction();
|
int my_primary = GetPrimaryFaction();
|
||||||
@ -321,6 +332,40 @@ bool Mob::CheckWillAggro(Mob *mob) {
|
|||||||
int heroicCHA_mod = mob->itembonuses.HeroicCHA/25; // 800 Heroic CHA cap
|
int heroicCHA_mod = mob->itembonuses.HeroicCHA/25; // 800 Heroic CHA cap
|
||||||
if(heroicCHA_mod > THREATENLY_ARRGO_CHANCE)
|
if(heroicCHA_mod > THREATENLY_ARRGO_CHANCE)
|
||||||
heroicCHA_mod = THREATENLY_ARRGO_CHANCE;
|
heroicCHA_mod = THREATENLY_ARRGO_CHANCE;
|
||||||
|
if (RuleB(Aggro, UseLevelAggro) &&
|
||||||
|
(
|
||||||
|
//old InZone check taken care of above by !mob->CastToClient()->Connected()
|
||||||
|
(
|
||||||
|
( GetLevel() >= 18 )
|
||||||
|
||(GetBodyType() == 3)
|
||||||
|
||( mob->IsClient() && mob->CastToClient()->IsSitting() )
|
||||||
|
||( mob->GetLevelCon(GetLevel()) != CON_GREEN )
|
||||||
|
|
||||||
|
)
|
||||||
|
&&
|
||||||
|
(
|
||||||
|
(
|
||||||
|
fv == FACTION_SCOWLS
|
||||||
|
||
|
||||||
|
(mob->GetPrimaryFaction() != GetPrimaryFaction() && mob->GetPrimaryFaction() == -4 && GetOwner() == nullptr)
|
||||||
|
||
|
||||||
|
(
|
||||||
|
fv == FACTION_THREATENLY
|
||||||
|
&& zone->random.Roll(THREATENLY_ARRGO_CHANCE - heroicCHA_mod)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//FatherNiwtit: make sure we can see them. last since it is very expensive
|
||||||
|
if(CheckLosFN(mob)) {
|
||||||
|
Log.Out(Logs::Detail, Logs::Aggro, "Check aggro for %s target %s.", GetName(), mob->GetName());
|
||||||
|
return( mod_will_aggro(mob, this) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
//old InZone check taken care of above by !mob->CastToClient()->Connected()
|
//old InZone check taken care of above by !mob->CastToClient()->Connected()
|
||||||
@ -351,6 +396,7 @@ bool Mob::CheckWillAggro(Mob *mob) {
|
|||||||
return( mod_will_aggro(mob, this) );
|
return( mod_will_aggro(mob, this) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Log.Out(Logs::Detail, Logs::Aggro, "Is In zone?:%d\n", mob->InZone());
|
Log.Out(Logs::Detail, Logs::Aggro, "Is In zone?:%d\n", mob->InZone());
|
||||||
Log.Out(Logs::Detail, Logs::Aggro, "Dist^2: %f\n", dist2);
|
Log.Out(Logs::Detail, Logs::Aggro, "Dist^2: %f\n", dist2);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user