查看完整版本: 帐篷导致追随者死亡Bug的解决方法

云斯 2005-11-12 14:02

帐篷导致追随者死亡Bug的解决方法

原作者:nf_xp, 发表于:05年6月12日 22:30

[color=green]将 script49.[wiki]ERM[/wiki] 第 205 行到第 207 行[/color]

[code]!!BMx1&y6>-1:Ny8;                                    [set quantity to level] </p><p>
!!BMx1|y6=63/y6=154:By8;                             [if vampire lord or blood dragon set starting quantity to level][/code][color=green]
[/color]
[color=green]改为:[/color]
[code]
!!BMx1&y6>-1:Ny8 By8;                                [set level(quantity), starting quantity]
[/code][color=green]
大家可以去 [url=http://nf.ys168.com/]http://nf.ys168.com/[/url] [wiki]WoG[/wiki]目录里下载改好的,包括原版修正、Arstahd加强版修正和nf_xp加强版,都修正了帐篷导致[wiki]追随者[/wiki]死亡的Bug。[/color]
[color=green]
[color=blue]nf_xp加强版还包括其它修改:[/color]

1. Bug修正

1) 修正了帐篷治疗导致追随者死亡的Bug。
2) 修正了白[wiki]鬼[/wiki]魂追随者在长过命但血很少的情况下很容易被打死的Bug,并完善了逻辑。
3) 电脑由每仗前随机选择追随者变为无追随者或者追随者死亡时才(重新)选择追随者。
4) 电脑由随机选择追随者兵种(甚至圣龙)变为从已有部队兵种里选择。
5) 不可以(电脑也不会)选择[wiki]神[/wiki]使作为追随者(因为没有攻击力)。

2. 功能增加

1) 增加宝物“追随者日志”: 获得双倍最大战斗经验;更换追随者不会损失战斗经验;战斗初追随者被祈祷。追随者和[wiki]新宝物[/wiki]选项同时选中时有效,地图[wiki]WoG化[/wiki]时由个别高级宝物转换而来。

3. 平衡变动

1) 战斗经验由每次固定6~10点改为8~(8+[wiki]英雄[/wiki]等级)点。
2) 白鬼魂的升级比率由35改为60。
3) 电脑新选择追随者的战斗经验由max{上一追随者战斗经验,(25~35)x英雄等级}改为上一追随者战斗经验。

[color=blue]版本历史:[/color]

v1.2.1 2005-06-15

1. 地图WoG化时放置“追随者日志”由script00.erm合并到script49.erm里了。[color=red] 

压缩包里的script00.erm为原版,如果下载过v1.2,请用这个替换回去,否则请不要替换,特别是你的script00.erm有过其它自定义修改。最好的办法是做任何变动之前先备份。[/color] 
该原版文件也能在v1.2版压缩包backup子目录里找到。

2. 修正了“追随者日志”的地图消息文本。

v1.2 2005-06-14

1. 增加宝物“追随者日志”: 
1) 获得双倍最大战斗经验((8+英雄等级)x2)。 
2) 更换追随者不会损失战斗经验。 
3) 战斗初追随者被祈祷。 
追随者和新宝物选项同时选中时有效,地图WoG化时由个别高级宝物转换而来。

2. 白鬼魂追随者更符合逻辑:  战斗中数量(等级)不会改变,但是生命值和生命最大值会增长,增长的生命最大值不会保留。

v1.1 2005-06-13

1. Bug修正
1) 修正了帐篷治疗导致追随者死亡的Bug。
[color=seagreen]2) 修正了白鬼魂追随者在长过命但血很少的情况下很容易被打死的Bug。[/color]
3) 电脑由每仗前随机选择追随者变为无追随者或者追随者死亡时才(重新)选择追随者。
4) 电脑由随机选择追随者兵种(甚至圣龙)变为从已有部队兵种里选择。
5) 不可以(电脑也不会)选择神使作为追随者(因为没有攻击力)。

2. 平衡变动
1) 战斗经验由每次固定6~10点改为8~(8+英雄等级)点。
2) 白鬼魂的升级比率由35改为60。
3) 电脑新选择追随者的战斗经验由max{上一追随者战斗经验,(25~35)x英雄等级}改为上一追随者战斗经验。

[color=blue]追随者相关问题解释:[/color]
1. 为什么追随者不受部分兵种加强、英雄兵种特长影响? 
因为兵种加强、英雄兵种特长的脚本在生成追随者的脚本之前执行,所以对后生成的追随者没有影响。这就是“为什么部队是全箭但追随者反而是半箭”等问题出现的原因。</p><p>

2. 为什么追随者会被帐篷治疗致死? 
当治疗超量后,部队数量会被限制到小于等于战斗初数量。因为没有事先记录追随者的战斗初数量,所以被限制到小于等于默认值0了。

3. 为什么白鬼魂追随者会明明数量增长了,但更容易死亡? 
因为官方的判断是,如果追随者的数量少了一个以上,就判为死亡,不管其数量是否增加过。 

修改版1.2版以上的逻辑为:白鬼魂做为追随者,战斗中数量(等级)不会改变,但是生命值和生命最大值会增长,增长的生命最大值不会保留。 

[color=blue]例如:10级白鬼魂追随者,战斗初生命值和生命最大值为200。吸取生命值50后生命值和生命最大值变为250(生命值和生命最大值会增长)。被攻击掉20生命值后生命值和生命最大值变为230(增长的生命最大值不会保留)。再被攻击掉40生命值后生命值为190,但生命最大值仍为200(原有的生命最大值会保留)。其间数量(等级)一直为10。[/color][/color]

lwings 2007-12-26 11:57

下载空间打不开

zxlever 2008-6-7 12:44

下载空间打不开

zhy555555_ll 2008-7-24 16:07

script49

ZVSE
ERMS_ScriptName=追随者
ERMS_ScriptAuthor=Arstahd
ERMS_ScriptVersion=1.0.0
ERMS_ScriptDate=15.1(January).2005
ERMS_ScriptER[wiki]MV[/wiki]ersion=2.70
ERMS_ScriptLanguage=简体中文 or 中文(简体) (native)
ERMS_ScriptUsedVariables=v7181;v7206-7217
ERMS_AdditionalFiles=修改:GB;增加追随者可得到经验等级;[wiki]转职[/wiki]和设定经验点的功能
ERMS_ScriptUsedTimers=19
ERMS_ScriptUsedFunctions=7100-7109
ERMS_ScriptERMVerv7213sion=2.70
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.6.29.918
** HENCHMEN  -  ERM script 49

** By Arstahd
** Version: 1.16   updated August 23 2004               
** Thanks to Hermann the Weird for bug fixing and script maintenance

** Note: Henchmen will not appear in network human-to-battles in this version.

** Variables used:
** V variables:    v7206-v7217 v7181  
** Z variables:    z1-z9,z170-171
** W variables:    w117(经验),w118(类型),w119(生死),w120(保存追随天数)
** Functions used: 7100-7109
** Timers used:    19 (copy of T19 used in script00)


** allows you to select one of your creatures to act as a Henchman, and fight with your army
** left click on player-color flag in upper right corner of hero screen to select a new henchman or check status
** right click on player-color flag in upper right corner of hero screen to view help page

** henchmen gain status for each battle fought and gain levels (indicated by increased stack quantity)
** henchmen have a status bonus based on hero level and current day
** lower level/un-upgraded creatures level up faster than higher level/upgraded creatures
** dead henchmen can be resurrected in a town for a fee based on creature cost and level
** AI heroes have a (good) chance of having a henchman of random level (based on hero level)

** henchmen gain +1 attack, +1 defense, +1 speed
** henchmen gain an additional +1 speed for every 10 levels
** henchmen gain an additional +1 attack and +1 defense for every 3 levels
** henchmen gain +2-5 to base damage
** henchmen gain +10 to base health

** henchmen have a "dummy spell" (disguise) applied to color their quantity tag to help separate them from normal creatures
** henchmen will die after one of the stack is lost, they may offer one last retaliation before doing so

**补充说明**
;战斗时,追随者可以获得经验等级,为英雄等级除2
;可以重新设定战斗后经验获得值,有四种选择,默认为4-10点
;原来是更换追随者则经验归零,我改为减半,不用太心痛了.
;追随者可以转职,具体为
;1.转职条件为追随天数不低于该兵种的最低追随天数Follow Rate
;  追随天数由选择追随者的那天计算,转职后追随天数归零,重新计算.
;2.一般是同城兵种转职,也就是1-[wiki]8级兵[/wiki]的顺序
;  中立兵种的转职比较乱,懒得去排了,恶鬼Troll会转职为战争机器的.
;  宠物也可以转出来,由圣诞小鬼去转比较快
;  WOG新增加的生物也可以互相转职,更加乱就是.
;  如果你要查具体的转职顺序,可以查ERM帮助中的Format C表.
;对电脑的加强:电脑英雄会100%带出追随者,原来是75%
;电脑的追随者不会出现七,八级兵,同一英雄的追随者会一次比一次强.
;ps:如果大家使用这ERM时出现问题请到论坛告之,Thank~
;(GB修改于2005-1-15)
;该ERM为Arstahd写的,再次感谢~

!#VRv7206:S0;                                        [initialize "done" flag]
*#UN:P49/?v7181;                                     [check if Henchmen is enabled in WoGify Options]
!#VRv7218:S0;
!#VRv7181:S1;
** Timer routines
!#TM19:S1/1/1/255;
!#TM20:S2/999/1/255;                                 记录追随天数的TM触发器
!?TM19&1000;                                         [continue if enabled   day 1 only ]
!!DO7105/0/155/1&v7206=0:P;                          [iterate through all heroes]

!?TM20&1000;    w120=追随天数
!!DO7112/0/155/1:P;
!?FU7112;
!!IF:Wx16;
!!VRw120&w119=1:+1;

** start of hero screen mouse trigger **
!?CM2&v7181=1;                                       [continue if enabled]                           

!!CM:I?y-3 F?y-4 S?y-5;                              [get mouse click, flag, subtype]
!!IF&y-3=141/y-4=512:Q2/-1/-1/1^HENCHMAN BONUS STATS AT LEVEL 1 :

+1 Attack
+1 Defense
+1 Speed
+2-5 Base Damage
+10 Base Health

At every 3rd level : +1 Attack, +1 Defense
At every 10th level : +1 Speed

Henchmen gain {Status} for each battle fought and gain levels (indicated by increased stack quantity). They also benefit from a {Status Bonus} based on hero level and current day.

Henchmen will die after one of the stack is lost, they may offer one last retaliation before doing so.

Lower level/un-upgraded creatures level up faster than higher level/upgraded creatures.

The "Disguise" spell is applied to color their quantity tag to help separate them from normal creatures.

Dead henchmen can be resurrected in a town for a fee based on creature cost and level.

AI heroes have a (good) chance of having a henchman of random level ({Status} based on hero level). The creature type is chosen randomly each battle and may even be of a type not in the hero's army.
^;

!!FU|y-3<>141/y-4<>0/y-5<>12:E;                      [continue if player banner (141) was left clicked only, else exit]

!!CM:H?y-1/?y-2;                                     [get hero number]
!!IF&y-1>-1:Wy-1;                                    [enable hero variable]  

!!FU7106&w118>-1:Py-1;                               [if a henchman, display henchman info]
!!FU7102&w118<0:P;                                   [if no henchman, select one]
!!UN:R3/-1;                                          [redraw]

** end of hero screen mouse trigger **

** start of object trigger - towns **
!?OB98&1000;
!!OW:I-1/?y-2;                                        [check if human hero]
!!CA998&y-2=0:O?y-4;                                  [get town owner]
!!HE-1&y-2=0:N?y-1 O?y-3;                             [get hero number, owner]
!!IF&y-2=0/y-1>-1:Wy-1;                               [enable hero variable]  
!!FU7108&y-2=0/w118>-1/w119=0/y-3=y-4:Py-1;           [if dead henchman, display resurrection info]

*!FU7109&y-2=0/w118=-1/y-3<>y-4:P;                    [function for reminder message]
** end of object trigger - towns **

** start of object trigger - monsters **
!?OB54&1000;                                          [object trigger - monsters]
!!FU7109:P;                                           [function for reminder message]
** end of object trigger - monsters **

!?FU7109;

!!OW:I-1/?y-2;                                       [check if human hero]
!!HE-1&y-2=0:N?y-1 O?y-3;                            [get hero number, owner if human]
!!IF&y-2=0/y-1>-1:Wy-1;                              [enable hero variable]  

!!IF&y-2=0/w118=-1:Q2/10/y-3/2^You have not yet chosen a Henchman.
Do you wish to look over your troops and see if any are worthy of the honor?

(Selecting NO will disable future reminders for this hero.)



{To open Henchman screen : Left Click on color banner on hero screen}
{To view Henchman help : Right Click on color banner on hero screen}^;

!!FU7102&2/y-2=0/w118=-1:P;                          [if yes select henchman]
!!VRw118&-2/y-2=0/w118=-1:S-2;                       [if no set to disable future messages]
** end of function **


** start of battlefield trigger **
!?BF&1000;                                        [continue if enabled]

!!VRv7207:C-1/-1/-1/-1/-1/-1;                        [initialize variables]
!!VRy-1:S-2;                                         [initialize variable]

!!BU:E2/?y-7;                                        [check for enemy creature at position 2 for banks]

!!BA:H0/?y-1;                                        [get hero number - attacker]
!!HEy-1&y-1>-1:O?y-3;                                [get attacker's owner]
!!OW:Iy-3/?y-6;                                      [check if AI]
!!FU7103&y-6=1/y-1>-1:Py-1;                          [choose henchman for AI]
!!IF&y-1>-1:Wy-1;                                    [enable hero variable - attacker]  
!!VRy-8&y-7<21:S20;                                  [set position - normal]
!!VRy-8&y-7>20:S25;                                  [set position - bank]
!!BU&w118>-1/w119=1/y-1>-1:Sw118/1/y-8/0/-1/0;       [add a creature to attacker's army at position y-8]
!!BU&w118>-1/w119=1/y-1>-1:Ey-8/?v7207;              [get stack]
!!FU7101&w118>-1/w119=1/y-1>-1/v7207>-1:Pv7207/0/y-1;[add stat increases - attacker]

!!VRy-2:S-2;                                         [initialize variable]
!!BA:H1/?y-2;                                        [get hero number - defender]
!!HEy-2&y-2>-1:O?y-3;                                [get defender's owner]
!!OW:Iy-3/?y-6;                                      [check if AI]
!!FU7103&y-6=1/y-2>-1:Py-2;                          [choose henchman for AI]
!!IF&y-2>-1:Wy-2;                                    [enable hero variable - defender]  
!!BU&w118>-1/w119=1/y-2>-1:Sw118/1/30/1/-1/0;        [add a creature to defender's army at position 30]
!!BU&w118>-1/w119=1/y-2>-1:E30/?v7208;               [get stack]
!!FU7101&w118>-1/w119=1/y-2>-1/v7208>-1:Pv7208/1/y-2;[add stat increases - defender]
** end of battlefield trigger **


** pre-action trigger
!?BG;                              [continue if enabled]


!!BMv7207&v7207>-1:N?v7211 H?v7216;                  [get quantity and health of henchman - attacker]
!!BMv7208&v7208>-1:N?v7212 H?v7217;                  [get quantity and health of henchman - defender]
!!BG&v7207=v7210/v7211=0:A3;                         [if dead henchman is next set to defend - attacker]
!!BG&v7208=v7210/v7212=0:A3;                         [if dead henchman is next set to defend - defender]


** end of pre-action trigger

** post-action trigger
!?BG1;                             [continue if enabled]

!!BG:N?v7210;                                        [get current stack #]

!!BMv7207&v7207>-1:N?y-2 T?y-3;                      [get quantity, type of henchman stack - attacker]
!!BMv7207&v7207>-1/y-2<v7211:K100000;                [kill henchman stack if any were killed - attacker]
!!FU7107&v7207>-1/y-2<v7211:P0/0;                    [set dead - attacker]
!!BMv7207&v7207>-1/y-2>v7211/y-3<>159:Nv7213 L0;     [reset quantity of henchman stack if resurrected (unless ghost) - attacker]
!!FU7107&v7207>-1/y-2>v7211/y-3<>159:P0/1;           [set alive (unless ghost) - attacker]
!!BU&v7207>-1/y-2<v7211/y-3<>159:R;                  [redraw screen (unless ghost)]

!!BMv7208&v7208>-1:N?y-2 T?y-3;                      [get quantity, type of henchman stack - defender]
!!BMv7208&v7208>-1/y-2<v7212:K100000;                [kill henchman stack if any were killed - defender]
!!FU7107&v7208>-1/y-2<v7212:P1/0;                    [set dead - defender]
!!BMv7208&v7208>-1/y-2>v7212/y-3<>159:Nv7214 L0;     [reset quantity of henchman stack if resurrected (unless ghost) - defender]
!!FU7107&v7208>-1/y-2<v7212/y-3<>159:P1/1;           [set alive (unless ghost) - defender]
!!BU&v7208>-1/y-2<v7212/y-3<>159:R;                  [redraw screen (unless ghost)]
** end of post-action trigger

** function to get monster names
!?FU7100;             x1= Z index
!!HE-1:C0/x16/?y1/?y2;                               [get monster in slot x16 type, quantity]
!!UN&x16=0/y1>-1:N3/2/y1/0;                          [get monster name]
!!UN&x16=1/y1>-1:N3/3/y1/0;                          [get monster name]
!!UN&x16=2/y1>-1:N3/4/y1/0;                          [get monster name]
!!UN&x16=3/y1>-1:N3/5/y1/0;                          [get monster name]
!!UN&x16=4/y1>-1:N3/6/y1/0;                          [get monster name]
!!UN&x16=5/y1>-1:N3/7/y1/0;                          [get monster name]
!!UN&x16=6/y1>-1:N3/8/y1/0;                          [get monster name]

** end of function


** function to give stat increases    x1=stack  x2=attacker/defender  x3=hero number
!?FU7101;     

!!BMx1:T?y6;                                         [get stack type]
!!FU7104&y6>-1:Py6;                                  [get monster level]
!!VRy7&y6>-1:Sv7215;                                 [copy monster level]
!!IF&y6>-1:Wx3;                                      [enable hero variable]  
!!HEx3:E?y1/?y2/1;                                   [get hero exp, level]
!!VRy10:Sy2 -1 *10 +w117 +c;                         [experience points = (hero level -1) x10  +earned xp + current day]
!!VRv7213&x2=0/y6>-1:Sy10 :y7 +1;                    [level = experience points / monster level + 1 - attacker]
!!VRv7214&x2=1/y6>-1:Sy10 :y7 +1;                    [level = experience points / monster level + 1 - defender]
!!VRy8&x2=0/y6>-1:Sv7213;                            [copy attacker level to y8]
!!VRy8&x2=1/y6>-1:Sv7214;                            [copy defender level to y8]

!!VRy4&y6>-1:Sy8 :10 +1;                             [bonus = level / 10 + 1]
!!BMx1&y6>-1:Sdy4;                                   [give +1 speed per 10 levels]

!!BMx1&y6>-1:U1/d2;                                  [give +2 min damage]
!!BMx1&y6>-1:U2/d5;                                  [give +5 max damage]

!!VRy4&y6>-1:Sy8 :3 +1;                              [bonus = level / 3 + 1]
!!BMx1&y6>-1:Ady4 Ddy4;                              [give +1 attack and +1 defense per 3 levels]

!!BMx1&y6>-1:H?y4;                                   [get health]
!!VRy5&y6>-1:Sy4 +10 *y8;                            [health - add 10, multiply by level]
!!BMx1&y6>-1:Hy5;                                    [set health]
!!BMx1&y6>-1:Ny8 By8;                                [set level(quantity), starting quantity]

!!BMx1&y6>-1:M4/100/1;                               [give disguise dummy spell to make tag yellow]

;由v7218的内容选择执行下面其中一条.
!!VRw117&v7218=0:+6 T4;       [After win,gain 6-10 points per battle]
!!VRw117&v7218=1:+10 T5;      10-15
!!VRw117&v7218=2:+20 T10;     20-30
!!VRw117&v7218=3:+50;         50

;由英雄等级确定追随者的经验等级
!!VRy11:Sy2 :2;                                  英雄级别/2
!!VRy11&y11>10:S10;                              限制最高10级
!!VRy12:Sx1 *-1 -1;                              计算经验堆栈值
!!EAy12:Ey11/12/d/d;                             按英雄级别给予追随者经验等级

*tactics speed boost if enabled*

!!UN:P218/?y1;                                       [check if tactics is enabled in WoG options]
!!FU&y1<>1:E;                                        [exit if it isn't]
!!VRy3:S0;                                           [initialize y3]
!!VRy4:S0;                                           [initialize y4]
!!BH0:N?y1;                                          [attacking hero #]
!!BH1:N?y2;                                          [defending hero #]
!!HEy1&y1>=0:S19/?y3;                                [get attacker's tactics]
!!HEy2&y2>=0:S19/?y4;                                [get defender's tactics]
!!FU&y3=0/y4=0:E;                                    [exit if no one has tactics]
!!FU&y3=y4:E;                                        [exit if equal tactics level]
!!FU&y3<y4/x2=0:E;                                   [exit if defender's tactics superior - attacker]
!!FU&y3>y4/x2=1:E;                                   [exit if attacker's tactics superior - defender]
!!VRy5&y3>y4/x2=0:S0 +y3 -y4;                        [set bonus if attackers tactics superior - attacker]
!!VRy5&y3<y4/x2=1:S0 +y4 -y3;                        [set bonus if defenders tactics superior - defender]
!!BMx1&y6>-1:Sdy5;                                   [give tactics speed boost]

** end of function


** function to pick henchman
!?FU7102;             x1=

!!VRz1:S^你需要选择一个新的追随者吗?^;
!!VRz2:S^^;
!!VRz3:S^^;
!!VRz4:S^^;
!!VRz5:S^^;
!!VRz6:S^^;
!!VRz7:S^^;
!!VRz8:S^^;
!!VRz9:S^解散追随者^;
!!VRz10:S^取消^;

!!VRz170:S^重新设定经验获得值^;
!!VRz171:S^---=<转 职>=---^;
!!DO7100/0/6/1:P2;
!!IF&1000:G1/1/1024/1/2/3/4/5/6/7/8/9/170/171/10;                [give choice to human]
!!FU&v1=1024:E;

!!VRy2&v1=1:S0;
!!VRy2&v1=2:S1;
!!VRy2&v1=4:S2;
!!VRy2&v1=8:S3;
!!VRy2&v1=16:S4;
!!VRy2&v1=32:S5;
!!VRy2&v1=64:S6;

!!HE-1&v1<256:N?y3;                                  [get hero number]
!!HE-1&v1<128:C0/y2/?y1/d-1;                         [get monster type, reduce quantity by 1]
!!IF&v1<256/y3>-1:Wy3;                               [enable hero variable]
*!VRw117&v1<256:S0;                                  [reset experience]
!!VRw117&v1<128::2;                                  更换则经验值减半.
!!VRw120&v1<128:S1;                                  解雇则追随天数=1.
!!VRw118&v1<128:Sy1;                                 [store monster type]
!!VRw118&v1=128:S-2;                                 [reste monster type if dismissed]
!!VRw117&v1=128:S0;                                  解雇则经验值为零
!!VRw120&v1=128:S0;                                  解雇则追随天数归零.
!!VRw119&v1<128:S1;                                  [set to alive]

!!IF&v1=512/w118<0:M^Where is your Henchman?^;       容错处理
!!FU7111&v1=512/w118>-1:Pw118;     转职函数

!!FU7110&v1=256:P;                 经验函数

** end of function
;---------------------------------------------------------------------
** 重新设定经验点-函数
!?FU7110;
!!VRz1:S^请选择每次战斗后获得的经验范围:^;
!!VRz2:S^6-10,默认.^;
!!VRz3:S^10-15,标准.^;
!!VRz4:S^20-30,加强.^;
!!VRz5:S^50-50,超快.^;
!!VRz6:S^不选择,退出^;
!!IF&1000:G1/1/16/1/2/3/4/5/6;
!!VRv7218&v1=1:S0;    变量v7218保存选择结果
!!VRv7218&v1=2:S1;
!!VRv7218&v1=4:S2;
!!VRv7218&v1=8:S3;
** 完
;---------------------------------------------------------------------
** 转职函数 **
!?FU7111;
!!FU7113:Px1;                              检查该兵种的最低追随天数
!!IF&w120<v7219:M^Follow days too low.^;   少于最低天数则退出
!!FU&w120<v7219:E;

!!VRy11:Sw118 +1;         获得转职对象的类型

!!VRy11&w118=13:S150;     7级兵另外处理
!!VRy11&w118=27:S151;
!!VRy11&w118=41:S152;
!!VRy11&w118=55:S153;
!!VRy11&w118=69:S154;
!!VRy11&w118=83:S155;
!!VRy11&w118=97:S156;
!!VRy11&w118=111:S157;
!!VRy11&w118=131:S158;

!!VRy11&w118=112:S127;    四系元素兵的非正常顺序处理
!!VRy11&w118=113:S125;
!!VRy11&w118=114:S129;
!!VRy11&w118=115:S123;
!!VRy11&w118=127:S115;
!!VRy11&w118=123:S114;
!!VRy11&w118=129:S113;
!!VRy11&w118=125:S120;
!!VRy11&w118=121:S130;

!!VRy11&w118=148:S145;    禁止箭塔出现
!!VRy11&w118=196:S0;      龙巫妖到枪兵(196>>0),循环处理
!!IF:Q5/21/w118/21/y11/2^Fellow days OK,upgrade?^;   提问是否转职
!!FU7114&5:P;              调用正式转职函数

;---------------------------------------------------------------------
** 检查最低追随天数
!?FU7113;
!!MA:Lx1/?y10;         检查该追随者的等级
!!VRv7219&y10=0:S3;    一级兵为3天,每级+1
!!VRv7219&y10=1:S4;
!!VRv7219&y10=2:S5;
!!VRv7219&y10=3:S6;
!!VRv7219&y10=4:S7;
!!VRv7219&y10=5:S8;
!!VRv7219&y10=6:S9;   未升级的7级兵转升级的需9天
;高级七级兵到八级兵需要14天
!!VRv7219|x1=13/x1=27/x1=41/x1=55/x1=69/x1=83/x1=97/x1=111/x1=131:S14;
;---------------------------------------------------------------------

** 正式转职函数
!?FU7114;
!!VRy18:Sw118;           临时比较变量,确定是否转职成功.
!!VRw118:+1;             同城兵种转职则兵种代码+1

!!VRw118&w118=14:S150;   7级转8级则另外处理,这一行是大[wiki]天使[/wiki]转神圣大天使
!!VRw118&w118=28:S151;
!!VRw118&w118=42:S152;
!!VRw118&w118=56:S153;
!!VRw118&w118=70:S154;
!!VRw118&w118=84:S155;
!!VRw118&w118=98:S156;
!!VRw118&w118=112:S157;
!!VRw118&w118=132:S158;

!!VRw118&w118=112:S127;  四系元素的特殊处理
!!VRw118&w118=113:S125;
!!VRw118&w118=114:S129;
!!VRw118&w118=115:S123;
!!VRw118&w118=127:S115;
!!VRw118&w118=123:S114;
!!VRw118&w118=129:S113;
!!VRw118&w118=125:S120;
!!VRw118&w118=121:S130;

!!VRw118&w118=148:S145;  战争机器的循环处理,防止箭塔作为追随者出现

!!VRw118&w118=197:S0;    龙巫妖作为最高兵种类型,转职则变回枪兵,呵呵

!!VRw120&w118<>y18:S0;   追随天数清零
** 转职函数结束 **
;---------------------------------------------------------------------

** function to pick henchman for AI
!?FU7103;             x1= hero #  x16= slot #

!!IF:Wx1;                                            [enable hero variable]  
!!VRy1:S7;                                        [random roll: 0-6 = use slot number, 7 = choose random creature]
*!HEx1&y1<7:C0/y1/?y2/?y3;                           [get monster type, quantity in slot y1]
!!VRy2&y1>6:S0 T173;                                 [random 0 to 199]
!!VRy2&y1>6/y2>=132/y2<=135:S105;                 [random 0 to 173 (reroll if super dragons were selected)]
!!VRy2&y1>6/y2>=150/y2<=158:S75;                 [random 0 to 173 (reroll if 8th levels were selected)]
!!VRy2&y1>6/y2>=145/y2<=149:S29;                 [random 0 to 131 (reroll if war machines were selected)]
!!VRy2&y1>6/y2>=160/y2<=163:S63;                 [random 0 to 131 (reroll if emissaries were selected)]
!!VRy2&y1>6/y2=122:S192;                             [set NOT USED 1 to sylvan centaur]
!!VRy2&y1>6/y2=124:S193;                             [set NOT USED 2 to sorceress]
!!VRy2&y1>6/y2=126:S194;                             [set NOT USED 3 to werewolf]
!!VRy2&y1>6/y2=128:S195;                             [set NOT USED 4 to hell steed]
!!VRy2&y1>6/y2>173:S119;                              [if >173, set to -1]
!!VRy2&y1>6/y2<0:S35;
!!MA:Ly2/?y11;
!!VRy2&y11=6:S119;

!!HEx1&y2>-1:E?y6/?y7/1;                             [get hero exp, level]
!!VRy4&y2>-1:S15 T5 *y7;                             [random # 25-35 x hero level]
!!VRw118&y2>-1:Sy2;                                  [set henchman type]
!!VRw117&y2>-1/w118>-1/y4>w117:Sy4;                  [set AI experience if greater than previous]
!!VRw119&y2>-1:S1;                                   [set to alive]
!!VRw119&y2=-1:S0;                                   [set to dead]
** end of function

** function to get creature level    x1=type
!?FU7104;              

!!MA:Lx1/?y7;                                        [get monster level (0-6)]

!!VRy8:S0;                                           [set to 0]
!!VRy8&x1<112:Sx1 %2;                                [check if upgraded]

!!VRv7215&y7=0/y8=0:S20;                             [if level 1 = 20]
!!VRv7215&y7=1/y8=0:S25;                             [if level 2 = 25]
!!VRv7215&y7=2/y8=0:S35;                             [if level 3 = 35]
!!VRv7215&y7=3/y8=0:S50;                             [if level 4 = 50]
!!VRv7215&y7=4/y8=0:S75;                             [if level 5 = 75]
!!VRv7215&y7=5/y8=0:S115;                            [if level 6 = 115]
!!VRv7215&y7=6/y8=0:S180;                            [if level 7 = 180]

!!VRv7215&y7=0/y8=1:S22;                             [if level 1 = 22 (upgrade)]
!!VRv7215&y7=1/y8=1:S28;                             [if level 2 = 28 (upgrade)]
!!VRv7215&y7=2/y8=1:S40;                             [if level 3 = 40 (upgrade)]
!!VRv7215&y7=3/y8=1:S58;                             [if level 4 = 58 (upgrade)]
!!VRv7215&y7=4/y8=1:S88;                             [if level 5 = 88 (upgrade)]
!!VRv7215&y7=5/y8=1:S136;                            [if level 6 = 136 (upgrade)]
!!VRv7215&y7=6/y8=1:S250;                            [if level 7 = 250 (upgrade)]


!!VRv7215&x1=112:S35;                                [make air elemental = 35]
!!VRv7215&x1=127:S40;                                [make storm elemental = 40]
!!VRv7215&x1=113:S50;                                [make earth elemental = 50]
!!VRv7215&x1=121:S58;                                [make magma elemental = 58]
!!VRv7215&x1=119:S22;                                [make sprite = 22]
!!VRv7215&x1=121:S136;                               [make magic elemental = 136]
!!VRv7215&x1=123:S40;                                [maker ice elemental = 40]
!!VRv7215&x1=129:S58;                                [make energy elemental = 58]
!!VRv7215&x1=131:S225;                               [make phoenix = 225]

!!VRv7215&x1=132:S550;                               [make azure dragon = 550]
!!VRv7215&x1=133:S450;                               [make crystal dragon = 450]
!!VRv7215&x1=134:S350;                               [make faerie dragon = 350]
!!VRv7215&x1=135:S400;                               [make rust dragon = 400]
!!VRv7215&x1>=150/x1<=158:S400;                      [make level 8 creatures = 400]

!!VRv7215&x1=63:S100;                                [make vampire lord = 80]
!!VRv7215&x1=159:S55;                                [make ghost = 25]
!!VRv7215&x1=172:S136;                               [make nightmare = 136]
!!VRv7215&x1=196:S500;                               [make dracolich = 500]

** end of function                                               

** function to initialize hero variable w118   
!?FU7105;              
!!IF:Wx16;                                           [enable hero variable]  
!!VRw118:S-1;                                        [set to -1]
!!VRw120:S0;                                         追随天数清零
!!VRv7206:S1;                                        [set "done" flag]
** end of function

** function to display henchman    x1 = hero number
!?FU7106;            
!!IF&x1>-1:Wx1;                                      [enable hero variable]  
!!VRz1:S^^;
!!VRz1&w119=0:S^<<<<{DEAD}>>>>^;
!!FU7104&w118>-1:Pw118;                              [function to get monster level]
!!HEx1:E?y1/?y2/1;                                   [get hero exp, level]
!!VRy2:-1 *10 +c -1;                                 [bonus status = (hero level -1) x10  + current day -1]
!!VRy11:Sw117 +y2;                                   [total status points = earned status + bonus status]
!!VRy3:Sy11 :v7215 +1;                               [henchman level = status points / level rate + 1]
!!VRy4:Sy11 %v7215 -v7215 *-1;                       [calculate status needed for next level]


!!MA&w118>-1:Aw118/?y1;                              [get base attack]
!!VRy5:Sy3 :3 +1 +y1;                                [attack = level / 10 + 1 + base]
!!MA&w118>-1:Dw118/?y1;                              [get base defense]
!!VRy6:Sy3 :3 +1 +y1;                                [defense = level / 3 + 1 + base]
!!MA&w118>-1:Pw118/?y1;                              [get base health]
!!VRy7:Sy1 +10 *y3;                                  [health = base + 2 x level]
!!MA&w118>-1:Mw118/?y1;                              [get base damage min]
!!VRy8:Sy1 +2 *y3;                                   [damage min = base + 2 x level]
!!MA&w118>-1:Ew118/?y1;                              [get base damage max]
!!VRy9:Sy1 +5 *y3;                                   [damage max = base + 5 x level]
!!MA&w118>-1:Sw118/?y1;                              [get base speed]
!!VRy10:Sy3 :10 +1 +y1;                              [speed = level / 3 + 1 + base]
!!FU7113:Pw118;

!!IF:Q2/21/w118/2^{Henchman level} : %Y3
{Level Rate} : %V7215  {Status for next level} : %Y4
{Status Total} : %Y11  {Earned} : %W117  {Bonus} : %Y2
Attack : %Y5   Defense : %Y6
Health : %Y7   Damage : %Y8-%Y9
Speed : %Y10
Follow : %W120 days
(Follow Rate=%V7219 days)
%Z1
{Do you wish to select a new Henchman?}^;
!!FU7102&2:P;                                        [if yes, select henchman]
** end of function

** function to handle dead/alive status   
!?FU7107;               x1=attacker/defender    x2= dead/alive
!!BA&x1=0:H0/?y1;                                    [get hero number - attacker]
!!BA&x1=1:H1/?y1;                                    [get hero number - defender]
!!IF:Wy1;                                            [enable hero variable]  
!!VRw119:Sx2;                                        [set to x2 0=dead,1=alive]
** end of function

** function to resurrect dead henchman   
!?FU7108;               
!!IF&x1>-1:Wx1;                                      [enable hero variable]  
!!FU7104&w118>-1:Pw118;                              [get monster level]
!!HEx1:E?y6/?y7/1;                                   [get hero exp, level]
!!IF&x1>-1:Wx1;                                      [enable hero variable]  
!!VRy10:Sy7 -1 *10 +w117 +c;                         [experience points = (hero level -1) x10  +earned xp + current day]
!!VRy3:Sy10 :v7215 +1;                               [henchman level = experience points / level rate + 1]
!!MA:Cw118/6/?y8;                                    [get base creature cost]
!!VRy4:Sy8 *y3 :5;                                   [resurrection cost = base cost x henchman level / 5]
!!IF:Q2/21/w118/2^{Henchman level = %Y3}

Do you wish to resurrect this Henchman?
It will cost %Y4 gold.^;
!!OW:R-1/6/?y5;                                      [get current gold amount]
!!VRy8&2/y5>=y4:Sy5 -y4;                             [calculate gold transaction]
!!OW&2/y5>=y4:R-1/6/y8;                              [if yes and player has enough gold,set new gold amount]
!!VRw119&2/y5>=y4:S1;                                [if yes and player has enough gold, set to alive]
!!IF&2/y5<y4:M^Sorry, you can't afford to pay for the resurrection.^; [if yes and player does not have enough gold, display message]
** end of function

ffghop 2008-8-16 11:21

谢谢了!:good_job:
页: [1]
查看完整版本: 帐篷导致追随者死亡Bug的解决方法