โอ้พระเจ้าไม่ !! คุณไม่สามารถทิ้งเราไว้ที่นี่ด้วย Doorknob! มันจะถูกทำลายทุกที่! - 1 วันก่อนโดยGeobits
ก็ไม่ทำให้ผิดหวัง ...
บทนำ
(คุณสามารถข้ามส่วนนี้ได้หากคุณไม่สนใจเกี่ยวกับการแสดงออกและ / หรือหากคุณมีTab Explosion Syndrome )
หนึ่งในกลไกลักษณะของNetHack (และ Rogue และเกมที่คล้ายกันในประเภทเดียวกันโร๊คไลค์) เป็นของระบบการระบุ ที่จุดเริ่มต้นของเกมเฉพาะรายการในสินค้าคงคลังเริ่มต้นของคุณ "ระบุอย่างเป็นทางการ" วัตถุอื่น ๆ ส่วนใหญ่ไม่ทราบแน่ชัด ตัวอย่างเช่น "shield of reflect" จะเริ่มแสดงเป็น "shield silver polishing" ก่อนที่จะถูกระบุ
"โล่เงินขัดเงา" สามารถเป็นเกราะป้องกันการสะท้อนเท่านั้น แต่สิ่งนี้มีผลที่น่าสนใจในอีกสองกรณี
บางรายการแตกต่างกัน แต่มี "ลักษณะที่ปรากฏ" ที่เหมือนกัน ตัวอย่างเช่นหากคุณพบ " หินสีเทา " อาจเป็นหนึ่งในสี่สิ่ง: หินเหล็กไฟ (ไร้ประโยชน์), touchstone (มีประโยชน์), loadstone (ซึ่งจะหนัก encumber คุณเพราะหนักตันและคุณ ไม่สามารถวางได้) หรือโชคดี (มีประโยชน์อย่างยิ่งเกือบจะจำเป็นสำหรับการชนะเกม)
หลายรายการ (เลื่อน, ไม้เท้า, แหวน, spellbooks, เกราะบาง, ฯลฯ ) มีลักษณะแบบสุ่ม สิ่งนี้หมายความว่ามีรายการชุดของความเป็นไปได้ที่เป็นไปได้พูดว่า potions อาจมี; ตัวอย่างเช่น [ potion ทองคำ , potion swirly , potionเป็นฟอง , potion สีม่วงแดงฯลฯ ] ลักษณะเหล่านี้จะได้รับมอบหมายแบบสุ่มให้กับสิ่งที่พวกเขาเป็นจริง ( ยาแห่งการรักษา , ยาพิษอัมพาต , ยาที่มองไม่เห็น , ยาของ polymorph , ฯลฯ )
ซึ่งหมายความว่าพระเครื่องหกเหลี่ยมอาจช่วยชีวิตคุณได้ในเกมหนึ่ง (พระเครื่องของการประหยัดชีวิต)และสำลักคุณไปสู่ความตายต่อไป (พระเครื่องของบีบรัด)
โดยธรรมชาติแล้วสิ่งนี้ทำให้การระบุไอเท็มเป็นส่วนสำคัญของเกม ไอเท็มสามารถ "ระบุอย่างเป็นทางการ" ซึ่งหมายความว่าพวกมันจะปรากฏอย่างไม่น่าสงสัยว่าเป็นไอเท็มบางอย่าง (เช่นไม้เท้าอัญมณีที่คุณพบจะปรากฏเป็นไม้เท้าของมอนสเตอร์ที่สร้างขึ้น ) สิ่งนี้จะทำผ่านการเลื่อนหรือspellbooksเพื่อระบุเป็นหลัก โดยปกติแล้วสิ่งเหล่านี้จะขาดตลาดซึ่งทำให้เรา ...
บัตรประจำตัวที่ไม่เป็นทางการ ซึ่งหมายความว่าคุณค่อนข้างมั่นใจ (หรือบางอย่าง) ว่ารายการที่ไม่ระบุบางรายการเป็นประเภทบางประเภท (หรืออาจเป็นประเภทเดียวเท่านั้น) แต่คุณยังไม่ได้ระบุอย่างเป็นทางการ ซึ่งสามารถทำได้ผ่านวิธีการหลายวิธี: การทดสอบแกะสลักสำหรับไม้กายสิทธิ์, อ่างทดสอบสำหรับแหวนหรือวิธีที่พบมากที่สุด ...
... การระบุราคา ! อะไรคือสิ่งที่ท้าทายนี้เกี่ยวกับ
โดยสรุปมีร้านค้าตั้งอยู่ทั่ว Dungeons of Doom (ใช่แล้วเจ้าของร้านคิดว่ามันเป็นความคิดที่ดีที่จะสร้างร้านค้าในดันเจี้ยนใต้ดินบางแห่งอย่าถามว่าทำไม) ในร้านค้าเหล่านี้คุณสามารถซื้อและขายสิ่งของต่าง ๆ ที่คุณเจอระหว่างการเดินทาง เมื่อซื้อหรือขายสินค้าเจ้าของร้านจะบอกคุณก่อนว่าเขาจะขายให้คุณเท่าไหร่ / ซื้อจากคุณเพื่อ เนื่องจากบางรายการรับประกันว่าจะมีราคาเฉพาะคุณสามารถใช้สิ่งนี้เพื่อระบุรายการบางประเภทอย่างไม่เป็นทางการ
บางรายการเช่นสกรอลล์แสงเป็นเพียงรายการเดียวที่ต้องเสียค่าใช้จ่ายจำนวนหนึ่งซึ่งช่วยให้คุณสามารถระบุได้อย่างชัดเจน อย่างไรก็ตามรายการส่วนใหญ่แบ่งกลุ่มราคากับรายการอื่น ๆ ของระดับเดียวกันซึ่งจะช่วยให้คุณ จำกัด ความเป็นไปได้ (ซึ่งยังมีประโยชน์) อย่างไรก็ตามราคาซื้อ / ขายของรายการได้รับผลกระทบจากตัวแปรจำนวนมาก (เช่นCharisma stat ของคุณ) ดังนั้นแผนภูมิข้างต้น
คุณบอกได้ไหมว่าฉันชอบ Nethack
อินพุต
ข้อมูลที่ป้อนจะมีให้ในรูปแบบ (วานิลลา, 3.4.3) เกม Nethack ที่กำลังเล่นอยู่:
"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
ซึ่งหมายความว่าจะรับประกันว่าจะมีคุณสมบัติหลายอย่าง:
มันจะเสมอเป็น 24 สายยาว
แต่ละบรรทัดจะเสมอเป็น 80 อักขระหรือน้อยกว่าความยาว
บรรทัดที่สองถึงครั้งสุดท้ายจะประกอบด้วย " โทเค็น " ต่อไปนี้: ชื่อผู้เล่นและชื่อ (ในรูปแบบของ " foo the bar "), รายการแอตทริบิวต์ (คั่นด้วยช่องว่างเดียว) และการจัดตำแหน่งของผู้เล่น ( ถูกกฎหมายเป็นกลางหรือวุ่นวาย) แต่ละโทเค็นจะถูกคั่นด้วยจำนวนช่องว่างตัวแปร 1
รายการแอททริบิวต์จะเป็น
St:* Dx:* Co:* In:* Wi:* Ch:*
โดยที่*
อักขระแทนจำนวนเต็มตั้งแต่ 3 ถึง 25 2 (จุดที่น่าสนใจที่นี่คือสถิติล่าสุดคือ Charisma ซึ่งคุณต้องคำนวณราคา)บรรทัดแรกจะประกอบด้วยข้อความที่เกี่ยวข้องกับร้านค้าเสมอ (โดยเฉพาะข้อความที่แสดงเมื่อคุณซื้อหรือขายสินค้า) นอกจากนี้รายการนี้รับประกันว่าจะเป็นม้วนเดียวไม่ปรากฏชื่อและไม่มีชื่อ สำหรับการซื้อไอเท็มนี่คือ:
"For you, {TITLE}; only {PRICE} for this scroll labeled {LABEL}."--More--
และสำหรับการขายมันคือ:
{SHK} offers {PRICE} gold pieces for your scroll labeled {LABEL}. Sell it? [ynaq] (y)
โดยที่ "ตัวแปร" แสดงอยู่ใน
{curly braces}
รายการดังต่อไปนี้:{TITLE}
เป็นหนึ่งใน " ดี ", " เป็นเกียรติ ", " มีน้ำใจมากที่สุด " หรือ "เป็นที่นิยม " โดยแบ่งเป็น " ผู้หญิง " หรือ " ท่าน "{PRICE}
เป็นจำนวนเต็มเสมอ{LABEL}
จะเป็นหนึ่งในสิ่งต่อไปนี้ ( แหล่งที่มา ):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}
จะเป็นหนึ่งในสิ่งต่อไปนี้ ( แหล่งที่มา ):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
ข้อความนี้อาจแบ่งเป็นบรรทัดอื่น (แต่จะไม่ใช้เกิน 2 บรรทัด) 3
นอกเหนือจากสองสามบรรทัดแรกการเดิมพันทั้งหมดจะปิดตามลักษณะที่เหลือของหน้าจอ NetHack ใช้ส่วนใหญ่ของชุดตัวอักษรแอสกี สิ่งเดียวที่คุณสามารถคาดเดาได้อย่างปลอดภัยคืออินพุตจะเป็น ASCII ล้วนๆ (อย่างไรก็ตามนี่อาจจะไม่สำคัญเพราะคุณสามารถทิ้งบรรทัดที่ 3-22 ได้)
หากอินพุตถูกนำมาเป็นอาร์กิวเมนต์ของฟังก์ชั่นมันจะได้รับตรงตามที่แสดงในตัวอย่างข้างต้น หากคุณป้อนผ่าน STDIN จะได้รับอินพุต 24 บรรทัดติดต่อกัน (อีกครั้งดังที่แสดงด้านบน) คุณอาจเลือกว่าคุณต้องการให้อินพุทมีการขึ้นบรรทัดใหม่หรือไม่ อินพุตรับประกันว่าไม่มีช่องว่างต่อท้าย
เอาท์พุต
ควรให้ผลลัพธ์เป็นสิ่งที่ฉันควร#name
เลื่อนที่ฉันเพิ่งราคารหัส ระบบการตั้งชื่อที่ฉันใช้ (และที่ฉันเคยเห็นคนอื่นใช้) คือ:
หากสกรอลถูกระบุอย่างไม่น่าสงสัยว่าเป็นสครอลบางตัว (ระบุ, แสง, อาวุธเคลิบเคลิ้ม) แสดง
#name
ว่า นี่เป็นกรณีสำหรับการเลื่อนของราคาพื้นฐานต่อไปนี้(คุณจะเห็นวิธีการคำนวณราคาฐานด้านล่าง): 20 -> ระบุ, 50 -> แสง, 60 -> อาวุธร่ายมนต์มิฉะนั้นใช้ตัวอักษรสามตัวแรกของการปรากฏตัวของสกรอลล์หรือคำแรกถ้ามันน้อยกว่า 3 ตัวอักษร ยกตัวอย่างเช่น
ZELGO MER
กลายเป็นZEL
,VE FORBRYDERNE
กลายVE
เป็นต้น Concatenate กับเรื่องนี้ (เว้นวรรคแล้ว) ราคาฐานของการเลื่อน ตัวอย่างเช่นELB 300
.หากราคาฐานเป็นหนึ่งในสองทางที่เป็นไปได้ฉันมักจะพยายามซื้อหรือขายสินค้าจนกว่าฉันจะได้รับราคาที่เสนออย่างไม่น่าสงสัยที่จะวางลงในช่วงราคาหนึ่ง อย่างไรก็ตามคุณไม่สามารถทำเช่นนั้นได้ในความท้าทายนี้ดังนั้นให้แยกราคาฐานสองรายการที่เป็นไปได้ด้วยเครื่องหมายทับ (
/
) ตัวอย่างเช่นHAC 60/80
.
นี่คือสูตรสำหรับการแปลงราคาฐานของรายการเป็นราคาที่คุณเสนอให้ซื้อ:
เริ่มต้นด้วยราคาฐานของรายการ
โอกาสที่จะเป็นไปได้ 33% "ค่าธรรมเนียมที่ไม่ปรากฏหลักฐาน" คำนวณโดย
price += price / 3
โอกาสอีกครั้งของ 33% "มาร์กอัป sucker" (นี่ไม่ใช่โอกาสสุ่มจริง ๆ แต่สำหรับจุดประสงค์ของการท้าทายนี้) คำนวณด้วยวิธีเดียวกัน
ตัวแก้ไขความสามารถพิเศษซึ่งใช้ดังต่อไปนี้:
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
และนี่คือสูตรสำหรับราคาพื้นฐาน -> ราคาขาย:
เริ่มต้นด้วยราคาฐานของรายการ
หารด้วย 2 หรือ 3 ("ปกติ" หรือ "มาร์กอัป sucker" ตามลำดับอีกครั้งไม่ใช่แบบสุ่ม แต่มันมีไว้สำหรับจุดประสงค์ของการท้าทายนี้)
โอกาสที่จะลดลงอีก 25% 4คำนวณจาก
price -= price / 4
การหารคือการหารจำนวนเต็มซึ่งหมายถึงผลลัพธ์ในแต่ละขั้นตอนจะถูกปัดเศษลง (ที่มา: วิกิและการขุดซอร์สโค้ดเล็กน้อยการกลับสูตรเหล่านี้เป็นงานของคุณ)
สุดท้ายนี่คือแผนภูมิ ASCII แบบพกพาที่มีประโยชน์ซึ่งแสดงราคาซื้อที่เป็นไปได้ (จัดกลุ่มตามสถิติ Charisma) และขายราคาของสกรอลล์พร้อมราคาฐานที่แน่นอน:
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
(นี่เป็นเหมือนแผนภูมิบนวิกิยกเว้นว่าจะแสดงรายการราคาขายที่เป็นไปได้ในขณะที่วิกิพีเดียละเลยแผนภูมิที่จะรวมสองในสี่ราคาขายที่เป็นไปไม่ฉันไม่ได้ด้วยตนเองทำให้แผนภูมิที่มิ. สร้างขึ้นด้วยสคริปต์ทับทิมนี้ .)
กรณีทดสอบ
การป้อนข้อมูล:
"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
เอาท์พุท: LEP 60/80
การป้อนข้อมูล:
"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
เอาท์พุท: enchant weapon
การป้อนข้อมูล:
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
เอาท์พุท: GAR 300
การป้อนข้อมูล:
"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
เอาท์พุท: VE 100
การป้อนข้อมูล:
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
เอาท์พุท: identify
(ฉันต้องคอมไพล์ Nethack ด้วยชื่อเจ้าของร้านคนอื่น ๆ ที่ถูกลบเพราะฉันไม่สามารถหาเจ้าของร้านที่มีช่องว่างในชื่อของเขา ... )
กฎระเบียบ
- นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะ
เพิ่มขึ้นเป็นผู้ชนะ
1: นี่ไม่จำเป็นต้องเป็นจริงเสมอในระหว่างเกม Nethack แต่เราถือว่านี่เพื่อความเรียบง่าย
2: อีกครั้งไม่จริงเสมอไป ความแข็งแกร่งอาจเป็น 18/01 ถึง 18 / ** แต่คุณไม่จำเป็นต้องจัดการมัน
3: oversimplifications ขั้นต้นมากขึ้น ตัวอย่างเช่นเป็นไปได้สำหรับเจ้าของร้านที่จะเรียกคุณว่า "ขยะ" หรือ "สิ่งมีชีวิตที่มีชื่อเสียงและศักดิ์สิทธิ์ที่สุด" แต่คุณไม่ต้องจัดการกับสิ่งเหล่านั้น
4: ผู้เล่นอัจฉริยะคนไหนที่เสนอขายสินค้าซ้ำ ๆ จนกว่าจะได้ราคาสูงขึ้น