小H最近沉迷于一个魔兽rpg对战地图Defense of the Ancients。他对dota的字幕提示非常感兴趣,因此想要编写一个程序来实现类似功能。
Dota的字幕提示主要是关于杀人,主要有以下4类提示:
基本类:A pawned B’s head.
连杀类:A is on a killing spree/dominating/has a mega kill……!
多杀类:A just got a Double Kill/Triple Kill!
局势类:The Scourge/Sentinel is OWNING!
关于Dota的四类字幕提示,出现规律分别如下:
基本类:
这类一定在每次击杀后第一时间出现。
这类提示有以下3个变化:
1. 如果这是全游戏第一个有效击杀,那么在下一行显示“A just drew first blood.”
2. 如果在一个有效击杀内被杀的玩家在之前有连杀类提示,则显示“A has just ended B’s [B的称号].”其中括号内为B的当前称号
3. 如果是一名玩家杀死了他自己,则显示“A has killed himself.”,如果一个玩家不是被敌方阵营玩家杀死,则显示“A has been killed by B.”
连杀类:
这类提示出现在基本类之后,如果某人在没有被敌对阵营玩家杀死的前提下完成了至少3次击杀,那么从此往后每次击杀都会有连杀类提示,字幕分别如下:
3杀 - A is on a killing spree!
4杀 - A is dominating!
5杀 - A has a mega kill!
6杀 - A is unstoppable!
7杀 - A is wicked sick!
8杀 - A has a monster kill!
9杀 - A is godlike!
10杀以上 - A is beyond godlike. someone kill him!
同时当该玩家在之后被杀死时基本类提示会出现变化,出现提示与该玩家的称号有关,称号分别如下:
3杀 - killing spree
4杀 - dominating
5杀 - mega kill
6杀 - unstoppable
7杀 - wicked sick
8杀 - monster kill
9杀 - godlike
10杀以上 - beyond godlike
多杀类:
这类提示出现在连杀类提示之后,如果某人在杀死一个人之后10秒内完成了第二 次击杀,则出现多杀类提示,字幕分别如下:
双杀:A just got a Double Kill!
三杀:A just got a Triple Kill!
多杀统计只需要相邻两次击杀时间相差不超过10秒,即三杀以上的第一次击杀和最后一次击杀之间相差可以超过10秒。
注意当多杀累计超过3个时,仍然显示三杀提示。
另外多杀与连杀为两个系统,即多杀期间即使自身死亡也不中断多杀统计。
局势类:
这类提示出现在多杀类提示之后。
如果一个阵营内的玩家完成了至少5次击杀并且此间本阵营玩家没有被敌对阵营玩家击杀,则会显示:
The Scourge/Sentinel is OWNING!
这里与击杀方阵营有关。
需要注意的是,一个击杀为有效击杀当且仅当这个击杀是一名玩家被另一名玩家所杀,若一个击杀并非有效击杀,则只会触发基本类提示。