本帖最后由 aoc初心者 于 2011-10-15 16:51 编辑
小弟是香港人,希望你們看得懂我的書面語
話說我在早前研究有關血量高於16777216血量顯示的問題時,
無意中發現一個被攻擊即死亡與英雄式回血的效果,
不過英雄式回血的效果已被ng說明了,
而且追尋歷史後發現有人比我更早用了這個效果在一個叫玻璃人回家記的劇情內
可是作者卻沒有繼續研究有關的原因,
所以我作了不同的測試和研究後,
把這個一擊即死的效果名為玻璃人效果。
首先先說說高血量研究,
一隻16777216血的兵再摧毀目標-1的時候
你會發現他也是16777216血,即使你把觸發改為循環,
結果也是保持血量不變
所以在英雄式回血中的第一個效果-16777216+A
當英雄為A血的時候,再加上16777216-A便會變為16777216血
然而,你再怎樣的摧毀目標-1也是16777216,
最後再減回16777216+A便變回A血,
詳情在 ng 的
每秒回復 n 血, 而且不破血
中已有說明,
在此我不再詳述有關英雄式回血的資料,
不過有一點值得注意的,
就是如果輸入比-1小的數值時 (即增加更多血量,如輸入-2,-3,-4,....)
血量卻會有所改變,
而且你會發現血量只會顯示為雙數(2的倍數)。
因此我決定作一個血量為16777216以上的研究,
首先我分別建立血量為1至10的民兵,
再用效果摧毀目標 -16777216與
摧毀目標16777216後,
發現以下結果:
1>0 (由1血變為0血,即是民兵死亡) 2>2 (由2血變為2血,即保持為2血) 3>4 (由3血變為4血) 4>4 5>4 6>6 7>8 8>8 9>8 10>10
為了方便觀察,我把血量擴充為1至400
結果為:
1>0
2>2
3,4,5>4 (即血量為3,4,5的民兵最後都變為4血)
6>6
7,8,9>8
10>10
11,12,13>12
...
由此可以簡化為:
4n±1>4n (A>B,A即是民兵的初始血量,B為效果後的血量) 2n>2n
接著把測試擴張至其他2的次方, 即把16777216換為33554432,67108864,134217728,.... 得出以下的結果:
33554432
1,2>0 3,4,5>4 6,7,8,9,10>8 11,12,13>12 14,15,16,17,18>16 19,20,21>20 …
簡化: 4n±0,1>4n 8n±2>8n
67108864
1,2,3,4>0 5,6,7,8,9,10,11>8 12,13,14,15,16,17,18,19,20>16 21,22,23,24,25,26,27>24 28,29,30,31,32,33,34,35,36>32 …
簡化: 8n±0,1,2,3>8n 16n±4>16n
134217728
1至8>0 9至23>16 24至40>32 41至55>48 …
簡化: 16n±0,1,2,3,4,5,6,7>16n 32n±8>16n
268435456與之後的結果也與上方的成一定規律, 有興趣的可以自己試試
或
參考附件,再此不詳細例出 ....
綜合以上的結果,可以得出
-16777216 2^(23+1) 2^1=2 -33554432 2^(23+2) 2^2=4 -67108864 2^(23+3) 2^3=8 -134217728 2^(23+4) 2^4=16 -268435456 2^(23+5) 2^5=32 -536970912 2^(23+6) 2^6=64 -1073741824 2^(23+7) 2^7=128
當血量數值為2^(23+m)至(2^24+m)-1時,m=1,2,3,4,5,6,7 血量的改變為: n(2^m)±0,1,2…,2^(m-1)-1>n(2^m) n[2^(m+1)]±2(m-1)>n[2^(m+1)]
其中n為正整數, n=0,1,2,....
研讀數理的朋友們應該看得明白上面的結論,
對於看不懂的朋友可以參考以下的詳細版:
16777216至33554431 2n±0>2n (即2>2,4>4...) 4n±1>4n (即1>0,3>4,5>4,7>8,9>8...)
33554432至67108863 4n±0,1>4n 8n±2>8n
67108864至134217728 8n±0,1,2,3>8n 16n±4>16n
134217728至268435455 16n±0,1,2,...,7>16n 32n±8>32n
268435456至536870911 32n±0,1,2,...,15>32n 64n±16>64n
536870912至1073741823 64n±0,1,2,...,31>64n 128n±32>128n
1073741824至2147483647 128n±0,1,2,...,63>128n 256n±64>256n
然而,得到以上的結果後,
便可以透過以上的結論去製作效果,
英雄式回血便是其中一個例子,
而另一個我想到的效果便是玻璃人效果。
以下為製作n血玻璃人的步驟(其中n為2-128)
摧毀目標 -1073741824+n-64-1 = -1073741889+n (請使用aokts輸入)
摧毀目標 1073741824+128-n = 1073741952-n
如製作64血或以內的可以用 -536870912 (不用aokts)
例如上述檔案中所製作的40血玻璃人民兵,
摧毀目標 7 (n-32-1)
摧毀目標 -536870912 (效果1與2可以相加為 -526870905)
摧毀目標 536870912 (效果3與4可以相加為 536870936)
摧毀目標 24 (64-n)
當民兵為40血時,摧毀目標 7
把民兵變為 33 血
摧毀目標
-536870912 + 摧毀目標
536870912 後,
便變為64血 (即64-31>64)
再摧毀目標 24 後回復40血。
然而,聰明的你可以看到,當民兵受到攻擊後,
根據64n±0,1,2,...,31>64n與128n±32>128n, n必定為0, 所以便有一擊即殺的玻璃人效果。
然而,從上面的結論中可以看到最大的±值只是64
那麼即是最多只可以製作血數為128的玻璃人嗎?
其實, 在我們知道右方血量n的時候(例如民兵的n為40),
我們可以利用改變目標生命值的方法把血數由128擴充到32767。
以下為製作n/n血玻璃人的方法: 觸法一 循環
改變目標生命值 65536-n+2 (沒扣血時為2/2血,扣血後為1/2)
摧毀目標 -16777216
摧毀目標 16777216 (2血時2>2不變,1血時1>0死亡)
改變目標生命值 n-2
(回復n血)
以下為其中一個例子:
當然,根據上面的原理應該還可以製作其他的效果, 在這裡我先拋磚引玉 (餘下的交給你們了 )
最後,因為我有多個月沒踫aoc了,
最近打開aoc後發現之前不少的研究還在便重新整理一下,
以上測試是很久之前的結果,
如有錯漏請指正,感謝。
======================================= 更新 15-10-2011
半玻璃人效果 (低於N分之1血時即死效果)
因為此效果與高血量研究沒任何關係, 本來打算另開新帖說明的,不過此效果可以取代上面n/n血的玻璃人效果, 所以在此一起說明吧....
首先,從上面血量分別為 1-400 的民兵檔中, 加入一個循環觸法 改變目標生命值 65536 - 399 摧毀目標 0 (又是無意中發現的)
改變目標生命值 399
你會發現血量為1至399的民兵都會死亡, 而只餘下400/400的民兵
把增減血量改變為 -398
循環觸法變為: 改變目標生命值 65536 - 398 摧毀目標 0
改變目標生命值 398
你會發現1至199的民兵的民兵都會死亡, 餘下200至400的民兵,而且血量不變,
重複以上測試 , 發現結果當生命值低於1/N時,民兵便會死亡, 而生命值大於或等於1/N時,民兵血量便保拎不變。
因此,製作低於1/N血即死的方法如下: 觸法一 循環 改變目標生命值 65536 - n + N 摧毀目標 0
改變目標生命值 n - N
例如製作半玻璃象,(低於1/2即死) 戰象生命值為450,n=450,N=2
改變目標生命值 65536 - 450 + 2 =65087 摧毀目標 0
改變目標生命值 448 那麼當小象寶寶的生命低於225時(224,223,223,...), 小象便會死亡。
此半玻璃人的效果可以用在哪裡便要看你們的用法了
|