OH THIÊN CHÚA KHÔNG !! Bạn không thể để chúng tôi ở đây với Doorknob! Nó sẽ được nethack ở khắp mọi nơi! - 1ngày trước bởi Geobits
Chà, không thể thất vọng ...
Giới thiệu
(bạn có thể bỏ qua phần này nếu bạn không quan tâm đến việc giải trình và / hoặc nếu bạn có Hội chứng nổ Tab )
Một trong những cơ chế đặc trưng của Nethack (và Rogue, và các trò chơi tương tự trong cùng thể loại roguelike) là hệ thống nhận dạng của nó . Khi bắt đầu trò chơi, chỉ có các vật phẩm trong kho đồ bắt đầu của bạn được "xác định chính thức". Phần lớn các đối tượng khác bắt đầu không rõ; ví dụ: "khiên phản chiếu" ban đầu sẽ hiển thị dưới dạng "khiên bạc được đánh bóng" trước khi được xác định.
Một "khiên bạc đánh bóng" chỉ có thể là một lá chắn phản chiếu , nhưng điều này có những hậu quả thú vị trong hai trường hợp khác.
Một số mặt hàng khác nhau, nhưng có cùng "ngoại hình". Ví dụ: nếu bạn tìm thấy một " viên đá xám " , đó có thể là một trong bốn điều: Đá lửa (vô dụng), đá cảm ứng (có thể hữu ích), đá tải (sẽ làm bạn bị nặng nề vì nó nặng cả tấn và bạn không thể đánh rơi nó), hoặc một viên đá may mắn (cực kỳ hữu ích, gần như cần thiết để chiến thắng trò chơi).
Nhiều vật phẩm (cuộn, đũa, nhẫn, sách phép thuật, một số áo giáp, v.v.) có sự xuất hiện ngẫu nhiên. Điều này có nghĩa là có một danh sách tập hợp các vẻ ngoài có thể, giả sử, potions có thể có; ví dụ: [ lọ thuốc vàng , lọ thuốc xoáy , lọ thuốc có ga , lọ thuốc màu đỏ tím , v.v.]. Những sự xuất hiện này sau đó được gán ngẫu nhiên cho những gì chúng thực sự là ( thuốc chữa bệnh , thuốc tê liệt , thuốc nhìn thấy vô hình , thuốc đa hình , v.v.).
Điều đó có nghĩa là một bùa hộ mệnh hình lục giác có thể cứu mạng bạn trong một trò chơi (bùa hộ mệnh cứu mạng) và khiến bạn nghẹt thở đến chết tiếp theo (bùa hộ mệnh) .
Đương nhiên, điều này làm cho việc xác định vật phẩm là một phần quan trọng của trò chơi. Các vật phẩm có thể được "xác định chính thức", nghĩa là chúng sẽ hiển thị rõ ràng là chắc chắn là một vật phẩm nhất định (ví dụ: tất cả các cây đũa phép bạn tìm thấy sẽ xuất hiện dưới dạng cây đũa phép của quái vật ); điều này được thực hiện chủ yếu thông qua các cuộn hoặc sách chính tả . Tuy nhiên, điển hình là những nguồn cung thiếu, đưa chúng ta đến ...
Nhận dạng không chính thức. Điều này có nghĩa là bạn khá chắc chắn (hoặc chắc chắn) rằng một mặt hàng không xác định nào đó thuộc một loại nhất định (hoặc nó chỉ có thể là một trong một số loại), nhưng bạn chưa "chính thức" xác định được nó. Điều này có thể được thực hiện thông qua một số phương pháp: thử nghiệm khắc cho đũa, thử nghiệm chìm cho các vòng hoặc phương pháp phổ biến nhất ...
... nhận dạng giá ! Đó là những gì thách thức này là về.
Tóm lại, có những cửa hàng nằm khắp Dungeon của Doom (vâng, các chủ cửa hàng nghĩ rằng nên thành lập cửa hàng trong một hầm ngục dưới lòng đất; đừng hỏi tại sao). Trong các cửa hàng này, bạn có thể mua và bán các mặt hàng khác nhau mà bạn gặp trong chuyến du lịch của mình. Khi mua hoặc bán một mặt hàng, đầu tiên người bán hàng sẽ cho bạn biết anh ta sẽ bán cho bạn bao nhiêu / mua nó từ bạn. Vì một số mặt hàng nhất định được đảm bảo có giá cụ thể , bạn có thể sử dụng điều này để xác định một cách không chính thức một loại mặt hàng nhất định.
Một số vật phẩm, chẳng hạn như cuộn ánh sáng , là vật phẩm duy nhất có giá một số tiền nhất định, cho phép bạn xác định rõ ràng chúng; tuy nhiên, hầu hết các mặt hàng chia sẻ một nhóm giá với các mặt hàng khác cùng loại, điều này chỉ cho phép bạn thu hẹp các khả năng (vẫn hữu ích). Tuy nhiên, giá mua / bán của một mặt hàng bị ảnh hưởng bởi một số biến số (chẳng hạn như chỉ số Charisma của bạn ). Do đó biểu đồ trên.
Bạn có thể nói tôi thích Nethack không?
Đầu vào
Đầu vào sẽ được cung cấp dưới dạng trò chơi Nethack (vanilla, 3.4.3) hiện đang được chơi:
"For you, most gracious sir; only 177 for this scroll labeled VERR YED HORRE."
--More--
------------
| . ---------
| | ---------- | ^ |
| .## ################. +# #. .#
| | # | _|# #---------#
| | ### ##.< |# #### #
| .#########################----------# # #
------------ ### # ############# # # #
# # ----------- # # # ####
### ###| |### # # #----------
# #. |# ### # # #|.???????|
## | |# #--------# #|.??@????|
----.----###############. |# #| |# #-@???????|
|.......+# | |# #. |# ----------
|.......| | .# | |#
|......>| ----------- | +#
--------- --------
Wizard the Evoker St:12 Dx:14 Co:11 In:16 Wi:12 Ch:10 Chaotic
Dlvl:2 $:0 HP:11(11) Pw:0(8) AC:9 Exp:1 T:11
Điều này có nghĩa là nó được đảm bảo có một số thuộc tính:
Nó sẽ luôn dài 24 dòng.
Mỗi dòng sẽ luôn có độ dài từ 80 ký tự trở xuống.
Dòng thứ hai đến cuối cùng sẽ bao gồm các " mã thông báo " sau: tên và tiêu đề của người chơi (dưới dạng " foo the bar "), danh sách các thuộc tính (cách nhau bởi một khoảng trắng) và căn chỉnh của người chơi ( Hợp pháp, trung lập, hoặc hỗn loạn). Mỗi mã thông báo sẽ được phân tách bằng một số lượng không gian khác nhau. 1
Danh sách các thuộc tính sẽ luôn là
St:* Dx:* Co:* In:* Wi:* Ch:*
, trong đó một*
ký tự đại diện cho một số nguyên từ 3 đến 25. 2 (Điểm đáng chú ý ở đây là chỉ số cuối cùng, Charisma, mà bạn cần tính giá.)Dòng đầu tiên sẽ luôn bao gồm một tin nhắn liên quan đến cửa hàng (cụ thể là tin nhắn được hiển thị khi bạn mua hoặc bán một mặt hàng). Hơn nữa, mặt hàng này được đảm bảo là một cuộn duy nhất, không xác định, không tên. Để mua một mặt hàng, đây là:
"For you, {TITLE}; only {PRICE} for this scroll labeled {LABEL}."--More--
và để bán, đó là:
{SHK} offers {PRICE} gold pieces for your scroll labeled {LABEL}. Sell it? [ynaq] (y)
trong đó các "biến" được liệt kê trong
{curly braces}
là:{TITLE}
luôn luôn là một trong những " tốt ", " vinh dự ", " duyên dáng nhất " hoặc " quý trọng ", được kết hợp với " quý cô " hoặc " ngài ".{PRICE}
luôn luôn là một số nguyên.{LABEL}
sẽ luôn là một trong những điều sau đây ( nguồn ):ZELGO MER JUYED AWK YACC NR 9 XIXAXA XOXAXA XUXAXA PRATYAVAYAH DAIYEN FOOELS LEP GEX VEN ZEA PRIRUTSENIE ELBIB YLOH VERR YED HORRE VENZAR BORGAVVE THARR YUM YUM KERNOD WEL ELAM EBOW DUAM XNAHT ANDOVA BEGARIN KIRJE VE FORBRYDERNE HACKEM MUCHE VELOX NEB FOOBIE BLETCH TEMOV GARVEN DEH READ ME
{SHK}
sẽ luôn là một trong những điều sau đây ( nguồn ):Skibbereen Ballingeary Inishbofin Annootok Abitibi Kanturk Kilgarvan Kesh Upernavik Maganasipi Rath Luirc Cahersiveen Hebiwerie Angmagssalik Akureyri Ennistymon Glenbeigh Possogroenoe Aklavik Kopasker Lahinch Kilmihil Asidonhopo Inuvik Budereyri Kinnegad Kiltamagh Manlobbi Tuktoyaktuk Akranes Lugnaquillia Droichead Atha Adjama Chicoutimi Bordeyri Enniscorthy Inniscrone Pakka Pakka Ouiatchouane Holmavik Gweebarra Clonegal Kabalebo Chibougamau Lucrezia Kittamagh Lisnaskea Wonotobo Matagami Dirk Nenagh Culdaff Akalapi Kipawa Sneem Dunfanaghy Sipaliwini Kinojevis
Thông báo này có thể được chia thành một dòng khác (nhưng nó sẽ không bao giờ chiếm quá 2 dòng). 3
Ngoài một vài dòng đầu tiên, tất cả các cược đều giống như phần còn lại của màn hình. Nethack sử dụng phần lớn bộ ký tự ASCII . Điều duy nhất mà bạn có thể giả định một cách an toàn là đầu vào sẽ hoàn toàn là ASCII (tuy nhiên điều này có thể không quan trọng vì dù sao bạn cũng có thể loại bỏ các dòng 3-22).
Nếu đầu vào được lấy làm đối số chức năng, nó sẽ được cung cấp chính xác như được hiển thị trong ví dụ trên (dòng mới được phân tách). Nếu bạn nhập qua STDIN, nó sẽ được cung cấp dưới dạng 24 dòng đầu vào liên tiếp (một lần nữa, như được hiển thị ở trên). Bạn có thể chọn xem bạn có muốn đầu vào có một dòng mới hay không. Đầu vào được đảm bảo không có dấu cách.
Đầu ra
Đầu ra phải được cung cấp như những gì tôi nên #name
cuộn mà tôi vừa định giá. Hệ thống đặt tên tôi sử dụng (và tôi đã thấy người khác sử dụng) là:
Nếu cuộn được xác định rõ ràng là một cuộn nhất định (xác định, ánh sáng, vũ khí mê hoặc),
#name
thì đó là. Đây là trường hợp cuộn các giá cơ sở sau (bạn sẽ thấy cách tính giá cơ sở bên dưới): 20 -> xác định, 50 -> ánh sáng, 60 -> vũ khí mê hoặc.Mặt khác, lấy ba chữ cái đầu tiên xuất hiện của cuộn hoặc từ đầu tiên nếu nó nhỏ hơn 3 ký tự. Ví dụ,
ZELGO MER
trở thànhZEL
,VE FORBRYDERNE
trở thànhVE
, v.v ... Ghép với giá này (một khoảng trắng và sau đó) giá cơ sở của cuộn. Ví dụ ,ELB 300
.Nếu giá cơ sở có thể là một trong hai khả năng, tôi thường tiếp tục cố gắng mua hoặc bán mặt hàng đó cho đến khi tôi nhận được một mức giá được đưa ra rõ ràng đặt nó vào một khe giá nhất định. Tuy nhiên, bạn không thể làm điều đó trong thử thách này, vì vậy chỉ cần tách hai giá cơ bản có thể bằng dấu gạch chéo (
/
). Ví dụ ,HAC 60/80
.
Đây là công thức để chuyển đổi giá cơ bản của một mặt hàng thành giá bạn được cung cấp để mua nó:
bắt đầu với giá cơ bản của mặt hàng
cơ hội có thể có 33% "phụ phí không xác định", được tính thông qua
price += price / 3
một cơ hội khác của "đánh dấu kẻ hút" 33% (thực tế đây không phải là cơ hội ngẫu nhiên, nhưng với mục đích của thử thách này), đã tính theo cách tương tự
một sửa đổi lôi cuốn, được áp dụng như sau:
Ch 3-5 6-7 8-10 11-15 16-17 18 19-25 Mod +100% +50% +33% +0% -25% -33% -50% Code p *= 2 p += p/2 p += p/3 --- p -= p/4 p -= p/3 p /= 2
Và đây là công thức cho giá cơ sở -> giá bán:
bắt đầu với giá cơ bản của mặt hàng
chia số này cho 2 hoặc 3 ("bình thường" hoặc "đánh dấu kẻ hút" tương ứng; một lần nữa, không phải ngẫu nhiên, nhưng đó là cho mục đích của thử thách này)
cơ hội giảm thêm 25% 4 , được tính thông qua
price -= price / 4
Phân chia là phân chia số nguyên, có nghĩa là kết quả ở mỗi bước được làm tròn xuống. (Nguồn: wiki và một chút đào mã nguồn. Đảo ngược các công thức này là công việc của bạn.)
Cuối cùng, đây là biểu đồ ASCII tiện dụng cho thấy giá mua có thể (được nhóm theo chỉ số Charisma) và giá bán của một cuộn với giá cơ bản nhất định:
Base Ch<6 6-7 8-10 11-15 16-17 18 19-25 Sell
20 40/52/68 30/39/51 26/34/45 20/26/34 15/20/26 14/18/23 10/13/17 5/6/8/10
50 100/132/176 75/99/132 66/88/117 50/66/88 38/50/66 34/44/59 25/33/44 12/16/19/25
60 120/160/212 90/120/159 80/106/141 60/80/106 45/60/80 40/54/71 30/40/53 15/20/23/30
80 160/212/282 120/159/211 106/141/188 80/106/141 60/80/106 54/71/94 40/53/70 20/26/30/40
100 200/266/354 150/199/265 133/177/236 100/133/177 75/100/133 67/89/118 50/66/88 25/33/38/50
200 400/532/708 300/399/531 266/354/472 200/266/354 150/200/266 134/178/236 100/133/177 50/66/75/100
300 600/800/1066 450/600/799 400/533/710 300/400/533 225/300/400 200/267/356 150/200/266 75/100/113/150
(Đây là giống với biểu đồ trên wiki ngoại trừ việc nó liệt kê tất cả giá bán càng tốt, trong khi bỏ qua biểu đồ wiki để bao gồm hai trong bốn giá bán càng tốt Không, tôi không tự làm cho biểu đồ đó;. Tạo ra với kịch bản Ruby này .)
Các trường hợp thử nghiệm
Đầu vào:
"For you, honored sir; only 80 for this scroll labeled LEP GEX VEN ZEA."
--More-- # #
---------------- -----
| | ------------####+ |
----- | -##############+ .# | |
| .###########| > |# # | | ##. |
| | #------------.---# ##. | # -----
-+--- ################## ----.-------### #
#### ### # # #
# # # ### ###
### ### # # #
# # # ### -----|--
-----.--- ### ----+---# |...@..|
| | # | |# |???+??|
| < .# ## ##+ | |+?????|
| |# ------.------- | | |??]?@?|
---------### | | | | --------
# # | | --------
###| | #
#+ |
--------------
Wizard the Evoker St:11 Dx:15 Co:9 In:20 Wi:9 Ch:11 Chaotic
Dlvl:7 $:0 HP:11(11) Pw:1(8) AC:9 Exp:1
Đầu ra: LEP 60/80
Đầu vào:
"For you, most gracious sir; only 80 for this scroll labeled DAIYEN FOOELS."
--More-- #
------------ ----- -------
----- | | | | | |
|!)%| | | --------------- | | #- |
|*[@| | .#####| < |#####. | ###| |
|?(?| ---------.-- #+ |# | | # | |
|[!(| ## | |# | +#### #. .#
|.@.| ##################. +# ---.- #| |#
---|- ### ---------------# ## #-------#
## # ###### # # #
# ### # # # #
## # # # # #
------ ##### # # # #
| | -.---- # # # #
| .##### |^ | #### # # #
| | # | | ---- #-----------.---- # #------
| | ###| | | | #. > | # #| |
------ #. | | | | .## #| |
| | ---- | | #. |
------ ---------------- ------
Wizard the Evoker St:11 Dx:14 Co:16 In:15 Wi:10 Ch:9 Chaotic
Dlvl:6 $:0 HP:11(11) Pw:9(9) AC:9 Exp:1
Đầu ra: enchant weapon
Đầu vào:
Aklavik offers 113 gold pieces for your scroll labeled GARVEN DEH. Sell it?
[ynaq] (y)
----- ------ --------- -------
| | | | # ##. | |.?)%/|
| | ##. | ----- # | | |.@!=*|
|< | # | | # ##. .#####+ > |# #-.*?@[|
| .##### | | ------------ # | { |# |^ |# #|.=%)+|
---.- | | | .#### | |# ---------## #-------
## -.---- #. | | |# # ### #
# ######## #| .## | |# ## #
### # #------------ # -----# #### #
# ####### ########################## #
# # # ###----.--#
# ### # # #| |#
--.---- ########################################### #. |#
| | #----------.-# | |#
| | #| |# -------
| | #| .#
| |########| |
------- ------------
# #
Wizard the Evoker St:9 Dx:14 Co:11 In:19 Wi:10 Ch:12 Chaotic
Dlvl:4 $:0 HP:11(11) Pw:5(9) AC:9 Exp:1 Satiated
Đầu ra: GAR 300
Đầu vào:
"For you, good lady; only 67 for this scroll labeled VE FORBRYDERNE."--More--
-------
##| |
------------ # | |
|+[!/!?%[?)| ### | | --------
|[)(!/+]?!@| # # | | ##+ |
|.......@..| -------------- ### | < | ## | |
--------+--- #| | # | | # | > |
# ###| .#### --.---- ### #- |
# ###. | # # ###| |
# #### ---.---------- # ######. |
# #### ## # ### --------
# #### # # #
# #### ######################## ###
### #### ----+---- #
# # #### | .##
----.------#### | ^ |
| +#### | > |
| | | ^ |
----------- ---------
Wizard the Evoker St:18 Dx:18 Co:16 In:20 Wi:20 Ch:18 Chaotic
Dlvl:4 $:150 HP:11(11) Pw:5(7) AC:9 Exp:1
Đầu ra: VE 100
Đầu vào:
Droichead Atha offers 5 gold pieces for your scroll labeled XIXAXA XOXAXA
XUXAXA. Sell it? [ynaq] (y)
------------
----- | .#
| .### ----------- #. { |#
----- | | # | | ###| |#
| .# #. | # | | # ---------+--#
| | ###-|--- | .## ### ## #
| | # # # | | # # # #
| -##### # | | #### ############ #
|> | ## # ---------+- ## -.---------- # ----------
| .#### ### ## #####| | # |.*??/?)*|
----- # # # # | | # |@*)%!)]%|
### ### ###### | | # |.=)!%*!!|
# # # # | | ##+@*[%)(%?|
##################### | | |.]?*?)%%|
-----+---.----##########. | |.%)%!!!%|
| +## ------------ ----------
| < | #
| |
--------------
Wizard the Digger St:11 Dx:9 Co:14 In:6 Wi:6 Ch:9 Lawful
Dlvl:3 $:0 HP:15(15) Pw:0(1) AC:9 Exp:1
Đầu ra: identify
(Tôi đã phải tự biên dịch Nethack với tất cả các tên chủ cửa hàng khác bị xóa vì tôi không thể tìm thấy một chủ cửa hàng có một khoảng trắng trong tên của mình ...)
Quy tắc
1: điều này không nhất thiết luôn luôn đúng trong trò chơi Nethack, nhưng chúng tôi cho rằng điều này vì đơn giản.
2: một lần nữa, không phải lúc nào cũng đúng. Sức mạnh có thể là 18/01 đến 18 / **, nhưng bạn không cần phải xử lý điều đó.
3: quá mức tổng thể. Ví dụ, một chủ cửa hàng có thể gọi bạn là "cặn bã" hoặc "sinh vật nổi tiếng và linh thiêng nhất", nhưng bạn không phải xử lý bất kỳ vấn đề nào.
4: mà một người chơi thông minh có được xung quanh bằng cách liên tục cung cấp để bán vật phẩm cho đến khi được đưa ra mức giá cao hơn.