diff --git a/cvarinfo.txt b/cvarinfo.txt index 1eb13d4..9d46b6b 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -7,4 +7,5 @@ server bool vht_player_touchshatter = true; server bool vht_player_questlog = true; user int vht_player_questlogplural = 0; server bool vht_player_scruteswitch = true; +server bool vht_player_scrutepuzzle = true; server int vht_monster_centaur = 2; diff --git a/graphics/ARTIGMB2.png b/graphics/ARTIGMB2.png new file mode 100644 index 0000000..0b0aaef Binary files /dev/null and b/graphics/ARTIGMB2.png differ diff --git a/graphics/ARTIGMG2.png b/graphics/ARTIGMG2.png new file mode 100644 index 0000000..dac2785 Binary files /dev/null and b/graphics/ARTIGMG2.png differ diff --git a/language.txt b/language.txt index a027e36..4f2d3f7 100644 --- a/language.txt +++ b/language.txt @@ -12,6 +12,7 @@ VHT_PLAYER_TOUCHSHATTER = "Shatter Frozen Enemies On Touch"; VHT_PLAYER_QUESTLOG = "Enable Quest Log"; VHT_PLAYER_QUESTLOGPLURAL = "Quest Log First-Person Pronouns (English)"; VHT_PLAYER_SCRUTESWITCH = "Add Messages For Unmarked Switches"; +VHT_PLAYER_SCRUTEPUZZLE = "Add Messages For Missing Puzzle Items"; VHT_MONSTER_CENTAUR = "Centaur Behaviour"; VHT_OPT_CONSTANT = "Constant"; @@ -23,6 +24,24 @@ VHT_OPT_SINGULAR = "I/me/my"; VHT_OPT_PLURAL = "we/our/us"; VHT_OPT_PLURAL2 = "we&/our&/us&"; +VHT_SWI_PUZZLE0 = "it beckons for the skull of a warrior..."; +VHT_SWI_PUZZLE1 = "it beckons for the heart of a serpent rider..."; +VHT_SWI_PUZZLE2 = "another red gem should fit here..."; +VHT_SWI_PUZZLE3 = "a green gem should fit here..."; +VHT_SWI_PUZZLE4 = "another green gem should fit here..."; +VHT_SWI_PUZZLE5 = "a blue gem should fit here..."; +VHT_SWI_PUZZLE6 = "another blue gem should fit here..."; +VHT_SWI_PUZZLE7 = "this could fit a book..."; +VHT_SWI_PUZZLE8 = "this could also fit a book..."; +VHT_SWI_PUZZLE9 = "this could fit a mask of some kind..."; +VHT_SWI_PUZZLE10 = "the shape of the grand weapon of a fighter..."; +VHT_SWI_PUZZLE11 = "the shape of the grand weapon of a cleric..."; +VHT_SWI_PUZZLE12 = "the shape of the grand weapon of a mage..."; +VHT_SWI_PUZZLE13 = "this could be repaired with a steel gear..."; +VHT_SWI_PUZZLE14 = "this could be repaired with a bronze gear..."; +VHT_SWI_PUZZLE15 = "this could be repaired with a steel and bronze gear..."; +VHT_SWI_PUZZLE16 = "this could be repaired with a bronze and steel gear..."; + VHT_SWI_5_1275 = "the path to the left lever opens"; VHT_SWI_5_1283 = "the path to the right lever opens"; @@ -59,6 +78,10 @@ VHT_QST_2_1 = "two more paths become available to @=:\n" "- guardian of fire: %i/1\n" "- guardian of steel: %i/2"; +VHT_QST_2_2 = + "the eastward guardians opened,\n" + "a parallel portal to the guardian of ice\n" + "opens on the west side."; VHT_QST_3_0 = "all that seems to be left here is\n" diff --git a/menudef.txt b/menudef.txt index 5cdc716..e6ab689 100644 --- a/menudef.txt +++ b/menudef.txt @@ -40,6 +40,7 @@ OptionMenu "VhtMenu" { Option "$VHT_PLAYER_QUESTLOG", "vht_player_questlog", "OnOff" Option "$VHT_PLAYER_QUESTLOGPLURAL", "vht_player_questlogplural", "VhtPlural" Option "$VHT_PLAYER_SCRUTESWITCH", "vht_player_scruteswitch", "OnOff" + Option "$VHT_PLAYER_SCRUTEPUZZLE", "vht_player_scrutepuzzle", "OnOff" StaticText "" Option "$VHT_MONSTER_CENTAUR", "vht_monster_centaur", "VhtCentaurBehaviour" diff --git a/sprites/AGB2A0.png b/sprites/AGB2A0.png new file mode 100644 index 0000000..db4475f Binary files /dev/null and b/sprites/AGB2A0.png differ diff --git a/sprites/AGG2A0.png b/sprites/AGG2A0.png new file mode 100644 index 0000000..7188e90 Binary files /dev/null and b/sprites/AGG2A0.png differ diff --git a/vhtzs/events.zsc b/vhtzs/events.zsc index 1a42e68..81cb96c 100644 --- a/vhtzs/events.zsc +++ b/vhtzs/events.zsc @@ -45,6 +45,24 @@ class VhtEvents : StaticEventHandler { qh.vhtTick(); } } + override void worldLinePreActivated(WorldEvent e) { + if(vht_player_scrutepuzzle) { + if(e.activatedLine.special == UsePuzzleItem) { + int itemNum = e.activatedLine.args[0]; + bool any = false; + for(let item = e.thing.inv; item; item = item.inv) { + let pi = PuzzleItem(item); + if(pi && pi.puzzleItemNumber == itemNum) { + any = true; + break; + } + } + if(!any) { + Console.midPrint(null, "$VHT_SWI_PUZZLE" .. itemNum, true); + } + } + } + } override void worldLineActivated(WorldEvent e) { if(vht_player_scruteswitch) { let which = "VHT_SWI_" .. level.levelNum .. "_" .. e.activatedLine.index();