魔兽世界中怪物仇恨怎么计算

2024-07-17 21:17:48作者:饭克斯

It'softensaidthatwewillneverbeabletoworkoutthewaythreatandhatelistsandmobs'AIworks,becauseit'stoocomplicatedandunknowable,thatwe'llonlyeverhavecrudeapproximationsandguesses.I'veconductedsomedecent,rigoroustests,andihavewhatibelieveisagoodlistofhatevaluesandexplanationsofgainingandlosingaggroandthebehaviouroftaunt.Iamalsoabletodebunkafewmythsabouthowthreatworks.

大家普遍认为我们永远无法解算出仇恨以及仇恨列表以及怪物的AI,因为这个系统复杂未知,所以我们只能推导和得到一些粗略的近似值.我做了一些正规严格的测试,并且得出了我认为很优秀的包括仇恨列表,对获得和失去aggro以及嘲讽的合理解释.本文将揭开关于仇恨系统的神秘面纱.

1)Definitions定义

Wedefineaggrotobewhothemobisattacking.Wedefinethreattobeanumericvaluethateachmobhastowardseachplayeronit'shatelist.Note,asweshallsoonsee,evenforanormalmob,thetargetwhohasaggroisnotnecessarilytheplayeronit'sthreatlistwiththemostthreat.

我们定义aggro为怪物正在攻击的目标,我们定义“仇恨”为怪物对于每个玩家在仇恨列表中的量化数值。需要注意的是,如我们下面要讲的,任何一个怪物,在仇恨列表里最高位并不是取得aggro的必要条件。

Wedefinearbitratilythat1pointofunmodifieddamagegives1pointofthreat.

我们定义1点无修正伤害产生1点仇恨

2)如何取得aggro(aggr成为boss的目标)-超越10%仇恨

Simplyput,foramobtochangeaggrotoanewtarget,thenewtargetmusthaveover10%morethreatthanthemob'scurrenttarget.E.g.mobisattackingplayerx.xdoes100damagetomob,thenstops.Playerystartshittingthemob.Themobwillstartattackingywhenydoesover110damage.

想使怪物目标转到一个新目标上,那么新目标必须超过现有目标对该怪物仇恨的10%.例如:怪物正在攻击玩家x,x对怪物造成100伤害,然后停止.玩家y开始攻击怪物,当造成110伤害后怪物开始攻击y.

Proof:thisiseasytodemonstrate.Gettwoplayersbothdoingautoattackonamob(notwarriorsofrogues;we'llseelatertheycomplicatethings).Haveplayer1doacertainamountofdamage,thenstop.Haveplayer2keepattackingtillhegetsaggro.Youhaveanupperandlowerboundonthethreatrequiredtogetaggro-1attackbeforehegotaggrowasnotenough,buttheattackthathegotaggrowasatleastenough.Withlowdamageattacks(i.e.fistsonly),youwillgetaverygoodvalueof10%.

实验:很容易的证明,2个玩家都自动攻击一个怪(不要是战士或者盗贼,等会说明更为复杂的东西),玩家1先造成一定数量的伤害然后停止,玩家2继续攻击直到他取得aggro。你可以得到一个带有上下限范围的仇恨来取得aggro---玩家1攻击到造成怪物aggro的最少伤害,使用最低攻击(比如空手攻击),你可以得到一个非常准确的10%。

Thisisonlyadeionofthenormalmobtargetting.Obviouslytherearemobswhowillattacksecondarytargetswithspecialabilities,ignoringtheircurrentthreat/aggro.

以上只能用来描述普通怪,显然有些怪物有特殊技能忽略当时的仇恨或者aggro而攻击第2目标。

3)ThreatmodifiersfromWarriorStances战士姿态的仇恨修正

InBattleStanceandBerserkerStance,allthreatfromaWarriorismultipliedby80%.Indefensivestance,themultiplieris130%.WithDefiance,itis145%.

战斗和狂爆姿态,战士的所有仇恨值为80%.防御姿态为130%,如果有defiance天赋为145%。

Proof:asimplemodificationoftheaboveproof.Getawarriortodo,say,1000damageindefensivestance,withoutdefiance.Getanon-warriortotakeaggrowithwhitedamage.Youwillfinditdoesnothappenbefore1430damage.Thewarrior's1000damagecaused1300threatindefensivestance,andthe10%barriermeansyouneedmorethan1430togainaggro.

实验:让一个战士在防御姿态造成1000伤害,且没有defiance.一个非战士职业通过普通攻击取得aggro,你将发现在造成1430伤害前aggro无法取得.防御姿态战士的1000伤害达到了1300的仇恨,而10%的设置需要高于1430的伤害来获得aggro。

4)仇恨不会随时间消退

Threatnever,everdecays.Hereistestdata.Warriordoes83damageonmobinbattlestance,gainsaggro.Fromabove,weknowitwilltakemorethan83*0.8*1.1=73.04threattogainaggro.Warriorwaitsfor5minutesgettingbeaton.Thenmagestartsattackingslowly.Magedoes73damage,butdoesnotgainaggro!Magedoesanother2damage,anddoesgainaggro.Fromthewarrior'sinitialhittolosingaggro,thetimetakenwas496seconds.

仇恨不会消退.这里有测试数据.战斗姿态战士对怪物造成83点伤害,取得了aggro.从上我们知道需要造成83x0.8x1.1=73.04仇恨才能抢到aggro.战士等待了5分钟在攻击,然后法师开始缓慢攻击.法师造成73点伤害带市未能获得aggro.法师又造成了2点伤害后,取得了aggro.。从战士开始攻击到失去aggro,全过程一共用了496秒。

Asanupperbound,assumemaximalthreatdecay.i.e.themageonlyneeded73.000000001threattogainaggro.Thenthewarrior'sthreathaddecayedto66.36363636,from66.4.Thismeanshewentdownto99.945%threatin496seconds.

假设仇恨衰减达到最大(73是临界值的话).法师只需要73.000000001仇恨来取得aggro.然后战士仇恨从66.4衰减到66.36363636.这意味着他在496秒里失去了99.945%的仇恨。

Atthismaximalrateofhatedecay,thetimetakenforthewarrior'sthreattodecayto90%oftheoriginalvaluewouldbe26.5hours.Infact,ifawarriorloggedinassoonastheservercameonlineaftertheweeklyresetandhitamob,histhreatwouldnotdecayto50%beforetheserverresetnextweek.Ithinkthisisenoughtoruleoutthreatdecay.

根据这个最大仇恨衰减率,这个战士仇恨衰减到90%需要26.5小时.实际上,如果一个战士在服务器开始时候登陆,在下个星期服务器维护时也无法衰减50%仇恨.我认为这个足够可以无视仇恨衰减了。

5)战士技能产生的仇恨值

thefollowinglistisnotexhaustive,butincludesallthemajortankingabilities.

下面的列表不够全面,但是包括了战士的几个主要拉仇恨技能。

Note:thefollowingvaluesaregiveninrawterms.Inrealitythewarriormusthaveeithera1.3or0.8or1.45modifieronthese,dependingonhisstanceandtalents.

注:下面的数值排列顺序不分先后,实际上战士有1.3或者0.8或者1.45的修正,取决于姿态和天赋

Note:*Allabilitiesdonotincludethreatgeneratedbytheirdamage.Thiswillbediscussedmorelater.

注:带*的技能仇恨不包括伤害带来的仇恨,这个以后讨论。

破甲:260(258.0-260.8)

英勇*:145(143.9-148.8)

复仇*:315(313.9-318.3)

复仇昏迷:25(23.4-29.1)

盾击*:180(175.4-180.3)

盾牌猛击*:??250(estimatedfromCop'sdata.Moreonthatlater)

盾档:0(0-0.Canbehigher-moreonthislater)

雷霆一击*:130(126.9-134.8)

挫志吼叫:43(42.8-43.8)

6)Healing,yougainx___,etc治疗,“你获得xxxx”等

Eachpointofhealing,whencompletelyunmodifiedbytalents,gives0.5threat.Replacetheprooffor(2)bythesecondpersononlyhealing.

每点治疗无天赋修正情况下造成0.5的仇恨值,通过(2)的实验中一个只负责治疗的人证明。

Note:overhealingdoesn'tcount,onlytheactualamounthealed.Thisiseasytodemonstrate.

注:过量治疗不被计算。,计算实际治疗量。这个很容易论证。

Abilitiesthatputyougainxmanainthecombatloggive0.5threatperpointgained;lifeisthesame.Exampleswouldbedrinkingpotions,butnotnaturalregen,ortheShaman'smanaspringtotem.

战斗日志里的“你获得x法力”每点获得0.5仇恨值,生命值也一样。喝药水等都算,但是人物的自然回复的那部分以及撒满图腾提供的回复都无仇恨。

Abilitiesthatputyougainxrageinthecombatloggive5threatperpointgained.However,thisisnotmodifiedbywarriorstance.Suchabilitiesincludebloodrage,improvedblockingtalent,unbridledwrath,and5/8Might.

战斗日志里“你获得x点怒气”每点获得5点仇恨值。但是这些不会因为战士姿态而修正。获得怒气的技能包括包括嗜血狂怒,增强盾挡天赋,无尽怒气,5件力量套等。

Likehealing,theseonlygivethreatifyouarebelowthemaximum.

和治疗一样状态满时候增加不会造成仇恨。

7)ExplainingCop's4.0damagetohealratio解释cop的关于4:1的伤害与治疗换算比率

Copstatedthatinhistests,eachpointofdamagebythewarriortookapproximately4pointsofhealingbythepriest,forthepriesttogetaggro.Here'show:

cop通过测试得到一个规律:战士1点伤害仇恨=牧师4点治疗仇恨,以下分析原因:

Warriorindefensivestance,withdefiance:1.45multiplier

GainingaggrofromWarrior:1.1multiplier

Priestwithdiscipline:80%threat

Healing:eachpointgives0.5threat

战士在防御姿态,并且有defiance天赋:1.45修正

战士获得aggro:1.1修正

牧师有discipline天赋:80%仇恨

治疗:每点增加0.5仇恨

Together,1.45*1.1/0.8/0.5=3.9875.Prettydarncloseto4.

综合:1.45x1.1/0.8/0.5=3.9875非常接近4。

8)Threatfrompulling?add的仇恨?

Thereisnothreatassociatedwithpulling.Thesmallestamoutsofthreatwecouldgeneratedrewaggrofromabodypull,nomatterhowlongwewaitedafterthepull.Pullingwithdamagedidnoteffecttheresultsoftestssuchasinsection(2)atall.

拉怪本身并不产生仇恨。无论在引到怪后我们等待多久,我们通过用身体引到怪产生aggro都只产生一个最小化的仇恨。而用攻击拉怪不影响(2)的测试结果。(意即为拉怪本身不产生额外仇恨,只有攻击制造的仇恨,计算量同(2)的测试结果)

9)Taunt嘲讽

Thebehaviouroftauntappearsatfirstrandomisedorcomplicated.Forinstance,ifyoutauntamoboffanotherplayer,thendonothing,themobwillgobacktotheplayerassoonasthedebuffwearsoff.Itappearstobegivingtemporaryhate,then.Thefollowingexperimentdisprovesthis:takeanyclass,do1000damageorsotoamob,thenstop.Thenhaveawarriortauntthemob,takingnoactionuntilthedebuffhaswornoff.Themobwillreturntotheoriginalplayer.Nowhavethewarriortwiddlehisthumbs,haveabeer,readthepaper,etc,foraslongashelikes(nottoolongorhisbuddywillprobablydie).Thenhavethewarriordealwhitedamageuntilhegainsaggro.Youwillfindthatindefensivestancewithdefiance,thefirsthitover69damagewillscorethewarrioraggro.Withbattlestance,stillonly125damageisneeded.

最初嘲讽被认为是随机且难解的,例如你嘲讽一个怪,然后什么都不做,这个怪会一直攻击你直到嘲讽debuff消失,看起来似乎是给了一个临时的仇恨,那么这个实验将对此观点予以反驳:任意一个职业对怪造成1000伤害然后停止。然后一个战士嘲讽这个怪物,什么都不做等到嘲讽debuff消失。怪物将会重新攻击开始那个玩家,此时战士开始做各种表情等等来拖段时间(当然不能太长以免他的伙伴挂了)然后战士用普通攻击直到他获得aggro。你将发现防御姿态切有defiance的战士在达到69伤害后开始获得aggro,战斗姿态则需要125伤害。

Thebehaviouroftauntissurprisinglysimple,onceyourememberthe10%rule.Itwillgiveyouexactlythethreatoftheplayerontopofthethreatlist-butnotthe10%neededforthemobtochangeaggro,onlyatemporaryaggrofromthedebuff!Ifyoudonothing,youwillstayat100%ofthemob'soldtarget'sthreat,andwillloseaggrowiththetauntdebuff.Witharelativelysmalleffort,youcangainaggro.

当你想到10%规则后会发觉嘲讽原理如此简单!它将给你永久仇恨使你位于仇恨列表顶端,但并不给你aggro需要的10%仇恨,在debuff存在下让你获得临时的aggro!如果你什么都不做,你的仇恨将停留在怪物之前目标的仇恨数值上,并且失去aggro。仍需要相当的努力,才能获得aggro。

Thebehaviourcanbedescribedastemporaryaggro,permamentthreat.Itiseasytoshowthattauntdoesnotgivethewarrioranyconstantamountofthreat.Haveplayer1bodypullamob,butdonodamagetoit.Henowhas0threat,buthasaggro.Nowhavethewarriortaunt,anddonothing.Afterthe3seconds,thewarriorwillloseaggro.Heisnowon0threat,butdoesnothavethemorethan0requiredtogainaggro,bythe10%rule.

嘲讽可以被描述为“临时的aggro,永久的仇恨”很容易就证明嘲讽不是给战士一个恒量的仇恨值:玩家1拉一个怪,但是不攻击他,那么此时他仇恨为0,但是他有aggro。然后一个战士嘲讽,什么都不做,3秒后战士将失去aggro。此时战士仇恨是0,但是根据10%规则,他没有大于0的仇恨值来获得aggro。

10)Implications推论

a)Regainingaggro.Consideringthe10%rule,ifyouloseaggronaturally,someonewillhaveatleast110%ofyourcurrentthreat.Toregainit,youneed10%ofthat,or121%ofyourcurrentthreat,atanabsoluteminimum.Sodon'tloseaggro,it'shardtogetback!Notthatyoudidn'talreadyknowthis,butstill.

获得aggro,根据10%规则,你失去了aggro,必然有人造成了至少相当于你110%的仇恨值。为了拉回目标,你最少需要那个人110%的仇恨值,或者121%你自己的当前仇恨值。因此不要失去aggro,想拉回来很难。

b)Tauntispotentiallyyourhighestthreatmove,becauseitgivespermanentthreat.Thelongerotherpeoplehavebeenbeatingonamobwhileyouwerenot,themorethreatyouwillgainbytaunting.Butfromthe10%rule,youwillneedtodoalotofworktogetaggroifthemobhasbeenattackedforadecentamountoftimewithoutyou.

嘲讽会把你移到仇恨列表最高位置,因为它带来的是永久仇恨。你不攻击而别人攻击怪物的时间越长,你通过嘲讽获得的仇恨就越多,但是根据10%规则,你需要在怪物转移目标前做大量事情来获取aggro。

c)HeroicStrikeshouldnotbeusedasaprimarythreatability.Supposeyouaretankingalevel62mob.Let'sgivehim8,000acraw,andevenassumehehas5sundersstacked,for5750finalac,sohewilltake48.89%ofdamage.A15%critrateisbalancedbythe10%penaltytodamageindefensivestance,anda10%chanceofaglancingblowchancefor50%damage.Thenyoucanexpectthe138damagefromHeroicStriketocontribute67.5damageonaverage,foratotalof212unmodifiedthreat.Thisisstillonly82%ofthethreatasunderwouldgive.Evenwitha1.3speedweapon,youwillstilldo94%thethreatofsunderpertimeinterval.

英勇打击不是主仇恨技能。假设你在tank一个62级的怪,它有8000护甲,并且有5个破甲效果,然后实际为5750的护甲,因此他将受到48.89%的伤害。15%的致命一击率并受到防御姿态10%的伤害调整,以及10%的格挡率格挡50%伤害。那么你可以预算HS造成的138伤害换算成67.5的平均伤害。最高212的无修正仇恨值。可是仍然只有1个破甲的82%仇恨效果。即使是1.3攻击速度的武器,仍然只有94%的破甲的TPS。(月猪:罗嗦半天就是说破甲比hs更好拉怪)

Bestpracticeistospamsunder,anduseHSinbetweentosoakupexcessrage.

实际效果最好是破甲和hs一起使用来消耗掉过量的怒气

d)Revengeftw.Youcanexpecttodoabout345unmodifiedthreatwithRevenge,includingdamage,againstthemobintheexampleabove,whichisexceptionalforthelowragecost,eventhrowingin10forashieldblock.However,thereisaragecostofshieldblock,inthatyouwillblockmoreattacks,sotakelessdamage,sogainlessragefromdamage.Twoblocksfor180damageandyoucansaygoodbyetoanother4rage.

复仇通过复仇可以获得345的无修正仇恨值,还有伤害造成的仇恨,这一切只需要少量的怒气,甚至已经花费10怒用在盾挡上。但是在盾挡上消耗怒气,承受伤害也下降了。2次格挡180伤害你可以跟4怒气说再见了。

e)DemoShoutftl.Demoralisingshoutdoesonesixththethreatofasunder.Evenspammedindefensivestancewithdefiance,you'redoingnomorethreatthan42dpsoneachmob.BesidespickingupwhelpsinOnyxiaandtankingpanthersinthePantherbossencounterinZG,ican'tseeacompellingreasontousethis.

挫志吼叫1/6的破甲仇恨值。即便是防御姿态+defiance天赋,降低每个怪42dps也无法带来更多仇恨。除非了黑龙蛋的那些小龙和zg里的一些豹子,真看不出有什么理由用这个技能。

f)ShieldSlamftl.Giventhe6secondcooldown,thereisnoimprovementinthreatpersecondbyusingshieldslam.Withshieldslam:3sundersand1shieldslamevery6seconds.About212threatpersecond,unmodified.Withthe30ragefromtheshieldslamyoucancast1sunderandabout1.2heroicstrikes,assumingyouhavethetalents(whichyouwouldwithanyshieldslambuild),andarelosing3rageperHeroicStrikefromlostwhitedamagerage(i.e.assuming90modifieddamageperhit).The4sundersand1.2heroicstrikesevery6secondsgivesabout215threatpersecond.

盾牌猛击6秒的cd,使用盾牌猛击无法对TPS有任何改善。3破甲1盾牌猛击每6秒,大概212的无修正TPS。但是30怒的盾牌猛击可以使用1破甲和1.2的英勇,假设你有盾牌猛击天赋(无论你怎样的天赋树结构),每次英勇都从普通攻击中损失3怒。4破甲1.2英勇每6秒带来215点TPS。

TheonlyimprovementisifyouarespammingbothsunderandHS,andwantevenmorethreat.Supposewehavea2.0speedweapon,HSspamandsunderspam.That'sabout280unmodifiedtps.Changingonesunderforashieldslamgivesus318unmodified.However,thesameeffectwouldbeachievedbychangingtoa1.4speedweaponandcastingHSmoreoften.Andthesevaluesaren'ttakingintoaccountautoattackdamage,whichmakesthemarginscomparativelysmaller.

唯一的好处是,当你一直在使用破甲和英勇打击,仍然希望获得更多的仇恨。

假设我们使用一个2s攻击速度的武器,英勇打击和破甲一直使用,这大概造成280的仇恨/秒。

如果把一个破甲换成盾牌猛击将给我们提供318点的额外怒气。当然这个效果也可以通过换成1个1.4秒攻击速度的武器而更频繁的使用英勇打击来实现。但是这个结果并没有考虑自动攻击的伤害造成的仇恨,实际上,使用一个1.4速度的武器,会使自动攻击的仇恨变小一些。

g)There'snoamazingsupersecretrandomisedblizzardaggroalgorithm.Theconceptsaresimpleandthevaluescanbefittedwithnicenumbers.Evenformulasforthreat-reducingknockbackscanconceivablybeworkedout,ifthreatvaluesarecarefullymonitored.

实际上,BLZ的怪物攻击目标的计算公式并没有什么特别秘密的计算方法。这个概念是很简单的,数值也很容易计算。甚至仇恨建立的数值和公式,也可以准确地计算出来----如果仇恨被很仔细的监视着。

Well,ihopesomeofyouarestillawake,andarefeelingsomewhatenlightened.Andifyouskippedtothebottom,ican'texactlyblameyouaftermyessayabove.

好吧我希望你们之中的有些人还是清醒的,能够从我的文章中发现一些有价值的东西。如果你。不好好看而只是扫了一遍,我鄙视你

展开全文

热门推荐

相关攻略

猜你喜欢